diff --git a/locales/ar/LC_MESSAGES/messages.po b/locales/ar/LC_MESSAGES/messages.po index 8f2670112..b6cc50802 100644 --- a/locales/ar/LC_MESSAGES/messages.po +++ b/locales/ar/LC_MESSAGES/messages.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-12-15 04:00+0000\n" "Last-Translator: HAMDI KHALID \n" "Language-Team: Arabic `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8629,37 +8637,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8667,7 +8675,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8676,7 +8684,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8691,7 +8699,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8762,35 +8770,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8802,7 +8809,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8811,15 +8818,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8829,7 +8836,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8838,11 +8845,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8878,15 +8885,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8895,11 +8893,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8907,25 +8905,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8933,7 +8930,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8944,24 +8941,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8972,7 +8969,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8981,19 +8978,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9005,7 +9002,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9013,17 +9010,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9031,7 +9028,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9043,17 +9040,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9064,25 +9061,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9090,7 +9087,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9098,23 +9095,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9123,25 +9120,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9149,7 +9146,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9157,11 +9154,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9169,7 +9166,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9177,17 +9174,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9197,15 +9194,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11392,17 +11389,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11410,21 +11424,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11432,34 +11446,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13474,10 +13488,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13563,7 +13578,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17589,8 +17604,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17670,6 +17685,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19332,8 +19355,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19381,18 +19404,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19420,19 +19443,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19486,8 +19511,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19569,8 +19594,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19683,9 +19708,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19775,11 +19800,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19924,7 +19951,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19933,6 +19960,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19964,467 +19993,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20433,43 +20489,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25667,7 +25728,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25681,39 +25742,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25722,7 +25782,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25731,33 +25791,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25765,7 +25825,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25774,39 +25834,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25814,22 +25874,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25840,35 +25900,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25877,7 +25937,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25885,40 +25945,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25929,7 +25989,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25938,7 +25998,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25950,70 +26010,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26021,21 +26081,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26043,21 +26103,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/ars/LC_MESSAGES/messages.po b/locales/ars/LC_MESSAGES/messages.po index d1ce516c3..17369aca7 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1524,7 +1524,7 @@ msgid "" msgstr "" #: ../source/discussions/install-requires-vs-requirements.rst:62 -#: ../source/tutorials/installing-packages.rst:464 +#: ../source/tutorials/installing-packages.rst:463 msgid "Requirements files" msgstr "" @@ -5356,7 +5356,7 @@ msgid "" msgstr "" #: ../source/guides/distributing-packages-using-setuptools.rst:589 -#: ../source/tutorials/installing-packages.rst:670 +#: ../source/tutorials/installing-packages.rst:669 msgid "" "Depending on your platform, this may require root or Administrator " "access. :ref:`pip` is currently considering changing this by `making user " @@ -5609,7 +5609,7 @@ msgstr "" #: ../source/guides/hosting-your-own-index.rst:65 #: ../source/guides/index-mirrors-and-caches.rst:56 -#: ../source/guides/supporting-windows-using-appveyor.rst:146 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 msgid "Additional notes" msgstr "" @@ -6621,7 +6621,7 @@ msgid "" msgstr "" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 -#: ../source/tutorials/installing-packages.rst:393 +#: ../source/tutorials/installing-packages.rst:392 msgid "Upgrading packages" msgstr "" @@ -8565,23 +8565,31 @@ msgid "" "and storing them for later use:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:115 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 msgid "" "This will download your repository into the CI runner and then install and " "activate the newest available Python 3 release." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:118 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 msgid "" "And now we can build the dists from source and store them. In this example, " "we'll use the ``build`` package. So add this to the steps list:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:128 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 msgid "Defining a workflow job environment" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:130 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 msgid "" "Now, let's add initial setup for our job that will publish to PyPI. It's a " "process that will execute commands that we'll define later. In this guide, " @@ -8592,21 +8600,21 @@ msgid "" "implement secretless Trusted Publishing to PyPI." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:144 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 msgid "" "This will also ensure that the PyPI publishing workflow is only triggered if " "the current commit is tagged." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:148 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 msgid "Publishing the distribution to PyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:150 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 msgid "Finally, add the following steps at the end:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 msgid "" "This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " "stored distribution package has been downloaded by the `download-artifact`_ " @@ -8614,7 +8622,7 @@ msgid "" "unconditionally." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 msgid "" "Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8622,37 +8630,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8660,7 +8668,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8669,7 +8677,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8684,7 +8692,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8755,35 +8763,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8795,7 +8802,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8804,15 +8811,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8822,7 +8829,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8831,11 +8838,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8871,15 +8878,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8888,11 +8886,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8900,25 +8898,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8926,7 +8923,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8937,24 +8934,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8965,7 +8962,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8974,19 +8971,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -8998,7 +8995,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9006,17 +9003,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9024,7 +9021,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9036,17 +9033,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9057,25 +9054,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9083,7 +9080,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9091,23 +9088,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9116,25 +9113,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9142,7 +9139,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9150,11 +9147,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9162,7 +9159,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9170,17 +9167,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9190,15 +9187,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11385,17 +11382,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11403,21 +11417,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11425,34 +11439,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13467,10 +13481,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13556,7 +13571,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17582,8 +17597,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17663,6 +17678,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19325,8 +19348,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19374,18 +19397,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19413,19 +19436,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19479,8 +19504,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19562,8 +19587,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19676,9 +19701,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19768,11 +19793,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19917,7 +19944,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19926,6 +19953,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19957,467 +19986,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20426,43 +20482,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25660,7 +25721,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25674,39 +25735,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25715,7 +25775,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25724,33 +25784,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25758,7 +25818,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25767,39 +25827,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25807,22 +25867,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25833,35 +25893,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25870,7 +25930,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25878,40 +25938,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25922,7 +25982,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25931,7 +25991,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25943,70 +26003,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26014,21 +26074,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26036,21 +26096,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/cs/LC_MESSAGES/messages.po b/locales/cs/LC_MESSAGES/messages.po index d6faf4cae..ebdc4df8b 100644 --- a/locales/cs/LC_MESSAGES/messages.po +++ b/locales/cs/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-10-16 23:52+0000\n" "Last-Translator: Karolína Wallenfelsová \n" "Language-Team: Czech `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8633,37 +8641,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8671,7 +8679,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8680,7 +8688,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8695,7 +8703,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8766,35 +8774,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8806,7 +8813,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8815,15 +8822,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8833,7 +8840,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8842,11 +8849,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8882,15 +8889,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8899,11 +8897,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8911,25 +8909,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8937,7 +8934,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8948,24 +8945,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8976,7 +8973,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8985,19 +8982,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9009,7 +9006,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9017,17 +9014,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9035,7 +9032,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9047,17 +9044,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9068,25 +9065,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9094,7 +9091,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9102,23 +9099,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9127,25 +9124,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9153,7 +9150,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9161,11 +9158,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9173,7 +9170,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9181,17 +9178,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9201,15 +9198,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11396,17 +11393,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11414,21 +11428,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11436,34 +11450,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13478,10 +13492,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13567,7 +13582,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17593,8 +17608,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17674,6 +17689,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19336,8 +19359,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19385,18 +19408,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19424,19 +19447,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19490,8 +19515,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19573,8 +19598,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19687,9 +19712,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19779,11 +19804,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19928,7 +19955,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19937,6 +19964,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19968,467 +19997,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20437,43 +20493,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25671,7 +25732,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25685,39 +25746,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25726,7 +25786,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25735,33 +25795,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25769,7 +25829,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25778,39 +25838,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25818,22 +25878,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25844,35 +25904,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25881,7 +25941,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25889,40 +25949,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25933,7 +25993,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25942,7 +26002,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25954,70 +26014,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26025,21 +26085,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26047,21 +26107,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/da/LC_MESSAGES/messages.po b/locales/da/LC_MESSAGES/messages.po index c55f56e69..65b4846ab 100644 --- a/locales/da/LC_MESSAGES/messages.po +++ b/locales/da/LC_MESSAGES/messages.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-10-09 04:07+0000\n" "Last-Translator: Philip Mallegol-Hansen \n" "Language-Team: Danish `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8627,37 +8635,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8665,7 +8673,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8674,7 +8682,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8689,7 +8697,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8760,35 +8768,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8800,7 +8807,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8809,15 +8816,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8827,7 +8834,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8836,11 +8843,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8876,15 +8883,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8893,11 +8891,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8905,25 +8903,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8931,7 +8928,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8942,24 +8939,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8970,7 +8967,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8979,19 +8976,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9003,7 +9000,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9011,17 +9008,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9029,7 +9026,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9041,17 +9038,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9062,25 +9059,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9088,7 +9085,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9096,23 +9093,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9121,25 +9118,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9147,7 +9144,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9155,11 +9152,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9167,7 +9164,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9175,17 +9172,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9195,15 +9192,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11390,17 +11387,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11408,21 +11422,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11430,34 +11444,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13472,10 +13486,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13561,7 +13576,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17587,8 +17602,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17668,6 +17683,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19330,8 +19353,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19379,18 +19402,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19418,19 +19441,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19484,8 +19509,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19567,8 +19592,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19681,9 +19706,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19773,11 +19798,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19922,7 +19949,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19931,6 +19958,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19962,467 +19991,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20431,43 +20487,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25665,7 +25726,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25679,39 +25740,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25720,7 +25780,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25729,33 +25789,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25763,7 +25823,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25772,39 +25832,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25812,22 +25872,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25838,35 +25898,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25875,7 +25935,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25883,40 +25943,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25927,7 +25987,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25936,7 +25996,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25948,70 +26008,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26019,21 +26079,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26041,21 +26101,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/de/LC_MESSAGES/messages.po b/locales/de/LC_MESSAGES/messages.po index 0690838d0..d33025eab 100644 --- a/locales/de/LC_MESSAGES/messages.po +++ b/locales/de/LC_MESSAGES/messages.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-10-28 15:43+0000\n" "Last-Translator: Norah-14 \n" "Language-Team: German `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8932,37 +8940,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8970,7 +8978,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8979,7 +8987,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8994,7 +9002,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -9065,35 +9073,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -9105,7 +9112,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -9114,15 +9121,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -9132,7 +9139,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -9141,11 +9148,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9181,15 +9188,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9198,11 +9196,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9210,25 +9208,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9236,7 +9233,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9247,24 +9244,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9275,7 +9272,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9284,19 +9281,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9308,7 +9305,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9316,17 +9313,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9334,7 +9331,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9346,17 +9343,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9367,25 +9364,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9393,7 +9390,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9401,23 +9398,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9426,25 +9423,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9452,7 +9449,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9460,11 +9457,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9472,7 +9469,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9480,17 +9477,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9500,15 +9497,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11696,17 +11693,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11714,21 +11728,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11736,34 +11750,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13778,10 +13792,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13867,7 +13882,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17908,8 +17923,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17991,6 +18006,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19658,8 +19681,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19707,18 +19730,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19746,19 +19769,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19812,8 +19837,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19897,8 +19922,8 @@ msgstr "Paketierung" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -20012,9 +20037,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -20104,11 +20129,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20253,7 +20280,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20262,6 +20289,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20293,471 +20322,498 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "Wo der Leitfaden deployt wird" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "Package Index" msgid "``packages.index``" msgstr "Paketindex" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20766,43 +20822,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -26005,7 +26066,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -26019,39 +26080,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -26060,7 +26120,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -26069,33 +26129,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -26103,7 +26163,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -26112,39 +26172,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26152,22 +26212,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26178,35 +26238,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26215,7 +26275,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26223,40 +26283,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26267,7 +26327,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26276,7 +26336,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26288,70 +26348,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26359,21 +26419,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26381,21 +26441,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/eo/LC_MESSAGES/messages.po b/locales/eo/LC_MESSAGES/messages.po index 9b592b6dd..f2f795793 100644 --- a/locales/eo/LC_MESSAGES/messages.po +++ b/locales/eo/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-06-29 12:03+0000\n" "Last-Translator: phlostically \n" "Language-Team: Esperanto `_, `pypa/gh-action-pypi-publish`_ generates " @@ -11156,11 +11164,11 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "Aparta laborfluo por eldoni al TestPyPI" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" @@ -11168,7 +11176,7 @@ msgstr "" "Nun ripetu tiujn paŝojn, kreante alian taskon por eldonado al la pakindekso " "Prova PyPI sub la sekcio ``jobs``:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " @@ -11178,20 +11186,20 @@ msgstr "" "necesas, ĉar ĝi laŭfasone ruliĝas post ĉiu enmeto en la ĉefbranĉon kaj ofte " "indikas sanan eldonadan ĉenstablon." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "La plena laborfluo por kontinuaj integrado kaj disponigo" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "Jen alineo pri la plena laborfluo laŭ la ĉi-supra gvidilo." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "Jen fino!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -11199,7 +11207,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -11208,7 +11216,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -11225,7 +11233,7 @@ msgid "Hosting" msgstr "Gastigado" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "Instalado" @@ -11309,21 +11317,12 @@ msgstr "" "aŭtomatan testadon por Linux, Mac kaj Windows:" #: ../source/guides/supporting-multiple-python-versions.rst:65 -#, fuzzy -#| msgid "" -#| "`Travis CI `_ provides both a Linux and a macOS " -#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " -#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -"`Travis CI `_ provizas kaj Linux-an kaj macOS-an " -"mediojn. La medio Linux estis Ubuntu 12.04 LTS Servila Eldono 64-bita, dum " -"la medio macOS estis 10.9.2, kiam ĉi tiu dokumento estis verkita." -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." @@ -11331,9 +11330,15 @@ msgstr "" "`Appveyor `_ provizas Windows-medion (Windows " "Server 2012)." -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 +#, fuzzy +#| msgid "" +#| "Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +#| "formatted file as specification for the instructions for testing. If any " +#| "tests fail, the output log for that specific configuration can be " +#| "inspected." msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" @@ -11341,7 +11346,7 @@ msgstr "" "specifantan la instrukciojn pri testado. Se iu testo malsukcesos, la eliga " "protokolo pri tiu estas inspektebla." -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." @@ -11349,11 +11354,11 @@ msgstr "" "Por Python-projekto disponigota sur kaj Python 2 kaj Python 3 per unufonta " "strategio, ekzistas kelkaj opcioj." -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "Iloj por unufontaj Python-pakoj" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -11372,7 +11377,7 @@ msgstr "" "modernize>`_, verkita de Armin Ronacher, povas aŭtomate efektivigi la kodo-" "modifojn per six_." -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -11385,15 +11390,15 @@ msgstr "" "celas kunfunkciigi Python 2 kaj Python 3 per lingva sintakso de unu el la du " "Python-versioj: oni povas uzi" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "modulon de sintakso Python 2 en projekto de Python 3." -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "modulon de sintakso Python 3 en projekto de *Python 2*." -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -11408,7 +11413,7 @@ msgstr "" "du programetojn, ``futurize`` kaj ``pasteurize``, por modulo de Python 2 kaj " "de Python 3 respektive." -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -11422,11 +11427,11 @@ msgstr "" "provizas por kongrueco kun Python 3. Ajna restanta problemo pri kongrueco " "postulas malaŭtomatan modifon." -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "Kio estas en kiu Python?" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -11476,19 +11481,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" -"La servo Appveyor estas servo por kontinua integrado simile al la pli bone " -"konata servo `Travis`_ ofte uzata por testado de projektoj sur `GitHub`_. " -"Tamen, malkiel Travis, la konstruaj procezoj sur Appveyor gastigas Windows " -"kaj havas taŭgajn tradukilojn por konstrui Python-etendaĵojn." - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -11502,11 +11494,11 @@ msgstr "" "kiel konstruservon (eĉ se oni ne uzas ĝin por testado), oni povas disponigi " "Windows-duumaĵojn sen dediĉita Windows-medio." -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "Eki" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -11518,7 +11510,7 @@ msgstr "" "www.appveyor.com/docs/>`__ priskribas instrukciojn por krei konton. La " "senkosta konto sufiĉas por malfermitkoda projekto." -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " @@ -11527,21 +11519,25 @@ msgstr "" "Appveyor integriĝas kun `GitHub`_ kaj `Bitbucket`_. Se via projekto estas " "gastigata en unu el tiuj du servoj, ekstarigo de Appveyor facilas." -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 +#, fuzzy +#| msgid "" +#| "Once you have set up your Appveyor account and added your project, " +#| "Appveyor will automatically build your project each time a commit occurs. " +#| "This behaviour will be familiar to users of Travis." msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" "Post starigo de konto ĉe Appveyor kaj agordado de la projekto, Appveyor " "aŭtomate konstruos la projekton post ĉiu modifo. Tiu konduto similas al " "Travis." -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "Aldoni subtenon por Appveyor al via projekto" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -11553,7 +11549,7 @@ msgstr "" "la dosiero troviĝas en la dokumentaro de Appveyor. Ĉi tiu gvidilo provizas " "tiajn detalojn, kiaj necesas por konstrui wheel-on." -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -11570,11 +11566,11 @@ msgstr "" "tradukilo. (Ekde versio 3.5, la uzata versio de Visual Studio inkluzivas 64-" "bitan tradukilon sen plia agordo.)" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appveyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." @@ -11593,7 +11589,7 @@ msgstr "" "projekto. Ĝi estas en la dosierformo ``YAML`` kaj konsistas el kelkaj " "sekcioj." -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -11611,7 +11607,7 @@ msgstr "" "inkluzivita. Ni ne subtenas 2.6 en ĉi tiu dokumento (uzanto de Windows " "ankoraŭ uzanta Python 2 ordinare povas facile migri al Python 2.7)." -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -11620,7 +11616,7 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." @@ -11628,7 +11624,7 @@ msgstr "" "La sekcio ``build`` simple malŝaltas konstruadon – neniu konstrua paŝo " "necesas por Python malkiel ekzemple ``C#``." -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." @@ -11636,7 +11632,7 @@ msgstr "" "La ĉefaj sekcioj adaptendaj al via projekto estas ``test_script`` kaj " "``after_test``." -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -11655,7 +11651,7 @@ msgstr "" "aŭ :file:`py.test`. Aŭ oni deziras uzi testozorgilon kiel ``tox`` – tamen, " "se oni uzas ``tox``, oni konsideru la ĉi-subajn pliajn ŝanĝojn pri agordoj." -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -11666,7 +11662,7 @@ msgstr "" "wheel tie. Supozante, ke via projekto uzas la rekomendatajn ilojn (specife " "``setuptools``), do la komando ``setup.py bdist_wheel`` konstruos la wheel." -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." @@ -11675,11 +11671,11 @@ msgstr "" "malsukceson de testoj sur Windows, oni povas preterpasi ilin laŭ la maniero " "ĉi-supra." -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "Helpa programeto" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -11691,7 +11687,7 @@ msgstr "" "3.3 kaj 3.4. Tiuj projektoj, kiuj ne bezonas tradukilon aŭ ne subtenas 3.3 " "aŭ 3.4 sur 64-bita Windows, nur bezonas la dosieron :file:`appveyor.yml`." -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -11710,7 +11706,7 @@ msgstr "" "starigas la SDK por 64-bita Python 3.3 or 3.4; tial ne difinu la median " "variablon por alia konstruo." -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." @@ -11718,11 +11714,11 @@ msgstr "" "Vi povas simple elŝuti la ``cmd``-dosieron kaj senŝanĝe inkluzivi ĝin en " "vian projekton." -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "Aliro al la konstruitaj wheel-oj" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -11739,11 +11735,11 @@ msgstr "" "al la wheel-oj por la Python-versio kaj arĥikteturo. Vi povas elŝuti tiujn " "wheel-ojn kaj alŝuti ilin al PyPI dum via eldona procedo." -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "Testado per tox" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " @@ -11753,7 +11749,7 @@ msgstr "" "certigas, ke testoj ruliĝu en izolita medio uzante la ekzaktajn dosierojn " "distribuotajn de la projekto." -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " @@ -11763,7 +11759,7 @@ msgstr "" "problemoj ne estas specifaj al Appveyor kaj povas ekzisti en aliaj sistemoj " "de kontinua integrado)." -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -11774,7 +11770,7 @@ msgstr "" "procezoj. Ĉar ``distutils`` uzas mediajn variablojn por regi la tradukilon, " "tia «testo-izolanta» funkcio kaŭzos miselektadon de tradukilo en testo." -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -11786,23 +11782,23 @@ msgstr "" "mediajn variablojn liverotajn al subprocezo. Por la SDK-tradukilo, oni uzas " "la jenon:" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -11816,15 +11812,24 @@ msgstr "" "programeto :file:`build.cmd` faras tion implicite, se ``DISTUTILS_USE_SDK`` " "ekzistas." -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 +#, fuzzy +#| msgid "" +#| "When used interactively, ``tox`` allows you to run your tests against " +#| "multiple environments (often, this means multiple Python versions). This " +#| "feature is not as useful in a CI environment like Travis or Appveyor, " +#| "where all tests are run in isolated environments for each configuration. " +#| "As a result, projects often supply an argument ``-e ENVNAME`` to ``tox`` " +#| "to specify which environment to use (there are default environments for " +#| "most versions of Python)." msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" "Dum interaga uzado, `` tokso`` ebligas ruli testojn en pluraj medioj (ofte, " "inkluzive de pluraj versioj de Python). Tiu funkcio ne tre utilas en medio " @@ -11833,7 +11838,7 @@ msgstr "" "MEDIO`` al ``tox`` por specifi la uzotan medion (ekzistas aprioraj medioj " "por la plejparto de versioj de Python)." -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" @@ -11843,7 +11848,7 @@ msgstr "" "kiel ekzemple Appveyor, en kiu ekzistas du instaloj de Python 3.4 (32-bita " "kaj 64-bita), sed nur unu medio ``py34`` en ``tox``." -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -11855,7 +11860,7 @@ msgstr "" "certigas, ke kiam Appveyor rulos testojn, ilin interpretos la agordita " "interpretilo." -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -11866,11 +11871,11 @@ msgstr "" "``tox`` eble devas modifi la dosieron :file:`tox.ini`. Tio, tamen, estas " "ekster la temo de ĉi tiu dokumento." -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "Aŭtomate elŝuti wheel" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -11878,7 +11883,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -11890,11 +11895,11 @@ msgstr "" "deziras alŝuti novan wheel post ĉiu enmeto (kvankam kelkaj projektoj fakte " "deziras tion)." -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "Eksteraj dependecoj" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." @@ -11902,7 +11907,7 @@ msgstr "" "La donitaj programetoj sukcese konstruos ĉian ajn distribuon ne dependantan " "de triapartia ekstera biblioteko por la konstruado." -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -11912,15 +11917,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "Helpaj programetoj" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "Por referenco, jen la SDK-stariga helpa programeto:" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -14743,10 +14748,33 @@ msgstr "" "estas uzebla tuj post klonado el GitHub." #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +#, fuzzy +#| msgid "" +#| "`Docs `__ | `GitHub `__ | `PyPI `__" +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" +"`Dokumentaro `__ | `GitHub `__ | `PyPI `__" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.releaser" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__ | `PyPI `__" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -14768,15 +14796,15 @@ msgstr "" "alkrementadon de versiaj numeroj, ĝisdatigadon de ŝanĝoprotokolo, etikedigon " "de eldonoj en versikontrola sistemo, kaj alŝutadon de nova pako al PyPI." -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "Projektoj pri la Norma Biblioteko" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "ensurepip" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" @@ -14784,7 +14812,7 @@ msgstr "" "`Dokumentaro `__ | `Cimoj " "`__" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -14795,11 +14823,11 @@ msgstr "" "al ekzistanta Python-instalo aŭ virtuala medio. Ordinare uzanto ne rekte " "uzas tiun modulon; ĝi estas uzata dum la konstruado de la Python-distribuo." -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "http.server" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" @@ -14807,7 +14835,7 @@ msgstr "" ":doc:`Dokumentaro ` | :gh:`Cimoj `" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " @@ -14817,11 +14845,11 @@ msgstr "" "kiel :term:`pakindekson ` (vidu :ref:`Gastigi vian Propran " "Simplan Deponejon `)." -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "venv" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" @@ -14829,7 +14857,7 @@ msgstr "" "`Dokumentaro `__ | `Cimoj " "`__" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -17305,10 +17333,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -17412,7 +17441,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "Ekzemplo" @@ -22344,9 +22373,13 @@ msgstr "" "oni povas kompari kun eroj en dosiersistemo, laŭ la jena difino:" #: ../source/specifications/glob-patterns.rst:18 +#, fuzzy +#| msgid "" +#| "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " +#| "(``.``) MUST be matched verbatim." msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" "Literoj, ciferoj, substrekoj (``_``), streketoj (``-``) kaj punktoj (``.``) " "DEVAS prezenti sin laŭlitere." @@ -22443,6 +22476,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "Jen simpla referenca realigo:" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "PyPA-specifoj" @@ -24527,8 +24568,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "**Postulata?**: jes" @@ -24578,18 +24619,18 @@ msgstr "Tipo de TOML_: listo de signoĉenoj" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "**Postulata?**: ne" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -24617,10 +24658,12 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 #, fuzzy #| msgid "TOML_ type: string" msgid "**Type**: string" @@ -24629,9 +24672,9 @@ msgstr "Tipo de TOML_: signoĉeno" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -24685,8 +24728,8 @@ msgid "``dependency-groups``" msgstr "``dependency-groups``" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -24774,8 +24817,8 @@ msgstr "``[[packages]]``" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: array of tables" @@ -24904,9 +24947,9 @@ msgstr "``[packages.vcs]``" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 #, fuzzy #| msgid "TOML_ type: table" msgid "**Type**: table" @@ -25004,11 +25047,13 @@ msgid "The path to the local directory of the source tree." msgstr "La dosierloko de la Python-interpretilo de la baza instalo." #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -25166,7 +25211,7 @@ msgid "``packages.directory.subdirectory``" msgstr "``packages.directory.subdirectory``" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -25175,6 +25220,8 @@ msgid "``[packages.archive]``" msgstr "``[packages.archive]``" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -25206,477 +25253,512 @@ msgstr "" msgid "``packages.archive.url``" msgstr "``packages.archive.url``" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." -msgstr "Vidu :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +#, fuzzy +#| msgid "See :ref:`pylock-packages-archive-path`." +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "Vidu :ref:`pylock-packages-archive-path`." -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:455 +#, fuzzy +#| msgid "The source tree" +msgid "The URL_ to the archive." +msgstr "La fontarbo" + +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "``packages.archive.path``" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." -msgstr "Vidu :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +#, fuzzy +#| msgid "See :ref:`pylock-packages-archive-url`." +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" +msgstr "Vidu :ref:`pylock-packages-archive-url`." #: ../source/specifications/pylock-toml.rst:466 +#, fuzzy +#| msgid "The name of the project." +msgid "The path to the archive." +msgstr "La nomo de la projekto." + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "``packages.archive.size``" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 #, fuzzy #| msgid "The name of the project." msgid "The size of the archive file." msgstr "La nomo de la projekto." -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "``packages.archive.upload-time``" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "Kie la gvidilo disponiĝas" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "``[packages.archive.hashes]``" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: Table of strings" msgstr "Tipo de TOML_: listo de signoĉenoj" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "``packages.archive.subdirectory``" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "``packages.index``" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "``[packages.sdist]``" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "``packages.sdist.name``" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "``packages.sdist.upload-time``" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "Vidu :ref:`pylock-packages-archive-upload-time`." -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "``packages.sdist.url``" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "Vidu :ref:`pylock-packages-archive-url`." -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "``packages.sdist.path``" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "Vidu :ref:`pylock-packages-archive-path`." -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "``packages.sdist.size``" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "Vidu :ref:`pylock-packages-archive-size`." -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "``packages.sdist.hashes``" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "Vidu :ref:`pylock-packages-archive-hashes`." -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "``[[packages.wheels]]``" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "``packages.wheels.name``" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "``packages.wheels.upload-time``" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "``packages.wheels.url``" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "``packages.wheels.path``" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "``packages.wheels.size``" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "``packages.wheels.hashes``" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "``[[packages.attestation-identities]]``" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`provenance-object`" msgstr ":ref:`pyproject-toml-spec`" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "``packages.attestation-identities.kind``" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "``[packages.tool]``" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "``[tool]``" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "Vidu :ref:`pylock-packages-tool`." -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 #, fuzzy #| msgid "Binary distribution format" msgid ":ref:`Install `." msgstr "Duuma distribua formo" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -25685,43 +25767,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "Aprilo 2025: unua versio, aprobita per :pep:`751`." +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "La dosiero :file:`.pypirc`" @@ -32358,9 +32445,14 @@ msgstr "" "Sekure elŝutu `get-pip.py `_ [1]_" #: ../source/tutorials/installing-packages.rst:139 +#, fuzzy +#| msgid "" +#| "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " +#| "Additionally, it will install :ref:`setuptools` and :ref:`wheel` if " +#| "they're not installed already." msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" "Rulu ``python get-pip.py``. [2]_ Tio instalos aŭ ĝisdatigos pip. Krome, ĝi " @@ -32376,24 +32468,22 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +#, fuzzy +#| msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "Certigu, ke pip, setuptools kaj wheel estas ĝisdataj" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -"Dum ``pip`` sole sufiĉas por instali el antaŭkonstruita duuma arĥivo, " -"ĝisdataj kopioj de la projektoj ``setuptools`` kaj ``wheel`` utilas por " -"instali el fonta arĥivo:" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "Nedevige, kreu virtualan medion" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " @@ -32403,7 +32493,7 @@ msgstr "" "por detaloj, sed jen la baza komando de :doc:`venv ` " "[3]_ por tipa Linux-sistemo:" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " @@ -32412,11 +32502,11 @@ msgstr "" "Tio kreos novan virtualan medion en la subdosierujo ``tutorial_env`` kaj " "igas la aktualan ŝelon uzi ĝin kiel la implicitan ``python``-medion." -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "Krei Virtualajn Mediojn" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -32429,7 +32519,7 @@ msgstr "" "malloke. Se vi volas sekure instali komandlinian ilon, vidu :doc:`/guides/" "installing-stand-alone-command-line-tools`." -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -32442,7 +32532,7 @@ msgstr "" "instalus ĉion en /usr/lib/python3.6/site-packages (aŭ la norma loko por onia " "platformo), oni ofte senintence ĝisdatigus programon ne ĝisdatindan." -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " @@ -32452,7 +32542,7 @@ msgstr "" "programo funkcias, ajna ŝanĝo de ĝiaj bibliotekoj aŭ de la bibliotekaj " "versioj povas misfunkciigi la programon." -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." @@ -32461,7 +32551,7 @@ msgstr "" "Package>` en la tutsisteman dosierujon ``site-packages``? Ekzemple, je " "komuna gastiganto." -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " @@ -32471,13 +32561,13 @@ msgstr "" "instalan dosierujon kaj ne havas bibliotekon komunan kun aliaj virtualaj " "medioj." -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "Aktuale ekzistas du oftaj iloj por krei virtualajn Python-mediojn:" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -32489,7 +32579,7 @@ msgstr "" "3.4 kaj pli novaj (versioj de Python antaŭ 3.12 ankaŭ " "instalis :ref:`setuptools`)." -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -32502,19 +32592,19 @@ msgstr "" "en la kreitan virtualan medion apriore. Notu, ke ``setuptools`` ne plu estas " "inkluzivita apriore ekde Python 3.12 (kaj ``virtualenv`` sekvas tion)." -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "Jen la baza uzmaniero:" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "Uzi :doc:`venv `:" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "Uzi :ref:`virtualenv`:" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." @@ -32522,7 +32612,7 @@ msgstr "" "Plir pliaj informoj, vidu la dokumentaron pri :doc:`venv ` aŭ la dokumentaron pri :doc:`virtualenv `." -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " @@ -32532,7 +32622,7 @@ msgstr "" "virtuala medio estas agorditaj ene de la aktuala ŝelo kaj ne en subprocezo " "(kiu poste malaperos kaj estos efikinte neniel)." -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " @@ -32542,7 +32632,7 @@ msgstr "" "komandon :command:`source`, sed preferu ruli la " "programeton :command:`activate` rekte en la komanda ŝelo jene:" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -32554,11 +32644,11 @@ msgstr "" "plialtnivelan ilon :ref:`Pipenv`, kiu aŭtomate administras po unu aparta " "virtuala medio por ĉiu projekto aŭ programo evoluigata de vi." -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "Uzu pip por instali" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " @@ -32569,11 +32659,11 @@ msgstr "" "`, kiu inkluzivas plenan :doc:`Referencan Gvidilon `." -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "Instali el PyPI" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -32590,20 +32680,20 @@ msgstr "" "Plena priskribo de la permesataj specifiloj troviĝas en la :ref:`Normo pri " "versio-specifiloj `. Jen kelkaj ekzemploj." -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "Por instali la plej novan version de «SomeProject»:" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "Por instali specifan version:" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" "Por instali version ne malpli novan ol unu version kaj malpli novan ol alian:" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" @@ -32611,7 +32701,7 @@ msgstr "" "Por instali version :ref:`kongruan ` " "kun iu versio: [4]_" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." @@ -32619,11 +32709,11 @@ msgstr "" "Tiukaze, tio signifas instali ajnan version «==1.4.*» ankaŭ plenumantan " "«>=1.4.2»." -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "Fonto-Distribuoj kontraste kun Wheel-oj" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -32637,7 +32727,7 @@ msgstr "" "aprioran konduton de pip per la flago :ref:`--no-binary `." -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -32649,7 +32739,7 @@ msgstr "" "`, speciale por projekto enhavanta " "tradukitan etendaĵon." -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " @@ -32658,15 +32748,15 @@ msgstr "" "Se :ref:`pip` ne trovas instalotan wheel, ĝi loke konstruos wheel kaj " "enkaŝmemorigi ĝin por estonteco anstataŭ rekonstruado de la fonta distribuo." -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "Ĝisdatigi jam instalitan ``SomeProject`` al la plej nova ĉe PyPI." -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "Instali al la Loko de la Uzanto" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" @@ -32674,7 +32764,7 @@ msgstr "" "Por instali :term:`pakojn ` izolitajn al la aktuala " "uzanto, uzu la flagon ``--user``:" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." @@ -32682,7 +32772,7 @@ msgstr "" "Por pli da informoj, vidu la paragrafon `User Installs `_ de la dokumentaro de pip." -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." @@ -32690,7 +32780,7 @@ msgstr "" "Notu, ke la flago ``-user`` havas neniun efikon ene de virtuala medio – ĉiaj " "instalaj komandoj ŝanĝos la virtualan medion." -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -32701,7 +32791,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -32716,7 +32806,7 @@ msgstr "" "al via ``PATH ``. Vi povas fiksi vian ``PATH`` `modifante ~/.profile " "`_." -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -32736,7 +32826,7 @@ msgstr "" "sian ``PATH`` malprovizore en la `Stirpanelo `_. Oni eble " "devas adiaŭi por efektivigi la ŝanĝojn pri ``PATH``." -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." @@ -32744,11 +32834,11 @@ msgstr "" "Instali liston de postuloj en :ref:`Postulo-Dosiero `." -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "Instali el Versikontrola Sistemo" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." @@ -32757,15 +32847,15 @@ msgstr "" "plenaj detaloj de la sintakso, vidu la dokumentaron de pip pri :ref:`Subteno " "de Versikontrola Sistemo `." -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "Instali el aliaj Indeksoj" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "Instali el alternativa indekso" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" @@ -32773,11 +32863,11 @@ msgstr "" "Dum instalado serĉi plian indekson kune kun :term:`PyPI `" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "Instali el loka fonta arbo" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " @@ -32787,19 +32877,19 @@ msgstr "" "development_mode>`, tiel ke la projekto estas instalita sed tamen modifebla " "ĉe la fontarbo." -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "Vi ankaŭ povas instali ordinare el fonto" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "Instali el loka arĥivo" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "Instali specifan fontan arĥivan dosieron." -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" @@ -32807,11 +32897,11 @@ msgstr "" "Instali el loka dosierujo enhavanta arĥivojn (kaj ne kontroli :term:`PyPI " "`)" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "Instali el aliaj fontoj" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -32823,11 +32913,11 @@ msgstr "" "deponeja API `:, kaj uzi la flagon ``--extra-index-" "url`` igante pip uzi tiun indekson." -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "Instali Antaŭeldonojn" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." @@ -32835,11 +32925,11 @@ msgstr "" "Trovi antaŭeldonajn kaj evoluadajn versiojn, aldone al stabilaj versioj. " "Apriore, pip nur trovas stabilajn versiojn." -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "Instali «Ekstraĵojn»" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -32851,7 +32941,7 @@ msgstr "" "instali ekstraĵon por pako, kiu havas ekstraĵon, oni povas inkluzivi ĝin en " "la instalokomandon de pip:" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " @@ -32861,7 +32951,7 @@ msgstr "" "kiel :command:`curl` kiu konfirmas SSL-atestilojn dum elŝutado el ``https``-" "retadresoj." -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" @@ -32871,7 +32961,7 @@ msgstr "" "biblioteko) kreas virtualan medion kun antaŭinstalita ``pip``, simile " "al :ref:`virtualenv`." -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" @@ -33862,6 +33952,48 @@ msgstr "" "komencanto pri Python-pakado, recomendate estas nur uzi *ordinarajn pakojn* " "kaj ``__init__.py`` (eĉ se tiu dosiero estas malplena)." +#~ msgid "" +#~ "While ``pip`` alone is sufficient to install from pre-built binary " +#~ "archives, up to date copies of the ``setuptools`` and ``wheel`` projects " +#~ "are useful to ensure you can also install from source archives:" +#~ msgstr "" +#~ "Dum ``pip`` sole sufiĉas por instali el antaŭkonstruita duuma arĥivo, " +#~ "ĝisdataj kopioj de la projektoj ``setuptools`` kaj ``wheel`` utilas por " +#~ "instali el fonta arĥivo:" + +#, fuzzy +#~| msgid "" +#~| "`Travis CI `_ provides both a Linux and a macOS " +#~| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~| "bit while the macOS is 10.9.2 at the time of writing." +#~ msgid "" +#~ "`Travis CI `_ provides both a Linux and a macOS " +#~ "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~ "bit while the macOS is 10.9.2 at the time of writing." +#~ msgstr "" +#~ "`Travis CI `_ provizas kaj Linux-an kaj macOS-an " +#~ "mediojn. La medio Linux estis Ubuntu 12.04 LTS Servila Eldono 64-bita, " +#~ "dum la medio macOS estis 10.9.2, kiam ĉi tiu dokumento estis verkita." + +#~ msgid "" +#~ "The Appveyor service is a continuous integration service, much like the " +#~ "better-known `Travis`_ service that is commonly used for testing by " +#~ "projects hosted on `GitHub`_. However, unlike Travis, the build workers " +#~ "on Appveyor are Windows hosts and have the necessary compilers installed " +#~ "to build Python extensions." +#~ msgstr "" +#~ "La servo Appveyor estas servo por kontinua integrado simile al la pli " +#~ "bone konata servo `Travis`_ ofte uzata por testado de projektoj sur " +#~ "`GitHub`_. Tamen, malkiel Travis, la konstruaj procezoj sur Appveyor " +#~ "gastigas Windows kaj havas taŭgajn tradukilojn por konstrui Python-" +#~ "etendaĵojn." + +#~ msgid "See :ref:`pylock-packages-vcs-url`." +#~ msgstr "Vidu :ref:`pylock-packages-vcs-url`." + +#~ msgid "See :ref:`pylock-packages-vcs-path`." +#~ msgstr "Vidu :ref:`pylock-packages-vcs-path`." + #~ msgid "" #~ "This specification was originally defined in :pep:`518` and :pep:`621`." #~ msgstr "" diff --git a/locales/es/LC_MESSAGES/messages.po b/locales/es/LC_MESSAGES/messages.po index c146aa8ea..6e459db5f 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-12-12 01:00+0000\n" "Last-Translator: Joseph Hale \n" "Language-Team: Spanish `_, `pypa/gh-action-pypi-publish`_ generates " @@ -9026,37 +9034,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -9064,7 +9072,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -9073,7 +9081,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -9088,7 +9096,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy msgid "Installation" msgstr "Formato de instalación" @@ -9160,35 +9168,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -9200,7 +9207,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -9209,15 +9216,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -9227,7 +9234,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -9236,11 +9243,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9276,15 +9283,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9293,11 +9291,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9305,25 +9303,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9331,7 +9328,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9342,24 +9339,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9370,7 +9367,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9379,19 +9376,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9403,7 +9400,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9411,17 +9408,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9429,7 +9426,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9441,17 +9438,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9462,25 +9459,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9488,7 +9485,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9496,23 +9493,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9521,25 +9518,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9547,7 +9544,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9555,11 +9552,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9567,7 +9564,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9575,17 +9572,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "Dependencias externas" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9595,15 +9592,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "Secuencias de apoyo" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11818,17 +11815,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11836,21 +11850,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11858,34 +11872,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13905,10 +13919,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13994,7 +14009,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 #, fuzzy msgid "Example" msgstr "Ejemplos" @@ -18059,8 +18074,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -18141,6 +18156,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "Especificaciones de PyPA" @@ -19822,8 +19845,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 #, fuzzy msgid "**Required?**: yes" msgstr "Archivo de requisitos" @@ -19873,18 +19896,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19912,19 +19935,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19979,8 +20004,8 @@ msgid "``dependency-groups``" msgstr "Dependencias externas" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "Nombre de proyecto" @@ -20069,8 +20094,8 @@ msgstr "empaquetado" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -20187,9 +20212,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -20280,11 +20305,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20429,7 +20456,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20438,6 +20465,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20469,472 +20498,499 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "A dónde es desplegada la guía" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "Package Index" msgid "``packages.index``" msgstr "Índice de paquetes" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy msgid "**Inspiration**: :ref:`provenance-object`" msgstr "Nombre de proyecto" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20943,43 +20999,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "El archivo :file:`.pypirc`" @@ -26242,7 +26303,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -26256,39 +26317,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "Facultativamente, cree un entorno virtual" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -26297,7 +26357,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -26306,33 +26366,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -26340,7 +26400,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -26349,39 +26409,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26389,22 +26449,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "Instalación a partir de PyPI" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26415,35 +26475,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "Para instalar una versión específica:" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26452,7 +26512,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26460,40 +26520,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26504,7 +26564,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26513,7 +26573,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26525,70 +26585,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "Instalación a partir de un sistema de control de versiones" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "Instalación a partir de otros índices" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "Instalación a partir de un índice alternativo" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "Instalación a partir de otras fuentes" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26596,21 +26656,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "Instalando \"Extras\"" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26618,21 +26678,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/fa/LC_MESSAGES/messages.po b/locales/fa/LC_MESSAGES/messages.po index 5e032a89d..139a03d99 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2023-02-15 07:52+0000\n" "Last-Translator: Arsalan Dehghani \n" "Language-Team: Persian `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8644,37 +8652,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8682,7 +8690,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8691,7 +8699,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8706,7 +8714,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy #| msgid "Translations" msgid "Installation" @@ -8779,35 +8787,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8819,7 +8826,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8828,15 +8835,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8846,7 +8853,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8855,11 +8862,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8895,15 +8902,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8912,11 +8910,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8924,25 +8922,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8950,7 +8947,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8961,24 +8958,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8989,7 +8986,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8998,19 +8995,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9022,7 +9019,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9030,17 +9027,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9048,7 +9045,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9060,17 +9057,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9081,25 +9078,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9107,7 +9104,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9115,23 +9112,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9140,25 +9137,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9166,7 +9163,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9174,11 +9171,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9186,7 +9183,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9194,17 +9191,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9214,15 +9211,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11413,17 +11410,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11431,21 +11445,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11453,34 +11467,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13495,10 +13509,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13584,7 +13599,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17620,8 +17635,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17701,6 +17716,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19371,8 +19394,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19420,18 +19443,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19459,19 +19482,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19525,8 +19550,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19608,8 +19633,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19724,9 +19749,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19816,11 +19841,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19965,7 +19992,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19974,6 +20001,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20005,467 +20034,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20474,43 +20530,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25723,7 +25784,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25737,39 +25798,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25778,7 +25838,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25787,33 +25847,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25821,7 +25881,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25830,39 +25890,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25870,22 +25930,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25896,35 +25956,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25933,7 +25993,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25941,40 +26001,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25985,7 +26045,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25994,7 +26054,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26006,70 +26066,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26077,21 +26137,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26099,21 +26159,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/fil/LC_MESSAGES/messages.po b/locales/fil/LC_MESSAGES/messages.po index e851b4f09..4a37e1742 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2022-11-19 08:28+0000\n" "Last-Translator: RedFurrFox \n" "Language-Team: Filipino `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8628,37 +8636,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8666,7 +8674,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8675,7 +8683,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8690,7 +8698,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8761,35 +8769,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8801,7 +8808,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8810,15 +8817,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8828,7 +8835,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8837,11 +8844,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8877,15 +8884,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8894,11 +8892,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8906,25 +8904,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8932,7 +8929,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8943,24 +8940,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8971,7 +8968,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8980,19 +8977,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9004,7 +9001,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9012,17 +9009,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9030,7 +9027,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9042,17 +9039,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9063,25 +9060,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9089,7 +9086,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9097,23 +9094,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9122,25 +9119,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9148,7 +9145,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9156,11 +9153,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9168,7 +9165,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9176,17 +9173,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9196,15 +9193,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11391,17 +11388,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11409,21 +11423,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11431,34 +11445,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13473,10 +13487,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13562,7 +13577,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17588,8 +17603,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17669,6 +17684,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19331,8 +19354,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19380,18 +19403,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19419,19 +19442,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19485,8 +19510,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19568,8 +19593,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19682,9 +19707,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19774,11 +19799,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19923,7 +19950,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19932,6 +19959,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19963,467 +19992,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20432,43 +20488,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25666,7 +25727,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25680,39 +25741,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25721,7 +25781,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25730,33 +25790,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25764,7 +25824,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25773,39 +25833,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25813,22 +25873,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25839,35 +25899,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25876,7 +25936,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25884,40 +25944,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25928,7 +25988,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25937,7 +25997,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25949,70 +26009,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26020,21 +26080,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26042,21 +26102,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/fr/LC_MESSAGES/messages.po b/locales/fr/LC_MESSAGES/messages.po index 836200722..e904b6bd4 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2026-01-20 00:01+0000\n" "Last-Translator: Nathan \n" "Language-Team: French `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8866,37 +8874,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8904,7 +8912,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8913,7 +8921,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8928,7 +8936,7 @@ msgid "Hosting" msgstr "Hébergement" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy msgid "Installation" msgstr "Format d'installation" @@ -9000,35 +9008,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -9040,7 +9047,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -9049,15 +9056,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -9067,7 +9074,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -9076,11 +9083,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9116,15 +9123,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9133,11 +9131,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "Configuration" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9145,25 +9143,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9171,7 +9168,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9182,24 +9179,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appveyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9210,7 +9207,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9219,19 +9216,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9243,7 +9240,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9251,17 +9248,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "Script d'aide" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9269,7 +9266,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9281,17 +9278,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9302,25 +9299,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9328,7 +9325,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9336,23 +9333,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9361,25 +9358,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9387,7 +9384,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9395,11 +9392,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9407,7 +9404,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9415,17 +9412,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "Dépendances externes" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9435,15 +9432,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "Scripts d'aide" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -11759,10 +11756,33 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +#, fuzzy +#| msgid "" +#| "`Docs `__ | `GitHub `__ | `PyPI `__" +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" +"`Documentation `__ | `GitHub `__ | `PyPI `__" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.releaser" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__ | `PyPI `__" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11780,21 +11800,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "ensurepip" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11802,28 +11822,28 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "venv" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" @@ -11831,7 +11851,7 @@ msgstr "" "`Documentation `__ | `Problèmes " "`__" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13865,10 +13885,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13958,7 +13979,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "Exemple" @@ -18063,8 +18084,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -18145,6 +18166,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19894,8 +19923,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 #, fuzzy #| msgid "Requires" msgid "**Required?**: yes" @@ -19947,18 +19976,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19986,19 +20015,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -20054,8 +20085,8 @@ msgid "``dependency-groups``" msgstr "``dependencies``" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "pyproject.toml" @@ -20140,8 +20171,8 @@ msgstr "``packages``" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -20267,9 +20298,9 @@ msgstr "``packages``" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -20365,11 +20396,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20520,7 +20553,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20531,6 +20564,8 @@ msgid "``[packages.archive]``" msgstr "``packages``" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20564,504 +20599,531 @@ msgstr "" msgid "``packages.archive.url``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 #, fuzzy #| msgid "``packages``" msgid "``packages.archive.path``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 #, fuzzy #| msgid "``packages``" msgid "``packages.archive.size``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "Où le guide est-il déployé ?" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "``packages``" msgid "``packages.index``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 #, fuzzy #| msgid "``packages``" msgid "``[packages.sdist]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.name``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.upload-time``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.url``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.path``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.size``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.hashes``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 #, fuzzy #| msgid "``packages``" msgid "``[[packages.wheels]]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.name``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.url``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.path``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.size``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.hashes``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy msgid "**Inspiration**: :ref:`provenance-object`" msgstr "pyproject.toml" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 #, fuzzy #| msgid "``packages``" msgid "``[packages.tool]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -21070,43 +21132,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -26353,7 +26420,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -26367,39 +26434,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -26408,7 +26474,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -26417,33 +26483,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -26451,7 +26517,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -26460,39 +26526,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26500,22 +26566,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26526,35 +26592,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26563,7 +26629,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26571,40 +26637,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26615,7 +26681,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26624,7 +26690,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26636,70 +26702,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26707,22 +26773,22 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 #, fuzzy msgid "Installing \"Extras\"" msgstr "Format d'installation" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26730,21 +26796,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/frc/LC_MESSAGES/messages.po b/locales/frc/LC_MESSAGES/messages.po index c78eb9324..fd491622a 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1524,7 +1524,7 @@ msgid "" msgstr "" #: ../source/discussions/install-requires-vs-requirements.rst:62 -#: ../source/tutorials/installing-packages.rst:464 +#: ../source/tutorials/installing-packages.rst:463 msgid "Requirements files" msgstr "" @@ -5356,7 +5356,7 @@ msgid "" msgstr "" #: ../source/guides/distributing-packages-using-setuptools.rst:589 -#: ../source/tutorials/installing-packages.rst:670 +#: ../source/tutorials/installing-packages.rst:669 msgid "" "Depending on your platform, this may require root or Administrator " "access. :ref:`pip` is currently considering changing this by `making user " @@ -5609,7 +5609,7 @@ msgstr "" #: ../source/guides/hosting-your-own-index.rst:65 #: ../source/guides/index-mirrors-and-caches.rst:56 -#: ../source/guides/supporting-windows-using-appveyor.rst:146 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 msgid "Additional notes" msgstr "" @@ -6621,7 +6621,7 @@ msgid "" msgstr "" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 -#: ../source/tutorials/installing-packages.rst:393 +#: ../source/tutorials/installing-packages.rst:392 msgid "Upgrading packages" msgstr "" @@ -8565,23 +8565,31 @@ msgid "" "and storing them for later use:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:115 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 msgid "" "This will download your repository into the CI runner and then install and " "activate the newest available Python 3 release." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:118 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 msgid "" "And now we can build the dists from source and store them. In this example, " "we'll use the ``build`` package. So add this to the steps list:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:128 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 msgid "Defining a workflow job environment" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:130 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 msgid "" "Now, let's add initial setup for our job that will publish to PyPI. It's a " "process that will execute commands that we'll define later. In this guide, " @@ -8592,21 +8600,21 @@ msgid "" "implement secretless Trusted Publishing to PyPI." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:144 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 msgid "" "This will also ensure that the PyPI publishing workflow is only triggered if " "the current commit is tagged." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:148 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 msgid "Publishing the distribution to PyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:150 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 msgid "Finally, add the following steps at the end:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 msgid "" "This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " "stored distribution package has been downloaded by the `download-artifact`_ " @@ -8614,7 +8622,7 @@ msgid "" "unconditionally." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 msgid "" "Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8622,37 +8630,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8660,7 +8668,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8669,7 +8677,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8684,7 +8692,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8755,35 +8763,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8795,7 +8802,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8804,15 +8811,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8822,7 +8829,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8831,11 +8838,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8871,15 +8878,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8888,11 +8886,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8900,25 +8898,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8926,7 +8923,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8937,24 +8934,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8965,7 +8962,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8974,19 +8971,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -8998,7 +8995,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9006,17 +9003,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9024,7 +9021,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9036,17 +9033,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9057,25 +9054,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9083,7 +9080,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9091,23 +9088,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9116,25 +9113,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9142,7 +9139,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9150,11 +9147,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9162,7 +9159,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9170,17 +9167,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9190,15 +9187,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11385,17 +11382,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11403,21 +11417,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11425,34 +11439,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13467,10 +13481,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13556,7 +13571,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17582,8 +17597,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17663,6 +17678,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19325,8 +19348,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19374,18 +19397,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19413,19 +19436,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19479,8 +19504,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19562,8 +19587,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19676,9 +19701,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19768,11 +19793,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19917,7 +19944,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19926,6 +19953,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19957,467 +19986,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20426,43 +20482,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25660,7 +25721,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25674,39 +25735,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25715,7 +25775,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25724,33 +25784,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25758,7 +25818,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25767,39 +25827,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25807,22 +25867,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25833,35 +25893,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25870,7 +25930,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25878,40 +25938,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25922,7 +25982,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25931,7 +25991,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25943,70 +26003,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26014,21 +26074,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26036,21 +26096,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/gl/LC_MESSAGES/messages.po b/locales/gl/LC_MESSAGES/messages.po index d8e81abc8..843f86638 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1524,7 +1524,7 @@ msgid "" msgstr "" #: ../source/discussions/install-requires-vs-requirements.rst:62 -#: ../source/tutorials/installing-packages.rst:464 +#: ../source/tutorials/installing-packages.rst:463 msgid "Requirements files" msgstr "" @@ -5356,7 +5356,7 @@ msgid "" msgstr "" #: ../source/guides/distributing-packages-using-setuptools.rst:589 -#: ../source/tutorials/installing-packages.rst:670 +#: ../source/tutorials/installing-packages.rst:669 msgid "" "Depending on your platform, this may require root or Administrator " "access. :ref:`pip` is currently considering changing this by `making user " @@ -5609,7 +5609,7 @@ msgstr "" #: ../source/guides/hosting-your-own-index.rst:65 #: ../source/guides/index-mirrors-and-caches.rst:56 -#: ../source/guides/supporting-windows-using-appveyor.rst:146 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 msgid "Additional notes" msgstr "" @@ -6621,7 +6621,7 @@ msgid "" msgstr "" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 -#: ../source/tutorials/installing-packages.rst:393 +#: ../source/tutorials/installing-packages.rst:392 msgid "Upgrading packages" msgstr "" @@ -8565,23 +8565,31 @@ msgid "" "and storing them for later use:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:115 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 msgid "" "This will download your repository into the CI runner and then install and " "activate the newest available Python 3 release." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:118 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 msgid "" "And now we can build the dists from source and store them. In this example, " "we'll use the ``build`` package. So add this to the steps list:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:128 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 msgid "Defining a workflow job environment" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:130 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 msgid "" "Now, let's add initial setup for our job that will publish to PyPI. It's a " "process that will execute commands that we'll define later. In this guide, " @@ -8592,21 +8600,21 @@ msgid "" "implement secretless Trusted Publishing to PyPI." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:144 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 msgid "" "This will also ensure that the PyPI publishing workflow is only triggered if " "the current commit is tagged." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:148 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 msgid "Publishing the distribution to PyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:150 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 msgid "Finally, add the following steps at the end:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 msgid "" "This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " "stored distribution package has been downloaded by the `download-artifact`_ " @@ -8614,7 +8622,7 @@ msgid "" "unconditionally." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 msgid "" "Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8622,37 +8630,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8660,7 +8668,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8669,7 +8677,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8684,7 +8692,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8755,35 +8763,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8795,7 +8802,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8804,15 +8811,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8822,7 +8829,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8831,11 +8838,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8871,15 +8878,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8888,11 +8886,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8900,25 +8898,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8926,7 +8923,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8937,24 +8934,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8965,7 +8962,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8974,19 +8971,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -8998,7 +8995,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9006,17 +9003,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9024,7 +9021,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9036,17 +9033,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9057,25 +9054,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9083,7 +9080,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9091,23 +9088,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9116,25 +9113,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9142,7 +9139,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9150,11 +9147,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9162,7 +9159,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9170,17 +9167,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9190,15 +9187,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11385,17 +11382,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11403,21 +11417,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11425,34 +11439,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13467,10 +13481,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13556,7 +13571,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17582,8 +17597,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17663,6 +17678,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19325,8 +19348,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19374,18 +19397,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19413,19 +19436,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19479,8 +19504,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19562,8 +19587,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19676,9 +19701,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19768,11 +19793,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19917,7 +19944,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19926,6 +19953,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19957,467 +19986,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20426,43 +20482,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25660,7 +25721,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25674,39 +25735,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25715,7 +25775,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25724,33 +25784,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25758,7 +25818,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25767,39 +25827,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25807,22 +25867,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25833,35 +25893,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25870,7 +25930,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25878,40 +25938,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25922,7 +25982,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25931,7 +25991,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25943,70 +26003,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26014,21 +26074,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26036,21 +26096,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/gmh/LC_MESSAGES/messages.po b/locales/gmh/LC_MESSAGES/messages.po index f65e599ab..3584712f6 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1524,7 +1524,7 @@ msgid "" msgstr "" #: ../source/discussions/install-requires-vs-requirements.rst:62 -#: ../source/tutorials/installing-packages.rst:464 +#: ../source/tutorials/installing-packages.rst:463 msgid "Requirements files" msgstr "" @@ -5356,7 +5356,7 @@ msgid "" msgstr "" #: ../source/guides/distributing-packages-using-setuptools.rst:589 -#: ../source/tutorials/installing-packages.rst:670 +#: ../source/tutorials/installing-packages.rst:669 msgid "" "Depending on your platform, this may require root or Administrator " "access. :ref:`pip` is currently considering changing this by `making user " @@ -5609,7 +5609,7 @@ msgstr "" #: ../source/guides/hosting-your-own-index.rst:65 #: ../source/guides/index-mirrors-and-caches.rst:56 -#: ../source/guides/supporting-windows-using-appveyor.rst:146 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 msgid "Additional notes" msgstr "" @@ -6621,7 +6621,7 @@ msgid "" msgstr "" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 -#: ../source/tutorials/installing-packages.rst:393 +#: ../source/tutorials/installing-packages.rst:392 msgid "Upgrading packages" msgstr "" @@ -8565,23 +8565,31 @@ msgid "" "and storing them for later use:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:115 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 msgid "" "This will download your repository into the CI runner and then install and " "activate the newest available Python 3 release." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:118 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 msgid "" "And now we can build the dists from source and store them. In this example, " "we'll use the ``build`` package. So add this to the steps list:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:128 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 msgid "Defining a workflow job environment" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:130 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 msgid "" "Now, let's add initial setup for our job that will publish to PyPI. It's a " "process that will execute commands that we'll define later. In this guide, " @@ -8592,21 +8600,21 @@ msgid "" "implement secretless Trusted Publishing to PyPI." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:144 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 msgid "" "This will also ensure that the PyPI publishing workflow is only triggered if " "the current commit is tagged." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:148 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 msgid "Publishing the distribution to PyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:150 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 msgid "Finally, add the following steps at the end:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 msgid "" "This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " "stored distribution package has been downloaded by the `download-artifact`_ " @@ -8614,7 +8622,7 @@ msgid "" "unconditionally." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 msgid "" "Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8622,37 +8630,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8660,7 +8668,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8669,7 +8677,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8684,7 +8692,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8755,35 +8763,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8795,7 +8802,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8804,15 +8811,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8822,7 +8829,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8831,11 +8838,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8871,15 +8878,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8888,11 +8886,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8900,25 +8898,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8926,7 +8923,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8937,24 +8934,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8965,7 +8962,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8974,19 +8971,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -8998,7 +8995,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9006,17 +9003,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9024,7 +9021,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9036,17 +9033,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9057,25 +9054,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9083,7 +9080,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9091,23 +9088,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9116,25 +9113,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9142,7 +9139,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9150,11 +9147,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9162,7 +9159,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9170,17 +9167,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9190,15 +9187,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11385,17 +11382,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11403,21 +11417,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11425,34 +11439,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13467,10 +13481,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13556,7 +13571,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17582,8 +17597,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17663,6 +17678,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19325,8 +19348,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19374,18 +19397,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19413,19 +19436,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19479,8 +19504,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19562,8 +19587,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19676,9 +19701,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19768,11 +19793,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19917,7 +19944,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19926,6 +19953,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19957,467 +19986,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20426,43 +20482,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25660,7 +25721,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25674,39 +25735,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25715,7 +25775,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25724,33 +25784,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25758,7 +25818,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25767,39 +25827,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25807,22 +25867,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25833,35 +25893,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25870,7 +25930,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25878,40 +25938,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25922,7 +25982,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25931,7 +25991,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25943,70 +26003,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26014,21 +26074,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26036,21 +26096,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/hi/LC_MESSAGES/messages.po b/locales/hi/LC_MESSAGES/messages.po index 3ef5f19e7..bf7311e8b 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2024-09-16 10:09+0000\n" "Last-Translator: kumar Shivam \n" "Language-Team: Hindi `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8678,37 +8686,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8716,7 +8724,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8725,7 +8733,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8740,7 +8748,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8811,35 +8819,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8851,7 +8858,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8860,15 +8867,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8878,7 +8885,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8887,11 +8894,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8927,15 +8934,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8944,11 +8942,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8956,25 +8954,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8982,7 +8979,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8993,24 +8990,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9021,7 +9018,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9030,19 +9027,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9054,7 +9051,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9062,17 +9059,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9080,7 +9077,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9092,17 +9089,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9113,25 +9110,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9139,7 +9136,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9147,23 +9144,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9172,25 +9169,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9198,7 +9195,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9206,11 +9203,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9218,7 +9215,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9226,17 +9223,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9246,15 +9243,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11443,17 +11440,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11461,21 +11475,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11483,34 +11497,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13527,10 +13541,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13616,7 +13631,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17653,8 +17668,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17734,6 +17749,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19401,8 +19424,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19450,18 +19473,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19489,19 +19512,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19555,8 +19580,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid "Project name" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -19640,8 +19665,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19757,9 +19782,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19849,11 +19874,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19998,7 +20025,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20007,6 +20034,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20038,469 +20067,496 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid "Project name" msgid "**Inspiration**: :ref:`provenance-object`" msgstr "परियोजना" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20509,43 +20565,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25751,7 +25812,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25765,39 +25826,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25806,7 +25866,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25815,33 +25875,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25849,7 +25909,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25858,39 +25918,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25898,22 +25958,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25924,35 +25984,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25961,7 +26021,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25969,40 +26029,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26013,7 +26073,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26022,7 +26082,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26034,70 +26094,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26105,21 +26165,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26127,21 +26187,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/id/LC_MESSAGES/messages.po b/locales/id/LC_MESSAGES/messages.po index b06586903..785baaddc 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2024-10-17 21:16+0000\n" "Last-Translator: oon arfiandwi \n" "Language-Team: Indonesian `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8680,37 +8688,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8718,7 +8726,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8727,7 +8735,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8742,7 +8750,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy #| msgid "Translations" msgid "Installation" @@ -8815,35 +8823,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8855,7 +8862,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8864,15 +8871,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8882,7 +8889,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8891,11 +8898,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8931,15 +8938,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8948,11 +8946,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8960,25 +8958,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8986,7 +8983,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8997,24 +8994,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9025,7 +9022,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9034,19 +9031,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9058,7 +9055,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9066,17 +9063,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9084,7 +9081,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9096,17 +9093,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9117,25 +9114,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9143,7 +9140,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9151,23 +9148,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9176,25 +9173,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9202,7 +9199,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9210,11 +9207,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9222,7 +9219,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9230,17 +9227,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9250,15 +9247,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11449,17 +11446,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11467,21 +11481,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11489,34 +11503,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13531,10 +13545,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13620,7 +13635,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17658,8 +17673,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17741,6 +17756,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19411,8 +19434,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19460,18 +19483,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19499,19 +19522,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19565,8 +19590,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19648,8 +19673,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19764,9 +19789,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19856,11 +19881,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20005,7 +20032,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20014,6 +20041,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20045,467 +20074,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20514,43 +20570,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25763,7 +25824,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25777,39 +25838,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25818,7 +25878,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25827,33 +25887,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25861,7 +25921,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25870,39 +25930,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25910,22 +25970,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25936,35 +25996,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25973,7 +26033,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25981,40 +26041,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26025,7 +26085,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26034,7 +26094,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26046,70 +26106,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26117,21 +26177,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26139,21 +26199,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/ja/LC_MESSAGES/messages.po b/locales/ja/LC_MESSAGES/messages.po index d79849b73..04e6ec5a8 100644 --- a/locales/ja/LC_MESSAGES/messages.po +++ b/locales/ja/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: 2026-03-05 06:32+0000\n" -"PO-Revision-Date: 2026-03-12 08:09+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" +"PO-Revision-Date: 2026-05-11 01:11+0000\n" "Last-Translator: moto kawasaki \n" "Language-Team: Japanese \n" @@ -22,7 +22,7 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: Weblate 5.17-dev\n" +"X-Generator: Weblate 2026.5-dev\n" #: ../source/contribute.rst:5 msgid "Contribute to this guide" @@ -104,7 +104,7 @@ msgstr "" "チュートリアルは目標を達成することで読者に新しい概念を教えることに注力してい" "ます。こうするべきだという意見に従ったステップバイステップのガイドになってい" "ます。大筋に無関係な警告や情報は省略されています。 `example tutorial-style " -"document`_ 。" +"document>`_ 。" #: ../source/contribute.rst:51 ../source/guides/index.rst:2 #: ../source/index.rst:69 @@ -261,9 +261,9 @@ msgid "" "system." msgstr "" "Python 3.11。我々のビルドスクリプトは、通常、Python 3.11でのみ試験されてい" -"る。あなたの使っているOSにPython 3.11をインストールする方法について" -"は、 :doc:`Python のインストール指南のためのヒッチハッカーズガイド ` を見てほしい。" +"る。あなたの使っているオペレーティングシステムにPython 3.11をインストールする" +"方法については、 :doc:`Python のインストール指南のためのヒッチハッカーズガイ" +"ド ` を見てほしい。" #: ../source/contribute.rst:140 msgid "" @@ -1233,11 +1233,11 @@ 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 リポジトリのファイルを全て含み ** 、それらのファイル群から" -"パッケージ自体をビルドし、テストスイートを走らせ、説明文書をインストールする" -"ために必要なファイルや、シェル補完やエディタ用のサポートファイルなどエンド" -"ユーザにとって役に立つかもしれない他のファイルを全て含めるべきです。" +"理想的には、**PyPI上で公開されたソースコード配布物のアーカイブには、そのパッ" +"ケージの Git リポジトリのファイルを全て含み** 、それらのファイル群からパッ" +"ケージ自体をビルドし、テストスイートを走らせ、説明文書をインストールするため" +"に必要なファイルや、シェル補完やエディタ用のサポートファイルなどエンドユーザ" +"にとって役に立つかもしれない他のファイルを全て含めるべきです。" #: ../source/discussions/downstream-packaging.rst:107 msgid "" @@ -1287,14 +1287,14 @@ msgid "" "split to cryptography-vectors_ package." msgstr "" "他方で、(例えば NumPy_ のような) いくつかのプロジェクトでは、そのインストール" -"パッケージの中にテストスイートを同梱することに決めたものがあります。これに" -"よって、そのようなパッケージをインストールした後に、例えば依存先のパッケージ" -"をアップグレードした後にリグレッション (退行)がないかどうかの確認を行うため" -"に、ユーザがテストスイートを走らせることを許すという利点を追加することができ" -"ます。さらに別のやり方としては、テストスイートやテストデータを別の Python " -"パッケージに分割する方法があります。そのような方法は、巨大なテストベクトルを " -"cryptography-vectors_package に分離する形で、 cryptography_project で採用され" -"ています。" +"パッケージの中にテストを同梱することに決めたものがあります。これによって、そ" +"のようなパッケージをインストールした後に、例えば依存先のパッケージをアップグ" +"レードした後にリグレッション (退行)がないかどうかの確認を行うために、ユーザが" +"テストスイートを走らせることを許すという利点を追加することができます。さらに" +"別のやり方としては、テストスイートやテストデータを別の Python パッケージに分" +"割する方法があります。そのような方法は、巨大なテストベクトルを cryptography-" +"vectors_ パッケージに分離する形で、 cryptography_ パッケージで採用されていま" +"す。" #: ../source/discussions/downstream-packaging.rst:132 msgid "" @@ -1899,15 +1899,16 @@ msgid "" "``pytest``: ``pytest`` is able to find and execute almost all test cases " "that are compatible with the standard library's ``unittest`` test discovery." msgstr "" -"理想としては、テストスイートを ``pytest``を通じて走らせることをサポートしてく" -"ださい。 pytest_ は、テストを便利に非選択にしたり、当てにならないテストを " -"(pytest-rerunfailures_を通じて) 再実行したり、テストがハングアップしてしまう" -"のを防ぐためのタイムアウトを (pytest-timeout_ を通じて) 追加したり、 (pytest-" -"xdist_ を通じて) テストを並行して走らせたり、といったダウンストリーム側に真に" -"役立つ多くのコマンドライン引数を持っています。テストスイートが ``pytest`` と" -"一緒に *書かれている* ことや ``pytest`` と一緒に *実行される* 必要はないこと" -"を覚えておいてください: ``pytest`` は、標準ライブラリの ``unittest`` テスト探" -"索と互換性のあるほぼ全てのテストケースを探索して実行することができます。" +"理想としては、テストスイートを ``pytest`` を通じて走らせることをサポートして" +"ください。 pytest_ は、テストを便利に非選択にしたり、当てにならないテストを " +"( pytest-rerunfailures_ を通じて) 再実行したり、テストがハングアップしてしま" +"うのを防ぐためのタイムアウトを ( pytest-timeout_ を通じて) 追加したり、 " +"( pytest-xdist_ を通じて) テストを並行して走らせたり、といったダウンストリー" +"ム側に真に役立つ多くのコマンドライン引数を持っています。テストスイートが " +"``pytest`` と一緒に *書かれている* ことや ``pytest`` と一緒に *実行される* 必" +"要はないことを覚えておいてください: ``pytest`` は、標準ライブラリの " +"``unittest`` テスト探索と互換性のあるほぼ全てのテストケースを探索して実行する" +"ことができます。" #: ../source/discussions/downstream-packaging.rst:409 msgid "Aim for stable releases" @@ -2053,9 +2054,9 @@ msgid "" "specific topic. If you're just trying to get stuff done, see :doc:`/guides/" "index`." msgstr "" -"**議論型文書**は、特定の話題について網羅的な情報を提供することに重点を置いて" -"います。もしあなたがとにかく何かを終わらせようとしているだけなら、:doc:`/" -"guides/index`を見た方が良いでしょう。" +"**議論型文書** は、特定の話題について網羅的な情報を提供することに重点を置いて" +"います。もしあなたがとにかく何かを終わらせようとしているだけなら、 :doc:`/" +"guides/index` を見た方が良いでしょう。" #: ../source/discussions/install-requires-vs-requirements.rst:5 msgid "install_requires vs requirements files" @@ -2140,7 +2141,7 @@ msgstr "" "[1]_" #: ../source/discussions/install-requires-vs-requirements.rst:62 -#: ../source/tutorials/installing-packages.rst:464 +#: ../source/tutorials/installing-packages.rst:463 msgid "Requirements files" msgstr "Requirementsファイル" @@ -2182,10 +2183,10 @@ msgid "" "\"Concrete\", i.e. associated with a particular index or directory of " "packages. [1]_" msgstr "" -"``install_requires``での要求事項が「要約」、すなわち特定の索引には紐づけられ" -"ていないのに対して、requirementsファイルではしばしば``--index-url``や``--" -"find-links``のようなpipのオプションが含まれていて特定の索引やパッケージ登録簿" -"に紐づけられた「具体的な」要求事項になっています。[1]_" +"``install_requires`` での要求事項が「要約」、すなわち特定の索引には紐づけられ" +"ていないのに対して、requirementsファイルではしばしば ``--index-url`` や ``--" +"find-links`` のような pip のオプションが含まれていて特定の索引やパッケージ登" +"録簿に紐づけられた「具体的な」要求事項になっています。 [1]_" #: ../source/discussions/install-requires-vs-requirements.rst:82 msgid "" @@ -2193,9 +2194,9 @@ msgid "" "during an install, requirements files are not, and only are used when a user " "specifically installs them using ``python -m pip install -r``." msgstr "" -"``install_requires``では、メタデータがインストール中にpipによって自動的に解析" -"される一方、requirementsファイルではそうではなく、``python -m pip install " -"-r``を使ってユーザが明示的にインストールする時に使われるだけです。" +"``install_requires`` では、メタデータがインストール中にpipによって自動的に解" +"析される一方、requirementsファイルではそうではなく、 ``python -m pip install " +"-r`` を使ってユーザが明示的にインストールする時に使われるだけです。" #: ../source/discussions/install-requires-vs-requirements.rst:88 msgid "" @@ -2229,14 +2230,14 @@ msgid "" "always upload both an sdist and one or more wheel." msgstr "" "PyPI_ のようなパッケージインデックス上には、2種類のフォーマットが見つかるこ" -"とでしょう: **ソースコード配布物 ** 、短縮形で " -"**sdists**と呼ばれるものと **バイナリ配布物 ** 、普通" -"は **wheels** を呼ばれるものです。例えば、 `pip 23.3.1 用の PyPI ページ `_ では、 ``pip-23.3.1.tar.gz`` と ``pip-23.3.1-py3-none-any.whl`` の二" -"つのファイルをダウンロードすることができます。前者は sdist であり、後者は " -"wheel です。下で説明するように、これらは異なった目的のために提供されていま" -"す。 PyPI (にせよ他のどこかにせよ) パッケージを公開する時は、常に sdist とひ" -"とつまたは複数の wheel の両方をアップロードするべきです。" +"とでしょう: 短く **sdists** とも呼ばれる **ソースコード配布物 ** と、普通は **wheels** と呼ばれる **バイナリ配布物 ** です。例えば、 `pip 23.3.1 用の PyPI ページ `_ で" +"は、 ``pip-23.3.1.tar.gz`` と ``pip-23.3.1-py3-none-any.whl`` の二つのファイ" +"ルをダウンロードすることができます。前者は sdist であり、後者は wheel です。" +"この後に説明するように、これらは異なった目的のために提供されています。 PyPI " +"(にせよ他のどこかにせよ) パッケージを公開する時は、常に sdist とひとつまたは" +"複数の wheel の両方をアップロードするべきです。" #: ../source/discussions/package-formats.rst:21 msgid "What is a source distribution?" @@ -2439,11 +2440,11 @@ msgid "" msgstr "" "技術的なレベルでは、 wheel は (sdist が TAR アーカイブであるのとは違って) " "ZIP アーカイブです。例えば Linux や macOS のような UNIX 系プラットフォームな" -"ら ``unzip`` 、 Windows 上の PowerShell 内なら ``Expand-Archive`` 、あるいは " -"Python の zipfile モジュールのコマンドライン ` を" -"使って通常の ZIP アーカイブとして展開することで、内容を検査することができま" -"す。これは、 wheel ファイルが必要なすべてのファイルを内包していることを確認す" -"るのにとても便利です。" +"ら ``unzip`` 、 Windows 上の PowerShell 内なら ``Expand-Archive`` 、あるい" +"は :ref:`Python の zipfile モジュールのコマンドラインインタフェース " +"` を使って通常の ZIP アーカイブとして展開すること" +"で、内容を検査することができます。これは、 wheel ファイルが必要なすべてのファ" +"イルを内包していることを確認するのにとても便利です。" #: ../source/discussions/package-formats.rst:109 msgid "" @@ -2518,9 +2519,9 @@ msgid "" "format. It should not be used anymore. Since August 2023, PyPI `rejects egg " "uploads `_." msgstr "" -"\"Egg\" は、 wheel によって置き換えられた古いパッケージフォーマットです。もは" -"や使用されるべきではありません。 2023 年 8 月以降、 PyPI は `egg のアップロー" -"ドを拒絶 `_ しています。" +"\"Egg\" は、 wheel フォーマットによって置き換えられた古いパッケージフォーマッ" +"トです。もはや使用されるべきではありません。 2023 年 8 月以降、 PyPI は " +"`rejects egg uploads `_ しています。" #: ../source/discussions/package-formats.rst:144 msgid "Here's a breakdown of the important differences between wheel and egg." @@ -2531,8 +2532,8 @@ msgid "" "The egg format was introduced by :ref:`setuptools` in 2004, whereas the " "wheel format was introduced by :pep:`427` in 2012." msgstr "" -"egg のフォーマットは、2004年に:ref:`setuptools`によって、また、wheel のフォー" -"マットは2012年に :pep:`427` によって導入されました。" +"wheel フォーマットは2012年に :pep:`427` によって導入された一方で、egg フォー" +"マットは、2004年に :ref:`setuptools` によって導入されました。" #: ../source/discussions/package-formats.rst:149 msgid "" @@ -2549,10 +2550,10 @@ msgid "" "and a runtime installation format (if left zipped), and was designed to be " "importable." msgstr "" -"Wheel は :term:`配布物 `のフォーマット、つまり、パッ" -"ケージングのフォーマットです [#wheel-importable]_ 。 Egg は配布物のフォーマッ" -"トでもあり、かつ、(もし圧縮されたままであれば)実行時のインストールフォーマッ" -"トであって、 importができるように設計されています。" +"Wheel は :term:`配布物 ` のフォーマット、つまり、パッ" +"ケージングのフォーマットです。 [#wheel-importable]_ Egg は配布物のフォーマッ" +"トでもあり、かつ、 (もし圧縮されたままであれば) 実行時のインストールフォー" +"マットであって、 importができるように設計されています。" #: ../source/discussions/package-formats.rst:156 msgid "" @@ -2562,11 +2563,11 @@ msgid "" "\"universal\", similar to an :term:`sdist `." msgstr "" -"Wheel 形式のファイルには ``.pyc`` ファイルが含まれていません。従って、Python" -"ファイルだけが配布物に含まれている (即ちコンパイル済みの拡張がない) 場合、か" -"つ、 Python 2 および 3 と互換性を持つ時、その wheel ファイル" -"は、 :term:`sdist ` と同様に \"汎用 " -"\" である可能性があります。" +"Wheel 形式のファイルには ``.pyc`` ファイルが含まれません。従って、Pythonファ" +"イルだけが配布物に含まれている (即ちコンパイル済みの拡張がない) 場合、かつ、 " +"Python 2 および 3 と互換性を持つ時、その wheel ファイルは、 :term:`sdist " +"` と同様に \"汎用 \" である可" +"能性があります。" #: ../source/discussions/package-formats.rst:161 msgid "" @@ -2582,9 +2583,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:`多彩なファイル命名慣行 ` が存在しま" +"す。単独のwheelアーカイブはPython言語のバージョンや実装、ABI、そしてシステム" +"のアーキテクチャとの互換性を表示することができます。" #: ../source/discussions/package-formats.rst:168 msgid "" @@ -2642,11 +2643,11 @@ msgid "" "Package Index (PyPI)>` using requirement specifiers, and automatically " "installing dependencies." msgstr "" -":ref:`easy_install `は、現在では`非推奨`とされていますが、2004" -"年に:ref:`setuptools`の一部として公開されました。requirementsファイルを利用し" -"て自動的に依存関係にあるパッケージも併せて:term:`PyPI `から:term:`packages `をインストールすることがで" -"きるというのは当時としては画期的でした。" +":ref:`easy_install ` は、現在では `deprecated`_ とされています" +"が、2004年に :ref:`setuptools` の一部として公開されました。 :term:`PyPI " +"` から :term:`パッケージ ` と、要求事項指定子を利用して依存関係にあるパッケージをも自動的にイ" +"ンストールすることが当時としては画期的でした。" #: ../source/discussions/pip-vs-easy-install.rst:14 msgid "" @@ -2658,14 +2659,14 @@ msgid "" "and introducing the idea of :ref:`Requirements Files `, which gave users the power to easily replicate environments." msgstr "" -"依然として:ref:`setuptools`を部品に使ってビルドされてはいます" -"が、:ref:`easy_install `を置き換えるものとして:ref:`pip`が2008" -"年に後からやってきました。当時はパッケージを(かなり単純に:term:`sdists " -"`から「フラット」なパッケージとしてインス" -"トールするものであって):term:`Eggs `の形でインストールするもので" -"も、:term:`Eggs `からインストールするものでも*なかった*こと、そして、簡" -"単に環境を再現する力をユーザに与える:ref:`Requirements Files " -"`の考え方を導入したことは注目に値します。" +"依然として :ref:`setuptools` を部品に使ってビルドされてはいます" +"が、 :ref:`easy_install ` を置き換えるものとして :ref:`pip` が" +"2008年に後からやってきました。当時はパッケージを (かなり単純に :term:`sdists " +"` から「フラット」なパッケージとしてイン" +"ストールするものであって) :term:`Eggs ` の形でインストールするもので" +"も、 :term:`Eggs ` からインストールするものでも *なかった* こと、そし" +"て、簡単に環境を再現する力をユーザに与える :ref:`Requirements Files " +"` の考え方を導入したことは注目に値します。" #: ../source/discussions/pip-vs-easy-install.rst:22 msgid "" @@ -2684,7 +2685,7 @@ msgstr "" #: ../source/discussions/pip-vs-easy-install.rst:27 msgid "Installs from :term:`Wheels `" -msgstr ":term:`Wheels `からのインストール" +msgstr ":term:`Wheels ` からのインストール" #: ../source/discussions/pip-vs-easy-install.rst:27 #: ../source/discussions/pip-vs-easy-install.rst:38 @@ -2742,7 +2743,7 @@ msgstr "インストールフォーマット" #: ../source/discussions/pip-vs-easy-install.rst:41 msgid "'Flat' packages with :file:`egg-info` metadata." -msgstr ":file:`egg-info`のメタデータを伴った「フラット」なパッケージ。" +msgstr ":file:`egg-info` のメタデータを伴った「フラット」なパッケージ。" #: ../source/discussions/pip-vs-easy-install.rst:41 msgid "Encapsulated Egg format" @@ -2754,11 +2755,11 @@ msgstr "sys.pathの変更" #: ../source/discussions/pip-vs-easy-install.rst:48 msgid "Installs from :term:`Eggs `" -msgstr ":term:`Eggs `からのインストール" +msgstr ":term:`Eggs ` からのインストール" #: ../source/discussions/pip-vs-easy-install.rst:51 msgid "`pylauncher support`_" -msgstr "`pylauncherサポート `_" +msgstr "`pylauncher support`_" #: ../source/discussions/pip-vs-easy-install.rst:51 msgid "Yes [1]_" @@ -3522,11 +3523,10 @@ msgstr "" "最初に述べた src レイアウトの特殊性の故に、コマンドラインインタフェース" "は、 :term:`ソースコードツリー ` から直接に起動すること" "ができず、試験目的のために :doc:`開発モード `:doc:`開発モード ` " -"でインストールされたパッケージを要求します。状況によってはこれは現実的ではな" -"くなるので、 :file:`__main__.py` ファイル経由で呼ばれた時にパッケージフォルダ" -"を Python の :py:data:`sys.path` の先頭に追加することが回避策になるかもしれま" -"せん。" +"development_mode>` でインストールされたパッケージを要求します。状況によっては" +"これは現実的ではなくなるので、 :file:`__main__.py` ファイル経由で呼ばれた時に" +"パッケージフォルダを Python の :py:data:`sys.path` の先頭に追加することが回避" +"策になるかもしれません。" #: ../source/discussions/versioning.rst:6 #: ../source/specifications/simple-repository-api.rst:349 @@ -4464,14 +4464,14 @@ msgid "" "See :ref:`package-formats` for more information." msgstr "" ":term:`配布物 ` フォーマットは、インストールするために" -"ターゲットとなるシステムの適切な位置に移動させることに必要となるファイルや" -"メタデータだけを含んでいます。 :term:`Wheel` はそのようなフォーマットですが、" -"インストールできるようになる前にビルド段階が必須となると言う点で " -":term:`Source Distribution (or \"sdist\")` はそうではありません。この" -"フォーマットであることは、 Python のファイル群があらかじめコンパイルされた状" -"態でなければならないということを意味しません (:term:`Wheel` では意図的に" -"コンパイル済みの Python ファイル群を含まないようになっています)。より詳しく" -"は :ref:`package-formats` を見てください。" +"ターゲットとなるシステムの適切な位置に移動させることに必要となるファイルやメ" +"タデータだけを含んでいます。 :term:`Wheel` はそのようなフォーマットですが、イ" +"ンストールできるようになる前にビルド段階が必須となると言う点で :term:`Source " +"Distribution (or \"sdist\")` はそうではありません。このフォーマットであること" +"は、 Python のファイル群があらかじめコンパイルされた状態でなければならないと" +"いうことを意味しません (:term:`Wheel` では意図的にコンパイル済みの Python " +"ファイル群を含まないようになっています)。より詳しくは :ref:`package-formats` " +"を見てください。" #: ../source/glossary.rst:56 msgid "Built Metadata" @@ -4621,10 +4621,10 @@ msgid "" "package` for a breakdown of the differences." msgstr "" "インポートパッケージは、より普通には「パッケージ」という1単語の用語で呼ばれ" -"ますが、本ガイドでは、同様に単に「パッケージ」と呼ばれることが普通である " -":term:`配布物パッケージ ` との混同を避けるために必要な" -"場合には、長い方の用語を用いることにします。これらの違いの細かな部分について" -"は、 :ref:`distribution-package-vs-import-package` を見てください。" +"ますが、本ガイドでは、同様に単に「パッケージ」と呼ばれることが普通であ" +"る :term:`配布物パッケージ ` との混同を避けるために必要" +"な場合には、長い方の用語を用いることにします。これらの違いの細かな部分につい" +"ては、 :ref:`distribution-package-vs-import-package` を見てください。" #: ../source/glossary.rst:133 msgid "Installed Project" @@ -4720,8 +4720,8 @@ msgid "" "The basic unit of code reusability in Python, existing in one of two " "types: :term:`Pure Module`, or :term:`Extension Module`." msgstr "" -"Pythonにおけるソースコード再利用の基本的な単位で、 :term:`Pure Module`" -"か :term:`Extension Module`の二つのタイプのうちのいずれか。" +"Pythonにおけるソースコード再利用の基本的な単位で、 :term:`Pure Module` " +"か :term:`Extension Module` の二つのタイプのうちのいずれか。" #: ../source/glossary.rst:189 msgid "Package Index" @@ -4732,9 +4732,8 @@ msgid "" "A repository of distributions with a web interface to " "automate :term:`package ` discovery and consumption." msgstr "" -":term:`パッケージ `の発見・消費(訳註、意訳になるが検" -"索・ダウンロードが適切か)を自動化するwebインターフェイスを伴った配布物のリポ" -"ジトリ。" +":term:`パッケージ ` の発見や消費を自動化するwebインター" +"フェイスを伴った配布物のリポジトリ。" #: ../source/glossary.rst:195 msgid "Per Project Index" @@ -4746,9 +4745,9 @@ msgid "" "specific :term:`Project` as the index preferred or required to resolve " "dependencies of that project." msgstr "" -"プライベートまたは非公式の :term:`パッケージ索引 ` で、その" -"プロジェクトの依存関係を解決するために、好ましいまたは要求される時に、特定の " -":term:`プロジェクト ` によって示されたもの。" +"プライベートまたは非公式の :term:`パッケージ索引 ` で、そのプ" +"ロジェクトの依存関係を解決するために、好ましいまたは要求される時に、特定" +"の :term:`プロジェクト ` によって示されたもの。" #: ../source/glossary.rst:202 ../source/guides/hosting-your-own-index.rst:62 #: ../source/guides/index-mirrors-and-caches.rst:52 @@ -4773,12 +4772,12 @@ msgid "" "something that contains a :term:`pyproject.toml`, :term:`setup.py`, " "or :term:`setup.cfg` file at the root of the project source directory." msgstr "" -"ほとんどのプロジェクトで :pep:`518` ``build-system`` として " -":ref:`distutils`か :ref:`setuptools`を用いて :term:`配布物 `を作成しますので、現時点でプロジェクトを定義するもうひとつの実践的な" -"方法は、プロジェクトのソースコードの一番上のディレクトリに " -":term:`pyproject.toml`や :term:`setup.py`または :term:`setup.cfg`のファイルを" -"含む何ものかというものです。" +"ほとんどのプロジェクトで :pep:`518` ``build-system`` として :ref:`distutils` " +"か :ref:`setuptools` を用いて :term:`配布物 ` を作成し" +"ますので、現時点でプロジェクトを定義するもうひとつの実践的な方法は、プロジェ" +"クトのソースコードの一番上のディレクトリに :term:`pyproject.toml` " +"や :term:`setup.py` または :term:`setup.cfg` のファイルを含む何ものかというも" +"のです。" #: ../source/glossary.rst:215 msgid "" @@ -4787,11 +4786,11 @@ msgid "" "more :term:`Releases `, and each release may comprise one or " "more :term:`distributions `." msgstr "" -"Pythonにおけるプロジェクトは、 :term:`PyPI `に登" -"録される一意の名前を持っていなければなりません。そして、プロジェクトはそれぞ" -"れひとつまたはより多くの :term:`リリース `を含んでいて、各リリースは" -"ひとつまたはより多くの :term:`配布物 `を内包していま" -"す。" +"Pythonにおけるプロジェクトは、 :term:`PyPI ` に" +"登録される一意の名前を持っていなければなりません。そして、プロジェクトはそれ" +"ぞれひとつまたはより多くの :term:`リリース ` を含んでいて、各リリー" +"スはひとつまたはより多くの :term:`配布物 ` を内包してい" +"ます。" #: ../source/glossary.rst:220 msgid "" @@ -5167,10 +5166,10 @@ msgid "" "more information, see the section on :ref:`Creating and using Virtual " "Environments`." msgstr "" -"システム全体からではなく、ある特定のアプリケーションだけから使えるようにパッ" -"ケージをインストールすることができる、隔離されたPython環境。詳細は :ref:`仮想" -"環境の生成と使用 ` を参照してください。" #: ../source/glossary.rst:410 msgid "Wheel Format" @@ -5967,20 +5966,21 @@ msgid "" "to :func:`setup`'s ``packages`` argument instead of " "using :func:`setuptools.find_packages`." msgstr "" -"この例ではサブパッケージを名前空間を決めるパッケージ(``myapp.plugins``)として" -"使っていますが、トップレベルのパッケージをこの(``myapp_plugins``のような)目的" -"に用いることも可能です。名前空間をどのようにして決めるかは好みの問題ですが、" -"あなたのプロジェクトのトップレベルのパッケージ(この場合では``myapp``)を" -"プラグインの名前空間を決めるために用いると、全体の名前空間を破壊するような" -"プラグインがひとつあるだけで、あなたのプロジェクトをインポートすることができ" -"なくなるのでお勧めしません。「名前空間を決めるサブパッケージ」の手法がうまく" -"動作するためには、プラグインパッケージ側のトップレベルパッケージの" -"ディレクトリ(この場合には``myapp``)に :file:`__init__.py` が存在してはいけま" -"せんし、名前空間を決めるサブパッケージのディレクトリ(``myapp/plugins``)にあ" -"る :file:`__init__.py`をプラグインパッケージ側でインクルードしなければなりま" -"せん。これはまた、 プラグインの側で :func:`setuptools.find_packages` を使うの" -"ではなく、パッケージの名前を :func:`setup` の ``packages`` 引数に明示的に渡す" -"必要がある、ということを意味しています。" +"この例では名前空間パッケージ( ``myapp.plugins`` )としてサブパッケージを使って" +"いますが、トップレベルのパッケージをこの ( ``myapp_plugins`` のような) 目的に" +"用いることも可能です。使用する名前空間をどのように選択するかは好みの問題です" +"が、あなたのプロジェクトのトップレベルのパッケージ (この場合は ``myapp`` ) を" +"プラグインの目的のための名前空間パッケージとして用いると、ダメなプラグインが" +"ひとつあるだけで全体の名前空間を破壊することになり、ひいてはあなたのプロジェ" +"クトをインポートすることができなくなるのでお勧めしません。「名前空間を決める" +"サブパッケージ」の手法がうまく動作するためには、プラグインパッケージ側では、" +"トップレベルパッケージのディレクトリ (この場合には ``myapp`` ) " +"に :file:`__init__.py` を省略しなければなりませんし、名前空間を決めるサブパッ" +"ケージのディレクトリ ( ``myapp/plugins`` ) にある名前空間パッケージスタイル" +"の :file:`__init__.py` をインクルードしなければなりません。これはまた、 プラ" +"グインの側で :func:`setuptools.find_packages` を使う代わりに、パッケージ名の" +"リストを :func:`setup` の ``packages`` 引数に明示的に渡す必要がある、というこ" +"とを意味しています。" #: ../source/guides/creating-and-discovering-plugins.rst:114 msgid "" @@ -6026,8 +6026,8 @@ msgid "" "``importlib_metadata >= 3.6`` for Python 3.6-3.9):" msgstr "" "そして、 :func:`importlib.metadata.entry_points` (あるいはPython 3.6-3.9用の " -"backport_ ``import lib_metadata>=3.6``)を使うことで、登録された" -"エントリポイントを全て検出することができます。" +"backport_ ``import lib_metadata>=3.6``)を使うことで、登録されたエントリポイン" +"トを全て検出することができます。" #: ../source/guides/creating-and-discovering-plugins.rst:151 msgid "" @@ -6221,8 +6221,8 @@ msgid "" "Metadata Subkey>`:" msgstr "" "コマンドラインツールとして認識されるプロジェクト向けには、さらに " -"``console_scripts`` :ref:`エントリポイント ` ( " -":ref:`console_scripts` をご覧ください) が :term:`サブキー ` " +"( :ref:`console_scripts` をご覧ください) が :term:`サブキー ` として追加されている必要があります:" #: ../source/guides/creating-command-line-tools.rst:118 @@ -6349,7 +6349,7 @@ msgid "" "tutorials/installing-packages` page." msgstr "" "この節では、 ``setuptools`` を使ったPythonパッケージの設定・パッケージング・" -"配布方法について、 :doc:`/tutorials/packaging-projects`_ の入門的なチュートリ" +"配布方法について、 :doc:`/tutorials/packaging-projects` の入門的なチュートリ" "アルでは触れていないような追加的な詳細を説明します。あなたが既に :doc:`/" "tutorials/installing-packages` ページの内容については慣れ親しんでいるものと仮" "定して進めます。" @@ -6361,8 +6361,8 @@ msgid "" "recommendations for version control, documentation, or testing." msgstr "" "この節は、Pythonプロジェクトの開発についての全体的なベストプラクティスを説明" -"しているわけではありません。例えば、バージョン管理や文書化、あるいは試験につ" -"いて、手引きとなったりツールを推奨するようなことはありません。" +"しているわけでは *ありません* 。例えば、バージョン管理や文書化、あるいは試験" +"について、手引きとなったりツールを推奨するようなことはありません。" #: ../source/guides/distributing-packages-using-setuptools.rst:20 msgid "" @@ -6506,12 +6506,12 @@ msgid "" "found. If you are using setuptools, you don't need to list your readme file " "in :file:`MANIFEST.in`. Otherwise, include it to be explicit." msgstr "" -":ref:`setuptools`の0.6.27およびそれ以降のバージョンを使っているプロジェクトで" -"は、標準のreadmeファイル(:file:`README.rst`、 :file:`README.txt`、また" -"は :file:`README`)がデフォルトでソースコード配布物に含まれるようになっていま" -"す。標準ライブラリの :ref:`distutils` では、Python 3.7からこの動作を採用しま" -"した。さらに、:ref:`setuptools` の36.4.0およびそれ以降のバージョンでは、もし" -"見つかれば :file:`README.md` を含めるようになっています。もしあなたが" +":ref:`setuptools` の0.6.27およびそれ以降のバージョンを使っているプロジェクト" +"では、標準のreadmeファイル(:file:`README.rst` 、 :file:`README.txt` 、また" +"は :file:`README` )がデフォルトでソースコード配布物に含まれるようになっていま" +"す。標準ライブラリの :ref:`distutils` では、 Python 3.7 からこの動作を採用し" +"ました。さらに、 :ref:`setuptools` の36.4.0およびそれ以降のバージョンでは、も" +"し見つかれば :file:`README.md` を含めるようになっています。もしあなたが" "setuptoolsを使っているのであれば、あなたはreadmeファイル" "を :file:`MANIFEST.in` に明記する必要はありません。そうでないなら、明示的に書" "いてください。" @@ -6540,9 +6540,10 @@ msgid "" "by :ref:`setuptools` 43.0.0 and newer." msgstr "" "しかしながら、あなたは必ずしも :file:`MANIFEST.in` を使わなくても構いません。" -"一つの例として`PyPA サンプルプロジェクト `_ では、必要なファイルがすべて 43.0.0およびこれ以降" -"の:ref:`setuptools`に含まれているので、マニフェストファイルを削除しています。" +"の :ref:`setuptools` に含まれているので、マニフェストファイルを削除していま" +"す。" #: ../source/guides/distributing-packages-using-setuptools.rst:123 msgid "" @@ -6683,7 +6684,7 @@ msgid "" msgstr "" "あなたのプロジェクトに、プロジェクトの一部ではない単一ファイルのPythonモ" "ジュールがあるなら、 :ref:`setuptools` に知らせるために、そのようなモジュール" -"の(拡張子``.py``を削除した)名前を ``py_modules`` に列挙してください。" +"の(拡張子 ``.py`` を削除した)名前を ``py_modules`` に列挙してください。" #: ../source/guides/distributing-packages-using-setuptools.rst:204 msgid "``install_requires``" @@ -6695,17 +6696,16 @@ msgid "" "minimally needs to run. When the project is installed by :ref:`pip`, this is " "the specification that is used to install its dependencies." msgstr "" -"``install_requires`` は、プロジェクトが動作するために最低限必要な依存関係を指" -"定するのに使われます。プロジェクトが :ref:`pip` でインストールされる場合に" -"は、この指定を見て依存関係(訳註、にある他パッケージ)をインストールするために" -"用いられます。" +"\"install_requires\" は、プロジェクトが動作するために最低限必要な依存関係を指" +"定するのに使われるべきです。プロジェクトが :ref:`pip` でインストールされる場" +"合には、この指定を見て依存関係のものをインストールするために用いられます。" #: ../source/guides/distributing-packages-using-setuptools.rst:214 msgid "" "For more on using \"install_requires\" see :ref:`install_requires vs " "Requirements files`." msgstr "" -"さらなる ``install_requires`` の使い方については :ref:`install_requires対" +"さらなる \"install_requires\" の使い方については :ref:`install_requires 対 " "Requirementsファイル ` を参照してくだ" "さい。" @@ -6744,7 +6744,7 @@ msgid "" "`." msgstr "" "詳しくは、 :std:doc:`setuptools説明文書 ` の中の :std:doc:`" -"データファイルを追加するには <1setuptools:userguide/datafiles>` を見てくださ" +"データファイルを追加するには ` を見てくださ" "い。" #: ../source/guides/distributing-packages-using-setuptools.rst:247 @@ -6952,11 +6952,11 @@ msgid "" "a :term:`Distribution ` (aka \":term:`Package " "`\") for your project." msgstr "" -":term:`PyPI ` のような " -":term:`パッケージインデックス ` からあなたのプロジェクトを" -"インストールすることができるようにするには、 :term:`配布物 ` (:term:`パッケージ ` の名前でも知られる) を作" -"成しなければならないでしょう。" +":term:`PyPI ` のような :term:`パッケージインデッ" +"クス ` からあなたのプロジェクトをインストールすることができる" +"ようにするには、 :term:`配布物 ` (:term:`パッケージ " +"` の名前でも知られる) を作成しなければならないでしょ" +"う。" #: ../source/guides/distributing-packages-using-setuptools.rst:363 msgid "" @@ -7032,8 +7032,8 @@ msgid "" "to your :file:`setup.cfg` file:" msgstr "" "あなたのプロジェクトが Python 2をさぽーとしていて、 *かつ* 、C言語拡張を含む" -"のであれば、次のものをあなたの :file:`setup.cfg` ファイルに追加して " -"*ユニバーサル Wheel* と呼ばれるものを作成するべきです:" +"のであれば、次のものをあなたの :file:`setup.cfg` ファイルに追加して *ユニバー" +"サル Wheel* と呼ばれるものを作成するべきです:" #: ../source/guides/distributing-packages-using-setuptools.rst:428 msgid "" @@ -7107,9 +7107,10 @@ msgid "" "platform wheels for Windows, macOS, and the multi-distro ``manylinux*`` ABI. " "Details of the latter are defined in :pep:`513`." msgstr "" -"現在、 :term:`PyPI <` は、Windows向けとmacOS向" -"け、そして複数のLinuxディストリビューションに対応した ``manylinux*`` のABI向" -"けのプラットフォームWheelsをアップロードすることに対応しています。" +"現在、 :term:`PyPI ` は、Windows向けとmacOS向" +"け、そして複数のディストロに対応した ``manylinux*`` のABI向けのプラットフォー" +"ムWheelsをアップロードすることに対応しています。後者に関する詳細" +"は :pep:`513` で定義されています。" #: ../source/guides/distributing-packages-using-setuptools.rst:498 msgid "Uploading your Project to PyPI" @@ -7286,7 +7287,7 @@ msgstr "" "されるまでには1,2分の時間がかかるかもしれません。" #: ../source/guides/distributing-packages-using-setuptools.rst:589 -#: ../source/tutorials/installing-packages.rst:670 +#: ../source/tutorials/installing-packages.rst:669 msgid "" "Depending on your platform, this may require root or Administrator " "access. :ref:`pip` is currently considering changing this by `making user " @@ -7625,7 +7626,7 @@ msgstr "PyPI フォールスルー [2]_" #: ../source/guides/hosting-your-own-index.rst:65 #: ../source/guides/index-mirrors-and-caches.rst:56 -#: ../source/guides/supporting-windows-using-appveyor.rst:146 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 msgid "Additional notes" msgstr "補遺" @@ -8185,8 +8186,8 @@ msgid "" msgstr "" "Anaconda `Anaconda `_ は Anaconda, Inc. " "社が公開した Python 配布物です。ビッグデータや科学分野向けの一連のオープン" -"ソースパッケージの安定版のコレクションであり、 conda 環境を管理する GUI の" -"ユーティリティのコレクションでもあります。" +"ソースパッケージの安定版のコレクションであり、 conda 環境を管理するグラフィカ" +"ルユーザインタフェースのユーティリティのコレクションでもあります。" #: ../source/guides/installing-scientific-packages.rst:135 msgid "" @@ -8267,8 +8268,8 @@ msgid "" "You may need to restart your terminal for this update to take effect." msgstr "" "``ensurepath`` は、アプリケーションのあるディレクトリが ``$PATH`` に含まれる" -"ようにすることを保証します。この更新(訳注、``$PATH``の修正のこと)が効果を持つ" -"ようにするためにターミナルを再起動する必要があるかもしれません。" +"ことを保証します。この更新が効果を持つようにするためにターミナルを再起動する" +"必要があるかもしれません。" #: ../source/guides/installing-stand-alone-command-line-tools.rst:46 msgid "" @@ -8936,7 +8937,7 @@ msgstr "" "ます:" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 -#: ../source/tutorials/installing-packages.rst:393 +#: ../source/tutorials/installing-packages.rst:392 msgid "Upgrading packages" msgstr "パッケージを更新する" @@ -9865,8 +9866,8 @@ msgid "" "As a result, attempting explicit registration after switching to using " "PyPI.org for uploads will give the following error message::" msgstr "" -"その結果、アップロードに PyPI.org を使うように切り替えた後は、明示的な登録の" -"試行は次のエラーメッセージを返すでしょう::" +"その結果として、アップロードに PyPI.org を使うように切り替えた後は、明示的な" +"登録の試行は次のエラーメッセージを返すでしょう::" #: ../source/guides/migrating-to-pypi-org.rst:88 msgid "" @@ -11122,7 +11123,7 @@ msgstr "" #: ../source/guides/packaging-namespace-packages.rst:26 msgid "And you use this package in your code like so::" msgstr "" -"そして、このパッケージを自分のソースコード中で使うにはこのようにします::" +"そして、このパッケージを自分のソースコード中で使うにはこのようにします ::" #: ../source/guides/packaging-namespace-packages.rst:31 msgid "Then you can break these sub-packages into two separate distributions:" @@ -11393,12 +11394,13 @@ msgid "" msgstr "" ":doc:`Setuptools ` は、以前は、 " "``pkg_resources.declare_namespace`` 関数と :func:`~setuptools.setup` に渡す " -"``namespace_packages`` 引数を提供します。これらを一緒に使うことで名前空間パッ" -"ケージを宣言することができます。この手法はもはや推奨されていませんが、既存の" -"名前空間パッケージのほとんどで使われています。この手法を採用している既存の名" -"前空間パッケージの中に新しい配布物を作成する時には、異なる手法が相互に互換で" -"はないために既存パッケージを移植しようとすることが推奨されていないので、この" -"手法を採用し続けることを推奨します。" +"``namespace_packages`` 引数を提供していました。これらを一緒に使うことで名前空" +"間パッケージを宣言することができます。この手法はもはや推奨されていませんが、" +"古めのバージョンの ``setuptools`` を使っている環境では、まだ遭遇することがあ" +"るかもしれません。この手法を採用している既存の名前空間パッケージの中に新しい" +"配布物を作成する時には、異なる手法が相互に互換ではないために、そして、既存" +"パッケージを移植しようとすることが推奨されていないために、この手法を採用し続" +"けることを推奨します。" #: ../source/guides/packaging-namespace-packages.rst:235 msgid "" @@ -11637,7 +11639,20 @@ msgstr "" "最初に、あなたのプロジェクトの dist パッケージをビルドして、その後の使用のた" "めに保存するジョブを定義しましょう:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:115 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" +"もし、複数のプラットフォーム特有の wheel をビルドするこのワークフローを受入れ" +"るのであれば、それぞれのビルドジョブに対してユニークに命名した" +"アーティファクトを使い、それぞれについてダウンロード段階を調整してください。 " +"`cibuildwheel GitHub Actions examples`_ がもっと完全な wheel " +"マトリクスレイアウトをお見せします。" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 msgid "" "This will download your repository into the CI runner and then install and " "activate the newest available Python 3 release." @@ -11645,7 +11660,7 @@ msgstr "" "これによって、あなたのリポジトリを CI ランナーにダウンロードして、利用可能な" "最新の Python 3 リリースをインストールしアクティベートすることになります。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:118 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 msgid "" "And now we can build the dists from source and store them. In this example, " "we'll use the ``build`` package. So add this to the steps list:" @@ -11654,11 +11669,11 @@ msgstr "" "できます。この例では、パッケージを ``build`` することになります。ですから、こ" "れをステップリストに加えましょう:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:128 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 msgid "Defining a workflow job environment" msgstr "ワークフローのジョブ環境を定義する" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:130 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 msgid "" "Now, let's add initial setup for our job that will publish to PyPI. It's a " "process that will execute commands that we'll define later. In this guide, " @@ -11677,7 +11692,7 @@ msgstr "" "トなしの PyPI への信頼ある公開を実装するために必要となる OpenID Connect の" "トークンを取得することを可能にするものでもあります。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:144 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 msgid "" "This will also ensure that the PyPI publishing workflow is only triggered if " "the current commit is tagged." @@ -11685,15 +11700,15 @@ msgstr "" "これは、当該コミットがタグ付きである時にだけ PyPI 公開 ワークフ" "ローが起動されることをも保証するものです。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:148 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 msgid "Publishing the distribution to PyPI" msgstr "PyPI へ配布物を公開する " -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:150 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 msgid "Finally, add the following steps at the end:" msgstr "最後に、次の手続きを末尾に追加しましょう:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 msgid "" "This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " "stored distribution package has been downloaded by the `download-artifact`_ " @@ -11705,7 +11720,7 @@ msgstr "" "Action: を使って、 ``dist/`` フォルダの内容物を無条件に PyPI へアップロードし" "ます。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 msgid "" "Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " @@ -11717,11 +11732,11 @@ msgstr "" "に対する :pep:`740` 互換の証明書を生成しアップロードするようになりました。手" "動の署名手順はもはや必要ありません。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "TestPyPI へ公開 するもうひとつのワークフロー" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" @@ -11729,7 +11744,7 @@ msgstr "" "さて、これらのステップを繰り返して、 ``jobs`` セクションに TestPyPI パッケー" "ジインデックスに公開 するようなもうひとつのジョブを作成しましょう:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " @@ -11740,22 +11755,22 @@ msgstr "" "いて、使われるとすればリリースの公開 パイプラインが健全であることを" "示すためであることが多いのです。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "CI/CD ワークフローの全体像" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" "この段落には、上述のガイド文書に従った場合のワークフローの全体像を披露しま" "す。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "これでできましたよ、皆さん!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -11768,7 +11783,7 @@ msgstr "" "にテストビルドを提供するためにも、あなたのリリースパイプラインが健全な状態に" "保たれていることを確認するためにも役に立ちます!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -11783,7 +11798,7 @@ msgstr "" "で :ref:`pypiserver` のような PyPI と互換のあるサーバを使うように構成すること" "かもしれません。" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -11800,7 +11815,7 @@ msgid "Hosting" msgstr "ホスティング" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "インストール" @@ -11895,15 +11910,13 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -"`Travis CI `_ は Linux と macOS の両方の環境を提供しま" -"す。本稿執筆時点で、 Linux 環境は Ubuntu 12.04 LTS Server Edition 64 bit " -"で、 macOS 環境は 10.9.2 です。" +"`GitHub Actions `_ は、Windows ・ Linux " +"・ macOS の環境を提供します。" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." @@ -11911,17 +11924,17 @@ msgstr "" "`Appveyor `_ は、Windows 環境 (Windows Server " "2012) を提供します。" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -"`Travis CI`_ も Appveyor_ も、 `YAML `_ 形式のテスト仕様書" -"を必要とします。いずれかのテストが失敗したら、そのテスト指示設定に関するログ" -"出力を調査することができます。" +"`GitHub Actions`_ も Appveyor_ も、 `YAML `_ 形式のテスト仕" +"様書を必要とします。いずれかのテストが失敗したら、そのテスト指示設定に関する" +"ログ出力を調査することができます。" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." @@ -11929,11 +11942,11 @@ msgstr "" "単一のソースコードを Python 2 と 3 の両方で稼働させる戦略を目指す Python プロ" "ジェクトには、いくつかの方法論があります。" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "単一ソースコード Python パッケージのためのツール" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -11953,7 +11966,7 @@ msgstr "" "`_ という名前のツールは、 six_ が提供する" "修正を自動的にソースコードに適用するために使うことができます。" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -11967,17 +11980,17 @@ msgstr "" "バージョンのうちの片方の言語文法で Python 2 と Python 3 の間の相互互換性を提" "供しようとしています: 片方しか使えません" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "Python 3 のプロジェクトにおける Python 2 (文法による) モジュール。" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" "*Python 2* で書かれたプロジェクトにおける、 Python 3 (文法による) モジュー" "ル。" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -11993,7 +12006,7 @@ msgstr "" "る ``futurize`` と Python 3 モジュールに適用できる ``pasteurize`` と呼ばれる" "ふたつのスクリプトを備えています。" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -12007,11 +12020,11 @@ msgstr "" "方互換性を用いる修正だけを行うことができます。残りの互換性問題は、手作業で修" "正しなければなりません。" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "どの Python に何がある?" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -12062,20 +12075,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" -"Appveyor サービスは継続的インテグレーションのサービスであり、 `GitHub`_ にホ" -"ストされたプロジェクトをテストするのによく使われよりよく知られている " -"`Travis`_ サービスによく似ています。しかし、 Travis とは異なり、 Appveyor の" -"ビルドワーカーは Windows であり、 Python の拡張モジュールをビルドするために必" -"要なコンパイラもインストール済みです。" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -12090,11 +12089,11 @@ msgstr "" "して利用することで、専用の Windows 環境がなくても Windows 上で動作するバイナ" "リを準備することができます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "設定する" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -12106,7 +12105,7 @@ msgstr "" "説明は `the Appveyor documentation `__ にあり" "ます。オープンソースプロジェクトには無料アカウントで十分です。" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " @@ -12116,21 +12115,19 @@ msgstr "" "トがこれらのうちのいずれかにホストされている限りは Appveyor から統合運用する" "設定は簡単にできます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" "Appveyor のアカウントの設定とプロジェクトの追加が終われば、コミットが発生する" -"たびに Appveyor が自動的にプロジェクトをビルドするようになります。Travis の" -"ユーザはこのような動作に慣れていることでしょう。" +"たびに Appveyor が自動的にプロジェクトをビルドするようになります。" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "プロジェクトに Appveyor サポートを追加する" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -12143,7 +12140,7 @@ msgstr "" "れています。このガイドでは、wheel のビルドに必要な部分に限って細部を説明しま" "す。" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -12161,11 +12158,11 @@ msgstr "" "設定をしなくても Visual Studio の各バージョンに含まれている 64 ビット版コンパ" "イラを使います)。" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appveyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__ か" "らダウンロードすることができます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." @@ -12184,7 +12181,7 @@ msgstr "" "ばなりません。このファイルは ``YAML`` フォーマットで書かれていて、数多くのセ" "クションから構成されています。" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -12203,7 +12200,7 @@ msgstr "" "だ Python 2 を使っているユーザであれば、大抵は大した困難に遭遇せずに Python " "2.7 へ移行できるからです) 。" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -12218,7 +12215,7 @@ msgstr "" "加的なビルド用パッケージないし ``tox`` のようなテストツールをインストールする" "ために)。" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." @@ -12226,7 +12223,7 @@ msgstr "" "``build`` セクションでは単純にビルドのスイッチを切りましょう - ``C#`` のよう" "な言語とは異なり、Python にはビルドする段階は不要なのです。" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." @@ -12234,7 +12231,7 @@ msgstr "" "個々のプロジェクト向けに整える必要のある主なセクションは、 ``test_script`` " "と ``after_test`` です。" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -12255,7 +12252,7 @@ msgstr "" "- しかしながら、 ``tox`` を使う場合には、後述の通り、もう少し追加の設定変更を" "検討する必要があることでしょう。" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -12267,7 +12264,7 @@ msgstr "" "``setuptools``) を使っているなら、 ``setup.py bdist_wheel`` コマンドで wheel " "ファイルを生成できます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." @@ -12276,11 +12273,11 @@ msgstr "" "い。 Windows ではテストが失敗するとわかっているなら、前述の通り、それを省略す" "ることができます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "サポートスクリプト" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -12293,7 +12290,7 @@ msgstr "" "Windows 上の 3.3 や 3.4 をサポートしないプロジェクトで" "は、 :file:`appveyor.yml` ファイルさえあれば良いことになります。" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -12313,7 +12310,7 @@ msgstr "" "ビットでビルドするのに必要な SDK 環境を構築するので、他のビルドに使う環境変数" "を設定してはいけません。" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." @@ -12321,11 +12318,11 @@ msgstr "" "このバッチファイルは単純にダウンロードして修正なしにプロジェクト内に置くこと" "ができます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "ビルドされたwheelファイルへのアクセス" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -12343,11 +12340,11 @@ msgstr "" "ずです。ここから wheel ファイルをダウンロードして、あなたのリリース作業の一環" "として PyPI へアップロードすることができるでしょう。" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "tox を用いてテストする" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " @@ -12357,7 +12354,7 @@ msgstr "" "す。これを使えば、プロジェクトで配布するであろうファイル群そのものを使った独" "立した環境下でテストを実行することができます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " @@ -12367,7 +12364,7 @@ msgstr "" "ではなく、他の CI システムにも影響します) いくつかの追加的な事項を検討しなけ" "ればなりません。" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -12379,7 +12376,7 @@ msgstr "" "を用いるので、この \"テスト環境分離\" の機能がデフォルトではテストに誤ったコ" "ンパイラを使ってしまう問題を引き起こすでしょう。" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -12391,23 +12388,23 @@ msgstr "" "リストを設定する必要があります。SDK コンパイラを使うのであれば、このような設" "定が必要です" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -12421,24 +12418,24 @@ msgstr "" "定されていればいつでも、与えられた :file:`build.cmd` スクリプトがこの動作をデ" "フォルトで実行します。" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" "``tox`` を対話的に使うと、複数の環境 (これはしばしば複数のバージョンの " "Python を意味します) でテストを実行することができます。設定ごとに独立した環境" -"ですべてのテストを実行する Travis や Appveyor のような CI 環境で見られるほど" -"には、この機能は有用ではありません。結果として、しばしばプロジェクト側から " -"``-e ENVNAME`` 引数を ``tox`` に与えてどの環境を使うべきか (ほとんどのバー" -"ジョンの Python に対応したデフォルトの環境群があります) を指定します。" +"ですべてのテストを実行する Appveyor のような CI 環境で見られるほどには、この" +"機能は有用ではありません。結果として、しばしばプロジェクト側から ``-e " +"ENVNAME`` 引数を ``tox`` に与えてどの環境を使うべきか (ほとんどのバージョン" +"の Python に対応したデフォルトの環境群があります) を指定します。" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" @@ -12448,7 +12445,7 @@ msgstr "" "(例えば) Python 3.4 の (32 版ビットと64ビット版の) ふたつの実装が利用できるの" "に、 ``tox`` では ``py34`` 環境がひとつしかないので、うまく *動きません* 。" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -12460,7 +12457,7 @@ msgstr "" "れた Python インタープリタを使うことになりますが、その環境を使うべきでしょ" "う。" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -12471,11 +12468,11 @@ msgstr "" "ジェクトでは :file:`tox.ini` を修正する必要があるかもしれません。そのようにす" "ることは、しかしながら、この文書の範囲を越えます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "自動的に wheel ファイルをアップロードする" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -12488,7 +12485,7 @@ msgstr "" "使うことができます。これをやるにはどうすれば良いかについては、 Appveyor ガイ" "ドに説明があります。" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -12500,11 +12497,11 @@ msgstr "" "に新しい wheel ファイルをアップロードすることが望ましいかどうかがはっきりしな" "いので、先ほどの :file:`appveyor.yml` ファイルはこれをやりません。" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "外部への依存関係" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." @@ -12512,7 +12509,7 @@ msgstr "" "提供されたスクリプトを使えば、ビルド時にサードパーティの外部ライブラリに依存" "しない配布物ならどれでもビルドに成功するでしょう。" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -12527,15 +12524,15 @@ msgstr "" "めの余分の設定を追加することもできます。しかしながら、このレベルの設定はこの" "文書の範囲を超えます。" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "サポートスクリプト" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "参照用に SDK を構築するサポートスクリプトをここに挙げておきます:" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -12557,15 +12554,15 @@ msgid "" "are deprecated or insecure." msgstr "" "Python パッケージングのランドスケープは、多くの異なったツール群からできていま" -"す。多くのタスクについて、 :term:`Python パッケージングオーソリティ ` (PyPA とは多数のパッケージングツール群を包含す" -"るとともにこのガイド文書を維持管理しているワーキンググループ) は、一律に適用" -"するような推奨ををしません; 例えば、数多くのビルドバックエンドが存在する理由" -"は、既存のユニークなバックエンドである setuptools よりもうまく特定のユーザの" -"ニーズに応える新しいバックエンドの開発を可能とするためにランドスケープを開放" -"しているということなのです。このガイド文書では、広く認知されている幾つかの" -"ツールを指し示していますが、また、非推奨であったり安全でなかったりするために " -"*使うべきでない* ものについても非推奨事項を記しています。" +"す。多くのタスクについて、 :term:`Python パッケージング オーソリティ ` (PyPA は多数のパッケージングツール群を包含すると" +"ともにこのガイド文書を維持管理しているワーキンググループ) は、一律に適用する" +"ような推奨を意図的にしないことにしています; 例えば、数多くのビルドバックエン" +"ドが存在する理由は、既存のユニークなバックエンドである setuptools よりもうま" +"く特定のユーザのニーズに応える新しいバックエンドの開発を可能とするためにラン" +"ドスケープを開放しているということなのです。このガイド文書では、広く認知され" +"ている幾つかのツールを指し示していますが、また、非推奨であったり安全でなかっ" +"たりするために *使うべきでない* ものについても非推奨事項を記しています。" #: ../source/guides/tool-recommendations.rst:20 msgid "Virtual environments" @@ -12752,7 +12749,7 @@ msgid "" "(or :file:`setup.cfg`) whenever possible and keep :file:`setup.py` only if " "programmatic configuration is needed. See :ref:`setup-py-deprecated`." msgstr "" -"とりわけ、 ``python setup.py`` のように直接に起動しては *いけません* 。他方" +"とりわけ、 ``python setup.py`` のように直接に起動しては **いけません** 。他方" "で、可能であればいつでも近代的な :ref:`[project] table in pyproject.toml " "` (または :file:`setup.cfg`) を使うことや、プログラム" "的な設定が必要とされる場合にのみ :file:`setup.py` を使い続けることが推奨され" @@ -12766,11 +12763,11 @@ msgid "" "table ` in :file:`pyproject.toml` " "instead), and the ``easy_install`` command (cf. :ref:`pip vs easy_install`)." msgstr "" -"非推奨となった機能の他の例としては、 ``setup()`` の ``setup_requires`` 引数を" -"使うべきではなく (代わりに :file:`pyproject.toml` 内の :ref:`[build-system] " -"テーブル ` を使ってください) 、また、 " -"``easy_install`` コマンドを使うことも非推奨になっています (cf. :ref:`pip vs " -"easy_install`) 。" +"非推奨となって使用するべきで **なくなった** 機能の他の例としては、 " +"``setup()`` の ``setup_requires`` 引数 (代わりに :file:`pyproject.toml` 内" +"の :ref:`[build-system] テーブル ` を使っ" +"てください) や、 ``easy_install`` コマンド ( :ref:`pip vs easy_install` を参" +"照のこと) を挙げることができるでしょう。" #: ../source/guides/tool-recommendations.rst:108 msgid "" @@ -12778,9 +12775,9 @@ msgid "" "from the standard library in Python 3.12, although it still remains " "available from setuptools." msgstr "" -":ref:`distutils` を *使わないで* ください、というのも、これは非推奨になってい" -"ますし、まだ setuptools から利用可能ではありますが Python 3.12 で標準ライブラ" -"リから取り除かれたものです。" +":ref:`distutils` を **使わないで** ください、というのも、これは非推奨になって" +"いますし、まだ setuptools から利用可能ではありますが Python 3.12 で標準ライブ" +"ラリから取り除かれたものです。" #: ../source/guides/tool-recommendations.rst:115 msgid "Build backends for extension modules" @@ -12836,10 +12833,10 @@ msgid "" "` in :file:`pyproject.toml`." msgstr "" "PyPI へアップロードするために :term:`ソースコード配布物 ` や :term:`wheels ` をビルドするための標準ツール" -"は、 :ref:`build` です。:file:`pyproject.toml` 内で `宣言された ` ビルドバックエンドが何であれ、それを起動することに" -"なります。" +"(or \"sdist\")>` や :term:`wheels ` をビルドするための標準ツール" +"は、 :ref:`build` です。:file:`pyproject.toml` 内で :ref:`宣言された " +"` ビルドバックエンドが何であれ、それを起" +"動することになります。" #: ../source/guides/tool-recommendations.rst:135 msgid "" @@ -12848,8 +12845,8 @@ msgid "" "are :ref:`deprecated `." msgstr "" "この作業のために ``python setup.py sdist`` や ``python setup.py " -"bdist_wheel`` を *使わないで* ください。:file:`setup.py` を直接に起動すること" -"は :ref:`非推奨 ` になっています。" +"bdist_wheel`` を **使わないで** ください。:file:`setup.py` を直接に起動するこ" +"とは :ref:`非推奨 ` になっています。" #: ../source/guides/tool-recommendations.rst:139 msgid "" @@ -12915,8 +12912,8 @@ msgid "" "**Never** use ``python setup.py upload`` for this task. In addition to " "being :ref:`deprecated `, it is insecure." msgstr "" -"このタスクを行うために ``python setup.py upload`` を使うことは *絶対にやめて" -"* ください。 :ref:`非推奨 ` であることに加えて、危険 " +"このタスクを行うために ``python setup.py upload`` を使うことは **絶対にやめて" +"** ください。 :ref:`非推奨 ` であることに加えて、危険 " " です。" #: ../source/guides/tool-recommendations.rst:169 @@ -13451,9 +13448,9 @@ msgid "" "\"headline\" of your project page on PyPI (`example `_), and " "other places such as lists of search results (`example `_)." msgstr "" -"これは、PyPI におけるプロジェクトページの \"ヘッドライン\" (`例 `_) や検索結果 (`例 `_) のような他の場所で表示されるも" -"のなので、1行でプロジェクトの説明をしたものであるべきです。" +"これは、PyPI におけるプロジェクトページの \"ヘッドライン\" ( `example `_ ) や、検索結果 ( `example `_ ) のような他の場所で表" +"示されるものなので、1行でプロジェクトの説明をしたものであるべきです。" #: ../source/guides/writing-pyproject-toml.rst:268 #: ../source/specifications/pyproject-toml.rst:149 @@ -13478,7 +13475,7 @@ msgstr "README のフォーマットは拡張から自動的に検出されま #: ../source/guides/writing-pyproject-toml.rst:281 msgid "``README.md`` → `GitHub-flavored Markdown `_," -msgstr "``README.md`` → `GitHub 流のマークダウン `_ 、" +msgstr "``README.md`` → `GitHub-flavored Markdown `_ 、" #: ../source/guides/writing-pyproject-toml.rst:282 msgid "" @@ -13719,8 +13716,8 @@ msgid "" "A list of PyPI classifiers that apply to your project. Check the `full list " "of possibilities `_." msgstr "" -"プロジェクトに合致する PyPI 分類子 のリスト。 `可能な分類子のリ" -"スト `_ を参照してください。" +"プロジェクトに合致する PyPI 分類子 のリスト。 `可能な分類子の全" +"リスト `_ を参照してください。" #: ../source/guides/writing-pyproject-toml.rst:436 msgid "" @@ -14121,9 +14118,9 @@ msgid "" "all common platforms and Python versions on most CI systems. Also " "see :ref:`multibuild`." msgstr "" -"``cibuildwheel`` は、プラットフォーム・ Python バージョン・ CIシステムのよく" -"ある組み合わせの全部について :term:`wheels ` をビルドする Python パッ" -"ケージです。" +"``cibuildwheel`` は、ほとんどの CI システム上でプラットフォームと Python バー" +"ジョンのよくある組み合わせの全てについて :term:`wheels ` をビルドする " +"Python パッケージです。 :ref:`multibuild` も見てください。" #: ../source/key_projects.rst:66 msgid "distlib" @@ -14238,9 +14235,9 @@ msgid "" msgstr "" "Flit は、純 Python のパッケージやモジュールを作成して PyPI へアップロードする" "簡単な手段を提供します。パッケージングに関して `簡単なことを簡単に実現する " -"`_ ことに注力しています。これを使えば単純なプロジェクトや" -"ソースコード配布物とwheelsについて素早くセットアップするための設定ファイルを" -"生成し、PyPI にアップロードすることができます。" +"`_ ことに注力しています。 Flit を使えば、単純なプロジェクト" +"を素早くセットアップするための設定ファイルを生成し、ソースコード配布物と " +"wheel をビルドし、それらを PyPI にアップロードすることができます。" #: ../source/key_projects.rst:127 msgid "" @@ -14344,12 +14341,12 @@ msgid "" "reading of ambiguous metadata in cases where :ref:`packaging` will instead " "report on error." msgstr "" -"このプロジェクトは、 :ref:`パッケージング仕様 ` で" +"定義された近代的な Python パッケージング相互運用性標準を実装することに焦点を" +"当てており、この標準と互換性が取れないほど古いレガシーパッケージについてエ" +"ラーを報告します。対照的に、 :ref:`distlib` プロジェクトはもっと寛容なライブ" +"ラリで、 :ref:`packaging` ならばエラーを報告するような場合であっても曖昧なメ" +"タデータをもっともらしく読み込もうと試みます。" #: ../source/key_projects.rst:186 #: ../source/specifications/platform-compatibility-tags.rst:147 @@ -14553,10 +14550,10 @@ msgid "" "to :ref:`systematically describe their projects ` " "so that users can better find projects that match their needs on the PyPI." msgstr "" -"trove-classifiers は、`PyPI における分類子 `_ " -"の正統な源泉で、ユーザがそのニーズに即したプロジェクトを PyPI でよりうまく探" -"し出せるように、プロジェクトの保守者が `プロジェクトを体系的に表現する `_ のに使います。" +"trove-classifiers は、 `PyPI における分類子 `_ の正統な源泉で、ユーザがそのニーズに即したプロジェクトを PyPI でよりうま" +"く探し出せるように、プロジェクトの保守者が :ref:`プロジェクトを体系的に表現す" +"る ` のに使います。" #: ../source/key_projects.rst:300 msgid "" @@ -14752,13 +14749,16 @@ msgid "" "or `pixi `_ systems. It is available for Windows, Mac and " "Linux systems." msgstr "" -"Conda は、任意の言語 -- Python ・ R ・ Ruby ・ C/C++ ・ Fortran ・その他向け" -"のパッケージ・依存関係・環境の管理システムです。 Python で書かれており、非 " -"Python のライブラリや拡張をサポートしているために、 Python の科学計算コミュニ" -"ティで広く使われています。 Anaconda, Inc. が出している Python 配布物である " -"`Anaconda `__ の基礎として使われていま" -"す。元々は科学計算コミュニティを目標にしたものですが、しかし、それ自身" -"や :doc:`miniconda `" +"Conda は、任意の言語 -- Python ・ R ・ Ruby ・ C/C++ ・ Fortran ・その他の言" +"語向けのパッケージ・依存関係・環境の管理システムです。 Python で書かれてお" +"り、非 Python のライブラリや拡張をサポートしているために、 Python の科学計算" +"コミュニティで広く使われています。 Anaconda, Inc. が出している Python 配布物" +"である `Anaconda `__ の基礎として使われて" +"います。元々は科学計算コミュニティを目標にしたものですが、しかし、それ自身" +"で、または、 :doc:`miniconda ` ・ `miniforge `_ ・ `pixi `_ などのシス" +"テムと一緒に使用することも可能です。 Windows ・ Mac ・ Linux システムで利用可" +"能です。" #: ../source/key_projects.rst:416 msgid "" @@ -15215,10 +15215,10 @@ msgid "" "`Pulp `_. Pulp-python supports mirrors backed by " "local or `AWS S3`_, package upload, and proxying to multiple package indexes." msgstr "" -"Pulp-python は、 `Pulp ` 向けの Python :term:`パッ" +"Pulp-python は、 `Pulp `_ 向けの Python :term:`パッ" "ケージインデックス ` プラグインです。 Pulp-python は、ローカル" -"か `AWS S3`_ にファイルを置くミラー機能や、複数のパッケージインデックスへのプ" -"ロクシ機能をサポートします。" +"か `AWS S3`_ で裏打ちされたミラー群や、パッケージアップロード、また、複数の" +"パッケージインデックスへのプロクシ機能をサポートします。" #: ../source/key_projects.rst:679 msgid "PyPI Cloud" @@ -15365,13 +15365,13 @@ msgid "" "ninja>`__ (also available on PyPI)." msgstr "" "Scikit-build は、C/C++/Fortran/Cython で書かれた拡張をビルドする CPython のた" -"めの :ref:`setuptools` ラッパです。追加のコンパイラやビルドシステムやクロスコ" -"ンパイルに対するより良いサポートを提供するため、また、関連するビルドで要求さ" -"れるライブラリなど の位置を特定するために `cmake " -"`__ (PyPI にあります) を使用します。大きなプ" -"ロジェクトのビルドの速度を増したり並列化したりするために、ユーザは `ninja " -"`___ (これも PyPI にあります) をインストール" -"することができます。" +"めの :ref:`setuptools` ラッパーです。追加のコンパイラやビルドシステムやクロス" +"コンパイルに対するより良いサポートを提供するため、また、関連するビルドで要求" +"されるライブラリなどのビルド時の要求事項 の位置を特定す" +"るために、 `cmake `__ (PyPI にあります) を使" +"用します。大きなプロジェクトのビルドの速度を増したり並列化したりするために、" +"ユーザは `ninja `__ (これも PyPI にあります) " +"をユーザはインストールすることができます。" #: ../source/key_projects.rst:769 msgid "scikit-build-core" @@ -15493,10 +15493,32 @@ msgstr "" "ル作業なしで使用できます。" #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "uv" + +#: ../source/key_projects.rst:835 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" +"`説明文書 `__ | `GitHub `__ | `PyPI `__" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" +"良好なパフォーマンスのために Rust で書かれた Python パッケージとプロジェクト" +"のマネージャ。仮想環境の作成と維持管理や、パッケージインストール、依存関係の" +"固定、 Python バージョンやプロジェクトの管理をサポートしています。" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.releaser" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__ | `PyPI `__" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -15519,15 +15541,15 @@ msgstr "" "ド管理の側でリリースタグを挿入したり、新しいパッケージを PyPI にアップロード" "することを自動化することができます。" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "標準ライブラリ内のプロジェクト群" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "ensurepip" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" @@ -15535,7 +15557,7 @@ msgstr "" "`説明文書 `__ | `課題リス" "ト `__" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -15547,11 +15569,11 @@ msgstr "" "ほとんどの場合にはエンドユーザがこのモジュールを使うことはなく、どちらかと言" "えば Python 配布物のビルドの際に使われるでしょう。" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "http.server" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" @@ -15559,7 +15581,7 @@ msgstr "" ":doc:`説明文書 ` | :gh:`課題リスト `" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " @@ -15570,11 +15592,11 @@ msgstr "" "タフェース (:ref:`自分用のシンプルなリポジトリをホストする ` を参照してください) 。" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "venv" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" @@ -15582,7 +15604,7 @@ msgstr "" "`説明文書 `__ | `課題リスト " "`__" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -16405,10 +16427,11 @@ msgid "" "to package Python for a non-technical audience and/or a production setting, " "skip ahead to :ref:`packaging-applications`." msgstr "" -"パッケージングに関する以下のアプローチは、開発環境における技術に明るい聞き手" -"が用いるライブラリやツールを念頭に置いています。技術にあまり明るくない聞き手" -"向けに Python をパッケージする方法や、製品使用環境での方法を探している場合" -"は、 :ref:`アプリケーションをパッケージングする` まで飛ばしてください。" +"パッケージングに関する以下のアプローチは、開発環境下の技術に明るい聞き手が用" +"いるライブラリやツールを念頭に置いています。技術にあまり明るくない聞き手向け" +"に Python パッケージを作成する方法や、製品使用環境下でのやり方を探している場" +"合は、 :ref:`アプリケーションをパッケージングする ` " +"まで飛ばしてください。" #: ../source/overview.rst:56 msgid "Python modules" @@ -16483,11 +16506,10 @@ msgid "" "use Python's native packaging tools to create a *source* :term:`Distribution " "Package`, or *sdist* for short." msgstr "" -"あなたのソースコードが純粋な Python コード以外は何も含んでいない間は、そし" -"て、配置先の環境であなたが想定しているバージョンの Python が動作することを" -"知っていれば、 Python 由来のパッケージングツールを使って *ソースコード" -"* :term:`配布パッケージ ` もしくは 短縮系で*sdist* を使" -"えば良いでしょう。" +"ソースコードが純粋な Python コード以外は何も含んでいない場合で、配置先の環境" +"で想定バージョンの Python が動作することがわかっている場合には、 Python 由来" +"のパッケージングツールを使って *ソースコード* :term:`配布パッケージ " +"` もしくは 短縮系で *sdist* を使えば良いでしょう。" #: ../source/overview.rst:92 msgid "" @@ -17763,8 +17785,8 @@ msgid "" "``{distribution}-{version}.dist-info/WHEEL`` is metadata about the archive " "itself in the same basic key: value format::" msgstr "" -"``{distribution}-{version}.dist-info/WHEEL`` は、同様のキー:バリュー形式で表" -"現されたアーカイブそのものに関するメタデータです::" +"``{distribution}-{version}.dist-info/WHEEL`` は、基本的なキー:バリュー形式と" +"同じ形式で表現されたアーカイブそのものに関するメタデータです::" #: ../source/specifications/binary-distribution-format.rst:209 msgid "``Wheel-Version`` is the version number of the Wheel specification." @@ -18174,10 +18196,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -18282,13 +18305,13 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "例" #: ../source/specifications/build-details/index.rst:35 msgid "Changelog" -msgstr "Changelog" +msgstr "変更履歴" #: ../source/specifications/build-details/index.rst:45 #: ../source/specifications/build-details/v1.0.rst:9 @@ -20981,7 +21004,7 @@ msgstr "追加物の名前に対する制限事項は :pep:`685` で定義され #: ../source/specifications/dependency-specifiers.rst:113 msgid "Giving us a rule for name based requirements::" -msgstr "私たちに名前に基づいた要求仕様を与えてください::" +msgstr "私たちに名前に基づいた要求仕様を与える::" #: ../source/specifications/dependency-specifiers.rst:117 msgid "And a rule for direct reference specifications::" @@ -21121,7 +21144,7 @@ msgid "" msgstr "" "マーカ言語は Python そのものに触発されたもので、セキュリティ上の脆弱性になり" "かねない任意コードの実行を伴わずに安全に評価を行うことができるので選ばれまし" -"た。マーカは:pep:`345` で初めて標準化されました。この説明文書で" +"た。マーカは :pep:`345` で初めて標準化されました。この説明文書で" "は、 :pep:`426` に記述されたデザインに見られるいくつかの問題点を修正していま" "す。" @@ -21245,7 +21268,7 @@ msgstr "値の例" #: ../source/specifications/dependency-specifiers.rst:251 msgid "``os_name``" -msgstr "``OS の名称 ``" +msgstr "``os_name``" #: ../source/specifications/dependency-specifiers.rst:252 msgid ":py:data:`os.name`" @@ -21479,7 +21502,7 @@ msgid "" "future versions of Python with 2-digit major and minor versions (e.g. 3.10). " "[#future_versions]_" msgstr "" -"2019年6月: ``python_version`` の定義は、Python の将来のバージョンが二桁のメ" +"2019年7月: ``python_version`` の定義は、Python の将来のバージョンが二桁のメ" "ジャーバージョンやマイナーバージョンを持つ場合 (例えば 3.10) でもそれを収容で" "きるように、 ``platform.python_version()[:3]`` から " "``'.'.join(platform.python_version_tuple()[:2])`` へ `変更されました ` に記述されています。" +"この説明文書では、配布物の配布元へ直接アクセスする URL を記録する方法を指定す" +"るために、インストール済みの配布物の ``*.dist-info`` ディレクトリにあ" +"る :file:`direct_url.json` ファイルの仕様を指定します。 ``*.dist-info`` ディ" +"レクトリの一般的な構造と使用方法は、 :ref:`インストール済みパッケージを記録す" +"る ` に記述されています。" #: ../source/specifications/direct-url.rst:17 msgid "" @@ -21705,8 +21728,8 @@ msgid "" msgstr "" "本稿執筆時点では、ツール群に渡せるようにこのデータ構造の各部分を単一の URL に" "まとめる方法については公式には指定されていません。よく見られる表現形式は pip " -"URL フォーマット (`VCS サポート `_) で、他の例が :ref:`バー" -"ジョン指定子仕様 ` の中で提供されています。" +"URL フォーマット ( `VCS サポート `_ ) で、他の例が :ref:`" +"バージョン指定子仕様 ` の中で提供されています。" #: ../source/specifications/direct-url-data-structure.rst:21 msgid "" @@ -21867,12 +21890,12 @@ msgid "" "secure algorithm from :py:data:`hashlib.algorithms_guaranteed` SHOULD always " "be included. At time of writing, ``sha256`` specifically is recommended." msgstr "" -":py:mod:`hash lib` 経由で利用可能なハッシュアルゴリズム (とりわ" +":py:mod:`hashlib` 経由で利用可能なハッシュアルゴリズム (とりわ" "け、 :py:func:`hashlib.new()` に渡すことができて、かつ、それ以上のパラメータ" "を必要としないもの) はどれでも、ハッシュ値を格納する辞書のキーとして用いるこ" -"とができます。 :py:data:`hashlib.algorithms_garanteed` から安全なアルゴリズム" -"を少なくともひとつ選択して含めるべきです。執筆時点では、 ``sha256`` が特に推" -"奨されています。" +"とができます。 :py:data:`hashlib.algorithms_guaranteed` から安全なアルゴリズ" +"ムを少なくともひとつ選択して含めるべきです。執筆時点では、 ``sha256`` が特に" +"推奨されています。" #: ../source/specifications/direct-url-data-structure.rst:100 msgid "" @@ -21935,10 +21958,10 @@ msgid "" "absolute. Symbolic links SHOULD be preserved when making relative paths " "absolute." msgstr "" -"``url`` がローカルのディレクトリを参照している場合、 :rfc:``8089` に適合する " -"``file`` スキームが存在していなければなりません。特にパス部分は絶対パスでなけ" -"ればなりません。相対パスを絶対パスに変換する際には、シンボリックリンクはその" -"まま保存されているべきです。" +"``url`` がローカルのディレクトリを参照している場合、 ``file`` スキームであっ" +"て :rfc:`8089` に適合していなければなりません。特にパス部分は絶対パスでなけれ" +"ばなりません。相対パスを絶対パスに変換する際には、シンボリックリンクはそのま" +"ま保存されているべきです。" #: ../source/specifications/direct-url-data-structure.rst:130 msgid "Projects in subdirectories" @@ -22036,7 +22059,7 @@ msgstr "``commit_id`` フィールド" #: ../source/specifications/direct-url-data-structure.rst:167 msgid "A commit hash (40 hexadecimal characters sha1)." -msgstr "コミットハッシュ (16進数で40文字のSHA1)。" +msgstr "コミットハッシュ (16進数で40文字の sha1 )。" #: ../source/specifications/direct-url-data-structure.rst:171 msgid "" @@ -22163,8 +22186,8 @@ msgid "" "January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." msgstr "" -"2023年1月: ``archive_info.hashes`` キーを追加しました (`議論 `_) 。" +"2023年1月: ``archive_info.hashes`` キーを追加しました ( `議論 `_ ) 。" #: ../source/specifications/entry-points.rst:5 msgid "Entry points specification" @@ -22247,9 +22270,9 @@ msgid "" "more groups of letters, numbers and underscores, separated by dots (regex " "``^\\w+(\\.\\w+)*$``)." msgstr "" -"エントリポイントが属する *group* は、それがどのような種類のオブジェクトを提供" -"するのかを示します。例えば、 ``console_scripts`` グループはコマンドとして使え" -"る関数を参照するエントリポイント用であり、一方、 ``pygments.styles`` は " +"エントリポイントが属する **group** は、それがどのような種類のオブジェクトを提" +"供するのかを示します。例えば、 ``console_scripts`` グループはコマンドとして使" +"える関数を参照するエントリポイント用であり、一方、 ``pygments.styles`` は " "pygments スタイルを定義するクラスを提供するグループです。利用する側 (コン" "シューマ) は、通常、期待するインタフェースを定義しています。衝突を避けるため" "に、新しいグループを定義するのであればコンシューマは自身の PyPI での名前の後" @@ -22340,7 +22363,7 @@ msgid "" "distributions, and in :ref:`binary-distribution-format` for wheels. The file " "uses the UTF-8 character encoding." msgstr "" -"エントリポイントは、配布物の `*.dist-info` ディレクトリの中" +"エントリポイントは、配布物の :file:`*.dist-info` ディレクトリの中" "の :file:`entry_points.txt` と呼ばれるファイル内で定義されます。これは、イン" "ストール済みの配布物に関しては :ref:`インストール済みパッケージを記録する " "` 、 wheels に関しては :ref:`バイナリ配布物の" @@ -22519,10 +22542,9 @@ msgid "" msgstr "" "この仕様では ``EXTERNALLY-MANAGED`` というマーカファイルを定義しており、これ" "によって Python をインストールする際に ``pip`` のような Python に特有のツール" -"群に対してインタプリタのデフォルトのインストール環境にパッケージを" -"インストールしたり取り除いたりしないように指示し、その代わりに、エンドユーザ" -"に対して :ref:`仮想環境 ` を使うようにガイドするべきで" -"す。" +"群に対してインタプリタのデフォルトのインストール環境にパッケージをインストー" +"ルしたり取り除いたりしないように指示し、その代わりに、エンドユーザに対し" +"て :ref:`仮想環境 ` を使うようにガイドするべきです。" #: ../source/specifications/externally-managed-environments.rst:24 msgid "" @@ -23194,15 +23216,15 @@ msgid "" "absolutely needed, use ``pip uninstall --scheme=posix_distro`` to use pip to " "remove packages from the system-managed directory." msgstr "" -"我々は、 pip が指定されたスキームで走るように指示する ``--scheme=...`` " -"オプションを追加することを提案します。(現在の pip がスキームを決定する方法に" -"ついては後述の `Implementation Notes`_ を参照してください。) これが利用可能に" -"なり次第、ローカルのテストやおそらく実際のパッケージングで、 " -"(``get_preferred_schemes`` をバイパスして) 明示的にディストロ側の場所へ" -"パッケージをインストールするために ``pip install --scheme=posix_distro`` のよ" -"うな形で実行することができるようになるでしょう。また、もし本当に必要であれば" -"、 pip を使ってシステム側が管理するディレクトリからパッケージを削除するため" -"に ``pip uninstall --scheme=posix_distro`` を使うことさえできるでしょう。" +"我々は、 pip が指定されたスキームで走るように指示する ``--scheme=...`` オプ" +"ションを追加することを提案します。(現在の pip がスキームを決定する方法につい" +"ては後述の `Implementation Notes`_ を参照してください。) これが利用可能になり" +"次第、ローカルのテストやおそらく実際のパッケージングで、 " +"(``get_preferred_schemes`` をバイパスして) 明示的にディストロ側の場所へパッ" +"ケージをインストールするために ``pip install --scheme=posix_distro`` のような" +"形で実行することができるようになるでしょう。また、もし本当に必要であれば、 " +"pip を使ってシステム側が管理するディレクトリからパッケージを削除するために " +"``pip uninstall --scheme=posix_distro`` を使うことさえできるでしょう。" #: ../source/specifications/externally-managed-environments.rst:377 msgid "" @@ -23358,11 +23380,10 @@ msgid "" "``distutils`` instead of as a changed ``sysconfig`` scheme." msgstr "" "Fedora は、現在、`patch to change the default install location when not " -"running inside rpmbuild`__ を適用していて、「ふたつのシステムワイドな" -"ディレクトリ」のアプローチを使っています。これは、概念としては、 " -"``sysconfig`` スキームを変更するものとしてではなく ``distutils`` への" -"ソースコードパッチとして実装されていることを除けば、 bpo-43976_ によって可視" -"化されたある種のフックです。" +"running inside rpmbuild`__ を適用していて、「ふたつのシステムワイドなディレク" +"トリ」のアプローチを使っています。これは、概念としては、 ``sysconfig`` スキー" +"ムを変更するものとしてではなく ``distutils`` へのソースコードパッチとして実装" +"されていることを除けば、 bpo-43976_ によって可視化されたある種のフックです。" #: ../source/specifications/externally-managed-environments.rst:454 msgid "" @@ -23606,11 +23627,11 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" -"英数字、アンダースコア (``_``) 、ハイフン (``-``) およびドット (``.``) は、文" -"字通りにマッチされなければなりません。" +"英数字、空白文字 (`` ``)、アンダースコア (``_``) 、ハイフン (``-``) および" +"ドット (``.``) は、文字通りにマッチされなければなりません。" #: ../source/specifications/glob-patterns.rst:21 msgid "" @@ -23710,6 +23731,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "下に示すソースコードは、単純な参照実装としてのものです:" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "2025年1月: 最初のバージョン" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "2026年3月: 空白文字を言葉通りの文字として取り扱う" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "PyPA 仕様" @@ -24282,9 +24311,9 @@ msgid "" "configure behavior. It has the same semantics as the :ref:`[tool] table in " "pyproject.toml `." msgstr "" -"``[tool]`` テーブルは、どんなツールでもスクリプトランナーでもその他のものでも" -"、振る舞いを設定するのに使用して構いません。 :ref:`pyproject.toml内の [tool] " -"テーブル ` と同一のセマンティクスを持ちます。" +"``[tool]`` テーブルは、どんなツールでもスクリプトランナーでもその他のもので" +"も、振る舞いを設定するのに使用して構いません。 :ref:`pyproject.toml内の " +"[tool] テーブル ` と同一のセマンティクスを持ちます。" #: ../source/specifications/inline-script-metadata.rst:86 msgid "The top-level fields are:" @@ -24402,11 +24431,9 @@ msgid "" "defines which license expressions are acceptable." msgstr "" ":pep:`639` では、 :ref:`pyproject.toml のライセンス ` の新しい値を定義していて、対応する :ref:`コアとなるメタデータのライ" -"センス表現フィールド `:ref:`コアとなるメタ" -"データのライセンス表現フィールド ` を追加し" -"ました。この仕様は、どのライセンス表現が受け入れ可能であるかを定義していま" -"す。" +"license>` の新しい値を定義し、対応する :ref:`コアとなるメタデータのライセンス" +"表現フィールド ` を追加しました。この仕様" +"は、どのライセンス表現が受け入れ可能であるかを定義しています。" #: ../source/specifications/license-expression.rst:14 msgid "" @@ -24480,10 +24507,10 @@ msgid "" "valid project names are limited to those which match the following regex " "(run with :py:data:`re.IGNORECASE`)::" msgstr "" -"正当な名前は ASCII 文字・数字・ピリオド・アンダースコア・ハイフンだけで構成さ" -"れているものです。名前の先頭と末尾は文字か数字でなければなりません。正当なプ" -"ロジェクト名は、次の正規表現に (``re.IGNORECASE`` 付きで) マッチするものに限" -"られるということになります::" +"正当な名前は、 ASCII 文字・数字・ピリオド・アンダースコア・ハイフンだけで構成" +"されているものです。名前の先頭と末尾は文字か数字でなければなりません。正当な" +"プロジェクト名は、次の正規表現に ( :py:data:`re.IGNORECASE` 付きで) マッチす" +"るものに限られるということになります::" #: ../source/specifications/name-normalization.rst:26 msgid "Name normalization" @@ -24545,7 +24572,7 @@ msgid "" "November 2015: The specification of valid names was approved " "through :pep:`508 <508#names>`." msgstr "" -"2015年11月: :pep:`508 <508#名前>` を通じて正当な名前に関する仕様が承認されま" +"2015年11月: :pep:`508 <508#names>` を通じて正当な名前に関する仕様が承認されま" "した。" #: ../source/specifications/platform-compatibility-tags.rst:6 @@ -24684,8 +24711,7 @@ msgid "" "``py2.py3``. See `Compressed Tag Sets`_, below." msgstr "" "単一ソースで Python 2/3 に互換性を持つ配布物は、合成タグ ``py2.py3`` を用いる" -"ことができます。 後述の `タグの圧縮された組み合わせ `_ " -"を参照してください。" +"ことができます。 後述の `Compressed Tag Sets`_ を参照してください。" #: ../source/specifications/platform-compatibility-tags.rst:66 msgid "ABI Tag" @@ -25450,7 +25476,7 @@ msgid "" msgstr "" "互換性タグは、インストーラがある配布物の *単一のバージョン* の *最も互換性が" "ある* ビルドを選択する際に助けとなります。例えば、 (Python 3.4 に特有の機能を" -"使っている) ``beaglevote-1.2.0``には Python 3.3 と互換性を持つビルドがひとつ" +"使っている) ``beaglevote-1.2.0`` には Python 3.3 と互換性を持つビルドがひとつ" "もないという場合でも、 ``py34-none-any`` タグの代わりに ``py3-none-any`` タグ" "を使っても構いません。 Python 3.3 のユーザが互換性のあるビルドを得るために" "は、新しい機能を使う前のリリースである ``beaglevote-1.1.0`` 用の要求 " @@ -25903,8 +25929,8 @@ msgstr "**型**: 文字列; ``\"1.0\"`` という値" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "**必須?**: はい" @@ -25959,18 +25985,18 @@ msgstr "**型**: 文字列の配列" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "**必須?**: いいえ" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "**ひらめき**: uv_" @@ -26002,19 +26028,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "**型**: 文字列" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "**ひらめき**: PDM_, Poetry_, uv_" @@ -26083,8 +26111,8 @@ msgid "``dependency-groups``" msgstr "``dependency-groups``" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "**ひらめき**: :ref:`pyproject-tool-table`" @@ -26190,8 +26218,8 @@ msgstr "``[[packages]]``" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "**型**: テーブルの配列" @@ -26327,9 +26355,9 @@ msgstr "``[packages.vcs]``" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "**型**: テーブル" @@ -26434,6 +26462,7 @@ msgid "The path to the local directory of the source tree." msgstr "ソースコードツリーのローカルディレクトリへのパス。" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" @@ -26441,6 +26470,7 @@ msgstr "" "ん。" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -26614,7 +26644,7 @@ msgid "``packages.directory.subdirectory``" msgstr "``packages.directory.subdirectory``" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr ":ref:`pylock-packages-vcs-subdirectory` を参照のこと。" @@ -26623,6 +26653,8 @@ msgid "``[packages.archive]``" msgstr "``[packages.archive]``" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "**ひらめき**: :ref:`direct-url-data-structure-archive`" @@ -26663,35 +26695,53 @@ msgstr "" msgid "``packages.archive.url``" msgstr "``packages.archive.url``" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." -msgstr ":ref:`pylock-packages-vcs-url` を参照のこと。" +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" +"**必須?** : もし :ref:`pylock-packages-archive-path` が指定されていなければ" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." +msgstr "アーカイブへの URL_ 。" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "``packages.archive.path``" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." -msgstr ":ref:`pylock-packages-vcs-path` を参照のこと。" +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" +msgstr "" +"**必須?** : もし :ref:`pylock-packages-archive-url` が指定されていなければ" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "アーカイブへのパス。" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" +":ref:`pylock-packages-archive-url` が併せて指定されているなら、このキーによっ" +"て指定された通りのファイル名が優先的に採用されます。" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "``packages.archive.size``" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "**型**: 整数" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "**ひらめき**: uv_ ・ :ref:`simple-repository-api`" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "アーカイブファイルのサイズ。" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." @@ -26700,39 +26750,39 @@ msgstr "" "イズは、 HTTP リクエストの HEAD_ )から得られる Content-Length_ ヘッダーを通じ" "て利用可能です 。" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "``packages.archive.upload-time``" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "**型**: datetime" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "**ひらめき**: :ref:`simple-repository-api`" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "当該ファイルがアップロードされた時刻。" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "日付と時刻は、 UTC で記録されなければなりません。" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "``[packages.archive.hashes]``" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "**型**: 文字列のテーブル" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "**ひらめき**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." @@ -26740,15 +26790,15 @@ msgstr "" "当該ファイルの既知のハッシュ値を列挙したテーブルで、キーがハッシュアルゴリズ" "ムで値がハッシュ値のもの。" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "テーブルは、少なくともひとつのエントリを含んでいなければなりません。" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "ハッシュアルゴリズムのキーは、小文字であるべきです。" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " @@ -26758,15 +26808,15 @@ msgstr "" "ム を少なくともひとつ含んでいるべきです (執筆時点では、特に sha256 が推奨され" "ています) 。" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "``packages.archive.subdirectory``" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "``packages.index``" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." @@ -26775,7 +26825,7 @@ msgstr "" "sdist と wheel の両方または片方が見つかるところ (例えば、 ``https://pypi.org/" "simple/``) 。" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " @@ -26785,7 +26835,7 @@ msgstr "" "materials`_ を生成することを手助けするために、また、 URL が有効ではなくなった" "時にファイルを探す手助けとするために、これを指定するべきです。" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." @@ -26794,12 +26844,12 @@ msgstr "" "ラーコードの 404 を返す) 場合には、インデックスからインストールすることをサ" "ポートしても構いません。" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "``[packages.sdist]``" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" @@ -26807,11 +26857,11 @@ msgstr "" "**必須?**: いいえ; :ref:`pylock-packages-vcs` ・ :ref:`pylock-packages-" "directory` ・ :ref:`pylock-packages-archive` と相互に排他的" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "パッケージの :ref:`source-distribution-format-sdist` の詳細。" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." @@ -26819,18 +26869,18 @@ msgstr "" "ツール類は、ロッキングとインストール局面の両方または片方で sdist ファイルをサ" "ポートしないことを選択しても構いません。" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" "ツール類は、 sdist ファイルを使用することについてオプトイン/オプトアウトの方" "法をユーザに対して提供するべきです。" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "``packages.sdist.name``" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" @@ -26838,60 +26888,69 @@ msgstr "" "**必須?**: いいえ, :ref:`pylock-packages-sdist-path`/ :ref:`pylock-packages-" "sdist-url` の最後の構成品でない時は、同じ値でしょう" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr ":ref:`source-distribution-format-sdist` ファイルのファイル名。" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" +"指定されていれば、:ref:`pylock-packages-sdist-url` や :ref:`pylock-packages-" +"sdist-path` のいずれかで見つかるファイル名よりも、このキーの値が優先的に採用" +"されます。" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "``packages.sdist.upload-time``" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr ":ref:`pylock-packages-archive-upload-time` を参照のこと。" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "``packages.sdist.url``" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr ":ref:`pylock-packages-archive-url` を参照のこと。" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "``packages.sdist.path``" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr ":ref:`pylock-packages-archive-path` を参照のこと。" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "``packages.sdist.size``" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr ":ref:`pylock-packages-archive-size` を参照のこと。" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "``packages.sdist.hashes``" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr ":ref:`pylock-packages-archive-hashes` を参照のこと。" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "``[[packages.wheels]]``" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." @@ -26899,7 +26958,7 @@ msgstr "" "パッケージに関する :ref:`binary-distribution-format` で指定されたように " "wheel ファイルを記録するためのもの。" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." @@ -26907,11 +26966,11 @@ msgstr "" "ツール類は、ロッキングとインストール局面の両方で、 wheel ファイルをサポートし" "なければなりません。" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "``packages.wheels.name``" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" @@ -26919,51 +26978,61 @@ msgstr "" "**必須?**: いいえ、 :ref:`pylock-packages-wheels-path` / :ref:`pylock-" "packages-wheels-url` の最後の構成部品が同一の値でない時は" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr ":ref:`binary-distribution-format` ファイルのファイル名。" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" +"指定されていれば、このキーの値は :ref:`pylock-packages-wheels-url` また" +"は :ref:`pylock-packages-wheels-path` で見つかるファイル名よりも優先されま" +"す。" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "``packages.wheels.upload-time``" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "``packages.wheels.url``" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "``packages.wheels.path``" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "``packages.wheels.size``" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "``packages.wheels.hashes``" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "``[[packages.attestation-identities]]``" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "**ひらめき**: :ref:`provenance-object`" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" "このパッケージに記録された **任意の** ファイルのための証拠を記録したもの。" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" "もし利用可能であれば、ツール類は、証拠の見つかった身元を含めておくべきです。" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." @@ -26971,19 +27040,19 @@ msgstr "" "公開者に特有のキー群は、 :ref:`index-hosted-attestations` での仕様に従って、" "そのまま (つまりトップレベルの) テーブルに含まれることになります。" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "``packages.attestation-identities.kind``" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "信頼された公開者の一意の身元。" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "``[packages.tool]``" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 " @@ -26993,7 +27062,7 @@ msgstr "" "た使用方法だが、ロックファイルのレベル (これも :ref:`pylock-tool` を通じて利" "用可能) の代わりにパッケージバージョンのレベルのもの。" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." @@ -27001,15 +27070,15 @@ msgstr "" "テーブルに記録されたデータは、使い捨て可能でなければなりません (すなわち、イ" "ンストールされたものに影響を与えてはなりません) 。" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "``[tool]``" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr ":ref:`pylock-packages-tool` を参照のこと。" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " @@ -27018,7 +27087,7 @@ msgstr "" "ロックファイルからインストールする時に踏んでいく段階をこの後にアウトラインし" "ます (要求事項は規範的なものですが、一般的な段階と順序は示唆です) :" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." @@ -27026,11 +27095,11 @@ msgstr "" "インストールするために追加物と依存関係グループを集めて、それぞれ ``extras`` " "と ``dependency_groups`` をマーカー評価のために設定しましょう。" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "``extras`` は、デフォルトで空に設定されているべきです。" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." @@ -27038,7 +27107,7 @@ msgstr "" "``dependency_groups`` は、デフォルトで、 :ref:`pylock-default-groups` から生" "成されたものが設定されているべきです。" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." @@ -27047,7 +27116,7 @@ msgstr "" "されているかどうかの確認; 適切な場合にはエラーもしくは警告を発生させなければ" "なりません。" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " @@ -27057,7 +27126,7 @@ msgstr "" "求事項に合致するかどうかの確認; 合致しなければ、エラーを発生させなければなり" "ません。" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " @@ -27067,11 +27136,11 @@ msgstr "" "くともひとつが満足されていることの確認; 表現を満足するものがなければエラーを" "発生させなければなりません。" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr ":ref:`pylock-packages` の中に列挙されたそれぞれのパッケージについて:" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." @@ -27079,7 +27148,7 @@ msgstr "" ":ref:`pylock-packages-marker` が指定されているなら、それを満足しているかどう" "かの確認; もし満足していなければ、次のパッケージへとスキップしましょう。" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." @@ -27088,7 +27157,7 @@ msgstr "" "るかどうかの確認; もし満足されていない時は、エラーを発生させなければなりませ" "ん。" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." @@ -27096,7 +27165,7 @@ msgstr "" "パッケージと干渉するインスタンスがインストールされるリストに載っていないこと" "の確認; そうでなければ、曖昧さに関するエラーを発生させなければなりません。" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " @@ -27106,19 +27175,19 @@ msgstr "" "ケージのエントリに他の干渉する源がないということ)の確認; 何らかの問題が見つ" "かったら、エラーを発生させなければなりません。" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "そのパッケージを、インストールするべきパッケージの集合に加えましょう。" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "インストールされるパッケージのそれぞれについて:" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr ":ref:`pylock-packages-vcs` がセットされていれば:" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." @@ -27126,7 +27195,7 @@ msgstr "" ":ref:`pylock-packages-vcs-commit-id` で指定されているコミット ID へリポジトリ" "をクローン しましょう。" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." @@ -27134,20 +27203,20 @@ msgstr "" ":ref:`pylock-packages-vcs-subdirectory` を尊重しつつ、パッケージを :ref:`ビル" "ド ` しましょう。" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr ":ref:`インストール ` しましょう。" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" "そうではなくて、 :ref:`pylock-packages-directory` がセットされている場合:" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." @@ -27155,17 +27224,17 @@ msgstr "" ":ref:`pylock-packages-directory-subdirectory` を尊重しつつ、パッケージ" "を :ref:`ビルド ` しましょう。" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" "そうではなくて、 :ref:`pylock-packages-archive` がセットされている場合:" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "ファイルを取得してください。" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." @@ -27173,7 +27242,7 @@ msgstr "" ":ref:`pylock-packages-archive-size` と :ref:`pylock-packages-archive-hashes` " "を使って検証しましょう。" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." @@ -27181,12 +27250,12 @@ msgstr "" ":ref:`pylock-packages-archive-subdirectory` を尊重しつつ、パッケージを :ref:`" "ビルド ` してください。" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" "そうではなくて、 :ref:`pylock-packages-wheels` のエントリが存在する場合:" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " @@ -27197,17 +27266,17 @@ msgstr "" "プロジェクトのためのソースが欠落していることについてエラーを発生させなければ" "なりません。" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "ファイルを取得しましょう:" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" ":ref:`pylock-packages-wheels-path` がセットされているなら、それを使いましょ" "う。" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -27223,7 +27292,7 @@ msgstr "" "なりません; どのファイルをインストールするのかについては、再現性の確保のため" "に、オフラインの様式で決定されるべきです) 。" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." @@ -27231,7 +27300,7 @@ msgstr "" ":ref:`pylock-packages-wheels-size` や :ref:`pylock-packages-wheels-hashes` を" "用いて、正当性の検証をしましょう。" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" @@ -27239,12 +27308,12 @@ msgstr "" "そうではなくて、 :ref:`pylock-packages-wheels` ファイルが見つからないか、また" "は、 :ref:`pylock-packages-sdist` だけがセットされている場合:" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" ":ref:`pylock-packages-sdist-path` がセットされていれば、それを使いましょう。" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " @@ -27255,7 +27324,7 @@ msgstr "" "使っても構いませんし、 ツールに特有のファイルをダウンロードする何らかのメカニ" "ズムを使っても構いません。" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." @@ -27263,15 +27332,21 @@ msgstr "" ":ref:`pylock-packages-sdist-size` と :ref:`pylock-packages-sdist-hashes` を" "使って正当性を検証しましょう。" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" "パッケージを :ref:`ビルド ` しましょう。" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "2025年4月: :pep:`751` を通じて 初期バージョンが承認されました。" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" +"2026年3月: アーカイブ・ sdist ・ wheel についてファイル名の優先順位を明確化。" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr ":file:`.pypirc` ファイル" @@ -27335,8 +27410,8 @@ msgid "" "providing the password on the command line." msgstr "" "あなたのパスワードが平文で保存されることに注意してください。より良いセキュリ" -"ティのために `キーリング `_ ・環境変数での設定・コマンドラインでのパ" -"スワード供給のような代替策を検討してください。" +"ティのために、 `keyring`_ ・環境変数での設定・コマンドラインでのパスワード供" +"給のような代替策を検討してください。" #: ../source/specifications/pypirc.rst:52 msgid "" @@ -29139,7 +29214,7 @@ msgid "" msgstr "" "この説明文書では、 \"**MUST**\" ・ \"**MUST NOT**\" ・ \"**REQUIRED**\" ・ " "\"**SHALL**\" ・ \"**SHALL NOT**\", ・ **SHOULD**\" ・ \"**SHOULD NOT**\" ・ " -"\"**RECOMMENDED**\" ・ \"**MAY**\" ・ \"**OPTIONAL**\"\" を :rfc:`2119` で記" +"\"**RECOMMENDED**\" ・ \"**MAY**\" ・ \"**OPTIONAL**\"\" を :rfc:`2119` に記" "述された意味に解釈します。" #: ../source/specifications/simple-repository-api.rst:13 @@ -29150,7 +29225,7 @@ msgid "" msgstr "" "利用可能なパッケージバージョンを問い合わせたり、インデックスサーバからパッ" "ケージを取り出したりするためのインターフェースは、二つの形式: :ref:`HTML " -"` と Jref:`JSON ` " +"` と :ref:`JSON ` " "によってもたらされます。" #: ../source/specifications/simple-repository-api.rst:21 @@ -29196,9 +29271,9 @@ msgstr "" "この仕様は、 \"正規化された\" プロジェクト名称の概念を参照しています。 :ref:`" "名称正規化仕様 ` によれば、名称における正当な文字は、 " "ASCII アルファベット・ ASCII 数字・ ``.`` ・ ``-`` ・ ``_`` だけです。名称" -"は、 `.`` ・ ``-`` ・ ``_`` がいくつ連続していてもそれを単一の ``-`` 文字に置" -"き換え、小文字で統一されているべきです。これは Python の ``re`` モジュールで" -"実装されています::" +"は、 ``.`` ・ ``-`` ・ ``_`` がいくつ連続していてもそれを単一の ``-`` 文字に" +"置き換え、小文字で統一されているべきです。これは Python の ``re`` モジュール" +"で実装されています::" #: ../source/specifications/simple-repository-api.rst:50 msgid "Versioning PyPI's Simple API" @@ -29287,7 +29362,11 @@ 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 "「—" +msgstr "" +"この節は、 API のバージョン番号によって印を付けられたものとして、要約された変" +"更履歴だけを含んでいます。 API にバージョンを付与する前になされた変更も含む完" +"全な変更履歴については、 :ref:`歴史 ` を見てくださ" +"い。" #: ../source/specifications/simple-repository-api.rst:95 msgid "API version 1.0: Initial version of the API, declared with :pep:`629`." @@ -29405,9 +29484,9 @@ msgid "" "``href`` attribute **MUST** link to the URL for that particular project. As " "an example:" msgstr "" -"アンカータグのテキストは、それぞれ、プロジェクトの名称でなければならず、 " -"``href`` アトリビュートはその特定のプロジェクトの URL にリンクされていなけれ" -"ば **なりません** 。例としては:" +"アンカータグのテキストは、それぞれ、プロジェクトの名称で **なければならず" +"** 、 ``href`` アトリビュートはその特定のプロジェクトの URL にリンクされてい" +"なければ **なりません** 。例としては:" #: ../source/specifications/simple-repository-api.rst:156 #: ../source/specifications/simple-repository-api.rst:473 @@ -29469,9 +29548,9 @@ msgid "" "repository **SHOULD** redirect the URLs without a ``/`` to add a ``/`` to " "the end." msgstr "" -"HTML5 ページで応答するすべての URL は ``/`` で終わるものでなければならず、リ" -"ポジトリは ``/`` で終わらない URL の最後に ``/`` を加えたものへリダイレクト " -"**するべき** です。" +"HTML5 ページで応答するすべての URL は ``/`` で終わるもので **なければならず" +"** 、リポジトリは ``/`` で終わらない URL の最後に ``/`` を加えたものへリダイ" +"レクト **するべき** です。" #: ../source/specifications/simple-repository-api.rst:183 msgid "" @@ -29823,11 +29902,11 @@ msgid "" "format to serve, i.e. either HTML or JSON." msgstr "" "ゼロコンフィグレーションディスカバリを有効にして追加的な HTTP リクエストの量" -"を最小化するために、この仕様では HTML:ref:`基本となる HTML API の仕様 " -"` を拡張して、 (ファイル群それ自体を除く) すべて" -"の API エンドポイントが HTTP コンテンツネゴシエーションを使ってクライアントお" -"よびサーバが提供するべき正しいシリアライズのフォーマット、即ち HTML もしくは " -"JSON を選択できるようにしています。" +"を最小化するために、この仕様では :ref:`基本となる HTML API の仕様 ` を拡張して、 (ファイル群それ自体を除く) すべての API エ" +"ンドポイントが HTTP コンテンツネゴシエーションを使ってクライアントおよびサー" +"バが提供するべき正しいシリアライズのフォーマット、即ち HTML もしくは JSON を" +"選択できるようにしています。" #: ../source/specifications/simple-repository-api.rst:351 msgid "" @@ -30213,7 +30292,7 @@ msgstr "" "デフォルトでは、 :py:mod:`hashlib` を経由して利用可能なハッシュアルゴリズム " "(特に、:py:func:`hashlib.new()` に渡すことができて、かつ、追加のパラメータを" "要求しないもの) は、すべて、ハッシュの辞書のキーとして使うことができま" -"す。 :py:`data:`hashlib.algorithms_guaranteed` から選択した少なくともひとつの" +"す。 :py:data:`hashlib.algorithms_guaranteed` から選択した少なくともひとつの" "セキュアなアルゴリズムが、常に、 **含まれているべきです** 。この仕様の時点で" "は、特に ``sha256`` が推奨されます。" @@ -30248,13 +30327,13 @@ msgid "" "boolean to indicate if the file has an associated metadata file, or a " "dictionary mapping hash names to a hex encoded digest of the metadata's hash." msgstr "" -"``core-metadata``: :ref:`API メタデータの仕様 ` で指定されたのと同じ場所 (``{file_url}.metadata``) を通じて当" -"該ファイルに関するメタデータが利用可能であることを示す**オプション** のキー。" -"これが存在する場合には、そのファイルに対応するメタデータファイルがあるか否か" -"を示すブーリアンであるか、または、ハッシュ名称からメタデータのハッシュを16進" -"数にエンコードしたダイジェストへの対応をマッピングする辞書であるか、のいずれ" -"かで **なければなりません** 。" +"``core-metadata``: **オプション** のキーで、 :ref:`API メタデータファイルの仕" +"様 ` で指定されたのと同じ場所 " +"(``{file_url}.metadata``) を通じて当該ファイルに関するメタデータが利用可能で" +"あることを示すもの。これが存在する場合には、そのファイルに対応するメタデータ" +"ファイルがあるか否かを示すブーリアンであるか、または、ハッシュ名称からメタ" +"データのハッシュを16進数にエンコードしたダイジェストへの対応をマッピングする" +"辞書であるか、のいずれかで **なければなりません** 。" #: ../source/specifications/simple-repository-api.rst:568 msgid "" @@ -30523,8 +30602,8 @@ 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 "" -"理解できるコンテント型を全て``Accept`` ヘッダに列挙した HTTP リクエストをクラ" -"イアントが作成します。" +"クライアントは、自身が理解できるコンテント型を version+format の形で全て " +"``Accept`` ヘッダに列挙した HTTP リクエストを作成します。" #: ../source/specifications/simple-repository-api.rst:728 msgid "" @@ -30604,10 +30683,11 @@ msgid "" msgstr "" "しかしながら、 ``300 Multiple Choices`` 応答がどのように解釈され得るかについ" "て標準的なフォーマットは存在しないので、クライアント側が理解して要求するべき" -"別のコンテント型を選択する手段がないので、この仕様ではサーバがこのオプション" -"を採用することを強い非推奨にしています。加えて、クライアントが別のコンテント" -"型を **理解できるであろう** とは思われず、したがって、この応答は ``406 Not " -"Acceptable`` エラーと同じ扱いを受けるのが精々であろうと思われます。" +"別のコンテント型 を選択する手段がないので、この仕様ではサーバ" +"がこのオプションを採用することを強い非推奨にしています。加えて、クライアント" +"が別のコンテント型を *理解できるであろう* とは思われず、したがって、この応答" +"は ``406 Not Acceptable`` エラーと同じ扱いを受けるのが精々であろうと思われま" +"す。" #: ../source/specifications/simple-repository-api.rst:757 msgid "" @@ -30863,8 +30943,8 @@ msgid "" msgstr "" "特定のコンフィグレーションを要求したいと願うクライアントにとっては、ある特定" "のリポジトリ URL にどんな version+format が設定されたかを追跡することができま" -"すし、そのサーバへのリクエストを作成する時に正しいコンテント型 **だけ** を含" -"んだ ``Accept`` ヘッダを発出することができます。" +"すし、そのサーバへのリクエストを作成する時に正しいコンテント型 *だけ* を含ん" +"だ ``Accept`` ヘッダを発出することができます。" #: ../source/specifications/simple-repository-api.rst:918 msgid "" @@ -30969,8 +31049,8 @@ msgstr "" "サーバ側で考慮に入れてもらいたい特定の理由 (例えば、標準ライブラリの HTML " "パーサを使っていて、何らかのエッジケースにおいてパースできない何らかの種類の " "HTML 応答があるかもしれないと心配している場合) のある実装でない限り、一般的に" -"コンテント型にはクオリティ優先度 を含めるべきではありませ" -"ん。" +"コンテント型にはクオリティ優先度 を含めるべきでは *ありま" +"せん* 。" #: ../source/specifications/simple-repository-api.rst:961 msgid "" @@ -30978,9 +31058,9 @@ msgid "" "*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 "" -"この推奨事項に対する例外のひとつは、それがリクエストしている唯一のコンテント" +"この推奨事項に対するひとつの例外は、それがリクエストしている唯一のコンテント" "型であるという場合を除けば、伝統的な ``text/html`` コンテント型には " -"``;q=0.01`` を含めることが推奨されるということです。" +"``;q=0.01`` の値を *含めるべきである* ことが推奨されるということです。" #: ../source/specifications/simple-repository-api.rst:965 msgid "" @@ -31145,10 +31225,10 @@ msgstr "" "sdist のファイル名は、 :pep:`625` で標準化されています。ファイル名は " "``{name}-{version}.tar.gz`` の形をしていなければならず、この中の ``{name}`` " "はバイナリ配布物のファイル名に関するルールと同様のルールに従って正規化されて" -"いなければならず (:ref:`バイナリ配布物のフォーマット ` を見てください) 、かつ、 ``{version}`` はプロジェクトのバージョンの" -"形に正規化されていなければなりません (:ref:`バージョン指定子 ` を見てください) 。" +"形に正規化されていなければなりません ( :ref:`バージョン指定子 ` を見てください) 。" #: ../source/specifications/source-distribution-format.rst:46 msgid "" @@ -31437,7 +31517,7 @@ msgid "" "August 2023: Source distribution archive features were standardized " "through :pep:`721`." msgstr "" -"2023年8月: : pep:`721` を通じて、ソースコード配布物のアーカイブの機能について" +"2023年8月: :pep:`721` を通じて、ソースコード配布物のアーカイブの機能について" "標準化された。" #: ../source/specifications/source-distribution-format.rst:162 @@ -32235,8 +32315,8 @@ msgid "" "which would be normalized to ``1.1rc1``." msgstr "" "すべてのアスキー文字は、バージョン番号の中では大文字小文字の区別をせずに解釈" -"されるべきであり、標準系は小文字です。これによって、 ``1.1rc1`` に標準化され" -"るであろう `1.1RC1`` のようなバージョン番号を許容します。" +"されるべきであり、標準形式は小文字です。これによって、 ``1.1rc1`` に標準化さ" +"れるであろう ``1.1RC1`` のようなバージョン番号を許容します。" #: ../source/specifications/version-specifiers.rst:433 msgid "Integer Normalization" @@ -32289,12 +32369,12 @@ msgid "" "case the additional spelling should be considered equivalent to their normal " "forms." msgstr "" -"プレリリース番号は、 ``a`` ・ ``b`` ・ ``rc`` ・ ``rc`` および ``rc`` を表す" -"追加的な綴り方である ``alpha`` ・ ``beta`` ・ ``c`` ・ ``pre`` および " -"``preview`` を許容します。これによって、標準化すれば ``1.1a1`` ・ ``1.1b2`` " -"・ ``1.1rc3`` となる ``1.1alpha1`` ・ ``1.1beta2`` ・ ``1.1c3`` のようなバー" -"ジョン番号を許容します。それぞれのケースで、追加的な綴り方の部分は標準的な形" -"式のものと同等であると見做されます。" +"プレリリース番号は、 ``a`` ・ ``b`` ・ ``rc`` ・ ``rc`` および ``rc`` をそれ" +"ぞれ表す追加的な綴り方である ``alpha`` ・ ``beta`` ・ ``c`` ・ ``pre`` およ" +"び ``preview`` を許容します。これによって、標準化すれば ``1.1a1`` ・ " +"``1.1b2`` ・ ``1.1rc3`` となる ``1.1alpha1`` ・ ``1.1beta2`` ・ ``1.1c3`` の" +"ようなバージョン番号を許容します。それぞれのケースで、追加的な綴り方の部分は" +"標準的な形式のものと同等であると見做されます。" #: ../source/specifications/version-specifiers.rst:465 msgid "Implicit pre-release number" @@ -32877,7 +32957,7 @@ msgstr "``<``, ``>``: `Exclusive ordered comparison`_ 節" #: ../source/specifications/version-specifiers.rst:814 msgid "``===``: `Arbitrary equality`_ clause." -msgstr "``===``: `Arbitrary equality`_ clause." +msgstr "``===``: `Arbitrary equality`_ 節。" #: ../source/specifications/version-specifiers.rst:816 msgid "" @@ -32905,11 +32985,10 @@ msgid "" "releases are considered as candidate versions SHOULD be handled as described " "in `Handling of pre-releases`_." msgstr "" -"複数の候補バージョンがバージョン識別子に合致する時には、好ましいバージョン" -"は、標準の `バージョン番号枠組み `_ で定義された首尾一貫する" -"順序付けによって決定される最新のバージョンです。プレリリースが候補バージョン" -"だと見做されるか否かは、 `プレリリースの取り扱い `_ に記述されているとおりに扱われるべきです。" +"複数の候補バージョンがバージョン識別子に合致する時には、好ましいバージョンは" +"最新のバージョンで、これは標準の `Version scheme`_ で定義された首尾一貫する順" +"序付けによって決定されます。プレリリースが候補バージョンだと見做されるか否か" +"は、 `Handling of pre-releases`_ に記述されているとおりに扱われるべきです。" #: ../source/specifications/version-specifiers.rst:829 msgid "" @@ -33826,12 +33905,12 @@ msgid "" "in :py:mod:`sysconfig`, will be detected and behave as a Python virtual " "environment." msgstr "" -"``pyvenv.cfg`` ファイルがない場合であっても、 (例えばインストール済みの " +"``pyvenv.cfg`` ファイルがない場合であってさえも、 (例えばインストール済みの " "Python ランタイムにパッチを当てる ``sitecustomize.py`` のような) どんなアプ" -"ローチでも、 :py:data:``sys.prefix`` と :py:data:``sys.base_prefix`` が相異な" -"る値を持つような結果となる一方で、依然として対応するパッケージをインストール" -"する枠組みを :py:mod:``sysconfig`` 内で提供するアプローチであれば、それと認識" -"されて Python 仮想環境として振る舞います。" +"ローチでも、 :py:data:`sys.prefix` と :py:data:`sys.base_prefix` が相異なる値" +"を持つような結果となる一方で、依然として対応するパッケージをインストールする" +"枠組みを :py:mod:`sysconfig` 内で提供するアプローチであれば、それと認識され" +"て Python 仮想環境として振る舞います。" #: ../source/specifications/virtual-environments.rst:56 msgid "May 2012: This specification was approved through :pep:`405`." @@ -34060,7 +34139,7 @@ msgstr "最新の配布物のダウンロード URL で、 ``Download-URL`` と #: ../source/specifications/well-known-project-urls.rst:117 msgid "``changelog`` (Changelog)" -msgstr "``changelog`` (Changelog)" +msgstr "``changelog`` (変更履歴)" #: ../source/specifications/well-known-project-urls.rst:118 msgid "The project's comprehensive changelog" @@ -34092,7 +34171,7 @@ msgstr "``docs``" #: ../source/specifications/well-known-project-urls.rst:126 msgid "``issues`` (Issue Tracker)" -msgstr "``issues`` (Issue Tracker)" +msgstr "``issues`` (課題トラッカー)" #: ../source/specifications/well-known-project-urls.rst:127 msgid "The project's bug tracker" @@ -34408,12 +34487,12 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" "``python get-pip.py`` を実行してください [2]_ 。これで pip をインストールまた" "は更新することができます。さらに、まだインストールされていなけれ" -"ば、 :ref:`setuptools` と :ref:`wheel` もインストールされるでしょう。" +"ば、 :ref:`setuptools` と :ref:`wheel` もインストールされるかもしれません。" #: ../source/tutorials/installing-packages.rst:145 msgid "" @@ -34431,24 +34510,22 @@ msgstr "" "うことができます。" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" -msgstr "pip ・ setuptools ・ wheel が最新版であることを確実にする" +msgid "Ensure pip is up to date" +msgstr "pip が最新版であることを確実にする" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -"``pip`` 単体でも事前にビルドされたバイナリアーカイブからインストールを行うに" -"は十分ですが、最新の ``setuptools`` と ``wheel`` があればソースコードアーカイ" -"ブからでも確実にインストールすることができるので便利です:" +"最新の機能や修正が入っていることを確実にし、最新の Python パッケージング仕様" +"をサポートしていることを確実にしましょう。" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "必須ではないが、仮想環境を構築する" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " @@ -34458,7 +34535,7 @@ msgstr "" "いますので、ここでは基本的な :doc:`venv ` [3]_ コマンド" "を典型的な Linux システムで使うやり方を説明します:" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " @@ -34467,11 +34544,11 @@ msgstr "" "これで新しい仮想環境が ``tutorial_env`` サブディレクトリ内に生成され、それを" "現在のシェルのデフォルトの ``python`` 環境として使わせることができます。" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "仮想環境を構築する" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -34480,12 +34557,12 @@ msgid "" "alone-command-line-tools`." msgstr "" "Python の \"仮想環境\" を使えば、 Python の :term:`パッケージ ` をグローバルな環境にインストールする代わりに、特定の" -"アプリケーションのための隔離された場所にインストールすることができます。" -"グローバルなコマンドラインツールを安全にインストールしたいのであれば、 " -":doc:`/guides/installing-stand-alone-command-line-tools` を見てください。" +"Package>` をグローバルな環境にインストールする代わりに、特定のアプリケーショ" +"ンのための隔離された場所にインストールすることができます。グローバルなコマン" +"ドラインツールを安全にインストールしたいのであれば、 :doc:`/guides/" +"installing-stand-alone-command-line-tools` を見てください。" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -34501,7 +34578,7 @@ msgstr "" "アップグレードするべきでないはずのアプリケーションを意図せずアップグレードし" "てしまう結果に終わるでしょう。" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " @@ -34512,7 +34589,7 @@ msgstr "" "ブラリへの何らかの変更や、ライブラリのバージョン問題でアプリケーションが動作" "しなくなってしまうかもしれません。" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." @@ -34521,7 +34598,7 @@ msgstr "" "` をインストールすることができないとしたら、どうでしょ" "うか?例えば、共有ホストのような。" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " @@ -34531,14 +34608,14 @@ msgstr "" "環境にはそれぞれのインストール先ディレクトリが別にあって、他の仮想環境とライ" "ブラリを共有するということがないからです。" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" "現在、ふたつの Python 仮想環境を構築するためのツールがよく知られています:" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -34550,7 +34627,7 @@ msgstr "" "成された仮想環境内にインストールします (3.12 より前の Python のバージョンで" "は :ref:`setuptools` もインストールしていました) 。" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -34564,19 +34641,19 @@ msgstr "" "デフォルトでは ``setuptools`` が最早含まれていないこと (そして " "``virtualenv`` はこの動作に追随しています) に注意してください。" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "基本的な使い方は次の通りです:" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr ":doc:`venv ` を使うと:" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr ":ref:`virtualenv` を使うと:" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." @@ -34584,7 +34661,7 @@ msgstr "" "さらなる説明は、 :doc:`venv ` の説明文書" "や :doc:`virtualenv ` の説明文書をみてください。" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " @@ -34593,7 +34670,7 @@ msgstr "" "Unix のシェル上で :command:`source` を使うとそのシェル内では仮想環境用の変数" "が設定されますが、サブシェルでは設定され (ず、役に立つ効果が残り) ません。" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " @@ -34603,7 +34680,7 @@ msgstr "" "き *ではなく* 、代わりに :command:`activate` スクリプトをコマンドシェルから直" "接に実行するべきで、例えば次のようにします:" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -34616,11 +34693,11 @@ msgstr "" "ンのそれぞれのために作成した個別の仮想環境群を自動的に管理する方法を紹介して" "います。" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "pip を使ってインストールする" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " @@ -34630,11 +34707,11 @@ msgstr "" "挙げます。より詳しくは、 :doc:`リファレンスガイド ` の全体を含" "む :doc:`pip 説明文書 ` を見てください。" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "PyPI からインストールする" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -34652,21 +34729,21 @@ msgstr "" "specifiers>` に、サポートされている識別子の完全な説明があります。以下にいくつ" "かの例を挙げます。" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "\"とあるプロジェクト\" の最新版をインストールするには:" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "特定のバージョンをインストールするには:" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" "あるバージョンと同じか新しいバージョンで、もう一つのものより古いものをインス" "トールするには:" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" @@ -34674,7 +34751,7 @@ msgstr "" "あるバージョンと :ref:`\"互換性がある\" ` バージョンをインストールするには: [4]_" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." @@ -34682,11 +34759,11 @@ msgstr "" "この場合には、 \"==1.4.*\" で、かつ、 \">=1.4.2\" であるバージョンをインス" "トールするという意味になります。" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "ソースコード配布物 vs. Wheels" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -34701,7 +34778,7 @@ msgstr "" "` オプションを使うことで pip のデフォルト動作を上書" "き修正することができます。" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -34713,7 +34790,7 @@ msgstr "" "合には、 :term:`ソースコード配布物 (sdist) ` に比べてより短時間でインストールすることができます。" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " @@ -34723,16 +34800,16 @@ msgstr "" "wheel をビルドして、将来のインストール時に再びソースコード配布物からリビルド" "しないで済むようにキャッシュしておきます。" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" "インストール済みの ``とあるプロジェクト`` を PyPI から最新版に更新する。" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "ユーザサイトへインストールする" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" @@ -34740,7 +34817,7 @@ msgstr "" ":term:`パッケージ ` を現在のユーザだけが使えるように他" "から隔離してインストールするには ``--user`` フラグを使います:" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." @@ -34749,7 +34826,7 @@ msgstr "" "`_ の節を見てくださ" "い。" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." @@ -34757,7 +34834,7 @@ msgstr "" "仮想環境の中では ``--user`` フラグが無効になることに注意してください - すべて" "のインストールコマンドが仮想環境に影響を与えます。" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -34767,15 +34844,15 @@ msgid "" "scripts are not available in your shell after installation, you'll need to " "add the directory to your :envvar:`PATH`:" msgstr "" -"``とあるプロジェクト`` がコマンドラインスクリプトかコンソールエントリポイント" -"をひとつでも定義しているのであれば、 ``--user`` を与えることで 、 `ユーザベー" -"ス `_ のバイナリ置き場、それがシェルの :envvar:`PATH` 変数にあろう" -"がなかろうが、そこにインストールすることになるでしょう (バージョン 10 以降の " -"pip では、スクリプトを :envvar:`PATH` に含まれていないパスにインストールする" -"時には警告を表示します)。インストール後にスクリプトが利用可能でない場合に" +"``とあるプロジェクト `` がコマンドラインスクリプトかコンソールエ" +"ントリポイントをひとつでも定義しているのであれば、 ``--user`` を与えることで " +"`user base`_ のバイナリ置き場、それがシェルの :envvar:`PATH` 変数にあろうがな" +"かろうが、そこにインストールすることになるでしょう (バージョン 10 以降の pip " +"では、スクリプトを :envvar:`PATH` に含まれていないパスにインストールする時に" +"は警告を表示します)。インストール後にスクリプトが利用可能でない場合に" "は、 :envvar:`PATH` にそのディレクトリパスを追加する必要があるでしょう:" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -34788,10 +34865,10 @@ msgstr "" "であるかがわかるでしょう。例えば、このコマンドは大抵の場合に ``~/.local`` " "(の ``~`` をあなたのホームディレクトリの絶対パスに展開したもの) を表示します" "が、すると、 ``PATH`` には ``~/.local/bin`` を追加する必要があるということで" -"す。 `~/.profile を修正する `_ ことで ``PATH`` を恒久的" -"に変更することができます。" +"す。 `modifying ~/.profile`_ ことで ``PATH`` を恒久的に変更することができま" +"す。" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -34812,7 +34889,7 @@ msgstr "" "きるでしょう。 ``PATH`` の修正が効果を持つには、一旦ログアウトする必要がある" "かもしれません。" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." @@ -34820,11 +34897,11 @@ msgstr "" ":ref:`Requirements ファイル ` で指定された一連の必須" "条件となる依存先をインストールしましょう。" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "VCS からインストールする" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." @@ -34833,15 +34910,15 @@ msgstr "" "を全て細かく説明したものについては、 :ref:`VCS サポート ` " "の pip の節を見てください。" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "他のインデックスサイトからインストールする" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "代替となるインデックスサイトからインストールする" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" @@ -34849,11 +34926,11 @@ msgstr "" ":term:`PyPI ` に加えて、追加のインデックスサイト" "をインストール中に探索する" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "ローカルのソースツリーからインストールする" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " @@ -34863,19 +34940,19 @@ msgstr "" "ジェクトがインストールされていて、しかも、ソースツリーからへんしゅうかのうで" "あるような方法でローカルのソースツリーからインストールすること。" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "ソースツリーから通常通りにインストールすることも可能" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "ローカルアーカイブからインストールする" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "特定のソースコードアーカイブファイルをインストールする。" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" @@ -34883,11 +34960,11 @@ msgstr "" "アーカイブを含んだローカルのディレクトリから(しかも :term:`PyPI ` をチェックしないで)インストールする" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "他の場所からインストールする" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -34899,11 +34976,11 @@ msgstr "" "extra-index-url`` フラグでそのインデックスへ向け直すことで、他のデータソース " "(例えば Amazon S3 ストレージ) からインストールすることができます。" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "リリース前のバージョンをインストールする" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." @@ -34911,11 +34988,11 @@ msgstr "" "安定バージョンに加えて、リリース前のバージョンや開発中のバージョンを見つけま" "しょう。デフォルトでは pip は安定バージョンだけを探索します。" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "パッケージの \"Extras\" をインストールする" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -34928,7 +35005,7 @@ msgstr "" "インストールしたいのであれば、次のような pip のインストールコマンドを使うこと" "でそれを追加することができます:" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " @@ -34938,7 +35015,7 @@ msgstr "" "的なブラウザか :command:`curl` のようなツールを使って SSL 証明書を検証するこ" "とを意味しています。" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" @@ -34948,7 +35025,7 @@ msgstr "" "``venv`` があるので、インストール済みの ``pip`` で virtualenv 環境を作成で" "き、それによって :ref:`virtualenv` の同等な代替物となっています。" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" @@ -35044,12 +35121,12 @@ msgid "" "directory to your ``PATH``. See :ref:`Installing to the User Site` for more " "information." msgstr "" -"これは、システムワイドにインストールされたパッケージ群を破壊しないように、 `" -"ユーザインストール `_ を行います。インストール後にシェルか" -"ら ``pipenv`` が利用できない場合は、 :py:data:`ユーザベース " -"` のバイナリディレクトリを ``PATH`` 変数に追加する必要" -"があるでしょう。詳しくは、 :ref:`ユーザサイトにインストールする ` を見てください。" +"これは、システムワイドにインストールされたパッケージ群を破壊しないように、 " +"`user installation`_ を行います。インストール後にシェルから ``pipenv`` が利用" +"できない場合は、 :py:data:`ユーザベース ` のバイナリ" +"ディレクトリを ``PATH`` 変数に追加する必要があるでしょう。詳しくは、 :ref:`" +"ユーザサイトにインストールする ` を見てくださ" +"い。" #: ../source/tutorials/managing-dependencies.rst:62 msgid "Installing packages for your project" @@ -35254,8 +35331,7 @@ msgid "" msgstr "" "このチュートリアルに出てくるコマンドを実行したら問題が発生したという場合に" "は、コマンドと結果出力をコピーして、 GitHub の `packaging-problems`_ リポジト" -"リで `新たな課題 `_ を追加してください。我々が全力であなたをお" -"助けします!" +"リで `open an issue`_ を追加してください。我々が全力であなたをお助けします!" #: ../source/tutorials/packaging-projects.rst:18 msgid "" @@ -35329,9 +35405,8 @@ msgid "" "over the `Python documentation for packages and modules`_." msgstr "" "Python における :term:`モジュール ` や :term:`パッケージのインポート " -"` に馴染みがなければ、数分を費やして `パッケージとモジュール" -"に関する Python の説明文書 `_ " -"を読み通してください。" +"` に馴染みがなければ、数分を費やして `Python documentation " +"for packages and modules`_ を読み通してください。" #: ../source/tutorials/packaging-projects.rst:75 msgid "" @@ -35657,7 +35732,10 @@ msgid "" "in the package." msgstr "" "ほとんどのビルドバックエンドは、パッケージの中にライセンスファイルを自動的に" -"含めます。" +"含めます。もっと詳しくは、そのバックエンドの説明文書を見てください。も" +"し、 :file:`pyproject.toml` の ``license-files`` キーの中にライセンスへのパス" +"を含めておくなら、そして、そのビルドバックエンドが :pep:`639` をサポートして" +"いるなら、当該ファイルは自動的にパッケージの中に含まれることになるでしょう。" #: ../source/tutorials/packaging-projects.rst:290 msgid "Including other files" @@ -36003,6 +36081,43 @@ msgstr "" "りなのであれば、 *通常のパッケージ* と (空のファイルだとしても) " "``__init__.py`` から離れないことをお薦めします。" +#~ msgid "" +#~ "While ``pip`` alone is sufficient to install from pre-built binary " +#~ "archives, up to date copies of the ``setuptools`` and ``wheel`` projects " +#~ "are useful to ensure you can also install from source archives:" +#~ msgstr "" +#~ "``pip`` 単体でも事前にビルドされたバイナリアーカイブからインストールを行う" +#~ "には十分ですが、最新の ``setuptools`` と ``wheel`` があればソースコード" +#~ "アーカイブからでも確実にインストールすることができるので便利です:" + +#~ msgid "" +#~ "`Travis CI `_ provides both a Linux and a macOS " +#~ "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~ "bit while the macOS is 10.9.2 at the time of writing." +#~ msgstr "" +#~ "`Travis CI `_ は Linux と macOS の両方の環境を提供" +#~ "します。本稿執筆時点で、 Linux 環境は Ubuntu 12.04 LTS Server Edition 64 " +#~ "bit で、 macOS 環境は 10.9.2 です。" + +#~ msgid "" +#~ "The Appveyor service is a continuous integration service, much like the " +#~ "better-known `Travis`_ service that is commonly used for testing by " +#~ "projects hosted on `GitHub`_. However, unlike Travis, the build workers " +#~ "on Appveyor are Windows hosts and have the necessary compilers installed " +#~ "to build Python extensions." +#~ msgstr "" +#~ "Appveyor サービスは継続的インテグレーションのサービスであり、 `GitHub`_ に" +#~ "ホストされたプロジェクトをテストするのによく使われよりよく知られている " +#~ "`Travis`_ サービスによく似ています。しかし、 Travis とは異なり、 Appveyor " +#~ "のビルドワーカーは Windows であり、 Python の拡張モジュールをビルドするた" +#~ "めに必要なコンパイラもインストール済みです。" + +#~ msgid "See :ref:`pylock-packages-vcs-url`." +#~ msgstr ":ref:`pylock-packages-vcs-url` を参照のこと。" + +#~ msgid "See :ref:`pylock-packages-vcs-path`." +#~ msgstr ":ref:`pylock-packages-vcs-path` を参照のこと。" + #~ msgid "" #~ "This specification was originally defined in :pep:`518` and :pep:`621`." #~ msgstr "この仕様は、元々は :pep:`518` 及び :pep:`621` で定義されました。" diff --git a/locales/kab/LC_MESSAGES/messages.po b/locales/kab/LC_MESSAGES/messages.po index 1e82f5a12..5481c250f 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-10-14 20:08+0000\n" "Last-Translator: ButterflyOfFire \n" "Language-Team: Kabyle `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8640,37 +8648,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8678,7 +8686,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8687,7 +8695,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8702,7 +8710,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8773,35 +8781,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8813,7 +8820,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8822,15 +8829,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8840,7 +8847,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8849,11 +8856,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8889,15 +8896,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8906,11 +8904,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8918,25 +8916,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8944,7 +8941,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8955,24 +8952,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8983,7 +8980,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8992,19 +8989,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9016,7 +9013,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9024,17 +9021,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9042,7 +9039,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9054,17 +9051,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9075,25 +9072,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9101,7 +9098,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9109,23 +9106,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9134,25 +9131,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9160,7 +9157,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9168,11 +9165,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9180,7 +9177,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9188,17 +9185,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9208,15 +9205,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11403,17 +11400,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11421,21 +11435,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11443,34 +11457,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13485,10 +13499,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13574,7 +13589,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17600,8 +17615,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17681,6 +17696,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19345,8 +19368,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19394,18 +19417,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19433,19 +19456,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19499,8 +19524,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19582,8 +19607,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19696,9 +19721,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19788,11 +19813,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19937,7 +19964,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "Wali :ref:`pylock-packages-vcs-subdirectory`." @@ -19946,6 +19973,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19977,467 +20006,498 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." -msgstr "Wali :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +#, fuzzy +#| msgid "See :ref:`pylock-packages-archive-path`." +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "Wali :ref:`pylock-packages-archive-path`." + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." +msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." -msgstr "Wali :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +#, fuzzy +#| msgid "See :ref:`pylock-packages-archive-url`." +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" +msgstr "Wali :ref:`pylock-packages-archive-url`." #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "Wali :ref:`pylock-packages-archive-upload-time`." -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "Wali :ref:`pylock-packages-archive-url`." -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "Wali :ref:`pylock-packages-archive-path`." -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "Wali :ref:`pylock-packages-archive-size`." -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "Wali :ref:`pylock-packages-archive-hashes`." -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "Wali :ref:`pylock-packages-tool`." -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20446,43 +20506,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25686,7 +25751,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25700,39 +25765,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25741,7 +25805,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25750,33 +25814,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25784,7 +25848,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25793,39 +25857,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25833,22 +25897,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25859,35 +25923,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25896,7 +25960,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25904,40 +25968,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25948,7 +26012,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25957,7 +26021,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25969,70 +26033,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26040,21 +26104,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26062,21 +26126,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" @@ -26813,3 +26877,9 @@ msgid "" "recommended to stick with *regular packages* and ``__init__.py`` (even if " "the file is empty)." msgstr "" + +#~ msgid "See :ref:`pylock-packages-vcs-url`." +#~ msgstr "Wali :ref:`pylock-packages-vcs-url`." + +#~ msgid "See :ref:`pylock-packages-vcs-path`." +#~ msgstr "Wali :ref:`pylock-packages-vcs-path`." diff --git a/locales/ko/LC_MESSAGES/messages.po b/locales/ko/LC_MESSAGES/messages.po index 4f9175b72..fdc75d34f 100644 --- a/locales/ko/LC_MESSAGES/messages.po +++ b/locales/ko/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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2026-02-05 03:01+0000\n" "Last-Translator: 스이미 \n" "Language-Team: Korean `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8837,37 +8845,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8875,7 +8883,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8884,7 +8892,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8899,7 +8907,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy #| msgid "Translations" msgid "Installation" @@ -8972,35 +8980,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -9012,7 +9019,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -9021,15 +9028,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -9039,7 +9046,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -9048,11 +9055,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9088,15 +9095,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9105,11 +9103,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9117,25 +9115,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9143,7 +9140,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9154,24 +9151,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9182,7 +9179,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9191,19 +9188,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9215,7 +9212,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9223,17 +9220,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9241,7 +9238,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9253,17 +9250,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9274,25 +9271,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9300,7 +9297,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9308,23 +9305,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9333,25 +9330,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9359,7 +9356,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9367,11 +9364,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9379,7 +9376,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9387,17 +9384,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9407,15 +9404,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11606,17 +11603,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11624,21 +11638,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11646,34 +11660,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13690,10 +13704,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13779,7 +13794,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17823,8 +17838,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17906,6 +17921,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19577,8 +19600,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19626,18 +19649,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19665,19 +19688,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19731,8 +19756,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19815,8 +19840,8 @@ msgstr "패키지 가져오기" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19931,9 +19956,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -20023,11 +20048,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20172,7 +20199,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20181,6 +20208,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20212,468 +20241,495 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy msgid "``packages.index``" msgstr "패키지 인덱스" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20682,43 +20738,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25937,7 +25998,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25951,39 +26012,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25992,7 +26052,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -26001,33 +26061,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -26035,7 +26095,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -26044,39 +26104,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26084,22 +26144,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26110,35 +26170,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26147,7 +26207,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26155,40 +26215,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26199,7 +26259,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26208,7 +26268,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26220,70 +26280,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26291,21 +26351,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26313,21 +26373,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/lzh/LC_MESSAGES/messages.po b/locales/lzh/LC_MESSAGES/messages.po index b2619577f..820b507f9 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2024-01-31 06:01+0000\n" "Last-Translator: maker \n" "Language-Team: Chinese (Literary) `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8628,37 +8636,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8666,7 +8674,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8675,7 +8683,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8690,7 +8698,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8761,35 +8769,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8801,7 +8808,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8810,15 +8817,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8828,7 +8835,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8837,11 +8844,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8877,15 +8884,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8894,11 +8892,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8906,25 +8904,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8932,7 +8929,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8943,24 +8940,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8971,7 +8968,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8980,19 +8977,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9004,7 +9001,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9012,17 +9009,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9030,7 +9027,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9042,17 +9039,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9063,25 +9060,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9089,7 +9086,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9097,23 +9094,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9122,25 +9119,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9148,7 +9145,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9156,11 +9153,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9168,7 +9165,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9176,17 +9173,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9196,15 +9193,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11391,17 +11388,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11409,21 +11423,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11431,34 +11445,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13473,10 +13487,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13562,7 +13577,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17590,8 +17605,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17671,6 +17686,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19333,8 +19356,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19382,18 +19405,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19421,19 +19444,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19487,8 +19512,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19570,8 +19595,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19684,9 +19709,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19776,11 +19801,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19925,7 +19952,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19934,6 +19961,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19965,467 +19994,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20434,43 +20490,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25668,7 +25729,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25682,39 +25743,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25723,7 +25783,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25732,33 +25792,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25766,7 +25826,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25775,39 +25835,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25815,22 +25875,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25841,35 +25901,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25878,7 +25938,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25886,40 +25946,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25930,7 +25990,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25939,7 +25999,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25951,70 +26011,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26022,21 +26082,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26044,21 +26104,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/mk/LC_MESSAGES/messages.po b/locales/mk/LC_MESSAGES/messages.po index 811cbb95a..8bf5a039d 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2023-10-21 04:04+0000\n" "Last-Translator: \"Kristijan \\\"Fremen\\\" Velkovski\" \n" "Language-Team: Macedonian `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8634,37 +8642,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8672,7 +8680,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8681,7 +8689,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8696,7 +8704,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8767,35 +8775,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8807,7 +8814,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8816,15 +8823,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8834,7 +8841,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8843,11 +8850,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8883,15 +8890,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8900,11 +8898,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8912,25 +8910,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8938,7 +8935,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8949,24 +8946,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8977,7 +8974,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8986,19 +8983,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9010,7 +9007,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9018,17 +9015,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9036,7 +9033,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9048,17 +9045,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9069,25 +9066,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9095,7 +9092,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9103,23 +9100,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9128,25 +9125,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9154,7 +9151,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9162,11 +9159,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9174,7 +9171,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9182,17 +9179,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9202,15 +9199,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11399,17 +11396,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11417,21 +11431,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11439,34 +11453,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13481,10 +13495,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13570,7 +13585,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17596,8 +17611,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17677,6 +17692,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19339,8 +19362,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19388,18 +19411,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19427,19 +19450,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19493,8 +19518,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19576,8 +19601,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19690,9 +19715,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19782,11 +19807,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19931,7 +19958,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19940,6 +19967,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19971,467 +20000,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20440,43 +20496,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25674,7 +25735,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25688,39 +25749,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25729,7 +25789,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25738,33 +25798,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25772,7 +25832,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25781,39 +25841,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25821,22 +25881,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25847,35 +25907,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25884,7 +25944,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25892,40 +25952,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25936,7 +25996,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25945,7 +26005,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25957,70 +26017,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26028,21 +26088,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26050,21 +26110,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/mr/LC_MESSAGES/messages.po b/locales/mr/LC_MESSAGES/messages.po index 629b6e69e..9e1d3448f 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-01-25 14:18+0000\n" "Last-Translator: Prachi Joshi \n" "Language-Team: Marathi `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8625,37 +8633,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8663,7 +8671,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8672,7 +8680,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8687,7 +8695,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8758,35 +8766,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8798,7 +8805,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8807,15 +8814,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8825,7 +8832,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8834,11 +8841,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8874,15 +8881,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8891,11 +8889,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8903,25 +8901,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8929,7 +8926,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8940,24 +8937,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8968,7 +8965,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8977,19 +8974,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9001,7 +8998,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9009,17 +9006,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9027,7 +9024,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9039,17 +9036,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9060,25 +9057,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9086,7 +9083,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9094,23 +9091,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9119,25 +9116,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9145,7 +9142,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9153,11 +9150,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9165,7 +9162,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9173,17 +9170,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9193,15 +9190,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11388,17 +11385,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11406,21 +11420,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11428,34 +11442,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13470,10 +13484,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13559,7 +13574,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17585,8 +17600,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17666,6 +17681,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19328,8 +19351,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19377,18 +19400,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19416,19 +19439,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19482,8 +19507,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19565,8 +19590,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19679,9 +19704,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19771,11 +19796,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19920,7 +19947,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19929,6 +19956,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19960,467 +19989,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20429,43 +20485,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25663,7 +25724,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25677,39 +25738,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25718,7 +25778,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25727,33 +25787,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25761,7 +25821,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25770,39 +25830,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25810,22 +25870,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25836,35 +25896,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25873,7 +25933,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25881,40 +25941,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25925,7 +25985,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25934,7 +25994,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25946,70 +26006,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26017,21 +26077,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26039,21 +26099,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/mrh/LC_MESSAGES/messages.po b/locales/mrh/LC_MESSAGES/messages.po new file mode 100644 index 000000000..14aada344 --- /dev/null +++ b/locales/mrh/LC_MESSAGES/messages.po @@ -0,0 +1,26852 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2013–2020, PyPA +# This file is distributed under the same license as the Python Packaging User Guide package. +# Laitei , 2026. +msgid "" +msgstr "" +"Project-Id-Version: Python Packaging User Guide\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" +"PO-Revision-Date: 2026-05-05 16:17+0000\n" +"Last-Translator: Laitei \n" +"Language-Team: Mara \n" +"Language: mrh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 5.17.1\n" + +#: ../source/contribute.rst:5 +msgid "Contribute to this guide" +msgstr "He chhihthana he deichhy" + +#: ../source/contribute.rst:7 +msgid "" +"The |PyPUG| welcomes contributors! There are lots of ways to help out, " +"including:" +msgstr "" + +#: ../source/contribute.rst:10 +msgid "Reading the guide and giving feedback" +msgstr "" + +#: ../source/contribute.rst:11 +msgid "Reviewing new contributions" +msgstr "" + +#: ../source/contribute.rst:12 +msgid "Revising existing content" +msgstr "" + +#: ../source/contribute.rst:13 +msgid "Writing new content" +msgstr "" + +#: ../source/contribute.rst:14 +msgid "Translating the guide" +msgstr "" + +#: ../source/contribute.rst:16 +msgid "" +"Most of the work on the |PyPUG| takes place on the `project's GitHub " +"repository`__. To get started, check out the list of `open issues`__ and " +"`pull requests`__. If you're planning to write or edit the guide, please " +"read the :ref:`style guide `." +msgstr "" + +#: ../source/contribute.rst:25 +msgid "" +"By contributing to the |PyPUG|, you're expected to follow the PSF's `Code of " +"Conduct`__." +msgstr "" + +#: ../source/contribute.rst:32 +msgid "Documentation types" +msgstr "" + +#: ../source/contribute.rst:34 +msgid "" +"This project consists of four distinct documentation types with specific " +"purposes. The project aspires to follow the `Diátaxis process`_ for creating " +"quality documentation. When proposing new additions to the project please " +"pick the appropriate documentation type." +msgstr "" + +#: ../source/contribute.rst:42 ../source/index.rst:55 +#: ../source/tutorials/index.rst:2 +msgid "Tutorials" +msgstr "" + +#: ../source/contribute.rst:44 +msgid "" +"Tutorials are focused on teaching the reader new concepts by accomplishing a " +"goal. They are opinionated step-by-step guides. They do not include " +"extraneous warnings or information. `example tutorial-style document`_." +msgstr "" + +#: ../source/contribute.rst:51 ../source/guides/index.rst:2 +#: ../source/index.rst:69 +msgid "Guides" +msgstr "" + +#: ../source/contribute.rst:53 +msgid "" +"Guides are focused on accomplishing a specific task and can assume some " +"level of pre-requisite knowledge. These are similar to tutorials, but have a " +"narrow and clear focus and can provide lots of caveats and additional " +"information as needed. They may also discuss multiple approaches to " +"accomplishing the task. :doc:`example guide-style document `." +msgstr "" + +#: ../source/contribute.rst:60 ../source/discussions/index.rst:2 +msgid "Discussions" +msgstr "" + +#: ../source/contribute.rst:62 +msgid "" +"Discussions are focused on understanding and information. These explore a " +"specific topic without a specific goal in mind. :doc:`example discussion-" +"style document `." +msgstr "" + +#: ../source/contribute.rst:67 +msgid "Specifications" +msgstr "" + +#: ../source/contribute.rst:69 +msgid "" +"Specifications are reference documentation focused on comprehensively " +"documenting an agreed-upon interface for interoperability between packaging " +"tools. :doc:`example specification-style document `." +msgstr "" + +#: ../source/contribute.rst:75 +msgid "Translations" +msgstr "" + +#: ../source/contribute.rst:77 +msgid "" +"We use `Weblate`_ to manage translations of this project. Please visit the " +"`packaging.python.org`_ project on Weblate to contribute." +msgstr "" + +#: ../source/contribute.rst:80 +msgid "" +"If you are experiencing issues while you are working on translations, please " +"open an issue on `GitHub`_." +msgstr "" + +#: ../source/contribute.rst:85 +msgid "" +"Any translations of this project should follow `reStructuredText syntax`_." +msgstr "" + +#: ../source/contribute.rst:93 +msgid "Adding a language" +msgstr "" + +#: ../source/contribute.rst:95 +msgid "" +"If your language is not listed on `packaging.python.org`_, click the " +"button :guilabel:`Start new translation` at the bottom of the language list " +"and add the language you want to translate." +msgstr "" + +#: ../source/contribute.rst:100 +msgid "Following reStructuredText syntax" +msgstr "" + +#: ../source/contribute.rst:102 +msgid "" +"If you are not familiar with reStructuredText (RST) syntax, please read " +"`this guide`_ before translating on Weblate." +msgstr "" + +#: ../source/contribute.rst:118 +msgid "**Do not translate the text in reference directly**" +msgstr "" + +#: ../source/contribute.rst:106 +msgid "" +"When translating the text in reference, please do not translate them " +"directly." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: Translate the following text directly:" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "" +"Right: Translate the following text with your own language and add the " +"original reference:" +msgstr "" + +#: ../source/contribute.rst:123 +msgid "Building the guide locally" +msgstr "" + +#: ../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:129 +msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" +msgstr "" + +#: ../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 ` to install Python 3.11 on your operating " +"system." +msgstr "" + +#: ../source/contribute.rst:140 +msgid "" +"To build the guide, run the following shell command in the project's root " +"folder:" +msgstr "" + +#: ../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 " +"guide in web browser, but it's recommended to serve the guide using an HTTP " +"server." +msgstr "" + +#: ../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:158 +msgid "The guide will be browsable via http://localhost:8000." +msgstr "" + +#: ../source/contribute.rst:162 +msgid "Where the guide is deployed" +msgstr "" + +#: ../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:170 +msgid "Style guide" +msgstr "" + +#: ../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, " +"your contributions will help add to a cohesive whole and make it easier for " +"your contributions to be accepted into the project." +msgstr "" + +#: ../source/contribute.rst:179 +msgid "Purpose" +msgstr "" + +#: ../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:186 +msgid "Scope" +msgstr "" + +#: ../source/contribute.rst:188 +msgid "" +"The guide is meant to answer questions and solve problems with accurate and " +"focused recommendations." +msgstr "" + +#: ../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, " +"options, and settings. The pip documentation describes each of them in " +"detail, while this guide describes only the parts of pip that are needed to " +"complete the specific tasks described in this guide." +msgstr "" + +#: ../source/contribute.rst:199 +msgid "Audience" +msgstr "" + +#: ../source/contribute.rst:201 +msgid "The audience of this guide is anyone who uses Python with packages." +msgstr "" + +#: ../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: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:213 +msgid "Voice and tone" +msgstr "" + +#: ../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: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 " +"person has asked you a question and you know the answer. How do you respond? " +"*That* is how you should write this guide." +msgstr "" + +#: ../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 " +"like you're acting out a part or giving a speech? Feel free to use " +"contractions and don't worry about sticking to fussy grammar rules. You are " +"hereby granted permission to end a sentence in a preposition, if that's what " +"you want to end it with." +msgstr "" + +#: ../source/contribute.rst:230 +msgid "" +"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 " +"joke, but if you're covering a sensitive security recommendation, you might " +"want to avoid jokes altogether." +msgstr "" + +#: ../source/contribute.rst:237 +msgid "Conventions and mechanics" +msgstr "" + +#: ../source/contribute.rst:245 +msgid "**Write to the reader**" +msgstr "" + +#: ../source/contribute.rst:240 +msgid "" +"When giving recommendations or steps to take, address the reader as *you* or " +"use the imperative mood." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: To install it, the user runs…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: You can install it by running…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: To install it, run…" +msgstr "" + +#: ../source/contribute.rst:251 +msgid "**State assumptions**" +msgstr "" + +#: ../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 " +"you're going to make assumptions, then say what assumptions that you're " +"going to make." +msgstr "" + +#: ../source/contribute.rst:256 +msgid "**Cross-reference generously**" +msgstr "" + +#: ../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:266 +msgid "**Respect naming practices**" +msgstr "" + +#: ../source/contribute.rst:259 +msgid "" +"When naming tools, sites, people, and other proper nouns, use their " +"preferred capitalization." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: Pip uses…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: pip uses…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: …hosted on github." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: …hosted on GitHub." +msgstr "" + +#: ../source/contribute.rst:275 +msgid "**Use a gender-neutral style**" +msgstr "" + +#: ../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 " +"avoid pronouns entirely." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: A maintainer uploads the file. Then he…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: A maintainer uploads the file. Then they…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: A maintainer uploads the file. Then the maintainer…" +msgstr "" + +#: ../source/contribute.rst:287 +msgid "**Headings**" +msgstr "" + +#: ../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 " +"reader might want to know *How do I install MyLibrary?* so a good heading " +"might be *Install MyLibrary*." +msgstr "" + +#: ../source/contribute.rst:283 +msgid "" +"In section headings, use sentence case. In other words, write headings as " +"you would write a typical sentence." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: Things You Should Know About Python" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: Things you should know about Python" +msgstr "" + +#: ../source/contribute.rst:290 +msgid "**Numbers**" +msgstr "" + +#: ../source/contribute.rst:290 +msgid "" +"In body text, write numbers one through nine as words. For other numbers or " +"numbers in tables, use numerals." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:4 +msgid "Deploying Python applications" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:0 +#: ../source/discussions/downstream-packaging.rst:0 +#: ../source/discussions/single-source-version.rst:0 +#: ../source/guides/distributing-packages-using-setuptools.rst:0 +#: ../source/guides/index-mirrors-and-caches.rst:0 +#: ../source/guides/installing-using-linux-tools.rst:0 +#: ../source/guides/migrating-to-pypi-org.rst:0 +#: ../source/guides/multi-version-installs.rst:0 +#: ../source/guides/packaging-binary-extensions.rst:0 +#: ../source/guides/supporting-multiple-python-versions.rst:0 +#: ../source/guides/supporting-windows-using-appveyor.rst:0 +msgid "Page Status" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:6 +#: ../source/guides/index-mirrors-and-caches.rst:7 +#: ../source/guides/installing-using-linux-tools.rst:7 +#: ../source/guides/packaging-binary-extensions.rst:7 +msgid "Incomplete" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:0 +#: ../source/discussions/downstream-packaging.rst:0 +#: ../source/discussions/single-source-version.rst:0 +#: ../source/guides/distributing-packages-using-setuptools.rst:0 +#: ../source/guides/index-mirrors-and-caches.rst:0 +#: ../source/guides/installing-using-linux-tools.rst:0 +#: ../source/guides/packaging-binary-extensions.rst:0 +#: ../source/guides/supporting-multiple-python-versions.rst:0 +#: ../source/guides/supporting-windows-using-appveyor.rst:0 +msgid "Last Reviewed" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:7 +msgid "2021-8-24" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:11 +#: ../source/specifications/externally-managed-environments.rst:130 +#: ../source/specifications/platform-compatibility-tags.rst:14 +msgid "Overview" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:15 +msgid "Supporting multiple hardware platforms" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:37 +msgid "OS packaging & installers" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:49 +#: ../source/discussions/deploying-python-applications.rst:86 +msgid "Windows" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:58 +msgid "Pynsist" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:60 +msgid "" +"`Pynsist `__ is a tool that bundles Python " +"programs together with the Python-interpreter into a single installer based " +"on NSIS. In most cases, packaging only requires the user to choose a version " +"of the Python-interpreter and declare the dependencies of the program. The " +"tool downloads the specified Python-interpreter for Windows and packages it " +"with all the dependencies in a single Windows-executable installer." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:67 +msgid "" +"The installed program can be started from a shortcut that the installer adds " +"to the start-menu. It uses a Python interpreter installed within its " +"application directory, independent of any other Python installation on the " +"computer." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:71 +msgid "" +"A big advantage of Pynsist is that the Windows packages can be built on " +"Linux. There are several examples for different kinds of programs (console, " +"GUI) in the :any:`documentation `. The tool is released under " +"the MIT-licence." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:77 +msgid "Application bundles" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:89 +msgid "py2exe" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:91 +msgid "" +"`py2exe `__ is a distutils extension which " +"allows to build standalone Windows executable programs (32-bit and 64-bit) " +"from Python scripts. Python versions included in the official development " +"cycle are supported (refers to `Status of Python branches`__). py2exe can " +"build console executables and windows (GUI) executables. Building windows " +"services, and DLL/EXE COM servers might work but it is not actively " +"supported. The distutils extension is released under the MIT-licence and " +"Mozilla Public License 2.0." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:103 +#: ../source/specifications/platform-compatibility-tags.rst:200 +msgid "macOS" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:106 +msgid "py2app" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:108 +msgid "" +"`py2app `__ is a Python setuptools command " +"which will allow you to make standalone macOS application bundles and " +"plugins from Python scripts. Note that py2app MUST be used on macOS to build " +"applications, it cannot create Mac applications on other platforms. py2app " +"is released under the MIT-license." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:115 +msgid "Unix (including Linux and macOS)" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:118 +#: ../source/key_projects.rst:576 +msgid "pex" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:120 +msgid "" +"`pex `__ is a library for generating .pex " +"(Python EXecutable) files which are executable Python environments in the " +"spirit of virtualenvs. pex is an expansion upon the ideas outlined " +"in :pep:`441` and makes the deployment of Python applications as simple as " +"cp. pex files may even include multiple platform-specific Python " +"distributions, meaning that a single pex file can be portable across Linux " +"and macOS. pex is released under the Apache License 2.0." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:129 +msgid "Configuration management" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:5 +msgid "Distribution package vs. import package" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:7 +msgid "" +"A number of different concepts are commonly referred to by the word " +"\"package\". This page clarifies the differences between two distinct but " +"related meanings in Python packaging, \"distribution package\" and \"import " +"package\"." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:13 +msgid "What's a distribution package?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:15 +msgid "" +"A distribution package is a piece of software that you can install. Most of " +"the time, this is synonymous with \"project\". When you type ``pip install " +"pkg``, or when you write ``dependencies = [\"pkg\"]`` in your " +"``pyproject.toml``, ``pkg`` is the name of a distribution package. When you " +"search or browse the PyPI_, the most widely known centralized source for " +"installing Python libraries and tools, what you see is a list of " +"distribution packages. Alternatively, the term \"distribution package\" can " +"be used to refer to a specific file that contains a certain version of a " +"project." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:24 +msgid "" +"Note that in the Linux world, a \"distribution package\", most commonly " +"abbreviated as \"distro package\" or just \"package\", is something provided " +"by the system package manager of the `Linux distribution `_, which " +"is a different meaning." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:31 +msgid "What's an import package?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:33 +msgid "" +"An import package is a Python module. Thus, when you write ``import pkg`` or " +"``from pkg import func`` in your Python code, ``pkg`` is the name of an " +"import package. More precisely, import packages are special Python modules " +"that can contain submodules. For example, the ``numpy`` package contains " +"modules like ``numpy.linalg`` and ``numpy.fft``. Usually, an import package " +"is a directory on the file system, containing modules as ``.py`` files and " +"subpackages as subdirectories." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:42 +msgid "" +"You can use an import package as soon as you have installed a distribution " +"package that provides it." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:47 +msgid "What are the links between distribution packages and import packages?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:49 +msgid "" +"Most of the time, a distribution package provides one single import package " +"(or non-package module), with a matching name. For example, ``pip install " +"numpy`` lets you ``import numpy``." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:53 +msgid "" +"However, this is only a convention. PyPI and other package indices *do not " +"enforce any relationship* between the name of a distribution package and the " +"import packages it provides. (A consequence of this is that you cannot " +"blindly install the PyPI package ``foo`` if you see ``import foo``; this may " +"install an unintended, and potentially even malicious package.)" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:59 +msgid "" +"A distribution package could provide an import package with a different " +"name. An example of this is the popular Pillow_ library for image " +"processing. Its distribution package name is ``Pillow``, but it provides the " +"import package ``PIL``. This is for historical reasons: Pillow started as a " +"fork of the PIL library, thus it kept the import name ``PIL`` so that " +"existing PIL users could switch to Pillow with little effort. More " +"generally, a fork of an existing library is a common reason for differing " +"names between the distribution package and the import package." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:69 +msgid "" +"On a given package index (like PyPI), distribution package names must be " +"unique. On the other hand, import packages have no such requirement. Import " +"packages with the same name can be provided by several distribution " +"packages. Again, forks are a common reason for this." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:74 +msgid "" +"Conversely, a distribution package can provide several import packages, " +"although this is less common. An example is the attrs_ distribution package, " +"which provides both an ``attrs`` import package with a newer API, and an " +"``attr`` import package with an older but supported API." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:81 +msgid "How do distribution package names and import package names compare?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:83 +msgid "" +"Import packages should have valid Python identifiers as their name " +"(the :ref:`exact rules ` are found in the Python " +"documentation) [#non-identifier-mod-name]_. In particular, they use " +"underscores ``_`` as word separator and they are case-sensitive." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:88 +msgid "" +"On the other hand, distribution packages can use hyphens ``-`` or " +"underscores ``_``. They can also contain dots ``.``, which is sometimes used " +"for packaging a subpackage of a :ref:`namespace package `. For most purposes, they are insensitive to case and to ``-`` " +"vs. ``_`` differences, e.g., ``pip install Awesome_Package`` is the same as " +"``pip install awesome-package`` (the precise rules are given in " +"the :ref:`name normalization specification `)." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:101 +msgid "" +"Although it is technically possible to import packages/modules that do not " +"have a valid Python identifier as their name, using :doc:`importlib " +"`, this is vanishingly rare and strongly " +"discouraged." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:5 +msgid "Supporting downstream packaging" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:7 +msgid "Draft" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:8 +msgid "2025-?" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:10 +msgid "" +"While PyPI and the Python packaging tools such as :ref:`pip` are the primary " +"means of distributing Python packages, they are also often made available as " +"part of other packaging ecosystems. These repackaging efforts are " +"collectively called *downstream* packaging (your own efforts are called " +"*upstream* packaging), and include such projects as Linux distributions, " +"Conda, Homebrew and MacPorts. They generally aim to provide improved support " +"for use cases that cannot be handled via Python packaging tools alone, such " +"as native integration with a specific operating system, or assured " +"compatibility with specific versions of non-Python software." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:19 +msgid "" +"This discussion attempts to explain how downstream packaging is usually " +"done, and what additional challenges downstream packagers typically face. It " +"aims to provide some optional guidelines that project maintainers may choose " +"to follow which help make downstream packaging *significantly* easier " +"(without imposing any major maintenance hassles on the upstream project). " +"Note that this is not an all-or-nothing proposal — anything that upstream " +"maintainers can do is useful, even if it's only a small part. Downstream " +"maintainers are also willing to prepare patches to resolve these issues. " +"Having these patches merged can be very helpful, since it removes the need " +"for different downstreams to carry and keep rebasing the same patches, and " +"the risk of applying inconsistent solutions to the same problem." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:31 +msgid "" +"Establishing a good relationship between software maintainers and downstream " +"packagers can bring mutual benefits. Downstreams are often willing to share " +"their experience, time and hardware to improve your package. They are " +"sometimes in a better position to see how your package is used in practice, " +"and to provide information about its relationships with other packages that " +"would otherwise require significant effort to obtain. Packagers can often " +"find bugs before your users hit them in production, provide bug reports of " +"good quality, and supply patches whenever they can. For example, they are " +"regularly active in ensuring the packages they redistribute are updated for " +"any compatibility issues that arise when a new Python version is released." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:43 +msgid "" +"Please note that downstream builds include not only binary redistribution, " +"but also source builds done on user systems (in source-first distributions " +"such as Gentoo Linux, for example)." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:51 +msgid "Provide complete source distributions" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:54 +#: ../source/discussions/downstream-packaging.rst:150 +#: ../source/discussions/downstream-packaging.rst:213 +#: ../source/discussions/downstream-packaging.rst:303 +#: ../source/discussions/downstream-packaging.rst:412 +msgid "Why?" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:56 +msgid "" +"The vast majority of downstream packagers prefer to build packages from " +"source, rather than use the upstream-provided binary packages. In some " +"cases, using sources is actually required for the package to be included in " +"the distribution. This is also true of pure Python packages that provide " +"universal wheels. The reasons for using source distributions may include:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:62 +msgid "Being able to audit the source code of all packages." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:64 +msgid "Being able to run the test suite and build documentation." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:66 +msgid "" +"Being able to easily apply patches, including backporting commits from the " +"project's repository and sending patches back to the project." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:69 +msgid "" +"Being able to build on a specific platform that is not covered by upstream " +"builds." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:72 +msgid "Being able to build against specific versions of system libraries." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:74 +msgid "Having a consistent build process across all Python packages." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:76 +msgid "" +"While it is usually possible to build packages from a Git repository, there " +"are a few important reasons to provide a static archive file instead:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:79 +msgid "" +"Fetching a single file is often more efficient, more reliable and better " +"supported than e.g. using a Git clone. This can help users with poor " +"Internet connectivity." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:83 +msgid "" +"Downstreams often use hashes to verify the authenticity of source files on " +"subsequent builds, which require that they remain bitwise identical over " +"time. For example, automatically generated Git archives do not guarantee " +"this, as the compressed data may change if gzip is upgraded on the server." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:88 +msgid "" +"Archive files can be mirrored, reducing both upstream and downstream " +"bandwidth use. The actual builds can afterwards be performed in firewalled " +"or offline environments, that can only access source files provided by the " +"local mirror or redistributed earlier." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:93 +msgid "" +"Explicitly publishing archive files can ensure that any dependencies on " +"version control system metadata are resolved when creating the source " +"archive. For example, automatically generated Git archives omit all of the " +"commit tag information, potentially resulting in incorrect version details " +"in the resulting builds." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:99 +#: ../source/discussions/downstream-packaging.rst:179 +#: ../source/discussions/downstream-packaging.rst:277 +#: ../source/discussions/downstream-packaging.rst:337 +#: ../source/discussions/downstream-packaging.rst:441 +msgid "How?" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:101 +msgid "" +"Ideally, **a source distribution archive published on PyPI should include " +"all the files from the package's Git repository** that are necessary to " +"build the package itself, run its test suite, build and install its " +"documentation, and any other files that may be useful to end users, such as " +"shell completions, editor support files, and so on." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:107 +msgid "" +"This point applies only to the files belonging to the package itself. The " +"downstream packaging process, much like Python package managers, will " +"provision the necessary Python dependencies, system tools and external " +"libraries that are needed by your package and its build scripts. However, " +"the files listing these dependencies (for example, ``requirements*.txt`` " +"files) should also be included, to help downstreams determine the needed " +"dependencies, and check for changes in them." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:115 +msgid "" +"Some projects have concerns related to Python package managers using source " +"distributions from PyPI. They do not wish to increase their size with files " +"that are not used by these tools, or they do not wish to publish source " +"distributions at all, as they enable a problematic or outright nonfunctional " +"fallback to building the particular project from source. In these cases, a " +"good compromise may be to publish a separate source archive for downstream " +"use elsewhere, for example by attaching it to a GitHub release. " +"Alternatively, large files, such as test data, can be split into separate " +"archives." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:124 +msgid "" +"On the other hand, some projects (NumPy_, for instance) decide to include " +"tests in their installed packages. This has the added advantage of " +"permitting users to run tests after installing them, for example to check " +"for regressions after upgrading a dependency. Yet another approach is to " +"split tests or test data into a separate Python package. Such an approach " +"was taken by the cryptography_ project, with the large test vectors being " +"split to cryptography-vectors_ package." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:132 +msgid "" +"A good idea is to use your source distribution in the release workflow. For " +"example, the :ref:`build` tool does exactly that — it first builds a source " +"distribution, and then uses it to build a wheel. This ensures that the " +"source distribution actually works, and that it won't accidentally install " +"fewer files than the official wheels." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:138 +msgid "" +"Ideally, also use the source distribution to run tests, build documentation, " +"and so on, or add specific tests to make sure that all necessary files were " +"actually included. Understandably, this requires more effort, so it's fine " +"not do that — downstream packagers will report any missing files promptly." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:147 +msgid "Do not use the Internet during the build process" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:152 +msgid "" +"Downstream builds are frequently done in sandboxed environments that cannot " +"access the Internet. The package sources are unpacked into this environment, " +"and all the necessary dependencies are installed." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:156 +msgid "" +"Even if this is not the case, and assuming that you took sufficient care to " +"properly authenticate downloads, using the Internet is discouraged for a " +"number of reasons:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:160 +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 "" + +#: ../source/discussions/downstream-packaging.rst:164 +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 "" + +#: ../source/discussions/downstream-packaging.rst:168 +msgid "The remote resources may change, making the build not reproducible." +msgstr "" + +#: ../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 "" + +#: ../source/discussions/downstream-packaging.rst:174 +msgid "" +"The user may be using a service with a limited data plan, in which " +"uncontrolled Internet access may result in additional charges or other " +"inconveniences." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:181 +msgid "" +"If the package is implementing any custom build *backend* actions that use " +"the Internet, for example by automatically downloading vendored dependencies " +"or fetching Git submodules, its source distribution should either include " +"all of these files or allow provisioning them externally, and the Internet " +"must not be used if the files are already present." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:187 +msgid "" +"Note that this point does not apply to Python dependencies that are " +"specified in the package metadata, and are fetched during the build and " +"installation process by *frontends* (such as :ref:`build` or :ref:`pip`). " +"Downstreams use frontends that use local provisioning for Python " +"dependencies." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:192 +msgid "" +"Ideally, custom build scripts should not even attempt to access the Internet " +"at all, unless explicitly requested to. If any resources are missing and " +"need to be fetched, they should ask the user for permission first. If that " +"is not feasible, the next best thing is to provide an opt-out switch to " +"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 "" + +#: ../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 "" + +#: ../source/discussions/downstream-packaging.rst:202 +msgid "" +"Please also remember that if you are fetching remote resources, you " +"absolutely must *verify their authenticity* (usually against a hash), to " +"protect against the file being substituted by a malicious party." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:210 +msgid "Support building against system dependencies" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:215 +msgid "" +"Some Python projects have non-Python dependencies, such as libraries written " +"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 "" + +#: ../source/discussions/downstream-packaging.rst:219 +msgid "" +"The published wheels require a binary-compatible version of the used library " +"to be present on the user's system. If the library is missing or an " +"incompatible version is installed, the Python package may fail with errors " +"that are not clear to inexperienced users, or even misbehave at runtime." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:224 +msgid "" +"Building from a source distribution requires a source-compatible version of " +"the dependency to be present, along with its development headers and other " +"auxiliary files that some systems package separately from the library itself." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:229 +msgid "" +"Even for an experienced user, installing a compatible dependency version may " +"be very hard. For example, the used Linux distribution may not provide the " +"required version, or some other package may require an incompatible version." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:234 +msgid "" +"The linkage between the Python package and its system dependency is not " +"recorded by the packaging system. The next system update may upgrade the " +"library to a newer version that breaks binary compatibility with the Python " +"package, and requires user intervention to fix." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:239 +msgid "" +"For these reasons, you may reasonably decide to either statically link your " +"dependencies, or to provide local copies in the installed package. You may " +"also vendor the dependency in your source distribution. Sometimes these " +"dependencies are also repackaged on PyPI, and can be declared as project " +"dependencies like any other Python package." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:245 +msgid "" +"However, none of these issues apply to downstream packaging, and downstreams " +"have good reasons to prefer dynamically linking to system dependencies. In " +"particular:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:249 +msgid "" +"In many cases, reliably sharing dynamic dependencies between components is a " +"large part of the *purpose* of a downstream packaging ecosystem. Helping to " +"support that makes it easier for users of those systems to access upstream " +"projects in their preferred format." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:253 +msgid "" +"Static linking and vendoring obscures the use of external dependencies, " +"making source auditing harder." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:256 +msgid "" +"Dynamic linking makes it possible to quickly and systematically replace the " +"used libraries across an entire downstream packaging ecosystem, which can be " +"particularly important when they turn out to contain a security " +"vulnerability or critical bug." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:260 +msgid "" +"Using system dependencies makes the package benefit from downstream " +"customization that can improve the user experience on a particular platform, " +"without the downstream maintainers having to consistently patch the " +"dependencies vendored in different packages. This can include compatibility " +"improvements and security hardening." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:266 +msgid "" +"Static linking and vendoring can result in multiple different versions of " +"the same library being loaded in the same process (for example, attempting " +"to import two Python packages that link to different versions of the same " +"library). This sometimes works without incident, but it can also lead to " +"anything from library loading errors, to subtle runtime bugs, to " +"catastrophic failures (like suddenly crashing and losing data)." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:273 +msgid "" +"Last but not least, static linking and vendoring results in duplication, and " +"may increase the use of both disk space and memory." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:279 +msgid "" +"A good compromise between the needs of both parties is to provide a switch " +"between using vendored and system dependencies. Ideally, if the package has " +"multiple vendored dependencies, it should provide both individual switches " +"for each dependency, and a general switch to control the default for them, " +"e.g. via a ``USE_SYSTEM_DEPS`` environment variable." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:285 +msgid "" +"If the user requests using system dependencies, and a particular dependency " +"is either missing or incompatible, the build should fail with an explanatory " +"message rather than fall back to a vendored version. This gives the packager " +"the opportunity to notice their mistake and a chance to consciously decide " +"how to solve it." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:291 +msgid "" +"It is reasonable for upstream projects to leave *testing* of building with " +"system dependencies to their downstream repackagers. The goal of these " +"guidelines is to facilitate more effective collaboration between upstream " +"projects and downstream repackagers, not to suggest upstream projects take " +"on tasks that downstream repackagers are better equipped to handle." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:300 +msgid "Support downstream testing" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:305 +msgid "" +"A variety of downstream projects run some degree of testing on the packaged " +"Python projects. Depending on the particular case, this can range from " +"minimal smoke testing to comprehensive runs of the complete test suite. " +"There can be various reasons for doing this, for example:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:310 +msgid "Verifying that the downstream packaging did not introduce any bugs." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:312 +msgid "" +"Testing on additional platforms that are not covered by upstream testing." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:314 +msgid "" +"Finding subtle bugs that can only be reproduced with particular hardware, " +"system package versions, and so on." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:317 +msgid "" +"Testing the released package against newer (or older) dependency versions " +"than the ones present during upstream release testing." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:320 +msgid "" +"Testing the package in an environment closely resembling the production " +"setup. This can detect issues caused by non-trivial interactions between " +"different installed packages, including packages that are not dependencies " +"of your package, but nevertheless can cause issues." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:325 +msgid "" +"Testing the released package against newer Python versions (including newer " +"point releases), or less tested Python implementations such as PyPy." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:328 +msgid "" +"Admittedly, sometimes downstream testing may yield false positives or bug " +"reports about scenarios the upstream project is not interested in " +"supporting. However, perhaps even more often it does provide early notice of " +"problems, or find non-trivial bugs that would otherwise cause issues for the " +"upstream project's users. While mistakes do happen, the majority of " +"downstream packagers are doing their best to double-check their results, and " +"help upstream maintainers triage and fix the bugs that they reported." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:339 +msgid "" +"There are a number of things that upstream projects can do to help " +"downstream repackagers test their packages efficiently and effectively, " +"including some of the suggestions already mentioned above. These are " +"typically improvements that make the test suite more reliable and easier to " +"use for everyone, not just downstream packagers. Some specific suggestions " +"are:" +msgstr "" + +#: ../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 "" + +#: ../source/discussions/downstream-packaging.rst:348 +msgid "" +"Do not write to the package directories during testing. Downstream test " +"setups sometimes run tests on top of the installed package, and " +"modifications performed during testing and temporary test files may end up " +"being part of the installed package!" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:353 +msgid "" +"Make the test suite work offline. Mock network interactions, using packages " +"such as responses_ or vcrpy_. If that is not possible, make it possible to " +"easily disable the tests using Internet access, e.g. via a pytest_ marker. " +"Use pytest-socket_ to verify that your tests work offline. This often makes " +"your own test workflows faster and more reliable as well." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:359 +msgid "" +"Make your tests work without a specialized setup, or perform the necessary " +"setup as part of test fixtures. Do not ever assume that you can connect to " +"system services such as databases — in an extreme case, you could crash a " +"production service!" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:364 +msgid "" +"If your package has optional dependencies, make their tests optional as " +"well. Either skip them if the needed packages are not installed, or add " +"markers to make deselecting easy." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:368 +msgid "" +"More generally, add markers to tests with special requirements. These can " +"include e.g. significant space usage, significant memory usage, long " +"runtime, incompatibility with parallel testing." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:372 +msgid "" +"Do not assume that the test suite will be run with ``-Werror``. Downstreams " +"often need to disable that, as it causes false positives, e.g. due to newer " +"dependency versions. Assert for warnings using ``pytest.warns()`` rather " +"than ``pytest.raises()``!" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:377 +msgid "" +"Aim to make your test suite reliable and reproducible. Avoid flaky tests. " +"Avoid depending on specific platform details, don't rely on exact results of " +"floating-point computation, or timing of operations, and so on. Fuzzing has " +"its advantages, but you want to have static test cases for completeness as " +"well." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:383 +msgid "" +"Split tests by their purpose, and make it easy to skip categories that are " +"irrelevant or problematic. Since the primary purpose of downstream testing " +"is to ensure that the package itself works, downstreams are not generally " +"interested in tasks such as checking code coverage, code formatting, " +"typechecking or running benchmarks. These tests can fail as dependencies are " +"upgraded or the system is under load, without actually affecting the package " +"itself." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:390 +msgid "" +"If your test suite takes significant time to run, support testing in " +"parallel. Downstreams often maintain a large number of packages, and testing " +"them all takes a lot of time. Using pytest-xdist_ can help them avoid " +"bottlenecks." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:395 +msgid "" +"Ideally, support running your test suite via ``pytest``. pytest_ has many " +"command-line arguments that are truly helpful to downstreams, such as the " +"ability to conveniently deselect tests, rerun flaky tests (via pytest-" +"rerunfailures_), add a timeout to prevent tests from hanging (via pytest-" +"timeout_) or run tests in parallel (via pytest-xdist_). Note that test " +"suites don't need to be *written* with ``pytest`` to be *executed* with " +"``pytest``: ``pytest`` is able to find and execute almost all test cases " +"that are compatible with the standard library's ``unittest`` test discovery." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:409 +msgid "Aim for stable releases" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:414 +msgid "" +"Many downstreams provide stable release channels in addition to the main " +"package streams. The goal of these channels is to provide more conservative " +"upgrades to users with higher stability needs. These users often prefer to " +"trade having the newest features available for lower risk of issues." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:419 +msgid "" +"While the exact policies differ, an important criterion for including a new " +"package version in a stable release channel is for it to be available in " +"testing for some time already, and have no known major regressions. For " +"example, in Gentoo Linux a package is usually marked stable after being " +"available in testing for a month, and being tested against the versions of " +"its dependencies that are marked stable at the time." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:426 +msgid "" +"However, there are circumstances which demand more prompt action. For " +"example, if a security vulnerability or a major bug is found in the version " +"that is currently available in the stable channel, the downstream is facing " +"a need to resolve it. In this case, they need to consider various options, " +"such as:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:431 +msgid "putting a new version in the stable channel early," +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:433 +msgid "adding patches to the version currently published," +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:435 +msgid "or even downgrading the stable channel to an earlier release." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:437 +msgid "" +"Each of these options involves certain risks and a certain amount of work, " +"and packagers needs to weigh them to determine the course of action." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:443 +msgid "" +"There are some things that upstreams can do to tailor their workflow to " +"stable release channels. These actions often are beneficial to the package's " +"users as well. Some specific suggestions are:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:447 +msgid "" +"Adjust the release frequency to the rate of code changes. Packages that are " +"released rarely often bring significant changes with every release, and a " +"higher risk of accidental regressions." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:451 +msgid "" +"Avoid mixing bug fixes and new features, if possible. In particular, if " +"there are known bug fixes merged already, consider making a new release " +"before merging feature branches." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:455 +msgid "" +"Consider making prereleases after major changes, to provide more testing " +"opportunities for users and downstreams willing to opt-in." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:458 +msgid "" +"If your project is subject to very intense development, consider splitting " +"one or more branches that include a more conservative subset of commits, and " +"are released separately. For example, Django_ currently maintains three " +"release branches in addition to main." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:463 +msgid "" +"Even if you don't wish to maintain additional branches permanently, consider " +"making additional patch releases with minimal changes to the previous " +"version, especially when a security vulnerability is discovered." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:467 +msgid "" +"Split your changes into focused commits that address one problem at a time, " +"to make it easier to cherry-pick changes to earlier releases when necessary." +msgstr "" + +#: ../source/discussions/index.rst:4 +msgid "" +"**Discussions** are focused on providing comprehensive information about a " +"specific topic. If you're just trying to get stuff done, see :doc:`/guides/" +"index`." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:5 +msgid "install_requires vs requirements files" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:9 +msgid "install_requires" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:11 +msgid "" +"``install_requires`` is a :ref:`setuptools` :file:`setup.py` keyword that " +"should be used to specify what a project **minimally** needs to run " +"correctly. When the project is installed by :ref:`pip`, this is the " +"specification that is used to install its dependencies." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:16 +msgid "" +"For example, if the project requires A and B, your ``install_requires`` " +"would be like so:" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:26 +msgid "" +"Additionally, it's best practice to indicate any known lower or upper bounds." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:28 +msgid "" +"For example, it may be known, that your project requires at least v1 of 'A', " +"and v2 of 'B', so it would be like so:" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:38 +msgid "" +"It may also be known that project 'A' introduced a change in its v2 that " +"breaks the compatibility of your project with v2 of 'A' and later, so it " +"makes sense to not allow v2:" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:49 +msgid "" +"It is not considered best practice to use ``install_requires`` to pin " +"dependencies to specific versions, or to specify sub-dependencies (i.e. " +"dependencies of your dependencies). This is overly-restrictive, and " +"prevents the user from gaining the benefit of dependency upgrades." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:54 +msgid "" +"Lastly, it's important to understand that ``install_requires`` is a listing " +"of \"Abstract\" requirements, i.e just names and version restrictions that " +"don't determine where the dependencies will be fulfilled from (i.e. from " +"what index or source). The where (i.e. how they are to be made " +"\"Concrete\") is to be determined at install time using :ref:`pip` options. " +"[1]_" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:62 +#: ../source/tutorials/installing-packages.rst:463 +msgid "Requirements files" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:64 +msgid "" +":ref:`Requirements Files ` described most simply, " +"are just a list of :ref:`pip:pip install` arguments placed into a file." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:67 +msgid "" +"Whereas ``install_requires`` defines the dependencies for a single " +"project, :ref:`Requirements Files ` are often used " +"to define the requirements for a complete Python environment." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:71 +msgid "" +"Whereas ``install_requires`` requirements are minimal, requirements files " +"often contain an exhaustive listing of pinned versions for the purpose of " +"achieving :ref:`repeatable installations ` of a complete " +"environment." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:76 +msgid "" +"Whereas ``install_requires`` requirements are \"Abstract\", i.e. not " +"associated with any particular index, requirements files often contain pip " +"options like ``--index-url`` or ``--find-links`` to make requirements " +"\"Concrete\", i.e. associated with a particular index or directory of " +"packages. [1]_" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:82 +msgid "" +"Whereas ``install_requires`` metadata is automatically analyzed by pip " +"during an install, requirements files are not, and only are used when a user " +"specifically installs them using ``python -m pip install -r``." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:88 +msgid "" +"For more on \"Abstract\" vs \"Concrete\" requirements, see https://" +"caremad.io/posts/2013/07/setup-vs-requirement/." +msgstr "" + +#: ../source/discussions/package-formats.rst:5 +msgid "Package Formats" +msgstr "" + +#: ../source/discussions/package-formats.rst:7 +msgid "" +"This page discusses the file formats that are used to distribute Python " +"packages and the differences between them." +msgstr "" + +#: ../source/discussions/package-formats.rst:10 +msgid "" +"You will find files in two formats on package indices such as PyPI_: " +"**source distributions**, or **sdists** for short, and **binary " +"distributions**, commonly called **wheels**. For example, the `PyPI page " +"for pip 23.3.1 `_ lets you download two files, " +"``pip-23.3.1.tar.gz`` and ``pip-23.3.1-py3-none-any.whl``. The former is an " +"sdist, the latter is a wheel. As explained below, these serve different " +"purposes. When publishing a package on PyPI (or elsewhere), you should " +"always upload both an sdist and one or more wheel." +msgstr "" + +#: ../source/discussions/package-formats.rst:21 +msgid "What is a source distribution?" +msgstr "" + +#: ../source/discussions/package-formats.rst:23 +msgid "" +"Conceptually, a source distribution is an archive of the source code in raw " +"form. Concretely, an sdist is a ``.tar.gz`` archive containing the source " +"code plus an additional special file called ``PKG-INFO``, which holds the " +"project metadata. The presence of this file helps packaging tools to be more " +"efficient by not needing to compute the metadata themselves. The ``PKG-" +"INFO`` file follows the format specified in :ref:`core-metadata` and is not " +"intended to be written by hand [#core-metadata-format]_." +msgstr "" + +#: ../source/discussions/package-formats.rst:31 +msgid "" +"You can thus inspect the contents of an sdist by unpacking it using standard " +"tools to work with tar archives, such as ``tar -xvf`` on UNIX platforms " +"(like Linux and macOS), or :ref:`the command line interface of Python's " +"tarfile module ` on any platform." +msgstr "" + +#: ../source/discussions/package-formats.rst:36 +msgid "" +"Sdists serve several purposes in the packaging ecosystem. When :ref:`pip`, " +"the standard Python package installer, cannot find a wheel to install, it " +"will fall back on downloading a source distribution, compiling a wheel from " +"it, and installing the wheel. Furthermore, sdists are often used as the " +"package source by downstream packagers (such as Linux distributions, Conda, " +"Homebrew and MacPorts on macOS, ...), who, for various reasons, may prefer " +"them over, e.g., pulling from a Git repository." +msgstr "" + +#: ../source/discussions/package-formats.rst:44 +msgid "" +"A source distribution is recognized by its file name, which has the " +"form :samp:`{package_name}-{version}.tar.gz`, e.g., ``pip-23.3.1.tar.gz``." +msgstr "" + +#: ../source/discussions/package-formats.rst:50 +msgid "" +"If you want technical details on the sdist format, read the :ref:`sdist " +"specification `." +msgstr "" + +#: ../source/discussions/package-formats.rst:55 +msgid "What is a wheel?" +msgstr "" + +#: ../source/discussions/package-formats.rst:57 +msgid "" +"Conceptually, a wheel contains exactly the files that need to be copied when " +"installing the package." +msgstr "" + +#: ../source/discussions/package-formats.rst:60 +msgid "" +"There is a big difference between sdists and wheels for packages " +"with :term:`extension modules `, written in compiled " +"languages like C, C++ and Rust, which need to be compiled into platform-" +"dependent machine code. With these packages, wheels do not contain source " +"code (like C source files) but compiled, executable code (like ``.so`` files " +"on Linux or DLLs on Windows)." +msgstr "" + +#: ../source/discussions/package-formats.rst:66 +msgid "" +"Furthermore, while there is only one sdist per version of a project, there " +"may be many wheels. Again, this is most relevant in the context of extension " +"modules. The compiled code of an extension module is tied to an operating " +"system and processor architecture, and often also to the version of the " +"Python interpreter (unless the :ref:`Python stable ABI ` " +"is used)." +msgstr "" + +#: ../source/discussions/package-formats.rst:72 +msgid "" +"For pure-Python packages, the difference between sdists and wheels is less " +"marked. There is normally one single wheel, for all platforms and Python " +"versions. Python is an interpreted language, which does not need ahead-of-" +"time compilation, so wheels contain ``.py`` files just like sdists." +msgstr "" + +#: ../source/discussions/package-formats.rst:77 +msgid "" +"If you are wondering about ``.pyc`` bytecode files: they are not included in " +"wheels, since they are cheap to generate, and including them would " +"unnecessarily force a huge number of packages to distribute one wheel per " +"Python version instead of one single wheel. Instead, installers " +"like :ref:`pip` generate them while installing the package." +msgstr "" + +#: ../source/discussions/package-formats.rst:83 +msgid "" +"With that being said, there are still important differences between sdists " +"and wheels, even for pure Python projects. Wheels are meant to contain " +"exactly what is to be installed, and nothing more. In particular, wheels " +"should never include tests and documentation, while sdists commonly do. " +"Also, the wheel format is more complex than sdist. For example, it includes " +"a special file -- called ``RECORD`` -- that lists all files in the wheel " +"along with a hash of their content, as a safety check of the download's " +"integrity." +msgstr "" + +#: ../source/discussions/package-formats.rst:91 +msgid "" +"At a glance, you might wonder if wheels are really needed for \"plain and " +"basic\" pure Python projects. Keep in mind that due to the flexibility of " +"sdists, installers like pip cannot install from sdists directly -- they need " +"to first build a wheel, by invoking the :term:`build backend` that the sdist " +"specifies (the build backend may do all sorts of transformations while " +"building the wheel, such as compiling C extensions). For this reason, even " +"for a pure Python project, you should always upload *both* an sdist and a " +"wheel to PyPI or other package indices. This makes installation much faster " +"for your users, since a wheel is directly installable. By only including " +"files that must be installed, wheels also make for smaller downloads." +msgstr "" + +#: ../source/discussions/package-formats.rst:102 +msgid "" +"On the technical level, a wheel is a ZIP archive (unlike sdists which are " +"TAR archives). You can inspect its contents by unpacking it as a normal ZIP " +"archive, e.g., using ``unzip`` on UNIX platforms like Linux and macOS, " +"``Expand-Archive`` in Powershell on Windows, or :ref:`the command line " +"interface of Python's zipfile module `. This can " +"be very useful to check that the wheel includes all the files you need it to." +msgstr "" + +#: ../source/discussions/package-formats.rst:109 +msgid "" +"Inside a wheel, you will find the package's files, plus an additional " +"directory called :samp:`{package_name}-{version}.dist-info`. This directory " +"contains various files, including a ``METADATA`` file which is the " +"equivalent of ``PKG-INFO`` in sdists, as well as ``RECORD``. This can be " +"useful to ensure no files are missing from your wheels." +msgstr "" + +#: ../source/discussions/package-formats.rst:115 +msgid "" +"The file name of a wheel (ignoring some rarely used features) looks like " +"this: :samp:`{package_name}-{version}-{python_tag}-{abi_tag}-" +"{platform_tag}.whl`. This naming convention identifies which platforms and " +"Python versions the wheel is compatible with. For example, the name " +"``pip-23.3.1-py3-none-any.whl`` means that:" +msgstr "" + +#: ../source/discussions/package-formats.rst:121 +msgid "" +"(``py3``) This wheel can be installed on any implementation of Python 3, " +"whether CPython, the most widely used Python implementation, or an " +"alternative implementation like PyPy_;" +msgstr "" + +#: ../source/discussions/package-formats.rst:124 +msgid "(``none``) It does not depend on the Python version;" +msgstr "" + +#: ../source/discussions/package-formats.rst:125 +msgid "(``any``) It does not depend on the platform." +msgstr "" + +#: ../source/discussions/package-formats.rst:127 +msgid "" +"The pattern ``py3-none-any`` is common for pure Python projects. Packages " +"with extension modules typically ship multiple wheels with more complex tags." +msgstr "" + +#: ../source/discussions/package-formats.rst:130 +msgid "" +"All technical details on the wheel format can be found in the :ref:`wheel " +"specification `." +msgstr "" + +#: ../source/discussions/package-formats.rst:138 +msgid "What about eggs?" +msgstr "" + +#: ../source/discussions/package-formats.rst:140 +msgid "" +"\"Egg\" is an old package format that has been replaced with the wheel " +"format. It should not be used anymore. Since August 2023, PyPI `rejects egg " +"uploads `_." +msgstr "" + +#: ../source/discussions/package-formats.rst:144 +msgid "Here's a breakdown of the important differences between wheel and egg." +msgstr "" + +#: ../source/discussions/package-formats.rst:146 +msgid "" +"The egg format was introduced by :ref:`setuptools` in 2004, whereas the " +"wheel format was introduced by :pep:`427` in 2012." +msgstr "" + +#: ../source/discussions/package-formats.rst:149 +msgid "" +"Wheel has an :doc:`official standard specification `. Egg did not." +msgstr "" + +#: ../source/discussions/package-formats.rst:152 +msgid "" +"Wheel is a :term:`distribution ` format, i.e a " +"packaging format. [#wheel-importable]_ Egg was both a distribution format " +"and a runtime installation format (if left zipped), and was designed to be " +"importable." +msgstr "" + +#: ../source/discussions/package-formats.rst:156 +msgid "" +"Wheel archives do not include ``.pyc`` files. Therefore, when the " +"distribution only contains Python files (i.e. no compiled extensions), and " +"is compatible with Python 2 and 3, it's possible for a wheel to be " +"\"universal\", similar to an :term:`sdist `." +msgstr "" + +#: ../source/discussions/package-formats.rst:161 +msgid "" +"Wheel uses standard :ref:`.dist-info directories `. Egg used ``.egg-info``." +msgstr "" + +#: ../source/discussions/package-formats.rst:164 +msgid "" +"Wheel has a :ref:`richer file naming convention `. A " +"single wheel archive can indicate its compatibility with a number of Python " +"language versions and implementations, ABIs, and system architectures." +msgstr "" + +#: ../source/discussions/package-formats.rst:168 +msgid "" +"Wheel is versioned. Every wheel file contains the version of the wheel " +"specification and the implementation that packaged it." +msgstr "" + +#: ../source/discussions/package-formats.rst:171 +msgid "" +"Wheel is internally organized by `sysconfig path type `_, therefore " +"making it easier to convert to other formats." +msgstr "" + +#: ../source/discussions/package-formats.rst:177 +msgid "" +"This format is email-based. Although this would be unlikely to be chosen " +"today, backwards compatibility considerations lead to it being kept as the " +"canonical format. From the user point of view, this is mostly invisible, " +"since the metadata is specified by the user in a way understood by the build " +"backend, typically ``[project]`` in ``pyproject.toml``, and translated by " +"the build backend into ``PKG-INFO``." +msgstr "" + +#: ../source/discussions/package-formats.rst:184 +msgid "" +"Circumstantially, in some cases, wheels can be used as an importable runtime " +"format, although :ref:`this is not officially supported at this time `." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:6 +msgid "pip vs easy_install" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:9 +msgid "" +":ref:`easy_install `, now `deprecated`_, was released in 2004 " +"as part of :ref:`setuptools`. It was notable at the time for " +"installing :term:`packages ` from :term:`PyPI ` using requirement specifiers, and automatically " +"installing dependencies." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:14 +msgid "" +":ref:`pip` came later in 2008, as an alternative to :ref:`easy_install " +"`, although still largely built on top of :ref:`setuptools` " +"components. It was notable at the time for *not* installing packages " +"as :term:`Eggs ` or from :term:`Eggs ` (but rather simply as " +"'flat' packages from :term:`sdists `), " +"and introducing the idea of :ref:`Requirements Files `, which gave users the power to easily replicate environments." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:22 +msgid "" +"Here's a breakdown of the important differences between pip and the " +"deprecated easy_install:" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:25 +msgid "**pip**" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:25 +msgid "**easy_install**" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:27 +msgid "Installs from :term:`Wheels `" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:27 +#: ../source/discussions/pip-vs-easy-install.rst:38 +#: ../source/discussions/pip-vs-easy-install.rst:44 +#: ../source/discussions/pip-vs-easy-install.rst:48 +#: ../source/discussions/pip-vs-easy-install.rst:54 +#: ../source/discussions/pip-vs-easy-install.rst:57 +msgid "Yes" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:27 +#: ../source/discussions/pip-vs-easy-install.rst:30 +#: ../source/discussions/pip-vs-easy-install.rst:32 +#: ../source/discussions/pip-vs-easy-install.rst:35 +#: ../source/discussions/pip-vs-easy-install.rst:38 +#: ../source/discussions/pip-vs-easy-install.rst:44 +#: ../source/discussions/pip-vs-easy-install.rst:48 +#: ../source/discussions/pip-vs-easy-install.rst:51 +#: ../source/discussions/pip-vs-easy-install.rst:54 +#: ../source/discussions/pip-vs-easy-install.rst:57 +msgid "No" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:30 +msgid "Uninstall Packages" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:30 +msgid "Yes (``python -m pip uninstall``)" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:32 +msgid "Dependency Overrides" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:32 +msgid "Yes (:ref:`Requirements Files `)" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:35 +msgid "List Installed Packages" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:35 +msgid "Yes (``python -m pip list`` and ``python -m pip freeze``)" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:38 +msgid ":pep:`438` Support" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:41 +msgid "Installation format" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:41 +msgid "'Flat' packages with :file:`egg-info` metadata." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:41 +msgid "Encapsulated Egg format" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:44 +msgid "sys.path modification" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:48 +msgid "Installs from :term:`Eggs `" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:51 +msgid "`pylauncher support`_" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:51 +msgid "Yes [1]_" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:54 +msgid ":ref:`Multi-version Installs`" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:57 +msgid "Exclude scripts during install" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:60 +msgid "per project index" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:60 +msgid "Only in virtualenv" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:60 +msgid "Yes, via setup.cfg" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:68 +msgid "" +"https://setuptools.readthedocs.io/en/latest/deprecated/" +"easy_install.html#natural-script-launcher" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:6 +msgid "Is ``setup.py`` deprecated?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:8 +msgid "No, :term:`setup.py` and :ref:`setuptools` are not deprecated." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:10 +msgid "" +"Setuptools is perfectly usable as a :term:`build backend` for packaging " +"Python projects. And :file:`setup.py` is a valid configuration file " +"for :ref:`setuptools` that happens to be written in Python, instead of in " +"*TOML* for example (a similar practice is used by other tools like *nox* and " +"its :file:`noxfile.py` configuration file, or *pytest* " +"and :file:`conftest.py`)." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:18 +msgid "" +"However, ``python setup.py`` and the use of :file:`setup.py` as a command " +"line tool are deprecated." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:21 +msgid "" +"This means that commands such as the following **MUST NOT** be run anymore:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:23 +#: ../source/discussions/setup-py-deprecated.rst:35 +#: ../source/guides/modernize-setup-py-project.rst:32 +msgid "``python setup.py install``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:24 +#: ../source/discussions/setup-py-deprecated.rst:37 +#: ../source/guides/modernize-setup-py-project.rst:34 +msgid "``python setup.py develop``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:25 +#: ../source/discussions/setup-py-deprecated.rst:39 +#: ../source/guides/modernize-setup-py-project.rst:36 +msgid "``python setup.py sdist``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:26 +#: ../source/discussions/setup-py-deprecated.rst:41 +#: ../source/guides/modernize-setup-py-project.rst:38 +msgid "``python setup.py bdist_wheel``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:30 +msgid "What commands should be used instead?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:33 +#: ../source/guides/modernize-setup-py-project.rst:30 +msgid "Deprecated" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:33 +#: ../source/guides/modernize-setup-py-project.rst:30 +msgid "Recommendation" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:35 +#: ../source/guides/modernize-setup-py-project.rst:32 +msgid "``python -m pip install .``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:37 +#: ../source/guides/modernize-setup-py-project.rst:34 +msgid "``python -m pip install --editable .``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:39 +msgid "``python -m build`` [#needs-build]_" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:45 +msgid "" +"This requires the :ref:`build` dependency. It is recommended to always build " +"and publish both the source distribution and wheel of a project, which is " +"what ``python -m build`` does. If necessary the ``--sdist`` and ``--wheel`` " +"options can be used to generate only one or the other." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:52 +msgid "" +"In order to install a setuptools based project, it was common to " +"run :file:`setup.py`'s ``install`` command such as: ``python setup.py " +"install``. Nowadays, the recommended method is to use :ref:`pip` directly " +"with a command like this one: ``python -m pip install .``. Where the dot " +"``.`` is actually a file system path, it is the path notation for the " +"current directory. Indeed, *pip* accepts a path to a project's source tree " +"directory on the local filesystem as argument to its ``install`` sub-" +"command. So this would also be a valid command: ``python -m pip install path/" +"to/project``." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:65 +msgid "" +"As for the installation in *develop* mode aka *editable* mode, instead of " +"``python setup.py develop`` one can use the ``--editable`` option of pip's " +"*install* sub-command: ``python -m pip install --editable .``." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:70 +msgid "" +"One recommended, simple, and straightforward method of " +"building :term:`source distributions ` " +"and :term:`wheels ` is to use the :ref:`build` tool with a command " +"like ``python -m build`` which triggers the generation of both distribution " +"formats. If necessary the ``--sdist`` and ``--wheel`` options can be used to " +"generate only one or the other. Note that the build tool needs to be " +"installed separately." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:80 +msgid "" +"The command ``python setup.py install`` was deprecated in setuptools version " +"*58.3.0*." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:85 +msgid "What about other commands?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:87 +msgid "What are some replacements for the other ``python setup.py`` commands?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:91 +msgid "``python setup.py test``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:93 +msgid "The recommendation is to use a test runner such as pytest_." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:99 +msgid "" +"``python setup.py check``, ``python setup.py register``, and ``python " +"setup.py upload``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:101 +msgid "A trusted replacement is :ref:`twine`:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:103 +msgid "``python -m twine check --strict dist/*``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:104 +msgid "``python -m twine register dist/*.whl`` [#not-pypi]_" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:105 +msgid "``python -m twine upload dist/*``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:107 +msgid "" +"Not necessary, nor supported on :term:`PyPI `. " +"But might be necessary on other :term:`package indexes ` (for " +"example :ref:`devpi`)." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:112 +msgid "``python setup.py --version``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:114 +msgid "" +"A possible replacement solution (among others) is to rely on setuptools-scm_:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:116 +msgid "``python -m setuptools_scm``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:122 +msgid "Remaining commands" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:124 +msgid "" +"This guide does not make suggestions of replacement solutions for those " +"commands:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:129 +msgid "``alias``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:130 +msgid "``bdist``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:131 +msgid "``bdist_dumb``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:132 +msgid "``bdist_egg``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:133 +msgid "``bdist_rpm``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:134 +msgid "``build``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:135 +msgid "``build_clib``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:136 +msgid "``build_ext``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:137 +msgid "``build_py``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:138 +msgid "``build_scripts``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:139 +msgid "``clean``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:140 +msgid "``dist_info``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:141 +msgid "``easy_install``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:142 +msgid "``editable_wheel``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:143 +msgid "``egg_info``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:144 +msgid "``install_data``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:145 +msgid "``install_egg_info``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:146 +msgid "``install_headers``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:147 +msgid "``install_lib``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:148 +msgid "``install_scripts``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:149 +msgid "``rotate``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:150 +msgid "``saveopts``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:151 +msgid "``setopt``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:152 +msgid "``upload_docs``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:156 +msgid "What about custom commands?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:158 +msgid "" +"Likewise, custom :file:`setup.py` commands are deprecated. The " +"recommendation is to migrate those custom commands to a task runner tool or " +"any other similar tool. Some examples of such tools are: chuy, make, nox or " +"tox, pydoit, pyinvoke, taskipy, and thx." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:166 +msgid "What about custom build steps?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:168 +msgid "" +"Custom build steps that for example either overwrite existing steps such as " +"``build_py``, ``build_ext``, and ``bdist_wheel`` or add new build steps are " +"not deprecated. Those will be automatically called as expected." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:175 +#: ../source/guides/modernize-setup-py-project.rst:21 +msgid "Should ``setup.py`` be deleted?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:177 +msgid "" +"Although the usage of :file:`setup.py` as an executable script is " +"deprecated, its usage as a configuration file for setuptools is absolutely " +"fine. There is likely no modification needed in :file:`setup.py`." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:183 +msgid "Is ``pyproject.toml`` mandatory?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:185 +msgid "" +"While it is not technically necessary yet, it is **STRONGLY RECOMMENDED** " +"for a project to have a :file:`pyproject.toml` file at the root of its " +"source tree with a content like this:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:196 +msgid "" +"The guide :ref:`modernize-setup-py-project` has more details about this." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:198 +msgid "" +"The standard fallback behavior for a :term:`build frontend ` " +"in the absence of a :file:`pyproject.toml` file and its ``[build-system]`` " +"table is to assume that the :term:`build backend ` is " +"setuptools." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:204 +msgid "Why? What does it all mean?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:206 +msgid "" +"One way to look at it is that the scope of setuptools has now been reduced " +"to the role of a build backend." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:211 +#: ../source/guides/modernize-setup-py-project.rst:244 +msgid "Where to read more about this?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:213 +msgid "" +"`Why you shouldn't invoke setup.py directly `__ by Paul Ganssle" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:215 +msgid ":doc:`setuptools:deprecated/commands`" +msgstr "" + +#: ../source/discussions/single-source-version.rst:5 +msgid "Single-sourcing the Project Version" +msgstr "" + +#: ../source/discussions/single-source-version.rst:7 +msgid "Complete" +msgstr "" + +#: ../source/discussions/single-source-version.rst:8 +msgid "2024-10-07" +msgstr "" + +#: ../source/discussions/single-source-version.rst:10 +msgid "" +"Many Python :term:`distribution packages ` publish a " +"single Python :term:`import package ` where it is desired " +"that the runtime ``__version__`` attribute on the import package report the " +"same version specifier as :func:`importlib.metadata.version` reports for the " +"distribution package (as described in :ref:`runtime-version-access`)." +msgstr "" + +#: ../source/discussions/single-source-version.rst:16 +msgid "" +"It is also frequently desired that this version information be derived from " +"a version control system *tag* (such as ``v1.2.3``) rather than being " +"manually updated in the source code." +msgstr "" + +#: ../source/discussions/single-source-version.rst:20 +msgid "" +"Some projects may choose to simply live with the data entry duplication, and " +"rely on automated testing to ensure the different values do not diverge." +msgstr "" + +#: ../source/discussions/single-source-version.rst:23 +msgid "" +"Alternatively, a project's chosen build system may offer a way to define a " +"single source of truth for the version number." +msgstr "" + +#: ../source/discussions/single-source-version.rst:26 +msgid "In general, the options are:" +msgstr "" + +#: ../source/discussions/single-source-version.rst:28 +msgid "" +"If the code is in a version control system (VCS), such as Git, then the " +"version can be extracted from the VCS." +msgstr "" + +#: ../source/discussions/single-source-version.rst:30 +msgid "" +"The version can be hard-coded into the :file:`pyproject.toml` file -- and " +"the build system can copy it into other locations it may be required." +msgstr "" + +#: ../source/discussions/single-source-version.rst:33 +msgid "" +"The version string can be hard-coded into the source code -- either in a " +"special purpose file, such as :file:`_version.txt` (which must then be " +"shipped as part of the project's source distribution package), or as an " +"attribute in a particular module, such as :file:`__init__.py`. The build " +"system can then extract it from the runtime location at build time." +msgstr "" + +#: ../source/discussions/single-source-version.rst:38 +msgid "Consult your build system's documentation for their recommended method." +msgstr "" + +#: ../source/discussions/single-source-version.rst:40 +msgid "" +"When the intention is that a distribution package and its associated import " +"package share the same version, it is recommended that the project include " +"an automated test case that ensures ``import_name.__version__`` and " +"``importlib.metadata.version(\"dist-name\")`` report the same value (note: " +"for many projects, ``import_name`` and ``dist-name`` will be the same name)." +msgstr "" + +#: ../source/discussions/single-source-version.rst:50 +msgid "Build System Version Handling" +msgstr "" + +#: ../source/discussions/single-source-version.rst:52 +msgid "" +"The following are links to some build system's documentation for handling " +"version strings." +msgstr "" + +#: ../source/discussions/single-source-version.rst:54 +msgid "`Flit `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:56 +msgid "`Hatchling `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:58 +msgid "" +"`PDM `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:60 +msgid "" +"`Setuptools `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:62 +msgid "`setuptools_scm `_" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:5 +msgid "src layout vs flat layout" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:7 +msgid "" +"The \"flat layout\" refers to organising a project's files in a folder or " +"repository, such that the various configuration files and :term:`import " +"packages ` are all in the top-level directory." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:25 +msgid "" +"The \"src layout\" deviates from the flat layout by moving the code that is " +"intended to be importable (i.e. ``import awesome_package``, also known " +"as :term:`import packages `) into a subdirectory. This " +"subdirectory is typically named ``src/``, hence \"src layout\"." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:45 +msgid "" +"Here's a breakdown of the important behaviour differences between the src " +"layout and the flat layout:" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:48 +msgid "" +"The src layout requires installation of the project to be able to run its " +"code, and the flat layout does not." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:51 +msgid "" +"This means that the src layout involves an additional step in the " +"development workflow of a project (typically, an :doc:`editable installation " +"` is used for development and a " +"regular installation is used for testing)." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:56 +msgid "" +"The src layout helps prevent accidental usage of the in-development copy of " +"the code." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:59 +msgid "" +"This is relevant since the Python interpreter includes the current working " +"directory as the first item on the import path. This means that if an import " +"package exists in the current working directory with the same name as an " +"installed import package, the variant from the current working directory " +"will be used. This can lead to subtle misconfiguration of the project's " +"packaging tooling, which could result in files not being included in a " +"distribution." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:66 +msgid "" +"The src layout helps avoid this by keeping import packages in a directory " +"separate from the root directory of the project, ensuring that the installed " +"copy is used." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:70 +msgid "" +"The src layout helps enforce that an :doc:`editable installation " +"` is only able to import files that " +"were meant to be importable." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:74 +msgid "" +"This is especially relevant when the editable installation is implemented " +"using a `path configuration file `_ that adds the directory to the import path." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:78 +msgid "" +"The flat layout would add the other project files (eg: ``README.md``, " +"``tox.ini``) and packaging/tooling configuration files (eg: ``setup.py``, " +"``noxfile.py``) on the import path. This would make certain imports work in " +"editable installations but not regular installations." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:86 +msgid "Running a command-line interface from source with src-layout" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:88 +msgid "" +"Due to the firstly mentioned specialty of the src layout, a command-line " +"interface can not be run directly from the :term:`source tree `, but requires installation of the package in :doc:`Development " +"Mode ` for testing purposes. Since " +"this can be unpractical in some situations, a workaround could be to prepend " +"the package folder to Python's :py:data:`sys.path` when called via " +"its :file:`__main__.py` file:" +msgstr "" + +#: ../source/discussions/versioning.rst:6 +#: ../source/specifications/simple-repository-api.rst:349 +msgid "Versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:8 +msgid "This discussion covers all aspects of versioning Python packages." +msgstr "" + +#: ../source/discussions/versioning.rst:12 +msgid "Valid version numbers" +msgstr "" + +#: ../source/discussions/versioning.rst:14 +msgid "" +"Different Python projects may use different versioning schemes based on the " +"needs of that particular project, but in order to be compatible with tools " +"like :ref:`pip`, all of them are required to comply with a flexible format " +"for version identifiers, for which the authoritative reference is " +"the :ref:`specification of version specifiers `. Here " +"are some examples of version numbers [#version-examples]_:" +msgstr "" + +#: ../source/discussions/versioning.rst:21 +msgid "A simple version (final release): ``1.2.0``" +msgstr "" + +#: ../source/discussions/versioning.rst:22 +msgid "A development release: ``1.2.0.dev1``" +msgstr "" + +#: ../source/discussions/versioning.rst:23 +msgid "An alpha release: ``1.2.0a1``" +msgstr "" + +#: ../source/discussions/versioning.rst:24 +msgid "A beta release: ``1.2.0b1``" +msgstr "" + +#: ../source/discussions/versioning.rst:25 +msgid "A release candidate: ``1.2.0rc1``" +msgstr "" + +#: ../source/discussions/versioning.rst:26 +msgid "A post-release: ``1.2.0.post1``" +msgstr "" + +#: ../source/discussions/versioning.rst:27 +msgid "" +"A post-release of an alpha release (possible, but discouraged): " +"``1.2.0a1.post1``" +msgstr "" + +#: ../source/discussions/versioning.rst:28 +msgid "A simple version with only two components: ``23.12``" +msgstr "" + +#: ../source/discussions/versioning.rst:29 +msgid "A simple version with just one component: ``42``" +msgstr "" + +#: ../source/discussions/versioning.rst:30 +msgid "A version with an epoch (discouraged): ``1!1.0``" +msgstr "" + +#: ../source/discussions/versioning.rst:32 +msgid "" +"Projects can use a cycle of pre-releases to support testing by their users " +"before a final release. In order, the steps are: alpha releases, beta " +"releases, release candidates, final release. Pip and other modern Python " +"package installers ignore pre-releases by default when deciding which " +"versions of dependencies to install, unless explicitly requested (e.g., with " +"``pip install pkg==1.1a3`` or ``pip install --pre pkg``)." +msgstr "" + +#: ../source/discussions/versioning.rst:39 +msgid "" +"The purpose of development releases is to support releases made early during " +"a development cycle, for example, a nightly build, or a build from the " +"latest source in a Linux distribution." +msgstr "" + +#: ../source/discussions/versioning.rst:43 +msgid "" +"Post-releases are used to address minor errors in a final release that do " +"not affect the distributed software, such as correcting an error in the " +"release notes. They should not be used for bug fixes; these should be done " +"with a new final release (e.g., incrementing the third component when using " +"semantic versioning)." +msgstr "" + +#: ../source/discussions/versioning.rst:49 +msgid "" +"Finally, epochs were intended to fix the sorting order when changing the " +"versioning scheme. For example, if a project was using calendar versioning, " +"with versions like ``23.12``, and switched to semantic versioning, with " +"versions like ``1.0``, the comparison between ``1.0`` and ``23.12`` would go " +"the wrong way. To correct this, the new version numbers would have an " +"explicit epoch, as in ``1!1.0``, in order to be treated as more recent than " +"the old version numbers. However, this is discouraged, and it is preferable " +"to use a higher version number that is unlikely to cause user confusion, " +"such as ``100.0``." +msgstr "" + +#: ../source/discussions/versioning.rst:60 +msgid "Semantic versioning vs. calendar versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:62 +msgid "" +"A versioning scheme is a formalized way to interpret the segments of a " +"version number, and to decide which should be the next version number for a " +"new release of a package. Two versioning schemes are commonly used for " +"Python packages, semantic versioning and calendar versioning." +msgstr "" + +#: ../source/discussions/versioning.rst:69 +msgid "" +"The decision which version number to choose is up to a project's maintainer. " +"This effectively means that version bumps reflect the maintainer's view. " +"That view may differ from the end-users' perception of what said formalized " +"versioning scheme promises them." +msgstr "" + +#: ../source/discussions/versioning.rst:75 +msgid "" +"There are known exceptions for selecting the next version number. The " +"maintainers may consciously choose to break the assumption that the last " +"version segment only contains backwards-compatible changes. One such case is " +"when a security vulnerability needs to be addressed. Security releases often " +"come in patch versions but contain breaking changes inevitably." +msgstr "" + +#: ../source/discussions/versioning.rst:85 +#: ../source/specifications/version-specifiers.rst:741 +msgid "Semantic versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:87 +msgid "" +"The idea of *semantic versioning* (or SemVer) is to use 3-part version " +"numbers, *major.minor.patch*, where the project author increments:" +msgstr "" + +#: ../source/discussions/versioning.rst:90 +msgid "*major* when they make incompatible API changes," +msgstr "" + +#: ../source/discussions/versioning.rst:91 +msgid "" +"*minor* when they add functionality in a backwards-compatible manner, and" +msgstr "" + +#: ../source/discussions/versioning.rst:92 +msgid "*patch*, when they make backwards-compatible bug fixes." +msgstr "" + +#: ../source/discussions/versioning.rst:94 +msgid "" +"A majority of Python projects use a scheme that resembles semantic " +"versioning. However, most projects, especially larger ones, do not strictly " +"adhere to semantic versioning, since many changes are technically breaking " +"changes but affect only a small fraction of users. Such projects tend to " +"increment the major number when the incompatibility is high, or to signal a " +"shift in the project, rather than for any tiny incompatibility [#semver-" +"strictness]_. Conversely, a bump of the major version number is sometimes " +"used to signal significant but backwards-compatible new features." +msgstr "" + +#: ../source/discussions/versioning.rst:104 +msgid "" +"For those projects that do use strict semantic versioning, this approach " +"allows users to make use of :ref:`compatible release version specifiers " +"`, with the ``~=`` operator. For " +"example, ``name ~= X.Y`` is roughly equivalent to ``name >= X.Y, == X.*``, " +"i.e., it requires at least release X.Y, and allows any later release with " +"greater Y as long as X is the same. Likewise, ``name ~= X.Y.Z`` is roughly " +"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 "" + +#: ../source/discussions/versioning.rst:113 +msgid "" +"Python projects adopting semantic versioning should abide by clauses 1-8 of " +"the `Semantic Versioning 2.0.0 specification `_." +msgstr "" + +#: ../source/discussions/versioning.rst:116 +msgid "" +"The popular :doc:`Sphinx ` documentation generator is an " +"example project that uses strict semantic versioning (:doc:`Sphinx " +"versioning policy `). The " +"famous :doc:`NumPy ` scientific computing package explicitly " +"uses \"loose\" semantic versioning, where releases incrementing the minor " +"version can contain backwards-incompatible API changes (:doc:`NumPy " +"versioning policy `)." +msgstr "" + +#: ../source/discussions/versioning.rst:125 +msgid "Calendar versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:127 +msgid "" +"Semantic versioning is not a suitable choice for all projects, such as those " +"with a regular time-based release cadence and a deprecation process that " +"provides warnings for a number of releases prior to removal of a feature." +msgstr "" + +#: ../source/discussions/versioning.rst:131 +msgid "" +"A key advantage of date-based versioning, or `calendar versioning " +"`_ (CalVer), is that it is straightforward to tell how old the base " +"feature set of a particular release is given just the version number." +msgstr "" + +#: ../source/discussions/versioning.rst:135 +msgid "" +"Calendar version numbers typically take the form *year.month* (for example, " +"23.12 for December 2023)." +msgstr "" + +#: ../source/discussions/versioning.rst:138 +msgid "" +":doc:`Pip `, the standard Python package installer, uses calendar " +"versioning." +msgstr "" + +#: ../source/discussions/versioning.rst:143 +msgid "Other schemes" +msgstr "" + +#: ../source/discussions/versioning.rst:145 +msgid "" +"Serial versioning refers to the simplest possible versioning scheme, which " +"consists of a single number incremented every release. While serial " +"versioning is very easy to manage as a developer, it is the hardest to track " +"as an end user, as serial version numbers convey little or no information " +"regarding API backwards compatibility." +msgstr "" + +#: ../source/discussions/versioning.rst:151 +msgid "" +"Combinations of the above schemes are possible. For example, a project may " +"combine date-based versioning with serial versioning to create a " +"*year.serial* numbering scheme that readily conveys the approximate age of a " +"release, but doesn't otherwise commit to a particular release cadence within " +"the year." +msgstr "" + +#: ../source/discussions/versioning.rst:158 +#: ../source/specifications/version-specifiers.rst:114 +msgid "Local version identifiers" +msgstr "" + +#: ../source/discussions/versioning.rst:160 +msgid "" +"Public version identifiers are designed to support distribution " +"via :term:`PyPI `. Python packaging tools also " +"support the notion of a :ref:`local version identifier `, which can be used to identify local development builds not " +"intended for publication, or modified variants of a release maintained by a " +"redistributor." +msgstr "" + +#: ../source/discussions/versioning.rst:166 +msgid "" +"A local version identifier takes the form of a public version identifier, " +"followed by \"+\" and a local version label. For example, a package with " +"Fedora-specific patches applied could have the version \"1.2.1+fedora.4\". " +"Another example is versions computed by setuptools-scm_, a setuptools plugin " +"that reads the version from Git data. In a Git repository with some commits " +"since the latest release, setuptools-scm generates a version like " +"\"0.5.dev1+gd00980f\", or if the repository has untracked changes, like " +"\"0.5.dev1+gd00980f.d20231217\"." +msgstr "" + +#: ../source/discussions/versioning.rst:178 +msgid "Accessing version information at runtime" +msgstr "" + +#: ../source/discussions/versioning.rst:180 +msgid "" +"Version information for all :term:`distribution packages ` that are locally available in the current environment can be " +"obtained at runtime using the standard " +"library's :func:`importlib.metadata.version` function::" +msgstr "" + +#: ../source/discussions/versioning.rst:187 +msgid "" +"Many projects also choose to version their top level :term:`import packages " +"` by providing a package level ``__version__`` attribute::" +msgstr "" + +#: ../source/discussions/versioning.rst:195 +msgid "" +"This technique can be particularly valuable for CLI applications which want " +"to ensure that version query invocations (such as ``pip -V``) run as quickly " +"as possible." +msgstr "" + +#: ../source/discussions/versioning.rst:199 +msgid "" +"Package publishers wishing to ensure their reported distribution package and " +"import package versions are consistent with each other can review " +"the :ref:`single-source-version` discussion for potential approaches to " +"doing so." +msgstr "" + +#: ../source/discussions/versioning.rst:203 +msgid "" +"As import packages and modules are not *required* to publish runtime version " +"information in this way (see the withdrawn proposal in :pep:`PEP 396 " +"<396>`), the ``__version__`` attribute should either only be queried with " +"interfaces that are known to provide it (such as a project querying its own " +"version or the version of one of its direct dependencies), or else the " +"querying code should be designed to handle the case where the attribute is " +"missing [#fallback-to-dist-version]_." +msgstr "" + +#: ../source/discussions/versioning.rst:211 +msgid "" +"Some projects may need to publish version information for external APIs that " +"aren't the version of the module itself. Such projects should define their " +"own project-specific ways of obtaining the relevant information at runtime. " +"For example, the standard library's :mod:`ssl` module offers multiple ways " +"to access the underlying OpenSSL library version::" +msgstr "" + +#: ../source/discussions/versioning.rst:226 +msgid "" +"Some more examples of unusual version numbers are given in a `blog post " +"`_ by Seth Larson." +msgstr "" + +#: ../source/discussions/versioning.rst:229 +msgid "" +"For some personal viewpoints on this issue, see these blog posts: `by Hynek " +"Schlawak `_, `by Donald Stufft `_, `by Bernát Gábor `_, `by Brett Cannon " +"`_. For a humoristic take, read about ZeroVer_." +msgstr "" + +#: ../source/discussions/versioning.rst:235 +msgid "" +"A full list mapping the top level names available for import to the " +"distribution packages that provide those import packages and modules may be " +"obtained through the standard " +"library's :func:`importlib.metadata.packages_distributions` function. This " +"means that even code that is attempting to infer a version to report for all " +"importable top-level names has a means to fall back to reporting the " +"distribution version information if no ``__version__`` attribute is defined. " +"Only standard library modules, and modules added via means other than Python " +"package installation would fail to have version information reported in that " +"case." +msgstr "" + +#: ../source/flow.rst:3 +msgid "The Packaging Flow" +msgstr "" + +#: ../source/flow.rst:5 +msgid "" +"The document aims to outline the flow involved in publishing/distributing " +"a :term:`distribution package `, usually to the " +"`Python Package Index (PyPI)`_. It is written for package publishers, who " +"are assumed to be the package author." +msgstr "" + +#: ../source/flow.rst:12 +msgid "" +"While the :doc:`tutorial ` walks through the " +"process of preparing a simple package for release, it does not fully " +"enumerate what steps and files are required, and for what purpose." +msgstr "" + +#: ../source/flow.rst:16 +msgid "" +"Publishing a package requires a flow from the author's source code to an end " +"user's Python environment. The steps to achieve this are:" +msgstr "" + +#: ../source/flow.rst:19 +msgid "" +"Have a source tree containing the package. This is typically a checkout from " +"a version control system (VCS)." +msgstr "" + +#: ../source/flow.rst:22 +msgid "" +"Prepare a configuration file describing the package metadata (name, version " +"and so forth) and how to create the build artifacts. For most packages, this " +"will be a :file:`pyproject.toml` file, maintained manually in the source " +"tree." +msgstr "" + +#: ../source/flow.rst:27 +msgid "" +"Create build artifacts to be sent to the package distribution service " +"(usually PyPI); these will normally be a :term:`source distribution " +"(\"sdist\") ` and one or " +"more :term:`built distributions (\"wheels\") `. These " +"are made by a build tool using the configuration file from the previous " +"step. Often there is just one generic wheel for a pure Python package." +msgstr "" + +#: ../source/flow.rst:35 +msgid "Upload the build artifacts to the package distribution service." +msgstr "" + +#: ../source/flow.rst:37 +msgid "" +"At that point, the package is present on the package distribution service. " +"To use the package, end users must:" +msgstr "" + +#: ../source/flow.rst:40 +msgid "" +"Download one of the package's build artifacts from the package distribution " +"service." +msgstr "" + +#: ../source/flow.rst:43 +msgid "" +"Install it in their Python environment, usually in its ``site-packages`` " +"directory. This step may involve a build/compile step which, if needed, must " +"be described by the package metadata." +msgstr "" + +#: ../source/flow.rst:47 +msgid "" +"These last 2 steps are typically performed by :ref:`pip` when an end user " +"runs ``pip install``." +msgstr "" + +#: ../source/flow.rst:50 +msgid "The steps above are described in more detail below." +msgstr "" + +#: ../source/flow.rst:53 +msgid "The source tree" +msgstr "" + +#: ../source/flow.rst:55 +msgid "" +"The source tree contains the package source code, usually a checkout from a " +"VCS. The particular version of the code used to create the build artifacts " +"will typically be a checkout based on a tag associated with the version." +msgstr "" + +#: ../source/flow.rst:60 +msgid "The configuration file" +msgstr "" + +#: ../source/flow.rst:62 +msgid "" +"The configuration file depends on the tool used to create the build " +"artifacts. The standard practice is to use a :file:`pyproject.toml` file in " +"the `TOML format`_." +msgstr "" + +#: ../source/flow.rst:68 +msgid "" +"At a minimum, the :file:`pyproject.toml` file needs a ``[build-system]`` " +"table specifying your build tool. There are many build tools available, " +"including but not limited " +"to :ref:`flit`, :ref:`hatch`, :ref:`pdm`, :ref:`poetry`, :ref:`setuptools`, " +"`trampolim`_, and `whey`_. Each tool's documentation will show what to put " +"in the ``[build-system]`` table." +msgstr "" + +#: ../source/flow.rst:77 +msgid "For example, here is a table for using :ref:`hatch`:" +msgstr "" + +#: ../source/flow.rst:85 +msgid "" +"With such a table in the :file:`pyproject.toml` file, a \":term:`frontend " +"`\" tool like :ref:`build` can run your chosen build tool's " +"\":term:`backend `\" to create the build artifacts. Your " +"build tool may also provide its own frontend. An install tool " +"like :ref:`pip` also acts as a frontend when it runs your build tool's " +"backend to install from a source distribution." +msgstr "" + +#: ../source/flow.rst:94 +msgid "" +"The particular build tool you choose dictates what additional information is " +"required in the :file:`pyproject.toml` file. For example, you might specify:" +msgstr "" + +#: ../source/flow.rst:97 +msgid "" +"a ``[project]`` table containing project :doc:`Core Metadata ` (name, version, author and so forth)," +msgstr "" + +#: ../source/flow.rst:101 +msgid "a ``[tool]`` table containing tool-specific configuration options." +msgstr "" + +#: ../source/flow.rst:103 +msgid "" +"Refer to the :ref:`pyproject.toml guide ` for a " +"complete guide to ``pyproject.toml`` configuration." +msgstr "" + +#: ../source/flow.rst:108 +msgid "Build artifacts" +msgstr "" + +#: ../source/flow.rst:111 +msgid "The source distribution (sdist)" +msgstr "" + +#: ../source/flow.rst:113 +msgid "" +"A source distribution contains enough to install the package from source in " +"an end user's Python environment. As such, it needs the package source, and " +"may also include tests and documentation. These are useful for end users " +"wanting to develop your sources, and for end user systems where some local " +"compilation step is required (such as a C extension)." +msgstr "" + +#: ../source/flow.rst:119 ../source/flow.rst:143 +msgid "" +"The :ref:`build` package knows how to invoke your build tool to create one " +"of these:" +msgstr "" + +#: ../source/flow.rst:126 +msgid "" +"Or, your build tool may provide its own interface for creating an sdist." +msgstr "" + +#: ../source/flow.rst:130 +msgid "The built distributions (wheels)" +msgstr "" + +#: ../source/flow.rst:132 +msgid "" +"A built distribution contains only the files needed for an end user's Python " +"environment. No compilation steps are required during the install, and the " +"wheel file can simply be unpacked into the ``site-packages`` directory. This " +"makes the install faster and more convenient for end users." +msgstr "" + +#: ../source/flow.rst:137 +msgid "" +"A pure Python package typically needs only one \"generic\" wheel. A package " +"with compiled binary extensions needs a wheel for each supported combination " +"of Python interpreter, operating system, and CPU architecture that it " +"supports. If a suitable wheel file is not available, tools like :ref:`pip` " +"will fall back to installing the source distribution." +msgstr "" + +#: ../source/flow.rst:150 +msgid "Or, your build tool may provide its own interface for creating a wheel." +msgstr "" + +#: ../source/flow.rst:154 +msgid "" +"The default behaviour of :ref:`build` is to make both an sdist and a wheel " +"from the source in the current directory; the above examples are " +"deliberately specific." +msgstr "" + +#: ../source/flow.rst:159 +msgid "Upload to the package distribution service" +msgstr "" + +#: ../source/flow.rst:161 +msgid "" +"The :ref:`twine` tool can upload build artifacts to PyPI for distribution, " +"using a command like:" +msgstr "" + +#: ../source/flow.rst:168 +msgid "Or, your build tool may provide its own interface for uploading." +msgstr "" + +#: ../source/flow.rst:171 +msgid "Download and install" +msgstr "" + +#: ../source/flow.rst:173 +msgid "" +"Now that the package is published, end users can download and install the " +"package into their Python environment. Typically this is done " +"with :ref:`pip`, using a command like:" +msgstr "" + +#: ../source/flow.rst:181 +msgid "" +"End users may also use other tools like :ref:`pipenv`, :ref:`poetry`, " +"or :ref:`pdm`." +msgstr "" + +#: ../source/glossary.rst:3 +msgid "Glossary" +msgstr "" + +#: ../source/glossary.rst:8 +msgid "Binary Distribution" +msgstr "" + +#: ../source/glossary.rst:11 +msgid "" +"A specific kind of :term:`Built Distribution` that contains compiled " +"extensions." +msgstr "" + +#: ../source/glossary.rst:14 +msgid "Build Backend" +msgstr "" + +#: ../source/glossary.rst:17 +msgid "" +"A library that takes a :term:`source tree ` and builds " +"a :term:`source distribution ` " +"or :term:`built distribution ` from it. The build is " +"delegated to the backend by a :term:`frontend `. All " +"backends offer a standardized interface." +msgstr "" + +#: ../source/glossary.rst:24 +msgid "" +"Examples of build backends are :ref:`flit's flit-core `, :ref:`hatch's " +"hatchling `, :ref:`maturin`, :ref:`meson-python`, :ref:`scikit-build-" +"core`, and :ref:`setuptools`." +msgstr "" + +#: ../source/glossary.rst:32 +msgid "Build Frontend" +msgstr "" + +#: ../source/glossary.rst:35 +msgid "" +"A tool that users might run that takes arbitrary source trees " +"or :term:`source distributions ` and " +"builds source distributions or :term:`wheels ` from them. The actual " +"building is delegated to each source tree's :term:`build backend `." +msgstr "" + +#: ../source/glossary.rst:42 +msgid "Examples of build frontends are :ref:`pip` and :ref:`build`." +msgstr "" + +#: ../source/glossary.rst:44 +msgid "Built Distribution" +msgstr "" + +#: ../source/glossary.rst:47 +msgid "" +"A :term:`Distribution ` format containing files and " +"metadata that only need to be moved to the correct location on the target " +"system, to be installed. :term:`Wheel` is such a format, " +"whereas :term:`Source Distribution ` is " +"not, in that it requires a build step before it can be installed. This " +"format does not imply that Python files have to be precompiled " +"(:term:`Wheel` intentionally does not include compiled Python files). " +"See :ref:`package-formats` for more information." +msgstr "" + +#: ../source/glossary.rst:56 +msgid "Built Metadata" +msgstr "" + +#: ../source/glossary.rst:59 +msgid "" +"The concrete form :term:`Core Metadata` takes when included inside an " +"installed :term:`Project` (``METADATA`` file) or a :term:`Distribution " +"Archive` (``PKG-INFO`` in a :term:`Sdist ` and ``METADATA`` in a :term:`Wheel`)." +msgstr "" + +#: ../source/glossary.rst:66 +msgid "Core Metadata" +msgstr "" + +#: ../source/glossary.rst:69 +msgid "" +"The :ref:`specification ` and the set of :term:`Core Metadata " +"Field`\\s it defines that describe key static attributes of " +"a :term:`Distribution Package` or :term:`Installed Project`." +msgstr "" + +#: ../source/glossary.rst:74 +msgid "Core Metadata Field" +msgstr "" + +#: ../source/glossary.rst:77 +msgid "" +"A single key-value pair (or sequence of such with the same name, for " +"multiple-use fields) defined in the :term:`Core Metadata` spec and stored in " +"the :term:`Built Metadata`. Notably, distinct from a :term:`Pyproject " +"Metadata Key`." +msgstr "" + +#: ../source/glossary.rst:83 +msgid "Distribution Archive" +msgstr "" + +#: ../source/glossary.rst:86 +msgid "" +"The physical distribution artifact (i.e. a file on disk) for " +"a :term:`Distribution Package`." +msgstr "" + +#: ../source/glossary.rst:89 +msgid "Distribution Package" +msgstr "" + +#: ../source/glossary.rst:92 +msgid "" +"A versioned archive file that contains Python :term:`packages `, :term:`modules `, and other resource files that are used " +"to distribute a :term:`Release`. The archive file is what an end-user will " +"download from the internet and install." +msgstr "" + +#: ../source/glossary.rst:97 +msgid "" +"A distribution package is more commonly referred to with the single words " +"\"package\" or \"distribution\", but this guide may use the expanded term " +"when more clarity is needed to prevent confusion with an :term:`Import " +"Package` (which is also commonly called a \"package\") or another kind of " +"distribution (e.g. a Linux distribution or the Python language " +"distribution), which are often referred to with the single term " +"\"distribution\". See :ref:`distribution-package-vs-import-package` for a " +"breakdown of the differences." +msgstr "" + +#: ../source/glossary.rst:105 +msgid "Egg" +msgstr "" + +#: ../source/glossary.rst:108 +msgid "" +"A :term:`Built Distribution` format introduced by :ref:`setuptools`, which " +"has been replaced by :term:`Wheel`. For details, see :ref:`egg-format`." +msgstr "" + +#: ../source/glossary.rst:111 +msgid "Extension Module" +msgstr "" + +#: ../source/glossary.rst:114 +msgid "" +"A :term:`Module` written in the low-level language of the Python " +"implementation: C/C++ for Python, Java for Jython. Typically contained in a " +"single dynamically loadable pre-compiled file, e.g. a shared object (.so) " +"file for Python extensions on Unix, a DLL (given the .pyd extension) for " +"Python extensions on Windows, or a Java class file for Jython extensions." +msgstr "" + +#: ../source/glossary.rst:121 +msgid "Import Package" +msgstr "" + +#: ../source/glossary.rst:124 +msgid "" +"A Python module which can contain other modules or recursively, other " +"packages." +msgstr "" + +#: ../source/glossary.rst:127 +msgid "" +"An import package is more commonly referred to with the single word " +"\"package\", but this guide will use the expanded term when more clarity is " +"needed to prevent confusion with a :term:`Distribution Package` which is " +"also commonly called a \"package\". See :ref:`distribution-package-vs-import-" +"package` for a breakdown of the differences." +msgstr "" + +#: ../source/glossary.rst:133 +msgid "Installed Project" +msgstr "" + +#: ../source/glossary.rst:136 +msgid "" +"A :term:`Project` that is installed for use with a Python interpreter " +"or :term:`Virtual Environment`, as described in the " +"specification :ref:`recording-installed-packages`." +msgstr "" + +#: ../source/glossary.rst:140 +msgid "Known Good Set (KGS)" +msgstr "" + +#: ../source/glossary.rst:143 +msgid "" +"A set of distributions at specified versions which are compatible with each " +"other. Typically a test suite will be run which passes all tests before a " +"specific set of packages is declared a known good set. This term is commonly " +"used by frameworks and toolkits which are comprised of multiple individual " +"distributions." +msgstr "" + +#: ../source/glossary.rst:149 +msgid "License Classifier" +msgstr "" + +#: ../source/glossary.rst:152 +msgid "" +"A PyPI Trove classifier (as :ref:`described ` in " +"the :term:`Core Metadata` specification) which begins with ``License ::``." +msgstr "" + +#: ../source/glossary.rst:157 ../source/specifications/license-expression.rst:3 +msgid "License Expression" +msgstr "" + +#: ../source/glossary.rst:158 +msgid "SPDX Expression" +msgstr "" + +#: ../source/glossary.rst:161 +msgid "" +"A string with valid SPDX license expression syntax, including one or more " +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" +msgstr "" + +#: ../source/glossary.rst:169 +msgid "License Identifier" +msgstr "" + +#: ../source/glossary.rst:170 +msgid "SPDX Identifier" +msgstr "" + +#: ../source/glossary.rst:173 +msgid "" +"A valid SPDX short-form license identifier, originally specified " +"in :pep:`639`. This includes all valid SPDX identifiers and the custom " +"``LicenseRef-[idstring]`` strings conforming to the SPDX specification. " +"Examples: ``MIT``, ``GPL-3.0-only``, ``LicenseRef-My-Custom-License``" +msgstr "" + +#: ../source/glossary.rst:183 +msgid "Module" +msgstr "" + +#: ../source/glossary.rst:186 +msgid "" +"The basic unit of code reusability in Python, existing in one of two " +"types: :term:`Pure Module`, or :term:`Extension Module`." +msgstr "" + +#: ../source/glossary.rst:189 +msgid "Package Index" +msgstr "" + +#: ../source/glossary.rst:192 +msgid "" +"A repository of distributions with a web interface to " +"automate :term:`package ` discovery and consumption." +msgstr "" + +#: ../source/glossary.rst:195 +msgid "Per Project Index" +msgstr "" + +#: ../source/glossary.rst:198 +msgid "" +"A private or other non-canonical :term:`Package Index` indicated by a " +"specific :term:`Project` as the index preferred or required to resolve " +"dependencies of that project." +msgstr "" + +#: ../source/glossary.rst:202 ../source/guides/hosting-your-own-index.rst:62 +#: ../source/guides/index-mirrors-and-caches.rst:52 +msgid "Project" +msgstr "" + +#: ../source/glossary.rst:205 +msgid "" +"A library, framework, script, plugin, application, or collection of data or " +"other resources, or some combination thereof that is intended to be packaged " +"into a :term:`Distribution `." +msgstr "" + +#: ../source/glossary.rst:209 +msgid "" +"Since most projects create :term:`Distributions ` " +"using either :pep:`518` ``build-system``, :ref:`distutils` " +"or :ref:`setuptools`, another practical way to define projects currently is " +"something that contains a :term:`pyproject.toml`, :term:`setup.py`, " +"or :term:`setup.cfg` file at the root of the project source directory." +msgstr "" + +#: ../source/glossary.rst:215 +msgid "" +"Python projects must have unique names, which are registered on :term:`PyPI " +"`. Each project will then contain one or " +"more :term:`Releases `, and each release may comprise one or " +"more :term:`distributions `." +msgstr "" + +#: ../source/glossary.rst:220 +msgid "" +"Note that there is a strong convention to name a project after the name of " +"the package that is imported to run that project. However, this doesn't have " +"to hold true. It's possible to install a distribution from the project 'foo' " +"and have it provide a package importable only as 'bar'." +msgstr "" + +#: ../source/glossary.rst:226 +msgid "Project Root Directory" +msgstr "" + +#: ../source/glossary.rst:229 +msgid "" +"The filesystem directory in which a :term:`Project`'s :term:`source tree " +"` is located." +msgstr "" + +#: ../source/glossary.rst:232 +msgid "Project Source Tree" +msgstr "" + +#: ../source/glossary.rst:235 +msgid "" +"The on-disk format of a :term:`Project` used for development, containing its " +"raw source code before being packaged into a :term:`Source Distribution " +"` or :term:`Built Distribution`." +msgstr "" + +#: ../source/glossary.rst:241 +msgid "Project Source Metadata" +msgstr "" + +#: ../source/glossary.rst:244 +msgid "" +"Metadata defined by the package author in a :term:`Project`'s :term:`source " +"tree `, to be transformed into :term:`Core Metadata " +"field`\\s in the :term:`Built Metadata` by the project's :term:`build " +"backend `. Can be written as :term:`Pyproject Metadata`, or " +"in a tool-specific format (under the ``[tool]`` table in ``pyproject.toml``, " +"or in a tool's own configuration file)." +msgstr "" + +#: ../source/glossary.rst:254 +msgid "Pure Module" +msgstr "" + +#: ../source/glossary.rst:257 +msgid "" +"A :term:`Module` written in Python and contained in a single ``.py`` file " +"(and possibly associated ``.pyc`` and/or ``.pyo`` files)." +msgstr "" + +#: ../source/glossary.rst:260 +msgid "Pyproject Metadata" +msgstr "" + +#: ../source/glossary.rst:263 +msgid "" +"The :term:`Project Source Metadata` format defined by the :ref:`declaring-" +"project-metadata` specification and originally introduced in :pep:`621`, " +"stored as :term:`Pyproject Metadata Key`\\s under the ``[project]`` table of " +"a :term:`pyproject.toml` file. Notably, *not* a tool-specific source " +"metadata format under the ``[tool]`` table in ``pyproject.toml``." +msgstr "" + +#: ../source/glossary.rst:271 +msgid "Pyproject Metadata Key" +msgstr "" + +#: ../source/glossary.rst:274 +msgid "" +"A top-level TOML key in the ``[project]`` table in ``pyproject.toml``; part " +"of the :term:`Pyproject Metadata`. Notably, distinct from a :term:`Core " +"Metadata Field`." +msgstr "" + +#: ../source/glossary.rst:278 +msgid "Pyproject Metadata Subkey" +msgstr "" + +#: ../source/glossary.rst:281 +msgid "" +"A second-level TOML key under a table-valued :term:`Pyproject Metadata Key`." +msgstr "" + +#: ../source/glossary.rst:284 +msgid "Python Packaging Authority (PyPA)" +msgstr "" + +#: ../source/glossary.rst:287 +msgid "" +"PyPA is a working group that maintains many of the relevant projects in " +"Python packaging. They maintain a site at :doc:`pypa.io `, host " +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." +msgstr "" + +#: ../source/glossary.rst:295 +msgid "Python Package Index (PyPI)" +msgstr "" + +#: ../source/glossary.rst:298 +msgid "" +"`PyPI `_ is the default :term:`Package Index` for the " +"Python community. It is open to all Python developers to consume and " +"distribute their distributions." +msgstr "" + +#: ../source/glossary.rst:301 +msgid "pypi.org" +msgstr "" + +#: ../source/glossary.rst:304 +msgid "" +"`pypi.org `_ is the domain name for the :term:`Python " +"Package Index (PyPI)`. It replaced the legacy index domain name, " +"``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." +msgstr "" + +#: ../source/glossary.rst:308 +msgid "pyproject.toml" +msgstr "" + +#: ../source/glossary.rst:311 +msgid "" +"The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." +msgstr "" + +#: ../source/glossary.rst:313 +msgid "Release" +msgstr "" + +#: ../source/glossary.rst:316 +msgid "" +"A snapshot of a :term:`Project` at a particular point in time, denoted by a " +"version identifier." +msgstr "" + +#: ../source/glossary.rst:319 +msgid "" +"Making a release may entail the publishing of multiple :term:`Distributions " +"`. For example, if version 1.0 of a project was " +"released, it could be available in both a source distribution format and a " +"Windows installer distribution format." +msgstr "" + +#: ../source/glossary.rst:324 +msgid "Requirement" +msgstr "" + +#: ../source/glossary.rst:327 +msgid "" +"A specification for a :term:`package ` to be " +"installed. :ref:`pip`, the :term:`PYPA ` " +"recommended installer, allows various forms of specification that can all be " +"considered a \"requirement\". For more information, see the :ref:`pip:pip " +"install` reference." +msgstr "" + +#: ../source/glossary.rst:333 +msgid "Requirement Specifier" +msgstr "" + +#: ../source/glossary.rst:336 +msgid "" +"A format used by :ref:`pip` to install packages from a :term:`Package " +"Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " +"For example, \"foo>=1.3\" is a requirement specifier, where \"foo\" is the " +"project name, and the \">=1.3\" portion is the :term:`Version Specifier`" +msgstr "" + +#: ../source/glossary.rst:341 +msgid "Requirements File" +msgstr "" + +#: ../source/glossary.rst:344 +msgid "" +"A file containing a list of :term:`Requirements ` that can be " +"installed using :ref:`pip`. For more information, see the :ref:`pip` docs " +"on :ref:`pip:Requirements Files`." +msgstr "" + +#: ../source/glossary.rst:348 +msgid "Root License Directory" +msgstr "" + +#: ../source/glossary.rst:349 +msgid "License Directory" +msgstr "" + +#: ../source/glossary.rst:352 +msgid "" +"The directory under which license files are stored in a :term:`Project " +"Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " +"a :term:`Project Source Tree` or :term:`Source Distribution (or \"sdist\")`, " +"this is the :term:`Project Root Directory`. For a :term:`Built Distribution` " +"or :term:`Installed Project`, this is the :file:`.dist-info/licenses/` " +"directory of the wheel archive or project folder respectively. Also, the " +"root directory that paths recorded in the ``License-File`` :term:`Core " +"Metadata Field` are relative to." +msgstr "" + +#: ../source/glossary.rst:365 +#: ../source/guides/distributing-packages-using-setuptools.rst:59 +msgid "setup.py" +msgstr "" + +#: ../source/glossary.rst:366 +#: ../source/guides/distributing-packages-using-setuptools.rst:80 +msgid "setup.cfg" +msgstr "" + +#: ../source/glossary.rst:369 +msgid "" +"The project specification files for :ref:`distutils` and :ref:`setuptools`. " +"See also :term:`pyproject.toml`." +msgstr "" + +#: ../source/glossary.rst:372 +msgid "Source Archive" +msgstr "" + +#: ../source/glossary.rst:375 +msgid "" +"An archive containing the raw source code for a :term:`Release`, prior to " +"creation of a :term:`Source Distribution ` or :term:`Built Distribution`." +msgstr "" + +#: ../source/glossary.rst:379 +msgid "Source Distribution (or \"sdist\")" +msgstr "" + +#: ../source/glossary.rst:382 +msgid "" +"A :term:`distribution ` format (usually generated " +"using ``python -m build --sdist``) that provides metadata and the essential " +"source files needed for installing by a tool like :ref:`pip`, or for " +"generating a :term:`Built Distribution`. See :ref:`package-formats` for more " +"information." +msgstr "" + +#: ../source/glossary.rst:388 +msgid "System Package" +msgstr "" + +#: ../source/glossary.rst:391 +msgid "" +"A package provided in a format native to the operating system, e.g. an rpm " +"or dpkg file." +msgstr "" + +#: ../source/glossary.rst:394 +msgid "Version Specifier" +msgstr "" + +#: ../source/glossary.rst:397 +msgid "" +"The version component of a :term:`Requirement Specifier`. For example, the " +"\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " +"specification ` for a full description of the specifiers " +"that Python packaging currently supports. Support for this specification " +"was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." +msgstr "" + +#: ../source/glossary.rst:402 +msgid "Virtual Environment" +msgstr "" + +#: ../source/glossary.rst:405 +msgid "" +"An isolated Python environment that allows packages to be installed for use " +"by a particular application, rather than being installed system wide. For " +"more information, see the section on :ref:`Creating and using Virtual " +"Environments`." +msgstr "" + +#: ../source/glossary.rst:410 +msgid "Wheel Format" +msgstr "" + +#: ../source/glossary.rst:411 +msgid "Wheel" +msgstr "" + +#: ../source/glossary.rst:414 +msgid "" +"The standard :term:`Built Distribution` format originally introduced " +"in :pep:`427` and defined by the :ref:`binary-distribution-format` " +"specification. See :ref:`package-formats` for more information. Not to be " +"confused with its reference implementation, the :term:`Wheel Project`." +msgstr "" + +#: ../source/glossary.rst:421 +msgid "Wheel Project" +msgstr "" + +#: ../source/glossary.rst:424 +msgid "" +"The PyPA reference implementation of the :term:`Wheel Format`; " +"see :ref:`wheel`." +msgstr "" + +#: ../source/glossary.rst:426 +msgid "Working Set" +msgstr "" + +#: ../source/glossary.rst:429 +msgid "" +"A collection of :term:`distributions ` available for " +"importing. These are the distributions that are on the `sys.path` variable. " +"At most, one :term:`Distribution ` for a project is " +"possible in a working set." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:5 +msgid "Analyzing PyPI package downloads" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:7 +msgid "" +"This section covers how to use the public PyPI download statistics dataset " +"to learn more about downloads of a package (or packages) hosted on PyPI. For " +"example, you can use it to discover the distribution of Python versions used " +"to download a package." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:14 +#: ../source/guides/supporting-windows-using-appveyor.rst:17 +msgid "Background" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:16 +msgid "PyPI does not display download statistics for a number of reasons: [#]_" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:18 +msgid "" +"**Inefficient to make work with a Content Distribution Network (CDN):** " +"Download statistics change constantly. Including them in project pages, " +"which are heavily cached, would require invalidating the cache more often, " +"and reduce the overall effectiveness of the cache." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:23 +msgid "" +"**Highly inaccurate:** A number of things prevent the download counts from " +"being accurate, some of which include:" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:26 +msgid "``pip``'s download cache (lowers download counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:27 +msgid "" +"Internal or unofficial mirrors (can both raise or lower download counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:28 +msgid "Packages not hosted on PyPI (for comparisons sake)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:29 +msgid "" +"Unofficial scripts or attempts at download count inflation (raises download " +"counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:31 +msgid "Known historical data quality issues (lowers download counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:33 +msgid "" +"**Not particularly useful:** Just because a project has been downloaded a " +"lot doesn't mean it's good; Similarly just because a project hasn't been " +"downloaded a lot doesn't mean it's bad!" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:37 +msgid "" +"In short, because its value is low for various reasons, and the tradeoffs " +"required to make it work are high, it has been not an effective use of " +"limited resources." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:42 +msgid "Public dataset" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:44 +msgid "" +"As an alternative, the `Linehaul project `__ streams download logs from PyPI to `Google BigQuery`_ " +"[#]_, where they are stored as a public dataset." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:49 +msgid "Getting set up" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:51 +msgid "" +"In order to use `Google BigQuery`_ to query the `public PyPI download " +"statistics dataset`_, you'll need a Google account and to enable the " +"BigQuery API on a Google Cloud Platform project. You can run up to 1TB of " +"queries per month `using the BigQuery free tier without a credit card " +"`__" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:57 +msgid "Navigate to the `BigQuery web UI`_." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:58 +msgid "Create a new project." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:59 +msgid "" +"Enable the `BigQuery API `__." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:62 +msgid "" +"For more detailed instructions on how to get started with BigQuery, check " +"out the `BigQuery quickstart guide `__." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:68 +msgid "Data schema" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:70 +msgid "" +"Linehaul writes an entry in a ``bigquery-public-data.pypi.file_downloads`` " +"table for each download. The table contains information about what file was " +"downloaded and how it was downloaded. Some useful columns from the `table " +"schema `__ include:" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:77 +msgid "Column" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:77 +#: ../source/specifications/core-metadata.rst:206 +#: ../source/specifications/well-known-project-urls.rst:106 +msgid "Description" +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:242 +#: ../source/specifications/version-specifiers.rst:1088 +msgid "Examples" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:79 +msgid "timestamp" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:79 +msgid "Date and time" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:79 +msgid "``2020-03-09 00:33:03 UTC``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:81 +msgid "file.project" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:81 +msgid "Project name" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:81 +msgid "``pipenv``, ``nose``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:83 +msgid "file.version" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:83 +msgid "Package version" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:83 +msgid "``0.1.6``, ``1.4.2``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:85 +msgid "details.installer.name" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:85 +msgid "Installer" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:85 +msgid "pip, :ref:`bandersnatch`" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:87 +msgid "details.python" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:87 +msgid "Python version" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:87 +msgid "``2.7.12``, ``3.6.4``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:92 +msgid "Useful queries" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:94 +msgid "" +"Run queries in the `BigQuery web UI`_ by clicking the \"Compose query\" " +"button." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:96 +msgid "" +"Note that the rows are stored in a partitioned table, which helps limit the " +"cost of queries. These example queries analyze downloads from recent history " +"by filtering on the ``timestamp`` column." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:101 +msgid "Counting package downloads" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:103 +msgid "" +"The following query counts the total number of downloads for the project " +"\"pytest\"." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:118 +#: ../source/guides/analyzing-pypi-package-downloads.rst:139 +#: ../source/guides/analyzing-pypi-package-downloads.rst:167 +#: ../source/guides/analyzing-pypi-package-downloads.rst:204 +msgid "num_downloads" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:120 +msgid "26190085" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:123 +msgid "" +"To count downloads from pip only, filter on the ``details.installer.name`` " +"column." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:141 +msgid "24334215" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:145 +msgid "Package downloads over time" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:147 +msgid "" +"To group by monthly downloads, use the ``TIMESTAMP_TRUNC`` function. Also " +"filtering by this column reduces corresponding costs." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:167 +msgid "month" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:169 +msgid "1956741" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:169 +msgid "2018-01-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:171 +msgid "2344692" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:171 +msgid "2017-12-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:173 +msgid "1730398" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:173 +msgid "2017-11-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:175 +msgid "2047310" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:175 +msgid "2017-10-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:177 +msgid "1744443" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:177 +msgid "2017-09-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:179 +msgid "1916952" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:179 +msgid "2017-08-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:183 +msgid "Python versions over time" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:185 +msgid "" +"Extract the Python version from the ``details.python`` column. Warning: This " +"query processes over 500 GB of data." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:204 +msgid "python" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:206 +msgid "3.7" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:206 +msgid "18051328726" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:208 +msgid "3.6" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:208 +msgid "9635067203" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:210 +msgid "3.8" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:210 +msgid "7781904681" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:212 +msgid "2.7" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:212 +msgid "6381252241" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:214 +msgid "null" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:214 +msgid "2026630299" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:216 +msgid "3.5" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:216 +msgid "1894153540" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:221 +msgid "Getting absolute links to artifacts" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:223 +msgid "" +"It's sometimes helpful to be able to get the absolute links to download " +"artifacts from PyPI based on their hashes, e.g. if a particular project or " +"release has been deleted from PyPI. The metadata table includes the ``path`` " +"column, which includes the hash and artifact filename." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:229 +msgid "" +"The URL generated here is not guaranteed to be stable, but currently aligns " +"with the URL where PyPI artifacts are hosted." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:242 +msgid "url" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:244 +msgid "" +"https://files.pythonhosted.org/packages/eb/" +"45/79be82bdeafcecb9dca474cad4003e32ef8e4a0dec6abbd4145ccb02abe1/" +"sampleproject-1.2.0.tar.gz" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:246 +msgid "" +"https://files.pythonhosted.org/packages/56/0a/" +"178e8bbb585ec5b13af42dae48b1d7425d6575b3ff9b02e5ec475e38e1d6/" +"sampleproject_nomura-1.2.0-py2.py3-none-any.whl" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:248 +msgid "" +"https://files.pythonhosted.org/packages/" +"63/88/3200eeaf22571f18d2c41e288862502e33365ccbdc12b892db23f51f8e70/" +"sampleproject_nomura-1.2.0.tar.gz" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:250 +msgid "" +"https://files.pythonhosted.org/packages/21/" +"e9/2743311822e71c0756394b6c5ab15cb64ca66c78c6c6a5cd872c9ed33154/" +"sampleproject_doubleyoung18-1.3.0-py2.py3-none-any.whl" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:252 +msgid "" +"https://files.pythonhosted.org/packages/6f/5b/" +"2f3fe94e1c02816fe23c7ceee5292fb186912929e1972eee7fb729fa27af/" +"sampleproject-1.3.1.tar.gz" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:257 +msgid "Caveats" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:259 +msgid "" +"In addition to the caveats listed in the background above, Linehaul suffered " +"from a bug which caused it to significantly under-report download statistics " +"prior to July 26, 2018. Downloads before this date are proportionally " +"accurate (e.g. the percentage of Python 2 vs. Python 3 downloads) but total " +"numbers are lower than actual by an order of magnitude." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:267 +msgid "Additional tools" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:269 +msgid "" +"Besides using the BigQuery console, there are some additional tools which " +"may be useful when analyzing download statistics." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:273 +msgid "``google-cloud-bigquery``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:275 +msgid "" +"You can also access the public PyPI download statistics dataset " +"programmatically via the BigQuery API and the `google-cloud-bigquery`_ " +"project, the official Python client library for BigQuery." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:303 +msgid "``pypinfo``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:305 +msgid "" +"`pypinfo`_ is a command-line tool which provides access to the dataset and " +"can generate several useful queries. For example, you can query the total " +"number of download for a package with the command ``pypinfo package_name``." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:309 +msgid "Install `pypinfo`_ using pip." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:315 +msgid "Usage:" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:331 +msgid "``pandas-gbq``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:333 +msgid "" +"The `pandas-gbq`_ project allows for accessing query results via `Pandas`_." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:337 +msgid "``ClickPy``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:339 +msgid "" +"The `ClickPy`_ project provides a public application to visualize download " +"statistics, with free direct SQL access to the underlying open-source " +"`ClickHouse`_ database, updated daily." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:345 +#: ../source/specifications/dependency-specifiers.rst:537 +msgid "References" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:347 +msgid "" +"`PyPI Download Counts deprecation email `__" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:348 +msgid "" +"`PyPI BigQuery dataset announcement email `__" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:3 +msgid "Creating and discovering plugins" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:5 +msgid "" +"Often when creating a Python application or library you'll want the ability " +"to provide customizations or extra features via **plugins**. Because Python " +"packages can be separately distributed, your application or library may want " +"to automatically **discover** all of the plugins available." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:10 +msgid "There are three major approaches to doing automatic plugin discovery:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:12 +msgid "`Using naming convention`_." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:13 +msgid "`Using namespace packages`_." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:14 +msgid "`Using package metadata`_." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:18 +msgid "Using naming convention" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:20 +msgid "" +"If all of the plugins for your application follow the same naming " +"convention, you can use :func:`pkgutil.iter_modules` to discover all of the " +"top-level modules that match the naming convention. For example, `Flask`_ " +"uses the naming convention ``flask_{plugin_name}``. If you wanted to " +"automatically discover all of the Flask plugins installed:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:38 +msgid "" +"If you had both the `Flask-SQLAlchemy`_ and `Flask-Talisman`_ plugins " +"installed then ``discovered_plugins`` would be:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:48 +msgid "" +"Using naming convention for plugins also allows you to query the Python " +"Package Index's :ref:`simple repository API ` for all " +"packages that conform to your naming convention." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:58 +msgid "Using namespace packages" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:60 +msgid "" +":doc:`Namespace packages ` can be used to " +"provide a convention for where to place plugins and also provides a way to " +"perform discovery. For example, if you make the sub-package " +"``myapp.plugins`` a namespace package then other :term:`distributions " +"` can provide modules and packages to that namespace. " +"Once installed, you can use :func:`pkgutil.iter_modules` to discover all " +"modules and packages installed under that namespace:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:88 +msgid "" +"Specifying ``myapp.plugins.__path__`` to :func:`~pkgutil.iter_modules` " +"causes it to only look for the modules directly under that namespace. For " +"example, if you have installed distributions that provide the modules " +"``myapp.plugins.a`` and ``myapp.plugins.b`` then ``discovered_plugins`` in " +"this case would be:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:100 +msgid "" +"This sample uses a sub-package as the namespace package (``myapp.plugins``), " +"but it's also possible to use a top-level package for this purpose (such as " +"``myapp_plugins``). How to pick the namespace to use is a matter of " +"preference, but it's not recommended to make your project's main top-level " +"package (``myapp`` in this case) a namespace package for the purpose of " +"plugins, as one bad plugin could cause the entire namespace to break which " +"would in turn make your project unimportable. For the \"namespace sub-" +"package\" approach to work, the plugin packages must omit " +"the :file:`__init__.py` for your top-level package directory (``myapp`` in " +"this case) and include the namespace-package style :file:`__init__.py` in " +"the namespace sub-package directory (``myapp/plugins``). This also means " +"that plugins will need to explicitly pass a list of packages " +"to :func:`setup`'s ``packages`` argument instead of " +"using :func:`setuptools.find_packages`." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:114 +msgid "" +"Namespace packages are a complex feature and there are several different " +"ways to create them. It's highly recommended to read the :doc:`packaging-" +"namespace-packages` documentation and clearly document which approach is " +"preferred for plugins to your project." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:122 +msgid "Using package metadata" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:124 +msgid "" +"Packages can have metadata for plugins described in the :ref:`entry-points`. " +"By specifying them, a package announces that it contains a specific kind of " +"plugin. Another package supporting this kind of plugin can use the metadata " +"to discover that plugin." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:128 +msgid "" +"For example if you have a package named ``myapp-plugin-a`` and it includes " +"the following in its ``pyproject.toml``:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:136 +msgid "" +"Then you can discover and load all of the registered entry points by " +"using :func:`importlib.metadata.entry_points` (or the backport_ " +"``importlib_metadata >= 3.6`` for Python 3.6-3.9):" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:151 +msgid "" +"In this example, ``discovered_plugins`` would be a collection of " +"type :class:`importlib.metadata.EntryPoint`:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:160 +msgid "" +"Now the module of your choice can be imported by executing " +"``discovered_plugins['a'].load()``." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:163 +msgid "" +"The ``entry_point`` specification in :file:`setup.py` is fairly flexible and " +"has a lot of options. It's recommended to read over the entire section " +"on :doc:`entry points ` ." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:167 +msgid "" +"Since this specification is part of the :doc:`standard library " +"`, most packaging tools other than " +"setuptools provide support for defining entry points." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:5 +msgid "Creating and packaging command-line tools" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:7 +msgid "" +"This guide will walk you through creating and packaging a standalone command-" +"line application that can be installed with :ref:`pipx`, a tool for creating " +"and managing :term:`Python Virtual Environments ` and " +"exposing the executable scripts of packages (and available manual pages) for " +"use on the command-line." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:12 +msgid "Creating the package" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:14 +msgid "" +"First of all, create a source tree for the :term:`project `. For " +"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 "" + +#: ../source/guides/creating-command-line-tools.rst:17 +#: ../source/guides/tool-recommendations.rst:45 +msgid "Todo" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:17 +msgid "" +"Advise on the optimal structure of a Python package in another guide or " +"discussion and link to it here." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:19 +msgid "" +"This project will adhere to :ref:`src-layout ` " +"and in the end be alike this file tree, with the top-level folder and " +"package name ``greetings``:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:33 +msgid "" +"The actual code responsible for the tool's functionality will be stored in " +"the file :file:`greet.py`, named after the main module:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:62 +msgid "" +"The above function receives several keyword arguments that determine how the " +"greeting to output is constructed. Now, construct the command-line interface " +"to provision it with the same, which is done in :file:`cli.py`:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:80 +msgid "" +"The command-line interface is built with typer_, an easy-to-use CLI parser " +"based on Python type hints. It provides auto-completion and nicely styled " +"command-line help out of the box. Another option would " +"be :py:mod:`argparse`, a command-line parser which is included in Python's " +"standard library. It is sufficient for most needs, but requires a lot of " +"code, usually in ``cli.py``, to function properly. Alternatively, docopt_ " +"makes it possible to create CLI interfaces based solely on docstrings; " +"advanced users are encouraged to make use of click_ (on which ``typer`` is " +"based)." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:86 +msgid "" +"Now, add an empty :file:`__init__.py` file, to define the project as a " +"regular :term:`import package `." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:88 +msgid "" +"The file :file:`__main__.py` marks the main entry point for the application " +"when running it via :mod:`runpy` (i.e. ``python -m greetings``, which works " +"immediately with flat layout, but requires installation of the package with " +"src layout), so initialize the command-line interface here:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:100 +msgid "" +"In order to enable calling the command-line interface directly from " +"the :term:`source tree `, i.e. as ``python src/" +"greetings``, a certain hack could be placed in this file; read more " +"at :ref:`running-cli-from-source-src-layout`." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:106 +msgid "``pyproject.toml``" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:108 +msgid "" +"The project's :term:`metadata ` is placed " +"in :term:`pyproject.toml`. The :term:`pyproject metadata keys ` and the ``[build-system]`` table may be filled in as " +"described in :ref:`writing-pyproject-toml`, adding a dependency on ``typer`` " +"(this tutorial uses version *0.12.3*)." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:111 +msgid "" +"For the project to be recognised as a command-line tool, additionally a " +"``console_scripts`` :ref:`entry point ` " +"(see :ref:`console_scripts`) needs to be added as a :term:`subkey `:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:118 +msgid "" +"Now, the project's source tree is ready to be transformed into " +"a :term:`distribution package `, which makes it " +"installable." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:123 +msgid "Installing the package with ``pipx``" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:125 +msgid "" +"After installing ``pipx`` as described in :ref:`installing-stand-alone-" +"command-line-tools`, install your project:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:132 +msgid "" +"This will expose the executable script we defined as an entry point and make " +"the command ``greet`` available. Let's test it:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:146 +msgid "" +"Since this example uses ``typer``, you could now also get an overview of the " +"program's usage by calling it with the ``--help`` option, or configure " +"completions via the ``--install-completion`` option." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:149 +msgid "" +"To just run the program without installing it permanently, use ``pipx run``, " +"which will create a temporary (but cached) virtual environment for it:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:156 +msgid "" +"This syntax is a bit impractical, however; as the name of the entry point we " +"defined above does not match the package name, we need to state explicitly " +"which executable script to run (even though there is only one in existence)." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:159 +msgid "" +"There is, however, a more practical solution to this problem, in the form of " +"an entry point specific to ``pipx run``. The same can be defined as follows " +"in :file:`pyproject.toml`:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:168 +msgid "" +"Thanks to this entry point (which *must* match the package name), ``pipx`` " +"will pick up the executable script as the default one and run it, which " +"makes this command possible:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:176 +msgid "Conclusion" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:178 +msgid "" +"You know by now how to package a command-line application written in Python. " +"A further step could be to distribute your package, meaning uploading it to " +"a :term:`package index `, most commonly :term:`PyPI `. To do that, follow the instructions " +"at :ref:`Packaging your project`. And once you're done, don't forget " +"to :ref:`do some research ` on how your " +"package is received!" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:5 +msgid "Packaging and distributing projects" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:7 +msgid "Outdated" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:8 +msgid "2023-12-14" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:10 +msgid "" +"This section covers some additional details on configuring, packaging and " +"distributing Python projects with ``setuptools`` that aren't covered by the " +"introductory tutorial in :doc:`/tutorials/packaging-projects`. It still " +"assumes that you are already familiar with the contents of the :doc:`/" +"tutorials/installing-packages` page." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:16 +msgid "" +"The section does *not* aim to cover best practices for Python project " +"development as a whole. For example, it does not provide guidance or tool " +"recommendations for version control, documentation, or testing." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:20 +msgid "" +"For more reference material, see :std:doc:`Building and Distributing " +"Packages ` in the :ref:`setuptools` docs, but " +"note that some advisory content there may be outdated. In the event of " +"conflicts, prefer the advice in the Python Packaging User Guide." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:28 +msgid "Requirements for packaging and distributing" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:29 +msgid "" +"First, make sure you have already fulfilled the :ref:`requirements for " +"installing packages `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:32 +msgid "Install \"twine\" [1]_:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:46 +msgid "" +"You'll need this to upload your project :term:`distributions ` to :term:`PyPI ` (see :ref:`below " +"`)." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:52 +msgid "Configuring your project" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:56 +msgid "Initial files" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:61 +msgid "" +"The most important file is :file:`setup.py` which exists at the root of your " +"project directory. For an example, see the `setup.py `_ " +"in the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:66 +msgid ":file:`setup.py` serves two primary functions:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:68 +msgid "" +"It's the file where various aspects of your project are configured. The " +"primary feature of :file:`setup.py` is that it contains a global ``setup()`` " +"function. The keyword arguments to this function are how specific details " +"of your project are defined. The most relevant arguments are explained " +"in :ref:`the section below `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:74 +msgid "" +"It's the command line interface for running various commands that relate to " +"packaging tasks. To get a listing of available commands, run ``python3 " +"setup.py --help-commands``." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:82 +msgid "" +":file:`setup.cfg` is an ini file that contains option defaults " +"for :file:`setup.py` commands. For an example, see the `setup.cfg `_ in the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:89 +msgid "README.rst / README.md" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:91 +msgid "" +"All projects should contain a readme file that covers the goal of the " +"project. The most common format is `reStructuredText `_ with an \"rst\" extension, although this " +"is not a requirement; multiple variants of `Markdown `_ are supported as well (look at " +"``setup()``'s :ref:`long_description_content_type ` argument)." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:98 +msgid "" +"For an example, see `README.md `_ from the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:102 +msgid "" +"Projects using :ref:`setuptools` 0.6.27+ have standard readme files " +"(:file:`README.rst`, :file:`README.txt`, or :file:`README`) included in " +"source distributions by default. The built-in :ref:`distutils` library " +"adopts this behavior beginning in Python 3.7. " +"Additionally, :ref:`setuptools` 36.4.0+ will include a :file:`README.md` if " +"found. If you are using setuptools, you don't need to list your readme file " +"in :file:`MANIFEST.in`. Otherwise, include it to be explicit." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:111 +msgid "MANIFEST.in" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:113 +msgid "" +"A :file:`MANIFEST.in` is needed when you need to package additional files " +"that are not automatically included in a source distribution. For details " +"on writing a :file:`MANIFEST.in` file, including a list of what's included " +"by default, see \":ref:`Using MANIFEST.in`\"." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:118 +msgid "" +"However, you may not have to use a :file:`MANIFEST.in`. For an example, the " +"`PyPA sample project `_ has removed " +"its manifest file, since all the necessary files have been included " +"by :ref:`setuptools` 43.0.0 and newer." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:123 +msgid "" +":file:`MANIFEST.in` does not affect binary distributions such as wheels." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:126 +msgid "LICENSE.txt" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:128 +msgid "" +"Every package should include a license file detailing the terms of " +"distribution. In many jurisdictions, packages without an explicit license " +"can not be legally used or distributed by anyone other than the copyright " +"holder. If you're unsure which license to choose, you can use resources such " +"as `GitHub's Choose a License `_ or consult a " +"lawyer." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:134 +msgid "" +"For an example, see the `LICENSE.txt `_ from the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:139 +msgid "" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:141 +msgid "" +"Although it's not required, the most common practice is to include your " +"Python modules and packages under a single top-level package that has the " +"same :ref:`name ` as your project, or something very close." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:145 +msgid "" +"For an example, see the `sample `_ package that's included in the `PyPA sample project " +"`_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:153 +msgid "setup() args" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:155 +msgid "" +"As mentioned above, the primary feature of :file:`setup.py` is that it " +"contains a global ``setup()`` function. The keyword arguments to this " +"function are how specific details of your project are defined." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:159 +msgid "" +"Some are temporarily explained below until their information is moved " +"elsewhere. The full list can be found :doc:`in the setuptools documentation " +"`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:163 +msgid "" +"Most of the snippets given are taken from the `setup.py `_ " +"contained in the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:170 +msgid "" +"See :ref:`Choosing a versioning scheme` for more information on ways to use " +"versions to convey compatibility information to your users." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:177 +msgid "``packages``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:183 +msgid "" +"Set ``packages`` to a list of all :term:`packages ` in your " +"project, including their subpackages, sub-subpackages, etc. Although the " +"packages can be listed manually, ``setuptools.find_packages()`` finds them " +"automatically. Use the ``include`` keyword argument to find only the given " +"packages. Use the ``exclude`` keyword argument to omit packages that are " +"not intended to be released and installed." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:192 +msgid "``py_modules``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:198 +msgid "" +"If your project contains any single-file Python modules that aren't part of " +"a package, set ``py_modules`` to a list of the names of the modules (minus " +"the ``.py`` extension) in order to make :ref:`setuptools` aware of them." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:204 +msgid "``install_requires``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:210 +msgid "" +"\"install_requires\" should be used to specify what dependencies a project " +"minimally needs to run. When the project is installed by :ref:`pip`, this is " +"the specification that is used to install its dependencies." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:214 +msgid "" +"For more on using \"install_requires\" see :ref:`install_requires vs " +"Requirements files`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:221 +msgid "``package_data``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:230 +msgid "" +"Often, additional files need to be installed into a :term:`package `. These files are often data that’s closely related to the " +"package’s implementation, or text files containing documentation that might " +"be of interest to programmers using the package. These files are called " +"\"package data\"." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:235 +msgid "" +"The value must be a mapping from package name to a list of relative path " +"names that should be copied into the package. The paths are interpreted as " +"relative to the directory containing the package." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:239 +msgid "" +"For more information, see :std:doc:`Including Data Files " +"` from the :std:doc:`setuptools docs " +"`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:247 +msgid "``data_files``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:253 +msgid "" +"Although configuring :ref:`Package Data` is sufficient for most needs, in " +"some cases you may need to place data files *outside* of " +"your :term:`packages `. The ``data_files`` directive allows " +"you to do that. It is mostly useful if you need to install files which are " +"used by other programs, which may be unaware of Python packages." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:259 +msgid "" +"Each ``(directory, files)`` pair in the sequence specifies the installation " +"directory and the files to install there. The ``directory`` must be a " +"relative path (although this may change in the future, see `wheel Issue #92 " +"`_), and it is interpreted relative " +"to the installation prefix (Python’s ``sys.prefix`` for a default " +"installation; ``site.USER_BASE`` for a user installation). Each file name in " +"``files`` is interpreted relative to the :file:`setup.py` script at the top " +"of the project source distribution." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:269 +msgid "" +"For more information see the distutils section on :ref:`Installing " +"Additional Files `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:274 +msgid "" +"When installing packages as egg, ``data_files`` is not supported. So, if " +"your project uses :ref:`setuptools`, you must use ``pip`` to install it. " +"Alternatively, if you must use ``python setup.py``, then you need to pass " +"the ``--old-and-unmanageable`` option." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:281 +#: ../source/specifications/pyproject-toml.rst:151 +msgid "``scripts``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:283 +msgid "" +"Although ``setup()`` supports a :ref:`scripts ` keyword for pointing to pre-made scripts to install, " +"the recommended approach to achieve cross-platform compatibility is to " +"use :ref:`console_scripts` entry points (see below)." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:291 +msgid "Choosing a versioning scheme" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:293 +msgid "" +"See :ref:`versioning` for information on common version schemes and how to " +"choose between them." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:298 +msgid "Working in \"development mode\"" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:300 +msgid "" +"You can install a project in \"editable\" or \"develop\" mode while you're " +"working on it. When installed as editable, a project can be edited in-place " +"without reinstallation: changes to Python source files in projects installed " +"as editable will be reflected the next time an interpreter process is " +"started." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:306 +msgid "" +"To install a Python package in \"editable\"/\"development\" mode Change " +"directory to the root of the project directory and run:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:314 +msgid "" +"The pip command-line flag ``-e`` is short for ``--editable``, and ``.`` " +"refers to the current working directory, so together, it means to install " +"the current directory (i.e. your project) in editable mode. This will also " +"install any dependencies declared with ``install_requires`` and any scripts " +"declared with ``console_scripts``. Dependencies will be installed in the " +"usual, non-editable mode." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:321 +msgid "" +"You may want to install some of your dependencies in editable mode as well. " +"For example, supposing your project requires \"foo\" and \"bar\", but you " +"want \"bar\" installed from VCS in editable mode, then you could construct a " +"requirements file like so::" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:329 +msgid "" +"The first line says to install your project and any dependencies. The second " +"line overrides the \"bar\" dependency, such that it's fulfilled from VCS, " +"not PyPI." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:333 +msgid "" +"If, however, you want \"bar\" installed from a local directory in editable " +"mode, the requirements file should look like this, with the local paths at " +"the top of the file::" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:338 +msgid "" +"Otherwise, the dependency will be fulfilled from PyPI, due to the " +"installation order of the requirements file. For more on requirements " +"files, see the :ref:`Requirements File ` section in " +"the pip docs. For more on VCS installs, see the :ref:`VCS Support ` section of the pip docs." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:342 +msgid "" +"Lastly, if you don't want to install any dependencies at all, you can run:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:349 +msgid "" +"For more information, see the :doc:`Development Mode ` section of the :ref:`setuptools` docs." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:356 +msgid "Packaging your project" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:358 +msgid "" +"To have your project installable from a :term:`Package Index` " +"like :term:`PyPI `, you'll need to create " +"a :term:`Distribution ` (aka \":term:`Package " +"`\") for your project." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:363 +msgid "" +"Before you can build wheels and sdists for your project, you'll need to " +"install the ``build`` package:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:380 +msgid "Source distributions" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:382 +msgid "" +"Minimally, you should create a :term:`Source Distribution `:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:398 +msgid "" +"A \"source distribution\" is unbuilt (i.e. it's not a :term:`Built " +"Distribution`), and requires a build step when installed by pip. Even if " +"the distribution is pure Python (i.e. contains no extensions), it still " +"involves a build step to build out the installation metadata " +"from :file:`setup.py` and/or :file:`setup.cfg`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:406 +msgid "Wheels" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:408 +msgid "" +"You should also create a wheel for your project. A wheel is a :term:`built " +"package ` that can be installed without needing to go " +"through the \"build\" process. Installing wheels is substantially faster for " +"the end user than installing from a source distribution." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:413 +msgid "" +"If your project is pure Python then you'll be creating a :ref:`\"Pure Python " +"Wheel\" (see section below) `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:416 +msgid "" +"If your project contains compiled extensions, then you'll be creating what's " +"called a :ref:`*Platform Wheel* (see section below) `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:419 +msgid "" +"If your project also supports Python 2 *and* contains no C extensions, then " +"you should create what's called a *Universal Wheel* by adding the following " +"to your :file:`setup.cfg` file:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:428 +msgid "" +"Only use this setting if your project does not have any C extensions *and* " +"supports Python 2 and 3." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:435 +msgid "Pure Python Wheels" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:437 +msgid "" +"*Pure Python Wheels* contain no compiled extensions, and therefore only " +"require a single Python wheel." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:440 +#: ../source/guides/distributing-packages-using-setuptools.rst:469 +msgid "To build the wheel:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:454 +msgid "" +"The ``wheel`` package will detect that the code is pure Python, and build a " +"wheel that's named such that it's usable on any Python 3 installation. For " +"details on the naming of wheel files, see :pep:`425`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:458 +msgid "" +"If you run ``build`` without ``--wheel`` or ``--sdist``, it will build both " +"files for you; this is useful when you don't need multiple wheels." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:464 +msgid "Platform Wheels" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:466 +msgid "" +"*Platform Wheels* are wheels that are specific to a certain platform like " +"Linux, macOS, or Windows, usually due to containing compiled extensions." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:484 +msgid "" +"The ``wheel`` package will detect that the code is not pure Python, and " +"build a wheel that's named such that it's only usable on the platform that " +"it was built on. For details on the naming of wheel files, see :pep:`425`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:490 +msgid "" +":term:`PyPI ` currently supports uploads of " +"platform wheels for Windows, macOS, and the multi-distro ``manylinux*`` ABI. " +"Details of the latter are defined in :pep:`513`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:498 +msgid "Uploading your Project to PyPI" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:500 +msgid "" +"When you ran the command to create your distribution, a new directory ``dist/" +"`` was created under your project's root directory. That's where you'll find " +"your distribution file(s) to upload." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:504 +msgid "" +"These files are only created when you run the command to create your " +"distribution. This means that any time you change the source of your project " +"or the configuration in your :file:`setup.py` file, you will need to rebuild " +"these files again before you can distribute the changes to PyPI." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:509 +msgid "" +"Before releasing on main PyPI repo, you might prefer training with the `PyPI " +"test site `_ which is cleaned on a semi regular " +"basis. See :ref:`using-test-pypi` on how to setup your configuration in " +"order to use it." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:514 +msgid "" +"In other resources you may encounter references to using ``python setup.py " +"register`` and ``python setup.py upload``. These methods of registering and " +"uploading a package are **strongly discouraged** as it may use a plaintext " +"HTTP or unverified HTTPS connection on some Python versions, allowing your " +"username and password to be intercepted during transmission." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:520 +msgid "" +"The reStructuredText parser used on PyPI is **not** Sphinx! Furthermore, to " +"ensure safety of all users, certain kinds of URLs and directives are " +"forbidden or stripped out (e.g., the ``.. raw::`` directive). **Before** " +"trying to upload your distribution, you should check to see if your brief / " +"long descriptions provided in :file:`setup.py` are valid. You can do this " +"by running :std:doc:`twine check ` on your package files:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:533 +msgid "Create an account" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:535 +msgid "" +"First, you need a :term:`PyPI ` user account. " +"You can create an account `using the form on the PyPI website `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:539 +msgid "" +"Now you'll create a PyPI `API token`_ so you will be able to securely upload " +"your project." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:542 +msgid "" +"Go to https://pypi.org/manage/account/#api-tokens and create a new `API " +"token`_; don't limit its scope to a particular project, since you are " +"creating a new project." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:546 +msgid "" +"**Don't close the page until you have copied and saved the token — you won't " +"see that token again.**" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:549 +msgid "" +"To avoid having to copy and paste the token every time you upload, you can " +"create a :file:`$HOME/.pypirc` file:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:558 +msgid "**Be aware that this stores your token in plaintext.**" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:560 +#: ../source/guides/migrating-to-pypi-org.rst:74 +#: ../source/guides/migrating-to-pypi-org.rst:113 +#: ../source/guides/using-testpypi.rst:84 +msgid "" +"For more details, see the :ref:`specification ` for :file:`.pypirc`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:566 +msgid "Upload your distributions" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:568 +msgid "" +"Once you have an account you can upload your distributions to :term:`PyPI " +"` using :ref:`twine`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:571 +msgid "" +"The process for uploading a release is the same regardless of whether or not " +"the project already exists on PyPI - if it doesn't exist yet, it will be " +"automatically created when the first release is uploaded." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:575 +msgid "" +"For the second and subsequent releases, PyPI only requires that the version " +"number of the new release differ from any previous releases." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:582 +msgid "" +"You can see if your package has successfully uploaded by navigating to the " +"URL ``https://pypi.org/project/`` where ``sampleproject`` is " +"the name of your project that you uploaded. It may take a minute or two for " +"your project to appear on the site." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:589 +#: ../source/tutorials/installing-packages.rst:669 +msgid "" +"Depending on your platform, this may require root or Administrator " +"access. :ref:`pip` is currently considering changing this by `making user " +"installs the default behavior `_." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:5 +msgid "Dropping support for older Python versions" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:7 +msgid "" +"The ability to drop support for older Python versions is enabled by the " +"standard :ref:`core-metadata` 1.2 specification via the :ref:`\"Requires-" +"Python\" ` attribute." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:9 +msgid "" +"Metadata 1.2+ installers, such as Pip, will adhere to this specification by " +"matching the current Python runtime and comparing it with the required " +"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 "" + +#: ../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 "" + +#: ../source/guides/dropping-older-python-versions.rst:15 +msgid "Requirements" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:17 +msgid "" +"This workflow requires that the user installing the package uses Pip [#]_, " +"or another installer that supports the Metadata 1.2 specification." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:20 +msgid "Dealing with the universal wheels" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:22 +msgid "" +"Traditionally, :ref:`setuptools` projects providing Python code that is " +"semantically compatible with both Python 2 and Python 3, " +"produce :term:`wheels ` that have a ``py2.py3`` tag in their names. " +"When dropping support for Python 2, it is important not to forget to change " +"this tag to just ``py3``. It is often configured within :file:`setup.cfg` " +"under the ``[bdist_wheel]`` section by setting ``universal = 1``." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:29 +msgid "" +"If you use this method, either remove this option or section, or explicitly " +"set ``universal`` to ``0``:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:41 +msgid "" +"Regarding :ref:`deprecated ` direct ``setup.py`` " +"invocations, passing the ``--universal`` flag on the command line could " +"override this setting." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:45 +msgid "Defining the Python version required" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:48 +msgid "1. Install twine" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:50 +msgid "Ensure that you have twine available at its latest version. Steps:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:66 +msgid "2. Specify the version ranges for supported Python distributions" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:68 +msgid "" +"Set the version ranges declaring which Python distributions are supported " +"within your project's :file:`pyproject.toml`. The :ref:`requires-python` " +"configuration field corresponds to the :ref:`Requires-Python ` core metadata field:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:80 +msgid "" +"You can specify version ranges and exclusion rules (complying with " +"the :ref:`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 "" + +#: ../source/guides/dropping-older-python-versions.rst:89 +msgid "" +"If using the :ref:`setuptools` build backend, consult the `dependency-" +"management`_ documentation for more options." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:92 +msgid "" +"Avoid adding upper bounds to the version ranges, e. g. ``\">= 3.8, < " +"3.10\"``. Doing so can cause different errors and version conflicts. See the " +"`discourse-discussion`_ for more information." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:96 +msgid "3. Validating the Metadata before publishing" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:98 +msgid "" +"Within a Python source package (the zip or the tar-gz file you download) is " +"a text file called PKG-INFO." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:100 +msgid "" +"This file is generated by the :term:`build backend ` when it " +"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 "" + +#: ../source/guides/dropping-older-python-versions.rst:103 +msgid "You can see the contents of the generated file like this:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:109 +msgid "Validate that the following is in place, before publishing the package:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:111 +msgid "" +"If you have upgraded correctly, the ``Metadata-Version`` value should be 1.2 " +"or higher." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:112 +msgid "" +"The ``Requires-Python`` field is set and matches your specification in the " +"configuration file." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:115 +msgid "4. Publishing the package" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:117 +msgid "Proceed as suggested in :ref:`Uploading your Project to PyPI`." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:120 +msgid "Dropping a Python version" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:122 +msgid "" +"In principle, at least metadata support for Python versions should be kept " +"as long as possible, because once that has been dropped, people still " +"depending on a version will be forced to downgrade. If however supporting a " +"specific version becomes a blocker for a new feature or other issues occur, " +"the metadata ``Requires-Python`` should be amended. Of course this also " +"depends on whether the project needs to be stable and well-covered for a " +"wider range of users." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:128 +msgid "Each version compatibility change should have its own release." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:132 +msgid "" +"When dropping a Python version, it might also be rewarding to upgrade the " +"project's code syntax generally, apart from updating the versions used in " +"visible places (like the testing environment). Tools like pyupgrade_ or " +"`ruff `_ can automate some of this work." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:138 +msgid "Support for the Metadata 1.2 specification has been added in Pip 9.0." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:5 +msgid "Hosting your own simple repository" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:8 +msgid "" +"If you wish to host your own simple repository [1]_, you can either use a " +"software package like :doc:`devpi ` or you can simply create " +"the proper directory structure and use any web server that can serve static " +"files and generate an autoindex." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:13 +msgid "" +"In either case, since you'll be hosting a repository that is likely not in " +"your user's default repositories, you should instruct them in your project's " +"description to configure their installer appropriately. For example with pip:" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:29 +msgid "" +"In addition, it is **highly** recommended that you serve your repository " +"with valid HTTPS. At this time, the security of your user's installations " +"depends on all repositories using a valid HTTPS setup." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:35 +msgid "\"Manual\" repository" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:37 +msgid "" +"The directory layout is fairly simple, within a root directory you need to " +"create a directory for each project. This directory should be " +"the :ref:`normalized name ` of the project. Within each " +"of these directories simply place each of the downloadable files. If you " +"have the projects \"Foo\" (with the versions 1.0 and 2.0) and \"bar\" (with " +"the version 0.1) You should end up with a structure that looks like::" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:50 +msgid "" +"Once you have this layout, simply configure your webserver to serve the root " +"directory with autoindex enabled. For an example using the built in Web " +"server in `Twisted`_, you would simply run ``twistd -n web --path .`` and " +"then instruct users to add the URL to their installer's configuration." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:57 +#: ../source/guides/index-mirrors-and-caches.rst:47 +msgid "Existing projects" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:63 +msgid "Package upload" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:64 +msgid "PyPI fall-through [2]_" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:65 +#: ../source/guides/index-mirrors-and-caches.rst:56 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 +msgid "Additional notes" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:67 +#: ../source/guides/index-mirrors-and-caches.rst:58 +msgid ":ref:`devpi`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:68 +#: ../source/guides/hosting-your-own-index.rst:69 +#: ../source/guides/hosting-your-own-index.rst:75 +#: ../source/guides/hosting-your-own-index.rst:79 +#: ../source/guides/hosting-your-own-index.rst:99 +#: ../source/guides/hosting-your-own-index.rst:120 +#: ../source/guides/index-mirrors-and-caches.rst:59 +#: ../source/guides/index-mirrors-and-caches.rst:60 +#: ../source/guides/index-mirrors-and-caches.rst:66 +#: ../source/guides/index-mirrors-and-caches.rst:67 +#: ../source/guides/index-mirrors-and-caches.rst:74 +#: ../source/guides/index-mirrors-and-caches.rst:78 +#: ../source/guides/index-mirrors-and-caches.rst:80 +#: ../source/guides/index-mirrors-and-caches.rst:85 +#: ../source/guides/index-mirrors-and-caches.rst:86 +#: ../source/guides/index-mirrors-and-caches.rst:90 +#: ../source/guides/index-mirrors-and-caches.rst:92 +#: ../source/guides/index-mirrors-and-caches.rst:96 +#: ../source/guides/index-mirrors-and-caches.rst:98 +#: ../source/guides/index-mirrors-and-caches.rst:102 +#: ../source/guides/index-mirrors-and-caches.rst:104 +#: ../source/guides/index-mirrors-and-caches.rst:108 +#: ../source/guides/index-mirrors-and-caches.rst:110 +msgid "✔" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:70 +msgid "" +"multiple indexes with inheritance, with syncing, replication, fail-over; " +"mirroring" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:73 +#: ../source/guides/index-mirrors-and-caches.rst:71 +msgid ":ref:`simpleindex`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:78 +msgid ":ref:`pypiserver`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:83 +msgid ":ref:`pypiprivate`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:88 +#: ../source/guides/index-mirrors-and-caches.rst:77 +msgid ":ref:`pypicloud`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:91 +msgid "unmaintained; also cached proxying; authentication, authorisation" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:93 +msgid ":ref:`pywharf`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:96 +msgid "unmaintained; serve files in GitHub" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:98 +#: ../source/guides/index-mirrors-and-caches.rst:83 +msgid ":ref:`pulppython`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:101 +msgid "also mirroring, proxying; plugin for Pulp" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:103 +msgid ":ref:`pip2pi`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:106 +msgid "also mirroring; manual synchronisation" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:108 +msgid ":ref:`dumb-pypi`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:111 +msgid "not a server, but a static file site generator" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:113 +msgid ":ref:`httpserver`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:116 +msgid "standard-library" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:118 +#: ../source/guides/index-mirrors-and-caches.rst:107 +msgid "`Apache `_" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:121 +#: ../source/guides/index-mirrors-and-caches.rst:111 +msgid "" +"using `mod_rewrite `_ and `mod_cache_disk `_, you can cache requests to package " +"indexes through an Apache server" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:131 +msgid "" +"For complete documentation of the simple repository protocol, " +"see :ref:`simple repository API `." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:134 +msgid "" +"Can be configured to fall back to PyPI (or another package index) if a " +"requested package is missing." +msgstr "" + +#: ../source/guides/index.rst:4 +msgid "" +"**Guides** are focused on accomplishing a specific task and assume that you " +"are already familiar with the basics of Python packaging. If you're looking " +"for an introduction to packaging, see :doc:`/tutorials/index`." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:5 +msgid "Package index mirrors and caches" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:8 +msgid "2023-11-08" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:10 +msgid "" +"Mirroring or caching of PyPI (and other :term:`package indexes `) can be used to speed up local package installation, allow offline " +"work, handle corporate firewalls or just plain Internet flakiness." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:15 +msgid "There are multiple classes of options in this area:" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:17 +msgid "local/hosted caching of package indexes." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:19 +msgid "" +"local/hosted mirroring of a package index. A mirror is a (whole or partial) " +"copy of a package index, which can be used in place of the original index." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:23 +msgid "" +"private package index with fall-through to public package indexes (for " +"example, to mitigate dependency confusion attacks), also known as a proxy." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:29 +msgid "Caching with pip" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:31 +msgid "" +"pip provides a number of facilities for speeding up installation by using " +"local cached copies of :term:`packages `:" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:34 +msgid "" +":ref:`Fast & local installs ` by " +"downloading all the requirements for a project and then pointing pip at " +"those downloaded files instead of going to PyPI." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:37 +msgid "" +"A variation on the above which pre-builds the installation files for the " +"requirements using :ref:`python3 -m pip wheel `:" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:53 +msgid "Cache" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:54 +msgid "Mirror" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:55 +msgid "Proxy" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:62 +msgid "" +"multiple indexes with inheritance; syncing, replication, fail-over; package " +"upload" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:65 +msgid ":ref:`bandersnatch`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:75 +msgid "custom plugin enables caching; re-routing to other package indexes" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:81 +msgid "unmaintained; authentication, authorisation" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:87 +msgid "plugin for Pulp; multiple proxied indexes; package upload" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:89 +msgid ":ref:`proxpi`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:93 +#: ../source/guides/index-mirrors-and-caches.rst:99 +msgid "multiple proxied indexes" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:95 +msgid ":ref:`nginx_pypi_cache`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:101 +msgid ":ref:`flaskpypiproxy`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:105 +msgid "unmaintained" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:5 +msgid "Installing scientific packages" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:8 +msgid "" +"Scientific software tends to have more complex dependencies than most, and " +"it will often have multiple build options to take advantage of different " +"kinds of hardware, or to interoperate with different pieces of external " +"software." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:13 +msgid "" +"In particular, `NumPy `__, which provides the basis for " +"most of the software in the `scientific Python stack `_ can be configured to interoperate with different FORTRAN " +"libraries, and can take advantage of different levels of vectorized " +"instructions available in modern CPUs." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:19 +msgid "" +"Starting with version 1.10.4 of NumPy and version 1.0.0 of SciPy, pre-built " +"32-bit and 64-bit binaries in the ``wheel`` format are available for all " +"major operating systems (Windows, macOS, and Linux) on PyPI. Note, however, " +"that on Windows, NumPy binaries are linked against the `ATLAS `__ BLAS/LAPACK library, restricted to SSE2 " +"instructions, so they may not provide optimal linear algebra performance." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:26 +msgid "" +"There are a number of alternative options for obtaining scientific Python " +"libraries (or any other Python libraries that require a compilation " +"environment to install from source and don't provide pre-built wheel files " +"on PyPI)." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:32 +msgid "Building from source" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:34 +msgid "" +"The same complexity which makes it difficult to distribute NumPy (and many " +"of the projects that depend on it) as wheel files also make them difficult " +"to build from source yourself. However, for intrepid folks that are willing " +"to spend the time wrangling compilers and linkers for both C and FORTRAN, " +"building from source is always an option." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:42 +msgid "Linux distribution packages" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:44 +msgid "" +"For Linux users, the system package manager will often have pre-compiled " +"versions of various pieces of scientific software, including NumPy and other " +"parts of the scientific Python stack." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:48 +msgid "" +"If using versions which may be several months old is acceptable, then this " +"is likely to be a good option (just make sure to allow access to " +"distributions installed into the system Python when using virtual " +"environments)." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:54 +msgid "Windows installers" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:56 +msgid "" +"Many Python projects that don't (or can't) currently publish wheel files at " +"least publish Windows installers, either on PyPI or on their project " +"download page. Using these installers allows users to avoid the need to set " +"up a suitable environment to build extensions locally." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:61 +msgid "" +"The extensions provided in these installers are typically compatible with " +"the CPython Windows installers published on python.org." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:64 +msgid "" +"As with Linux system packages, the Windows installers will only install into " +"a system Python installation - they do not support installation in virtual " +"environments. Allowing access to distributions installed into the system " +"Python when using virtual environments is a common approach to working " +"around this limitation." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:70 +msgid "" +"The :term:`Wheel` project also provides a :command:`wheel convert` " +"subcommand that can convert a Windows :command:`bdist_wininst` installer to " +"a wheel." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:77 +msgid "macOS installers and package managers" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:79 +msgid "" +"Similar to the situation on Windows, many projects (including NumPy) publish " +"macOS installers that are compatible with the macOS CPython binaries " +"published on python.org." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:83 +msgid "" +"macOS users also have access to Linux distribution style package managers " +"such as ``Homebrew``. The SciPy site has more details on using Homebrew to " +"`install SciPy on macOS `_." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:89 +msgid "SciPy distributions" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:91 +msgid "" +"The SciPy site lists `several distributions `_ " +"that provide the full SciPy stack to end users in an easy to use and update " +"format." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:96 +msgid "" +"Some of these distributions may not be compatible with the standard ``pip`` " +"and ``virtualenv`` based toolchain." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:100 +#: ../source/key_projects.rst:812 +msgid "Spack" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:101 +msgid "" +"`Spack `_ is a flexible package manager " +"designed to support multiple versions, configurations, platforms, and " +"compilers. It was built to support the needs of large supercomputing centers " +"and scientific application teams, who must often build software many " +"different ways. Spack is not limited to Python; it can install packages for " +"``C``, ``C++``, ``Fortran``, ``R``, and other languages. It is non-" +"destructive; installing a new version of one package does not break existing " +"installations, so many configurations can coexist on the same system." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:110 +msgid "" +"Spack offers a simple but powerful syntax that allows users to specify " +"versions and configuration options concisely. Package files are written in " +"pure Python, and they are templated so that it is easy to swap compilers, " +"dependency implementations (like MPI), versions, and build options with a " +"single package file. Spack also generates *module* files so that packages " +"can be loaded and unloaded from the user's environment." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:119 +msgid "The conda cross-platform package manager" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:121 +msgid "" +"``conda`` is an open source (BSD licensed) package management system and " +"environment management system that allows users to install multiple versions " +"of binary software packages and their dependencies, and easily switch " +"between them. It is a cross-platform tool working on Windows, MacOS, and " +"Linux. Conda can be used to package up and distribute all kinds of packages, " +"it is not limited to just Python packages. It has full support for native " +"virtual environments. Conda makes environments first-class citizens, making " +"it easy to create independent environments even for C libraries. It is " +"written in Python, but is Python-agnostic. Conda manages Python itself as a " +"package, so that :command:`conda update python` is possible, in contrast to " +"pip, which only manages Python packages." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:133 +msgid "" +"Anaconda `Anaconda `_ is a Python " +"distribution published by Anaconda, Inc. It is a stable collection of Open " +"Source packages for big data and scientific use, and a collection of " +"Graphical Interface utilities for managing conda environments." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:135 +msgid "" +"In addition to the full distribution provided by Anaconda, the conda package " +"manager itself is available in `miniconda `_, `miniforge `_, and " +"`pixi `_." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:138 +msgid "" +"Conda packages are available on multiple channels on Anaconda.org, including " +"the default channel supported by Anaconda, Inc, the community supported " +"conda-forge channel, which provides a wide variety of pre-built packages, " +"and some domain-specific package collections." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:4 +msgid "Installing stand alone command line tools" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:6 +msgid "" +"Many packages provide command line applications. Examples of such packages " +"are `mypy `_, `flake8 `_, `black `_, and :ref:`pipenv`." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:12 +msgid "" +"Usually you want to be able to access these applications from anywhere on " +"your system, but installing packages and their dependencies to the same " +"global environment can cause version conflicts and break dependencies the " +"operating system has on Python packages." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:17 +msgid "" +":ref:`pipx` solves this by creating a virtual environment for each package, " +"while also ensuring that its applications are accessible through a directory " +"that is on your ``$PATH``. This allows each package to be upgraded or " +"uninstalled without causing conflicts with other packages, and allows you to " +"safely run the applications from anywhere." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:23 +msgid "pipx only works with Python 3.6+." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:25 +msgid "pipx is installed with pip:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:43 +msgid "" +"``ensurepath`` ensures that the application directory is on your ``$PATH``. " +"You may need to restart your terminal for this update to take effect." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:46 +msgid "" +"Now you can install packages with ``pipx install`` and run the package's " +"applications(s) from anywhere." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:54 +#: ../source/specifications/entry-points.rst:114 +msgid "For example:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:76 +msgid "" +"To see a list of packages installed with pipx and which applications are " +"available, use ``pipx list``:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:100 +msgid "To upgrade or uninstall a package:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:107 +msgid "pipx can be upgraded or uninstalled with pip:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:123 +msgid "" +"pipx also allows you to install and run the latest version of an application " +"in a temporary, ephemeral environment. For example:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:130 +msgid "To see the full list of commands pipx offers, run:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:136 +msgid "You can learn more about pipx at https://pipx.pypa.io/." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:5 +msgid "Installing pip/setuptools/wheel with Linux Package Managers" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:8 +msgid "2021-07-26" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:10 +msgid "" +"This section covers how to install :ref:`pip`, :ref:`setuptools`, " +"and :ref:`wheel` using Linux package managers." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:13 +msgid "" +"If you're using a Python that was downloaded from `python.org `_, then this section does not apply. See " +"the :ref:`installing_requirements` section instead." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:17 +msgid "" +"Note that it's common for the versions of :ref:`pip`, :ref:`setuptools`, " +"and :ref:`wheel` supported by a specific Linux Distribution to be outdated " +"by the time it's released to the public, and updates generally only occur " +"for security reasons, not for feature updates. For certain Distributions, " +"there are additional repositories that can be enabled to provide newer " +"versions. The repositories we know about are explained below." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:24 +msgid "" +"Also note that it's somewhat common for Distributions to apply patches for " +"the sake of security and normalization to their own standards. In some " +"cases, this can lead to bugs or unexpected behaviors that vary from the " +"original unpatched versions. When this is known, we will make note of it " +"below." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:31 +msgid "Fedora" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:37 +msgid "" +"To learn more about Python in Fedora, please visit the `official Fedora " +"docs`_, `Python Classroom`_ or `Fedora Loves Python`_." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:45 +msgid "CentOS/RHEL" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:47 +msgid "" +"CentOS and RHEL don't offer :ref:`pip` or :ref:`wheel` in their core " +"repositories, although :ref:`setuptools` is installed by default." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:50 +msgid "To install pip and wheel for the system Python, there are two options:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:52 +msgid "" +"Enable the `EPEL repository `_ using " +"`these instructions `__. On EPEL 7, you can install pip and wheel like so:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:61 +msgid "" +"Since EPEL only offers extra, non-conflicting packages, EPEL does not offer " +"setuptools, since it's in the core repository." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:65 +msgid "" +"Enable the `PyPA Copr Repo `_ using `these instructions `__ [1]_. You can install pip and " +"wheel like so:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:74 +msgid "To additionally upgrade setuptools, run:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:81 +msgid "" +"To install pip, wheel, and setuptools, in a parallel, non-system environment " +"(using yum) then there are two options:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:85 +msgid "" +"Use the \"Software Collections\" feature to enable a parallel collection " +"that includes pip, setuptools, and wheel." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:88 +msgid "" +"For Redhat, see here: https://developers.redhat.com/products/" +"softwarecollections/overview" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:90 +msgid "For CentOS, see here: https://github.com/sclorg" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:92 +msgid "Be aware that collections may not contain the most recent versions." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:94 +msgid "" +"Enable the `IUS repository `_ and install one of the " +"`parallel-installable `_ " +"Pythons, along with pip, setuptools, and wheel, which are kept fairly up to " +"date." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:100 +msgid "For example, for Python 3.4 on CentOS7/RHEL7:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:108 +msgid "openSUSE" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:118 +msgid "Debian/Ubuntu and derivatives" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:120 +msgid "Firstly, update and refresh repository lists by running this command:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:129 +msgid "" +"Recent Debian/Ubuntu versions have modified pip to use the `\"User Scheme\" " +"`_ by default, " +"which is a significant behavior change that can be surprising to some users." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:135 +msgid "Arch Linux" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:143 +msgid "" +"Currently, there is no \"copr\" yum plugin available for CentOS/RHEL, so the " +"only option is to manually place the repo files as described." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:2 +msgid "Install packages in a virtual environment using pip and venv" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:4 +msgid "" +"This guide discusses how to create and activate a virtual environment using " +"the standard library's virtual environment tool :ref:`venv` and install " +"packages. The guide covers how to:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:8 +msgid "Create and activate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:9 +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:153 +msgid "Prepare pip" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:10 +msgid "Install packages into a virtual environment using the ``pip`` command" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:11 +msgid "Use and create a requirements file" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:14 +msgid "" +"This guide applies to supported versions of Python, currently 3.8 and higher." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:18 +msgid "" +"This guide uses the term **package** to refer to a :term:`Distribution " +"Package`, which commonly is installed from an external host. This differs " +"from the term :term:`Import Package` which refers to import modules in your " +"Python source code." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:25 +msgid "" +"This guide has the prerequisite that you are using an official Python " +"version obtained from . If you are using " +"your operating system's package manager to install Python, please ensure " +"that Python is installed before proceeding with these steps." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:32 +msgid "Create and Use Virtual Environments" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:35 +msgid "Create a new virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:37 +msgid "" +":ref:`venv` (for Python 3) allows you to manage separate package " +"installations for different projects. It creates a \"virtual\" isolated " +"Python installation. When you switch projects, you can create a new virtual " +"environment which is isolated from other virtual environments. You benefit " +"from the virtual environment since packages can be installed confidently and " +"will not interfere with another project's environment." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:45 +msgid "" +"It is recommended to use a virtual environment when working with third party " +"packages." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:48 +msgid "" +"To create a virtual environment, go to your project's directory and run the " +"following command. This will create a new virtual environment in a local " +"folder named ``.venv``:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:64 +msgid "" +"The second argument is the location to create the virtual environment. " +"Generally, you can just create this in your project and call it ``.venv``." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:67 +msgid "" +"``venv`` will create a virtual Python installation in the ``.venv`` folder." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:69 +msgid "" +"You should exclude your virtual environment directory from your version " +"control system using ``.gitignore`` or similar." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:74 +msgid "Activate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:76 +msgid "" +"Before you can start installing or using packages in your virtual " +"environment you'll need to ``activate`` it. Activating a virtual environment " +"will put the virtual environment-specific ``python`` and ``pip`` executables " +"into your shell's ``PATH``." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:93 +msgid "" +"To confirm the virtual environment is activated, check the location of your " +"Python interpreter:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:108 +msgid "" +"While the virtual environment is active, the above command will output a " +"filepath that includes the ``.venv`` directory, by ending with the following:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:124 +msgid "" +"While a virtual environment is activated, pip will install packages into " +"that specific environment. This enables you to import and use packages in " +"your Python application." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:130 +msgid "Deactivate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:132 +msgid "" +"If you want to switch projects or leave your virtual environment, " +"``deactivate`` the environment:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:140 +msgid "" +"Closing your shell will deactivate the virtual environment. If you open a " +"new shell window and want to use the virtual environment, reactivate it." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:145 +msgid "Reactivate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:147 +msgid "" +"If you want to reactivate an existing virtual environment, follow the same " +"instructions about activating a virtual environment. There's no need to " +"create a new virtual environment." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:155 +msgid "" +":ref:`pip` is the reference Python package manager. It's used to install and " +"update packages into a virtual environment." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:161 +msgid "" +"The Python installers for macOS include pip. On Linux, you may have to " +"install an additional package such as ``python3-pip``. You can make sure " +"that pip is up-to-date by running:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:170 +msgid "" +"Afterwards, you should have the latest version of pip installed in your user " +"site:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:179 +msgid "" +"The Python installers for Windows include pip. You can make sure that pip is " +"up-to-date by running:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:187 +msgid "Afterwards, you should have the latest version of pip:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:195 +msgid "Install packages using pip" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:197 +msgid "" +"When your virtual environment is activated, you can install packages. Use " +"the ``pip install`` command to install packages." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:201 +msgid "Install a package" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:203 +msgid "" +"For example, let's install the `Requests`_ library from the :term:`Python " +"Package Index (PyPI)`:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:218 +msgid "" +"pip should download requests and all of its dependencies and install them:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:239 +msgid "Install a specific package version" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:241 +msgid "" +"pip allows you to specify which version of a package to install " +"using :term:`version specifiers `. For example, to " +"install a specific version of ``requests``:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:257 +msgid "To install the latest ``2.x`` release of requests:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:271 +msgid "To install pre-release versions of packages, use the ``--pre`` flag:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:287 +msgid "Install extras" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:289 +msgid "" +"Some packages have optional `extras`_. You can tell pip to install these by " +"specifying the extra in brackets:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:309 +msgid "Install a package from source" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:311 +msgid "" +"pip can install a package directly from its source code. For example, to " +"install the source code in the ``google-auth`` directory:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:328 +msgid "" +"Additionally, pip can install packages from source in :doc:`development mode " +"`, meaning that changes to the source " +"directory will immediately affect the installed package without needing to " +"re-install:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:347 +msgid "Install from version control systems" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:349 +msgid "" +"pip can install packages directly from their version control system. For " +"example, you can install directly from a git repository:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:356 +msgid "" +"For more information on supported version control systems and syntax, see " +"pip's documentation on :ref:`VCS Support `." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:361 +msgid "Install from local archives" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:363 +msgid "" +"If you have a local copy of a :term:`Distribution Package`'s archive (a zip, " +"wheel, or tar file) you can install it directly with pip:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:378 +msgid "" +"If you have a directory containing archives of multiple packages, you can " +"tell pip to look for packages there and not to use the :term:`Python Package " +"Index (PyPI)` at all:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:394 +msgid "" +"This is useful if you are installing packages on a system with limited " +"connectivity or if you want to strictly control the origin of distribution " +"packages." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:400 +msgid "Install from other package indexes" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:402 +msgid "" +"If you want to download packages from a different index than " +"the :term:`Python Package Index (PyPI)`, you can use the ``--index-url`` " +"flag:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:417 +msgid "" +"If you want to allow packages from both the :term:`Python Package Index " +"(PyPI)` and a separate index, you can use the ``--extra-index-url`` flag " +"instead:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 +#: ../source/tutorials/installing-packages.rst:392 +msgid "Upgrading packages" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:436 +msgid "" +"pip can upgrade packages in-place using the ``--upgrade`` flag. For example, " +"to install the latest version of ``requests`` and all of its dependencies:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:452 +msgid "Using a requirements file" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:454 +msgid "" +"Instead of installing packages individually, pip allows you to declare all " +"dependencies in a :ref:`Requirements File `. For " +"example you could create a :file:`requirements.txt` file containing:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:463 +msgid "" +"And tell pip to install all of the packages in this file using the ``-r`` " +"flag:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:478 +msgid "Freezing dependencies" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:480 +msgid "" +"Pip can export a list of all installed packages and their versions using the " +"``freeze`` command:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:495 +msgid "Which will output a list of package specifiers such as:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:511 +msgid "" +"The ``pip freeze`` command is useful for creating :ref:`pip:Requirements " +"Files` that can re-create the exact versions of all packages installed in an " +"environment." +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:2 +msgid "Installing packages using virtualenv" +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:4 +msgid "" +"This guide discusses how to install packages using :ref:`pip` " +"and :ref:`virtualenv`, a tool to create isolated Python environments." +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:8 +msgid "" +"This \"how to\" guide on installing packages and using :ref:`virtualenv` is " +"under development. Please refer to the :ref:`virtualenv` documentation for " +"details on installation and usage." +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:13 +msgid "" +"This doc uses the term **package** to refer to a :term:`Distribution " +"Package` which is different from an :term:`Import Package` that which is " +"used to import modules in your Python source code." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:6 +msgid "Licensing examples and user scenarios" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:9 +msgid "" +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:18 +msgid "Licensing Examples" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:23 +msgid "Basic example" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:25 +msgid "" +"The Setuptools project itself, as of `version 75.6.0 `__, " +"does not use the ``License`` field in its own project source metadata. " +"Further, it no longer explicitly specifies ``license_file``/" +"``license_files`` as it did previously, since Setuptools relies on its own " +"automatic inclusion of license-related files matching common patterns, such " +"as the :file:`LICENSE` file it uses." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:32 +msgid "" +"It includes the following license-related metadata in " +"its :file:`pyproject.toml`:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:42 +msgid "The simplest migration to PEP 639 would consist of using this instead:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:49 +msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:56 +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:63 +msgid "" +"The :file:`LICENSE` file would be stored at :file:`/setuptools-{VERSION}/" +"LICENSE` in the sdist and :file:`/setuptools-{VERSION}.dist-info/licenses/" +"LICENSE` in the wheel, and unpacked from there into the site directory " +"(e.g. :file:`site-packages/`) on installation; :file:`/` is the root of the " +"respective archive and ``{VERSION}`` the version of the Setuptools release " +"in the Core Metadata." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 +msgid "Advanced example" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 +msgid "" +"Suppose Setuptools were to include the licenses of the third-party projects " +"that are vendored in the :file:`setuptools/_vendor/` " +"and :file:`pkg_resources/_vendor/` directories; specifically:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 +msgid "" +"A comprehensive license expression covering both Setuptools proper and its " +"vendored dependencies would contain these metadata, combining all the " +"license expressions into one. Such an expression might be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 +msgid "" +"In addition, per the requirements of the licenses, the relevant license " +"files must be included in the package. Suppose the :file:`LICENSE` file " +"contains the text of the MIT license and the copyrights used by Setuptools, " +"``pyparsing``, ``more_itertools`` and ``ordered-set``; and " +"the :file:`LICENSE*` files in the :file:`setuptools/_vendor/packaging/` " +"directory contain the Apache 2.0 and 2-clause BSD license text, and the " +"Packaging copyright statement and `license choice notice " +"`__." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 +msgid "" +"Specifically, we assume the license files are located at the following paths " +"in the project source tree (relative to the project root " +"and :file:`pyproject.toml`):" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 +msgid "Putting it all together, our :file:`pyproject.toml` would be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 +msgid "" +"Or alternatively, the license files can be specified explicitly (paths will " +"be interpreted as glob patterns):" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 +msgid "If our project used :file:`setup.cfg`, we could define this in :" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 +msgid "" +"With either approach, the output Core Metadata in the distribution would be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 +msgid "" +"In the resulting sdist, with :file:`/` as the root of the archive and " +"``{VERSION}`` the version of the Setuptools release specified in the Core " +"Metadata, the license files would be located at the paths:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 +msgid "" +"In the built wheel, with :file:`/` being the root of the archive and " +"``{VERSION}`` as the previous, the license files would be stored at:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 +msgid "" +"Finally, in the installed project, with :file:`site-packages/` being the " +"site dir and ``{VERSION}`` as the previous, the license files would be " +"installed to:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 +msgid "Expression examples" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 +msgid "Some additional examples of valid ``License-Expression`` values:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 +msgid "User Scenarios" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 +msgid "" +"The following covers the range of common use cases from a user perspective, " +"providing guidance for each. Do note that the following should **not** be " +"considered legal advice, and readers should consult a licensed legal " +"practitioner in their jurisdiction if they are unsure about the specifics " +"for their situation." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 +msgid "I have a private package that won't be distributed" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 +msgid "" +"If your package isn't shared publicly, i.e. outside your company, " +"organization or household, it *usually* isn't strictly necessary to include " +"a formal license, so you wouldn't necessarily have to do anything extra here." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 +msgid "" +"However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " +"license expression in your package configuration, and/or a copyright " +"statement and any legal notices in a :file:`LICENSE.txt` file in the root of " +"your project directory, which will be automatically included by packaging " +"tools." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 +msgid "I just want to share my own work without legal restrictions" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 +msgid "" +"While you aren't required to include a license, if you don't, no one has " +"`any permission to download, use or improve your work " +"`__, so that's probably the *opposite* of what you " +"actually want. The `MIT license `__ is a great choice " +"instead, as it's simple, widely used and allows anyone to do whatever they " +"want with your work (other than sue you, which you probably also don't want)." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 +msgid "" +"To apply it, just paste `the text `__ into a file " +"named :file:`LICENSE.txt` at the root of your repo, and add the year and " +"your name to the copyright line. Then, just add ``license = \"MIT\"`` under " +"``[project]`` in your :file:`pyproject.toml` if your packaging tool supports " +"it, or in its config file/section. You're done!" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 +msgid "I want to distribute my project under a specific license" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 +msgid "" +"To use a particular license, simply paste its text into " +"a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " +"a file starting with :file:`LICENSE` or :file:`COPYING` already, and add " +"``license = \"LICENSE-ID\"`` under ``[project]`` in " +"your :file:`pyproject.toml` if your packaging tool supports it, or else in " +"its config file. You can find the ``LICENSE-ID`` and copyable license text " +"on sites like `ChooseALicense `__ or `SPDX " +"`__." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 +msgid "" +"Many popular code hosts, project templates and packaging tools can add the " +"license file for you, and may support the expression as well in the future." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 +msgid "I maintain an existing package that's already licensed" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 +msgid "" +"If you already have license files and metadata in your project, you should " +"only need to make a couple of tweaks to take advantage of the new " +"functionality." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 +msgid "" +"In your project config file, enter your license expression under ``license`` " +"(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " +"packaging tool, and make sure to remove any legacy ``license`` table subkeys " +"or ``License ::`` classifiers. Your existing ``license`` value may already " +"be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " +"otherwise, check the `SPDX license list `__ for the identifier " +"that matches the license used." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 +msgid "" +"Make sure to list your license files under ``license-files`` under " +"``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " +"file." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 +msgid "" +"See the :ref:`licensing-example-basic` for a simple but complete real-world " +"demo of how this works in practice. See also the best-effort guidance on how " +"to translate license classifiers into license expression provided by " +"the :pep:`639` authors: `Mapping License Classifiers to SPDX Identifiers " +"`__. Packaging tools may support automatically " +"converting legacy licensing metadata; check your tool's documentation for " +"more information." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 +msgid "My package includes other code under different licenses" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 +msgid "" +"If your project includes code from others covered by different licenses, " +"such as vendored dependencies or files copied from other open source " +"software, you can construct a license expression to describe the licenses " +"involved and the relationship between them." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 +msgid "" +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:322 +msgid "" +"In your project config file, enter your license expression under ``license`` " +"(``[project]`` table of :file:`pyproject.toml`), or the equivalent for your " +"packaging tool, and make sure to remove any legacy ``license`` table subkeys " +"or ``License ::`` classifiers." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:328 +msgid "" +"Also, make sure you add the full license text of all the licenses as files " +"somewhere in your project repository. List the relative path or glob " +"patterns to each of them under ``license-files`` under ``[project]`` " +"in :file:`pyproject.toml` (if your tool supports it), or else in your tool's " +"configuration file." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:334 +msgid "" +"As an example, if your project was licensed MIT but incorporated a vendored " +"dependency (say, ``packaging``) that was licensed under either Apache 2.0 or " +"the 2-clause BSD, your license expression would be ``MIT AND (Apache-2.0 OR " +"BSD-2-Clause)``. You might have a :file:`LICENSE.txt` in your repo root, and " +"a :file:`LICENSE-APACHE.txt` and :file:`LICENSE-BSD.txt` in " +"the :file:`_vendor/` subdirectory, so to include all of them, you'd specify " +"``[\"LICENSE.txt\", \"_vendor/packaging/LICENSE*\"]`` as glob patterns, or " +"``[\"LICENSE.txt\", \"_vendor/LICENSE-APACHE.txt\", \"_vendor/LICENSE-" +"BSD.txt\"]`` as literal file paths." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:345 +msgid "" +"See a fully worked out :ref:`licensing-example-advanced` for an end-to-end " +"application of this to a real-world complex project, with many technical " +"details, and consult a `tutorial `__ for more help and " +"examples using SPDX identifiers and expressions." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:2 +msgid "Making a PyPI-friendly README" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:4 +msgid "" +"README files can help your users understand your project and can be used to " +"set your project's description on PyPI. This guide helps you create a README " +"in a PyPI-friendly format and include your README in your package so it " +"appears on PyPI." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:9 +msgid "Creating a README file" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:11 +msgid "" +"README files for Python projects are often named ``README``, ``README.txt``, " +"``README.rst``, or ``README.md``." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:13 +msgid "" +"For your README to display properly on PyPI, choose a markup language " +"supported by PyPI. Formats supported by `PyPI's README renderer `_ are:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:16 +msgid "plain text" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:17 +msgid "" +"`reStructuredText `_ (without " +"Sphinx extensions)" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:18 +msgid "" +"Markdown (`GitHub Flavored Markdown `_ by " +"default, or `CommonMark `_)" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:21 +msgid "" +"It's customary to save your README file in the root of your project, in the " +"same directory as your :file:`setup.py` file." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:25 +msgid "Including your README in your package's metadata" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:27 +msgid "" +"To include your README's contents as your package description, set your " +"project's ``Description`` and ``Description-Content-Type`` metadata, " +"typically in your project's :file:`setup.py` file." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:33 +msgid ":ref:`description-optional`" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:34 +msgid ":ref:`description-content-type-optional`" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:36 +msgid "" +"For example, to set these values in a package's :file:`setup.py` file, use " +"``setup()``'s ``long_description`` and ``long_description_content_type``." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:39 +msgid "" +"Set the value of ``long_description`` to the contents (not the path) of the " +"README file itself. Set the ``long_description_content_type`` to an accepted " +"``Content-Type``-style value for your README file's markup, such as ``text/" +"plain``, ``text/x-rst`` (for reStructuredText), or ``text/markdown``." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:45 +msgid "" +"If you're using GitHub-flavored Markdown to write a project's description, " +"ensure you upgrade the following tools:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:60 +msgid "The minimum required versions of the respective tools are:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:62 +msgid "``setuptools >= 38.6.0``" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:63 +msgid "``wheel >= 0.31.0``" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:64 +msgid "``twine >= 1.11.0``" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:66 +msgid "" +"It's recommended that you use ``twine`` to upload the project's distribution " +"packages:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:72 +msgid "" +"For example, see this :file:`setup.py` file, which reads the contents " +"of :file:`README.md` as ``long_description`` and identifies the markup as " +"GitHub-flavored Markdown:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:94 +msgid "Validating reStructuredText markup" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:96 +msgid "" +"If your README is written in reStructuredText, any invalid markup will " +"prevent it from rendering, causing PyPI to instead just show the README's " +"raw source." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:99 +msgid "" +"Note that Sphinx extensions used in docstrings, such as :doc:`directives " +"` and :doc:`roles ` (e.g., \"``:py:func:`getattr```\" or \"``:ref:`my-" +"reference-label```\"), are not allowed here and will result in error " +"messages like \"``Error: Unknown interpreted text role \"py:func\".``\"." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:104 +msgid "" +"You can check your README for markup errors before uploading as follows:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:106 +msgid "" +"Install the latest version of `twine `_; " +"version 1.12.0 or higher is required:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:121 +msgid "" +"Build the sdist and wheel for your project as described " +"under :ref:`Packaging Your Project`." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:124 +msgid "Run ``twine check`` on the sdist and wheel:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:130 +msgid "" +"This command will report any problems rendering your README. If your markup " +"renders fine, the command will output ``Checking distribution FILENAME: " +"Passed``." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:6 +msgid "Migrating to PyPI.org" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:8 +#: ../source/guides/multi-version-installs.rst:8 +#: ../source/guides/supporting-multiple-python-versions.rst:9 +#: ../source/guides/supporting-windows-using-appveyor.rst:7 +msgid "Obsolete" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:10 +msgid "" +":term:`pypi.org` is the new, rewritten version of PyPI that has replaced the " +"legacy PyPI code base. It is the default version of PyPI that people are " +"expected to use. These are the tools and processes that people will need to " +"interact with ``PyPI.org``." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:16 +msgid "Publishing releases" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:18 +msgid "``pypi.org`` is the default upload platform as of September 2016." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:20 +msgid "" +"Uploads through ``pypi.python.org`` were *switched off* on **July 3, 2017**. " +"As of April 13th, 2018, ``pypi.org`` is the URL for PyPI." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:23 +msgid "" +"The recommended way to migrate to PyPI.org for uploading is to ensure that " +"you are using a new enough version of your upload tool." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:26 +msgid "" +"The default upload settings switched to ``pypi.org`` in the following " +"versions:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:28 +msgid "``twine`` 1.8.0" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:29 +msgid "``setuptools`` 27.0.0" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:30 +msgid "Python 2.7.13 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:31 +msgid "Python 3.4.6 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:32 +msgid "Python 3.5.3 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:33 +msgid "Python 3.6.0 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:35 +msgid "" +"In addition to ensuring you're on a new enough version of the tool for the " +"tool's default to have switched, you must also make sure that you have not " +"configured the tool to override its default upload URL. Typically this is " +"configured in a file located at :file:`$HOME/.pypirc`. If you see a file " +"like:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:52 +msgid "" +"Then simply delete the line starting with ``repository`` and you will use " +"your upload tool's default URL." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:55 +msgid "" +"If for some reason you're unable to upgrade the version of your tool to a " +"version that defaults to using PyPI.org, then you may " +"edit :file:`$HOME/.pypirc` and include the ``repository:`` line, but use the " +"value ``https://upload.pypi.org/legacy/`` instead:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:71 +msgid "" +"(``legacy`` in this URL refers to the fact that this is the new server " +"implementation's emulation of the legacy server implementation's upload API.)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:77 +msgid "Registering package names & metadata" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:79 +msgid "" +"Explicit pre-registration of package names with the ``setup.py register`` " +"command prior to the first upload is no longer required, and is not " +"currently supported by the legacy upload API emulation on PyPI.org." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:83 +msgid "" +"As a result, attempting explicit registration after switching to using " +"PyPI.org for uploads will give the following error message::" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:88 +msgid "" +"The solution is to skip the registration step, and proceed directly to " +"uploading artifacts." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:93 +#: ../source/guides/using-testpypi.rst:5 +msgid "Using TestPyPI" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:95 +msgid "" +"Legacy TestPyPI (testpypi.python.org) is no longer available; use " +"`test.pypi.org `_ instead. If you use TestPyPI, you " +"must update your :file:`$HOME/.pypirc` to handle TestPyPI's new location, by " +"replacing ``https://testpypi.python.org/pypi`` with ``https://test.pypi.org/" +"legacy/``, for example:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:117 +msgid "Registering new user accounts" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:119 +msgid "" +"In order to help mitigate spam attacks against PyPI, new user registration " +"through ``pypi.python.org`` was *switched off* on **February 20, 2018**. New " +"user registrations at ``pypi.org`` are open." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:125 +msgid "Browsing packages" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:127 +msgid "" +"While ``pypi.python.org`` is may still be used in links from other PyPA " +"documentation, etc, the default interface for browsing packages is " +"``pypi.org``. The domain pypi.python.org now redirects to pypi.org, and may " +"be disabled sometime in the future." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:134 +msgid "Downloading packages" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:136 +msgid "``pypi.org`` is the default host for downloading packages." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:139 +msgid "Managing published packages and releases" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:141 +msgid "" +"``pypi.org`` provides a fully functional interface for logged in users to " +"manage their published packages and releases." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:6 +msgid "How to modernize a ``setup.py`` based project?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:10 +msgid "Should ``pyproject.toml`` be added?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:12 +msgid "" +"A :term:`pyproject.toml` file is strongly recommended. The presence of " +"a :file:`pyproject.toml` file itself does not bring much. [#]_ What is " +"actually strongly recommended is the ``[build-system]`` table " +"in :file:`pyproject.toml`." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:16 +msgid "" +"Note that it has influence on the build isolation feature of pip, see below." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:23 +msgid "" +"No, :file:`setup.py` can exist in a modern :ref:`setuptools` based project. " +"The :term:`setup.py` file is a valid configuration file for setuptools that " +"happens to be written in Python. However, the following commands are " +"deprecated and **MUST NOT** be run anymore, and their recommended " +"replacement commands should be used instead:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:36 +msgid "``python -m build``" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:42 +#: ../source/guides/modernize-setup-py-project.rst:66 +#: ../source/guides/modernize-setup-py-project.rst:111 +#: ../source/guides/modernize-setup-py-project.rst:129 +#: ../source/guides/modernize-setup-py-project.rst:221 +msgid "For more details:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:44 +msgid ":ref:`setup-py-deprecated`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:48 +msgid "Where to start?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:50 +msgid "" +"The :term:`project` must contain a :file:`pyproject.toml` file at the root " +"of its source tree that contains a ``[build-system]`` table like so:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:60 +msgid "" +"This is the standardized method of letting :term:`build frontends ` know that :ref:`setuptools` is the :term:`build backend ` for this project." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:63 +msgid "" +"Note that the presence of a :file:`pyproject.toml` file (even if empty) " +"triggers :ref:`pip` to change its default behavior to use *build isolation*." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:68 +msgid ":ref:`distributing-packages`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:69 +#: ../source/guides/modernize-setup-py-project.rst:113 +msgid ":ref:`pyproject-build-system-table`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:70 +#: ../source/guides/modernize-setup-py-project.rst:131 +#: ../source/guides/modernize-setup-py-project.rst:247 +msgid ":doc:`pip:reference/build-system`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:74 +msgid "How to handle additional build-time dependencies?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:76 +msgid "" +"On top of setuptools itself, if :file:`setup.py` depends on other third-" +"party libraries (outside of Python's standard library), those must be listed " +"in the ``requires`` list of the ``[build-system]`` table, so that the build " +"frontend knows to install them when building the :term:`distributions " +"`." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:82 +#: ../source/guides/modernize-setup-py-project.rst:139 +#: ../source/guides/modernize-setup-py-project.rst:174 +msgid "For example, a :file:`setup.py` file such as this:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:99 +msgid "" +"requires a :file:`pyproject.toml` file like this (:file:`setup.py` stays " +"unchanged):" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:117 +msgid "What is the build isolation feature?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:119 +msgid "" +"Build frontends typically create an ephemeral virtual environment where they " +"install only the build dependencies (and their dependencies) that are listed " +"under ``build-system.requires`` and trigger the build in that environment." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:124 +msgid "" +"For some projects this isolation is unwanted and it can be deactivated as " +"follows:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:126 +msgid "``python -m build --no-isolation``" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:127 +msgid "``python -m pip install --no-build-isolation``" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:135 +msgid "How to handle packaging metadata?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:137 +msgid "" +"All static metadata can optionally be moved to a ``[project]`` table " +"in :file:`pyproject.toml`." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:151 +msgid "can be entirely replaced by a :file:`pyproject.toml` file like this:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:164 +msgid "" +"Read :ref:`pyproject-project-table` for the full specification of the " +"content allowed in the ``[project]`` table." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:169 +msgid "How to handle dynamic metadata?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:171 +msgid "" +"If some packaging metadata fields are not static they need to be listed as " +"``dynamic`` in this ``[project]`` table." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:191 +msgid "can be modernized as follows:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:223 +msgid ":ref:`declaring-project-metadata-dynamic`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:227 +msgid "What if something that can not be changed expects a ``setup.py`` file?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:229 +msgid "" +"For example, a process exists that can not be changed easily and it needs to " +"execute a command such as ``python setup.py --name``." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:232 +msgid "" +"It is perfectly fine to leave a :file:`setup.py` file in the project source " +"tree even after all its content has been moved to :file:`pyproject.toml`. " +"This file can be as minimalistic as this:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:246 +msgid ":ref:`pyproject-toml-spec`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:248 +msgid ":doc:`setuptools:build_meta`" +msgstr "" + +#: ../source/guides/multi-version-installs.rst:6 +msgid "Multi-version installs" +msgstr "" + +#: ../source/guides/multi-version-installs.rst:11 +msgid "" +"easy_install allows simultaneous installation of different versions of the " +"same project into a single environment shared by multiple programs which " +"must ``require`` the appropriate version of the project at run time (using " +"``pkg_resources``)." +msgstr "" + +#: ../source/guides/multi-version-installs.rst:16 +msgid "" +"For many use cases, virtual environments address this need without the " +"complication of the ``require`` directive. However, the advantage of " +"parallel installations within the same environment is that it works for an " +"environment shared by multiple applications, such as the system Python in a " +"Linux distribution." +msgstr "" + +#: ../source/guides/multi-version-installs.rst:22 +msgid "" +"The major limitation of ``pkg_resources`` based parallel installation is " +"that as soon as you import ``pkg_resources`` it locks in the *default* " +"version of everything which is already available on sys.path. This can cause " +"problems, since ``setuptools`` created command line scripts use " +"``pkg_resources`` to find the entry point to execute. This means that, for " +"example, you can't use ``require`` tests invoked through ``nose`` or a WSGI " +"application invoked through ``gunicorn`` if your application needs a non-" +"default version of anything that is available on the standard ``sys.path`` - " +"the script wrapper for the main application will lock in the version that is " +"available by default, so the subsequent ``require`` call in your own code " +"fails with a spurious version conflict." +msgstr "" + +#: ../source/guides/multi-version-installs.rst:34 +msgid "" +"This can be worked around by setting all dependencies in " +"``__main__.__requires__`` before importing ``pkg_resources`` for the first " +"time, but that approach does mean that standard command line invocations of " +"the affected tools can't be used - it's necessary to write a custom wrapper " +"script or use ``python3 -c ''`` to invoke the application's main " +"entry point directly." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:5 +msgid "Packaging binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:8 +msgid "2013-12-08" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:10 +msgid "" +"One of the features of the CPython reference interpreter is that, in " +"addition to allowing the execution of Python code, it also exposes a rich C " +"API for use by other software. One of the most common uses of this C API is " +"to create importable C extensions that allow things which aren't always easy " +"to achieve in pure Python code." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:18 +msgid "An overview of binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:21 +msgid "Use cases" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:23 +msgid "" +"The typical use cases for binary extensions break down into just three " +"conventional categories:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:26 +msgid "" +"**accelerator modules**: these modules are completely self-contained, and " +"are created solely to run faster than the equivalent pure Python code runs " +"in CPython. Ideally, accelerator modules will always have a pure Python " +"equivalent to use as a fallback if the accelerated version isn't available " +"on a given system. The CPython standard library makes extensive use of " +"accelerator modules. *Example*: When importing ``datetime``, Python falls " +"back to the `datetime.py `_ module if the C implementation ( `_datetimemodule.c `_) is not " +"available." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:37 +msgid "" +"**wrapper modules**: these modules are created to expose existing C " +"interfaces to Python code. They may either expose the underlying C interface " +"directly, or else expose a more \"Pythonic\" API that makes use of Python " +"language features to make the API easier to use. The CPython standard " +"library makes extensive use of wrapper modules. *Example*: `functools.py " +"`_ is a Python " +"module wrapper for `_functoolsmodule.c `_." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:45 +msgid "" +"**low-level system access**: these modules are created to access lower level " +"features of the CPython runtime, the operating system, or the underlying " +"hardware. Through platform specific code, extension modules may achieve " +"things that aren't possible in pure Python code. A number of CPython " +"standard library modules are written in C in order to access interpreter " +"internals that aren't exposed at the language level. *Example*: ``sys``, " +"which comes from `sysmodule.c `_." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:54 +msgid "" +"One particularly notable feature of C extensions is that, when they don't " +"need to call back into the interpreter runtime, they can release CPython's " +"global interpreter lock around long-running operations (regardless of " +"whether those operations are CPU or IO bound)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:59 +msgid "" +"Not all extension modules will fit neatly into the above categories. The " +"extension modules included with NumPy, for example, span all three use cases " +"- they move inner loops to C for speed reasons, wrap external libraries " +"written in C, FORTRAN and other languages, and use low level system " +"interfaces for both CPython and the underlying operation system to support " +"concurrent execution of vectorised operations and to tightly control the " +"exact memory layout of created objects." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:69 +msgid "Disadvantages" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:71 +msgid "" +"The main disadvantage of using binary extensions is the fact that it makes " +"subsequent distribution of the software more difficult. One of the " +"advantages of using Python is that it is largely cross platform, and the " +"languages used to write extension modules (typically C or C++, but really " +"any language that can bind to the CPython C API) typically require that " +"custom binaries be created for different platforms." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:78 +msgid "This means that binary extensions:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:80 +msgid "" +"require that end users be able to either build them from source, or else " +"that someone publish pre-built binaries for common platforms" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:83 +msgid "" +"may not be compatible with different builds of the CPython reference " +"interpreter" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:86 +msgid "" +"often will not work correctly with alternative interpreters such as PyPy, " +"IronPython or Jython" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:89 +msgid "" +"if handcoded, make maintenance more difficult by requiring that maintainers " +"be familiar not only with Python, but also with the language used to create " +"the binary extension, as well as with the details of the CPython C API." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:94 +msgid "" +"if a pure Python fallback implementation is provided, make maintenance more " +"difficult by requiring that changes be implemented in two places, and " +"introducing additional complexity in the test suite to ensure both versions " +"are always executed." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:99 +msgid "" +"Another disadvantage of relying on binary extensions is that alternative " +"import mechanisms (such as the ability to import modules directly from " +"zipfiles) often won't work for extension modules (as the dynamic loading " +"mechanisms on most platforms can only load libraries from disk)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:106 +msgid "Alternatives to handcoded accelerator modules" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:108 +msgid "" +"When extension modules are just being used to make code run faster (after " +"profiling has identified the code where the speed increase is worth " +"additional maintenance effort), a number of other alternatives should also " +"be considered:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:113 +msgid "" +"look for existing optimised alternatives. The CPython standard library " +"includes a number of optimised data structures and algorithms (especially in " +"the builtins and the ``collections`` and ``itertools`` modules). The Python " +"Package Index also offers additional alternatives. Sometimes, the " +"appropriate choice of standard library or third party module can avoid the " +"need to create your own accelerator module." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:120 +msgid "" +"for long running applications, the JIT compiled `PyPy interpreter `__ may offer a suitable alternative to the standard CPython " +"runtime. The main barrier to adopting PyPy is typically reliance on other " +"binary extension modules - while PyPy does emulate the CPython C API, " +"modules that rely on that cause problems for the PyPy JIT, and the emulation " +"layer can often expose latent defects in extension modules that CPython " +"currently tolerates (frequently around reference counting errors - an object " +"having one live reference instead of two often won't break anything, but no " +"references instead of one is a major problem)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:130 +msgid "" +"`Cython `__ is a mature static compiler that can " +"compile most Python code to C extension modules. The initial compilation " +"provides some speed increases (by bypassing the CPython interpreter layer), " +"and Cython's optional static typing features can offer additional " +"opportunities for speed increases. Using Cython still carries the " +"`disadvantages`_ associated with using binary extensions, but has the " +"benefit of having a reduced barrier to entry for Python programmers " +"(relative to other languages like C or C++)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:139 +msgid "" +"`Numba `__ is a newer tool, created by members of " +"the scientific Python community, that aims to leverage LLVM to allow " +"selective compilation of pieces of a Python application to native machine " +"code at runtime. It requires that LLVM be available on the system where the " +"code is running, but can provide significant speed increases, especially for " +"operations that are amenable to vectorisation." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:148 +msgid "Alternatives to handcoded wrapper modules" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:150 +msgid "" +"The C ABI (Application Binary Interface) is a common standard for sharing " +"functionality between multiple applications. One of the strengths of the " +"CPython C API (Application Programming Interface) is allowing Python users " +"to tap into that functionality. However, wrapping modules by hand is quite " +"tedious, so a number of other alternative approaches should be considered." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:156 +msgid "" +"The approaches described below don't simplify the distribution case at all, " +"but they *can* significantly reduce the maintenance burden of keeping " +"wrapper modules up to date." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:160 +msgid "" +"In addition to being useful for the creation of accelerator modules, `Cython " +"`__ is also widely used for creating wrapper modules " +"for C or C++ APIs. It involves wrapping the interfaces by hand, which gives " +"a wide range of freedom in designing and optimising the wrapper code, but " +"may not be a good choice for wrapping very large APIs quickly. See the `list " +"of third-party tools `_ for " +"automatic wrapping with Cython. It also supports performance-oriented Python " +"implementations that provide a CPython-like C-API, such as PyPy and Pyston." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:171 +msgid "" +":doc:`pybind11 ` is a pure C++11 library that provides a " +"clean C++ interface to the CPython (and PyPy) C API. It does not require a " +"pre-processing step; it is written entirely in templated C++. Helpers are " +"included for Setuptools or CMake builds. It was based on `Boost.Python " +"`__, " +"but doesn't require the Boost libraries or BJam." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:178 +msgid "" +":doc:`cffi ` is a project created by some of the PyPy developers " +"to make it straightforward for developers that already know both Python and " +"C to expose their C modules to Python applications. It also makes it " +"relatively straightforward to wrap a C module based on its header files, " +"even if you don't know C yourself." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:184 +msgid "" +"One of the key advantages of ``cffi`` is that it is compatible with the PyPy " +"JIT, allowing CFFI wrapper modules to participate fully in PyPy's tracing " +"JIT optimisations." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:188 +msgid "" +"`SWIG `__ is a wrapper interface generator that allows " +"a variety of programming languages, including Python, to interface with C " +"and C++ code." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:192 +msgid "" +"The standard library's ``ctypes`` module, while useful for getting access to " +"C level interfaces when header information isn't available, suffers from the " +"fact that it operates solely at the C ABI level, and thus has no automatic " +"consistency checking between the interface actually being exported by the " +"library and the one declared in the Python code. By contrast, the above " +"alternatives are all able to operate at the C *API* level, using C header " +"files to ensure consistency between the interface exported by the library " +"being wrapped and the one expected by the Python wrapper module. While " +"``cffi`` *can* operate directly at the C ABI level, it suffers from the same " +"interface inconsistency problems as ``ctypes`` when it is used that way." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:206 +msgid "Alternatives for low level system access" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:208 +msgid "" +"For applications that need low level system access (regardless of the " +"reason), a binary extension module often *is* the best way to go about it. " +"This is particularly true for low level access to the CPython runtime " +"itself, since some operations (like releasing the Global Interpreter Lock) " +"are simply invalid when the interpreter is running code, even if a module " +"like ``ctypes`` or ``cffi`` is used to obtain access to the relevant C API " +"interfaces." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:216 +msgid "" +"For cases where the extension module is manipulating the underlying " +"operating system or hardware (rather than the CPython runtime), it may " +"sometimes be better to just write an ordinary C library (or a library in " +"another systems programming language like C++ or Rust that can export a C " +"compatible ABI), and then use one of the wrapping techniques described above " +"to make the interface available as an importable Python module." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:225 +msgid "Implementing binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:227 +msgid "" +"The CPython :doc:`Extending and Embedding ` guide " +"includes an introduction to writing a :doc:`custom extension module in C " +"`." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:231 +msgid "" +"FIXME: Elaborate that all this is one of the reasons why you probably " +"*don't* want to handcode your extension modules :)" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:236 +msgid "Extension module lifecycle" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:238 +#: ../source/guides/packaging-binary-extensions.rst:244 +#: ../source/guides/packaging-binary-extensions.rst:250 +#: ../source/guides/packaging-binary-extensions.rst:256 +#: ../source/guides/packaging-binary-extensions.rst:376 +msgid "FIXME: This section needs to be fleshed out." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:242 +msgid "Implications of shared static state and subinterpreters" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:248 +msgid "Implications of the GIL" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:254 +msgid "Memory allocation APIs" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:262 +msgid "ABI Compatibility" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:264 +msgid "" +"The CPython C API does not guarantee ABI stability between minor releases " +"(3.2, 3.3, 3.4, etc.). This means that, typically, if you build an extension " +"module against one version of Python, it is only guaranteed to work with the " +"same minor version of Python and not with any other minor versions." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:270 +msgid "" +"Python 3.2 introduced the Limited API, with is a well-defined subset of " +"Python's C API. The symbols needed for the Limited API form the \"Stable " +"ABI\" which is guaranteed to be compatible across all Python 3.x versions. " +"Wheels containing extensions built against the stable ABI use the ``abi3`` " +"ABI tag, to reflect that they're compatible with all Python 3.x versions." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:277 +msgid "" +"CPython's :doc:`C API stability` page provides detailed " +"information about the API / ABI stability guarantees, how to use the Limited " +"API and the exact contents of the \"Limited API\"." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:283 +msgid "Building binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:285 +msgid "FIXME: Cover the build-backends available for building extensions." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:288 +msgid "Building extensions for multiple platforms" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:290 +msgid "" +"If you plan to distribute your extension, you should provide :term:`wheels " +"` for all the platforms you intend to support. These are usually " +"built on continuous integration (CI) systems. There are tools to help you " +"build highly redistributable binaries from CI; these " +"include :ref:`cibuildwheel` and :ref:`multibuild`." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:296 +msgid "" +"For most extensions, you will need to build wheels for all the platforms you " +"intend to support. This means that the number of wheels you need to build is " +"the product of::" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:302 +msgid "" +"Using CPython's :ref:`Stable ABI ` can help " +"significantly reduce the number of wheels you need to provide, since a " +"single wheel on a platform can be used with all Python minor versions; " +"eliminating one dimension of the matrix. It also removes the need to " +"generate new wheels for each new minor version of Python." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:309 +msgid "Binary extensions for Windows" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:311 +msgid "" +"Before it is possible to build a binary extension, it is necessary to ensure " +"that you have a suitable compiler available. On Windows, Visual C is used to " +"build the official CPython interpreter, and should be used to build " +"compatible binary extensions. To set up a build environment for binary " +"extensions, install `Visual Studio Community Edition `__ - any recent version is fine." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:318 +msgid "" +"One caveat: if you use Visual Studio 2019 or later, your extension will " +"depend on an \"extra\" file, ``VCRUNTIME140_1.dll``, in addition to the " +"``VCRUNTIME140.dll`` that all previous versions back to 2015 depend on. This " +"will add an extra requirement to using your extension on versions of CPython " +"that do not include this extra file. To avoid this, you can add the compile-" +"time argument ``/d2FH4-``. Recent versions of Python may include this file." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:326 +msgid "" +"Building for Python prior to 3.5 is discouraged, because older versions of " +"Visual Studio are no longer available from Microsoft. If you do need to " +"build for older versions, you can set ``DISTUTILS_USE_SDK=1`` and " +"``MSSdk=1`` to force a the currently activated version of MSVC to be found, " +"and you should exercise care when designing your extension not to malloc/" +"free memory across different libraries, avoid relying on changed data " +"structures, and so on. Tools for generating extension modules usually avoid " +"these things for you." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:337 +msgid "Binary extensions for Linux" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:339 +msgid "" +"Linux binaries must use a sufficiently old glibc to be compatible with older " +"distributions. The `manylinux `_ Docker " +"images provide a build environment with a glibc old enough to support most " +"current Linux distributions on common architectures." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:345 +msgid "Binary extensions for macOS" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:347 +msgid "" +"Binary compatibility on macOS is determined by the target minimum deployment " +"system, e.g. *10.9*, which is often specified with the " +"``MACOSX_DEPLOYMENT_TARGET`` environmental variable when building binaries " +"on macOS. When building with setuptools / distutils, the deployment target " +"is specified with the flag ``--plat-name``, e.g. ``macosx-10.9-x86_64``. For " +"common deployment targets for macOS Python distributions, see the `MacPython " +"Spinning Wheels wiki `_." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:357 +msgid "Publishing binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:359 +msgid "" +"Publishing binary extensions through PyPI uses the same upload mechanisms as " +"publishing pure Python packages. You build a wheel file for your extension " +"using the build-backend and upload it to PyPI using :doc:`twine " +"`." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:365 +msgid "Avoid binary-only releases" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:367 +msgid "" +"It is strongly recommended that you publish your binary extensions as well " +"as the source code that was used to build them. This allows users to build " +"the extension from source if they need to. Notably, this is required for " +"certain Linux distributions that build from source within their own build " +"systems for the distro package repositories." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:374 +msgid "Weak linking" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:379 +msgid "Additional resources" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:381 +msgid "" +"Cross-platform development and distribution of extension modules is a " +"complex topic, so this guide focuses primarily on providing pointers to " +"various tools that automate dealing with the underlying technical " +"challenges. The additional resources in this section are instead intended " +"for developers looking to understand more about the underlying binary " +"interfaces that those systems rely on at runtime." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:388 +msgid "Cross-platform wheel generation with scikit-build" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:390 +msgid "" +"The `scikit-build `_ package " +"helps abstract cross-platform build operations and provides additional " +"capabilities when creating binary extension packages. Additional " +"documentation is also available on the `C runtime, compiler, and build " +"system generator `_ for Python binary extension modules." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:398 +msgid "Introduction to C/C++ extension modules" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:400 +msgid "" +"For a more in depth explanation of how extension modules are used by CPython " +"on a Debian system, see the following articles:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:403 +msgid "" +"`What are (c)python extension modules? `_" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:404 +msgid "`Releasing the gil `_" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:405 +msgid "" +"`Writing cpython extension modules using C++ `_" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:408 +msgid "Additional considerations for binary wheels" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:410 +msgid "" +"The `pypackaging-native `_ website " +"has additional coverage of packaging Python packages with native code. It " +"aims to provide an overview of the most important packaging issues for such " +"projects, with in-depth explanations and references." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:415 +msgid "" +"Examples of topics covered are non-Python compiled dependencies (\"native " +"dependencies\"), the importance of the ABI (Application Binary Interface) of " +"native code, dependency on SIMD code and cross compilation." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:5 +msgid "Packaging namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:7 +msgid "" +"Namespace packages allow you to split the sub-packages and modules within a " +"single :term:`package ` across multiple, " +"separate :term:`distribution packages ` (referred to " +"as **distributions** in this document to avoid ambiguity). For example, if " +"you have the following package structure:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:26 +msgid "And you use this package in your code like so::" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:31 +msgid "Then you can break these sub-packages into two separate distributions:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:50 +msgid "Each sub-package can now be separately installed, used, and versioned." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:52 +msgid "" +"Namespace packages can be useful for a large collection of loosely-related " +"packages (such as a large corpus of client libraries for multiple products " +"from a single company). However, namespace packages come with several " +"caveats and are not appropriate in all cases. A simple alternative is to use " +"a prefix on all of your distributions such as ``import " +"mynamespace_subpackage_a`` (you could even use ``import " +"mynamespace_subpackage_a as subpackage_a`` to keep the import object short)." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:62 +msgid "Creating a namespace package" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:64 +msgid "" +"There are currently two different approaches to creating namespace packages, " +"from which the latter is discouraged:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:67 +msgid "" +"Use `native namespace packages`_. This type of namespace package is defined " +"in :pep:`420` and is available in Python 3.3 and later. This is recommended " +"if packages in your namespace only ever need to support Python 3 and " +"installation via ``pip``." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:71 +msgid "" +"Use `legacy namespace packages`_. This comprises `pkgutil-style namespace " +"packages`_ and `pkg_resources-style namespace packages`_." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:75 +msgid "Native namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:77 +msgid "" +"Python 3.3 added **implicit** namespace packages from :pep:`420`. All that " +"is required to create a native namespace package is that you just " +"omit :file:`__init__.py` from the namespace package directory. An example " +"file structure (following :ref:`src-layout `):" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:94 +msgid "" +"It is extremely important that every distribution that uses the namespace " +"package omits the :file:`__init__.py` or uses a pkgutil-" +"style :file:`__init__.py`. If any distribution does not, it will cause the " +"namespace logic to fail and the other sub-packages will not be importable." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:99 +msgid "" +"The ``src-layout`` directory structure allows automatic discovery of " +"packages by most :term:`build backends `. See :ref:`src-" +"layout-vs-flat-layout` for more information. If however you want to manage " +"exclusions or inclusions of packages yourself, this is possible to be " +"configured in the top-level :file:`pyproject.toml`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:117 +msgid "The same can be accomplished with a :file:`setup.cfg`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:129 +msgid "Or :file:`setup.py`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:142 +msgid "" +":ref:`setuptools` will search the directory structure for implicit namespace " +"packages by default." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:145 +msgid "" +"A complete working example of two native namespace packages can be found in " +"the `native namespace package example project`_." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:151 +msgid "" +"Because native and pkgutil-style namespace packages are largely compatible, " +"you can use native namespace packages in the distributions that only support " +"Python 3 and pkgutil-style namespace packages in the distributions that need " +"to support Python 2 and 3." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:158 +msgid "Legacy namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:160 +msgid "" +"These two methods, that were used to create namespace packages prior " +"to :pep:`420`, are now considered to be obsolete and should not be used " +"unless you need compatibility with packages already using one of these " +"methods." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:164 +msgid "" +"To migrate an existing package, all packages sharing the namespace must be " +"migrated simultaneously." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:166 +msgid "" +"While native namespace packages and pkgutil-style namespace packages are " +"largely compatible, pkg_resources-style namespace packages are not " +"compatible with the other methods. It's inadvisable to use different methods " +"in different distributions that provide packages to the same namespace." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:173 +msgid "pkgutil-style namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:175 +msgid "" +"Python 2.3 introduced the :doc:`pkgutil ` module and " +"the :py:func:`python:pkgutil.extend_path` function. This can be used to " +"declare namespace packages that need to be compatible with both Python 2.3+ " +"and Python 3. This was the recommended approach for the highest level of " +"compatibility." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:180 +msgid "" +"To create a pkgutil-style namespace package, you need to provide " +"an :file:`__init__.py` file for the namespace package:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:194 +#: ../source/guides/packaging-namespace-packages.rst:249 +msgid "" +"The :file:`__init__.py` file for the namespace package needs to contain the " +"following:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:201 +#: ../source/guides/packaging-namespace-packages.rst:256 +msgid "" +"**Every** distribution that uses the namespace package must include such " +"an :file:`__init__.py`. If any distribution does not, it will cause the " +"namespace logic to fail and the other sub-packages will not be importable. " +"Any additional code in :file:`__init__.py` will be inaccessible." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:206 +msgid "" +"A complete working example of two pkgutil-style namespace packages can be " +"found in the `pkgutil namespace example project`_." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:216 +msgid "pkg_resources-style namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:220 +msgid "" +"The information in this section is obsolete and is no longer functional (as " +"of Setuptools 82.0.0). It is only retained for historical reference." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:223 +msgid "" +"``pkg_resources`` has been deprecated and was fully removed in Setuptools " +"82.0.0." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:225 +msgid "" +":doc:`Setuptools ` previously provided the " +"``pkg_resources.declare_namespace`` function and the ``namespace_packages`` " +"argument to :func:`~setuptools.setup`. Together these could be used to " +"declare namespace packages. While this approach is no longer supported, it " +"may still be encountered in environments using older ``setuptools`` " +"versions. If you are creating a new distribution within an existing " +"namespace package that uses this method then it's recommended to continue " +"using this as the different methods are not cross-compatible and it's not " +"advisable to try to migrate an existing package." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:235 +msgid "" +"To create a pkg_resources-style namespace package, you need to provide " +"an :file:`__init__.py` file for the namespace package:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:261 +msgid "" +"Some older recommendations advise the following in the namespace " +"package :file:`__init__.py`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:271 +msgid "" +"The idea behind this was that in the rare case that setuptools isn't " +"available packages would fall-back to the pkgutil-style packages. This isn't " +"advisable because pkgutil and pkg_resources-style namespace packages are not " +"cross-compatible. If the presence of setuptools is a concern then the " +"package should just explicitly depend on setuptools via ``install_requires``." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:278 +msgid "" +"Finally, every distribution must provide the ``namespace_packages`` argument " +"to :func:`~setuptools.setup` in :file:`setup.py`. For example:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:5 +msgid "" +"Publishing package distribution releases using GitHub Actions CI/CD workflows" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:7 +msgid "" +"`GitHub Actions CI/CD`_ allows you to run a series of commands whenever an " +"event occurs on the GitHub platform. One popular choice is having a workflow " +"that's triggered by a ``push`` event. This guide shows you how to publish a " +"Python distribution whenever a tagged commit is pushed. It will use the " +"`pypa/gh-action-pypi-publish GitHub Action`_ for publishing. It also uses " +"GitHub's `upload-artifact`_ and `download-artifact`_ actions for temporarily " +"storing and downloading the source packages." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:19 +msgid "" +"This guide *assumes* that you already have a project that you know how to " +"build distributions for and *it lives on GitHub*. This guide also avoids " +"details of building platform specific projects. If you have binary " +"components, check out :ref:`cibuildwheel`'s GitHub Action examples." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:25 +msgid "Configuring Trusted Publishing" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:27 +msgid "" +"This guide relies on PyPI's `Trusted Publishing`_ implementation to connect " +"to `GitHub Actions CI/CD`_. This is recommended for security reasons, since " +"the generated tokens are created for each of your projects individually and " +"expire automatically. Otherwise, you'll need to generate an `API token`_ for " +"both PyPI and TestPyPI. In case of publishing to third-party indexes " +"like :doc:`devpi `, you may need to provide a username/password " +"combination." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:35 +msgid "" +"Since this guide will demonstrate uploading to both PyPI and TestPyPI, we'll " +"need two trusted publishers configured. The following steps will lead you " +"through creating the \"pending\" publishers for your new :term:`PyPI project " +"`. However it is also possible to add `Trusted Publishing`_ to any " +"pre-existing project, if you are its owner." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:44 +msgid "" +"If you followed earlier versions of this guide, you have created the secrets " +"``PYPI_API_TOKEN`` and ``TEST_PYPI_API_TOKEN`` for direct PyPI and TestPyPI " +"access. These are obsolete now and you should remove them from your GitHub " +"repository and revoke them in your PyPI and TestPyPI account settings in " +"case you are replacing your old setup with the new one." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:51 +msgid "Let's begin! 🚀" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:53 +msgid "Go to https://pypi.org/manage/account/publishing/." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:54 +msgid "" +"Fill in the name you wish to publish your new :term:`PyPI project ` " +"under (the ``name`` value in your ``setup.cfg`` or ``pyproject.toml``), the " +"GitHub repository owner's name (org or user), and repository name, and the " +"name of the release workflow file under the ``.github/`` folder, " +"see :ref:`workflow-definition`. Finally, add the name of the GitHub " +"Environment (``pypi``) we're going set up under your repository. Register " +"the trusted publisher." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:63 +msgid "" +"Now, go to https://test.pypi.org/manage/account/publishing/ and repeat the " +"second step, but this time, enter ``testpypi`` as the name of the GitHub " +"Environment." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:66 +msgid "" +"Your \"pending\" publishers are now ready for their first use and will " +"create your projects automatically once you use them for the first time." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:72 +msgid "" +"If you don't have a TestPyPI account, you'll need to create it. It's not the " +"same as a regular PyPI account." +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." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 +msgid "Creating a workflow definition" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:87 +msgid "" +"GitHub CI/CD workflows are declared in YAML files stored in the ``.github/" +"workflows/`` directory of your repository." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:90 +msgid "Let's create a ``.github/workflows/publish-to-pypi.yml`` file." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:93 +msgid "" +"Start it with a meaningful name and define the event that should make GitHub " +"run this workflow:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:101 +msgid "Checking out the project and building distributions" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:103 +msgid "" +"We will have to define two jobs to publish to PyPI and TestPyPI " +"respectively, and an additional job to build the distribution packages." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:107 +msgid "" +"First, we'll define the job for building the dist packages of your project " +"and storing them for later use:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 +msgid "" +"This will download your repository into the CI runner and then install and " +"activate the newest available Python 3 release." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 +msgid "" +"And now we can build the dists from source and store them. In this example, " +"we'll use the ``build`` package. So add this to the steps list:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 +msgid "Defining a workflow job environment" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 +msgid "" +"Now, let's add initial setup for our job that will publish to PyPI. It's a " +"process that will execute commands that we'll define later. In this guide, " +"we'll use the latest stable Ubuntu LTS version provided by GitHub Actions. " +"This also defines a GitHub Environment for the job to run in its context and " +"a URL to be displayed in GitHub's UI nicely. Additionally, it allows " +"acquiring an OpenID Connect token that the ``pypi-publish`` actions needs to " +"implement secretless Trusted Publishing to PyPI." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 +msgid "" +"This will also ensure that the PyPI publishing workflow is only triggered if " +"the current commit is tagged." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 +msgid "Publishing the distribution to PyPI" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +msgid "Finally, add the following steps at the end:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +msgid "" +"This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " +"stored distribution package has been downloaded by the `download-artifact`_ " +"action, it uploads the contents of the ``dist/`` folder into PyPI " +"unconditionally." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 +msgid "" +"Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " +"and uploads :pep:`740`-compatible attestations for each distribution by " +"default. No additional manual signing steps are required." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 +msgid "Separate workflow for publishing to TestPyPI" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 +msgid "" +"Now, repeat these steps and create another job for publishing to the " +"TestPyPI package index under the ``jobs`` section:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 +msgid "" +"Requiring manual approvals in the ``testpypi`` GitHub Environment is " +"typically unnecessary as it's designed to run on each commit to the main " +"branch and is often used to indicate a healthy release publishing pipeline." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 +msgid "The whole CI/CD workflow" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 +msgid "" +"This paragraph showcases the whole workflow after following the above guide." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 +msgid "That's all, folks!" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 +msgid "" +"Now, whenever you push a tagged commit to your Git repository remote on " +"GitHub, this workflow will publish it to PyPI. And it'll publish any push to " +"TestPyPI which is useful for providing test builds to your alpha users as " +"well as making sure that your release pipeline remains healthy!" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 +msgid "" +"If your repository has frequent commit activity and every push is uploaded " +"to TestPyPI as described, the project might exceed the `PyPI project size " +"limit `_. The limit could be " +"increased, but a better solution may constitute to use a PyPI-compatible " +"server like :ref:`pypiserver` in the CI for testing purposes." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 +msgid "" +"It is recommended to keep the integrated GitHub Actions at their latest " +"versions, updating them frequently." +msgstr "" + +#: ../source/guides/section-build-and-publish.rst:3 +msgid "Building and Publishing" +msgstr "" + +#: ../source/guides/section-hosting.rst:3 +msgid "Hosting" +msgstr "" + +#: ../source/guides/section-install.rst:3 +#: ../source/specifications/pylock-toml.rst:744 +msgid "Installation" +msgstr "" + +#: ../source/guides/single-sourcing-package-version.rst:-1 +msgid "0; url=../../discussions/single-source-version/" +msgstr "" + +#: ../source/guides/single-sourcing-package-version.rst:6 +msgid "Redirecting stale single-source package version link..." +msgstr "" + +#: ../source/guides/single-sourcing-package-version.rst:8 +msgid "" +"If the page doesn't automatically refresh, see :ref:`single-source-version`." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:7 +msgid "Supporting multiple Python versions" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:10 +msgid "2014-12-24" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:36 +msgid "" +"In addition to the work required to create a Python package, it is often " +"necessary that the package must be made available on different versions of " +"Python. Different Python versions may contain different (or renamed) " +"standard library packages, and the changes between Python versions 2.x and " +"3.x include changes in the language syntax." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:42 +msgid "" +"Performed manually, all the testing required to ensure that the package " +"works correctly on all the target Python versions (and OSs!) could be very " +"time-consuming. Fortunately, several tools are available for dealing with " +"this, and these will briefly be discussed here." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:48 +msgid "Automated testing and continuous integration" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:50 +msgid "" +"Several hosted services for automated testing are available. These services " +"will typically monitor your source code repository (e.g. at `GitHub `_ or `Bitbucket `_) and run your " +"project's test suite every time a new commit is made." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:55 +msgid "" +"These services also offer facilities to run your project's test suite on " +"*multiple versions of Python*, giving rapid feedback about whether the code " +"will work, without the developer having to perform such tests themselves." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:59 +msgid "" +"Wikipedia has an extensive `comparison `_ of many continuous-" +"integration systems. There are two hosted services which when used in " +"conjunction provide automated testing across Linux, Mac and Windows:" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:65 +msgid "" +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:67 +msgid "" +"`Appveyor `_ provides a Windows environment " +"(Windows Server 2012)." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:78 +msgid "" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" +"formatted file as specification for the instructions for testing. If any " +"tests fail, the output log for that specific configuration can be inspected." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:83 +msgid "" +"For Python projects that are intended to be deployed on both Python 2 and 3 " +"with a single-source strategy, there are a number of options." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:87 +msgid "Tools for single-source Python packages" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:89 +msgid "" +"`six `_ is a tool developed by Benjamin " +"Peterson for wrapping over the differences between Python 2 and Python 3. " +"The six_ package has enjoyed widespread use and may be regarded as a " +"reliable way to write a single-source Python module that can be use in both " +"Python 2 and 3. The six_ module can be used from as early as Python 2.5. A " +"tool called `modernize `_, developed by " +"Armin Ronacher, can be used to automatically apply the code modifications " +"provided by six_." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:98 +msgid "" +"Similar to six_, `python-future `_ " +"is a package that provides a compatibility layer between Python 2 and Python " +"3 source code; however, unlike six_, this package aims to provide " +"interoperability between Python 2 and Python 3 with a language syntax that " +"matches one of the two Python versions: one may use" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:105 +msgid "a Python 2 (by syntax) module in a Python 3 project." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:106 +msgid "a Python 3 (by syntax) module in a *Python 2* project." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:108 +msgid "" +"Because of the bi-directionality, python-future_ offers a pathway to " +"converting a Python 2 package to Python 3 syntax module-by-module. However, " +"in contrast to six_, python-future_ is supported only from Python 2.6. " +"Similar to modernize_ for six_, python-future_ comes with two scripts called " +"``futurize`` and ``pasteurize`` that can be applied to either a Python 2 " +"module or a Python 3 module respectively." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:115 +msgid "" +"Use of six_ or python-future_ adds an additional runtime dependency to your " +"package: with python-future_, the ``futurize`` script can be called with the " +"``--stage1`` option to apply only the changes that Python 2.6+ already " +"provides for forward-compatibility to Python 3. Any remaining compatibility " +"problems would require manual changes." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:122 +msgid "What's in which Python?" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:124 +msgid "" +"Ned Batchelder provides a list of changes in each Python release for `Python " +"2 `__, " +"`Python 3.0-3.3 `__ and `Python 3.4-3.6 `__. These " +"lists may be used to check whether any changes between Python versions may " +"affect your package." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:5 +msgid "Supporting Windows using Appveyor" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:8 +msgid "2015-12-03" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:10 +msgid "" +"This section covers how to use the free `Appveyor`_ continuous integration " +"service to provide Windows support for your project. This includes testing " +"the code on Windows, and building Windows-targeted binaries for projects " +"that use C extensions." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:19 +msgid "" +"Many projects are developed on Unix by default, and providing Windows " +"support can be a challenge, because setting up a suitable Windows test " +"environment is non-trivial, and may require buying software licenses." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:23 +msgid "" +"Windows users typically do not have access to a C compiler, and therefore " +"are reliant on projects that use C extensions distributing binary wheels on " +"PyPI in order for the distribution to be installable via ``python -m pip " +"install ``. By using Appveyor as a build service (even if not using it " +"for testing) it is possible for projects without a dedicated Windows " +"environment to provide Windows-targeted binaries." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:31 +msgid "Setting up" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:33 +msgid "" +"In order to use Appveyor to build Windows wheels for your project, you must " +"have an account on the service. Instructions on setting up an account are " +"given in `the Appveyor documentation `__. " +"The free tier of account is perfectly adequate for open source projects." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:38 +msgid "" +"Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " +"your project is hosted on one of those two services, setting up Appveyor " +"integration is straightforward." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:42 +msgid "" +"Once you have set up your Appveyor account and added your project, Appveyor " +"will automatically build your project each time a commit occurs." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:46 +msgid "Adding Appveyor support to your project" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:48 +msgid "" +"In order to define how Appveyor should build your project, you need to add " +"an :file:`appveyor.yml` file to your project. The full details of what can " +"be included in the file are covered in the Appveyor documentation. This " +"guide will provide the details necessary to set up wheel builds." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:53 +msgid "" +"Appveyor includes by default all of the compiler toolchains needed to build " +"extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " +"3.4, the tools work out of the box. But for 64-bit versions of Python 3.3 " +"and 3.4, there is a small amount of additional configuration needed to let " +"distutils know where to find the 64-bit compilers. (From 3.5 onwards, the " +"version of Visual Studio used includes 64-bit compilers with no additional " +"setup)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:61 +msgid "appveyor.yml" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:67 +msgid "" +"This file can be downloaded from `here `__." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:69 +msgid "" +"The :file:`appveyor.yml` file must be located in the root directory of your " +"project. It is in ``YAML`` format, and consists of a number of sections." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:72 +msgid "" +"The ``environment`` section is the key to defining the Python versions for " +"which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " +"3.4 and 3.5 installed, in both 32-bit and 64-bit builds. The example file " +"builds for all of these environments except Python 2.6. Installing for " +"Python 2.6 is more complex, as it does not come with pip included. We don't " +"support 2.6 in this document (as Windows users still using Python 2 are " +"generally able to move to Python 2.7 without too much difficulty)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:80 +msgid "" +"The ``install`` section uses pip to install any additional software that the " +"project may require. The only requirement for building wheels is the " +"``wheel`` project, but projects may wish to customise this code in certain " +"circumstances (for example, to install additional build packages such as " +"``Cython``, or test tools such as ``tox``)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:86 +msgid "" +"The ``build`` section simply switches off builds - there is no build step " +"needed for Python, unlike languages like ``C#``." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:89 +msgid "" +"The main sections that will need to be tailored to your project are " +"``test_script`` and ``after_test``." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:92 +msgid "" +"The ``test_script`` section is where you will run your project's tests. The " +"supplied file runs your test suite using ``setup.py test``. If you are only " +"interested in building wheels, and not in running your tests on Windows, you " +"can replace this section with a dummy command such as ``echo Skipped " +"Tests``. You may wish to use another test tool, such as ``nose`` " +"or :file:`py.test`. Or you may wish to use a test driver like ``tox`` - " +"however if you are using ``tox`` there are some additional configuration " +"changes you will need to consider, which are described below." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:101 +msgid "" +"The ``after_test`` runs once your tests have completed, and so is where the " +"wheels should be built. Assuming your project uses the recommended tools " +"(specifically, ``setuptools``) then the ``setup.py bdist_wheel`` command " +"will build your wheels." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:106 +msgid "" +"Note that wheels will only be built if your tests succeed. If you expect " +"your tests to fail on Windows, you can skip them as described above." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:111 +msgid "Support script" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:113 +msgid "" +"The :file:`appveyor.yml` file relies on a single support script, which sets " +"up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " +"and 3.4. For projects which do not need a compiler, or which don't support " +"3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:118 +msgid "" +"`build.cmd `__ is a Windows batch " +"script that runs a single command in an environment with the appropriate " +"compiler for the selected Python version. All you need to do is to set the " +"single environment variable ``DISTUTILS_USE_SDK`` to a value of ``1`` and " +"the script does the rest. It sets up the SDK needed for 64-bit builds of " +"Python 3.3 or 3.4, so don't set the environment variable for any other " +"builds." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:125 +msgid "" +"You can simply download the batch file and include it in your project " +"unchanged." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:129 +msgid "Access to the built wheels" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:131 +msgid "" +"When your build completes, the built wheels will be available from the " +"Appveyor control panel for your project. They can be found by going to the " +"build status page for each build in turn. At the top of the build output " +"there is a series of links, one of which is \"Artifacts\". That page will " +"include a list of links to the wheels for that Python version / " +"architecture. You can download those wheels and upload them to PyPI as part " +"of your release process." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:142 +msgid "Testing with tox" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:144 +msgid "" +"Many projects use the :doc:`Tox ` tool to run their tests. It " +"ensures that tests are run in an isolated environment using the exact files " +"that will be distributed by the project." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:148 +msgid "" +"In order to use ``tox`` on Appveyor there are a couple of additional " +"considerations (in actual fact, these issues are not specific to Appveyor, " +"and may well affect other CI systems)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:152 +msgid "" +"By default, ``tox`` only passes a chosen subset of environment variables to " +"the test processes. Because ``distutils`` uses environment variables to " +"control the compiler, this \"test isolation\" feature will cause the tests " +"to use the wrong compiler by default." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:157 +msgid "" +"To force ``tox`` to pass the necessary environment variables to the " +"subprocess, you need to set the ``tox`` configuration option ``passenv`` to " +"list the additional environment variables to be passed to the subprocess. " +"For the SDK compilers, you need" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:162 +msgid "``DISTUTILS_USE_SDK``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:163 +msgid "``MSSdk``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:164 +msgid "``INCLUDE``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:165 +msgid "``LIB``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:167 +msgid "" +"The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " +"to avoid adding Windows-specific settings to your general project files, it " +"can be set by setting the ``TOX_TESTENV_PASSENV`` environment variable. The " +"supplied :file:`build.cmd` script does this by default whenever " +"``DISTUTILS_USE_SDK`` is set." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:173 +msgid "" +"When used interactively, ``tox`` allows you to run your tests against " +"multiple environments (often, this means multiple Python versions). This " +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:180 +msgid "" +"However, this does *not* work well with a Windows CI system like Appveyor, " +"where there are (for example) two installations of Python 3.4 (32-bit and 64-" +"bit) available, but only one ``py34`` environment in ``tox``." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:184 +msgid "" +"In order to run tests using ``tox``, therefore, projects should probably use " +"the default ``py`` environment in ``tox``, which uses the Python interpreter " +"that was used to run ``tox``. This will ensure that when Appveyor runs the " +"tests, they will be run with the configured interpreter." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:189 +msgid "" +"In order to support running under the ``py`` environment, it is possible " +"that projects with complex ``tox`` configurations might need to modify " +"their :file:`tox.ini` file. Doing so is, however, outside the scope of this " +"document." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:195 +msgid "Automatically uploading wheels" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:197 +msgid "" +"It is possible to request Appveyor to automatically upload wheels. There is " +"a ``deployment`` step available in :file:`appveyor.yml` that can be used to " +"(for example) copy the built artifacts to a FTP site, or an Amazon S3 " +"instance. Documentation on how to do this is included in the Appveyor guides." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:202 +msgid "" +"Alternatively, it would be possible to add a ``twine upload`` step to the " +"build. The supplied :file:`appveyor.yml` does not do this, as it is not " +"clear that uploading new wheels after every commit is desirable (although " +"some projects may wish to do this)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:208 +msgid "External dependencies" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:210 +msgid "" +"The supplied scripts will successfully build any distribution that does not " +"rely on 3rd party external libraries for the build." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:213 +msgid "" +"It is possible to add steps to the :file:`appveyor.yml` configuration " +"(typically in the \"install\" section) to download and/or build external " +"libraries needed by the distribution. And if needed, it is possible to add " +"extra configuration for the build to supply the location of these libraries " +"to the compiler. However, this level of configuration is beyond the scope of " +"this document." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:222 +msgid "Support scripts" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:224 +msgid "For reference, the SDK setup support script is listed here:" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:226 +msgid "``appveyor-sample/build.cmd``" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:5 +msgid "Tool recommendations" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:7 +msgid "" +"The Python packaging landscape consists of many different tools. For many " +"tasks, the :term:`Python Packaging Authority ` (PyPA, the working group which encompasses many packaging tools and " +"maintains this guide) purposefully does not make a blanket recommendation; " +"for example, the reason there are many build backends is that the landscape " +"was opened up in order to enable the development of new backends serving " +"certain users' needs better than the previously unique backend, setuptools. " +"This guide does point to some tools that are widely recognized, and also " +"makes some recommendations of tools that you should *not* use because they " +"are deprecated or insecure." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:20 +msgid "Virtual environments" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:22 +msgid "" +"The standard tools to create and use virtual environments manually " +"are :ref:`virtualenv` (PyPA project) and :doc:`venv ` " +"(part of the Python standard library, though missing some features of " +"virtualenv)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:28 +msgid "Installing packages" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:30 +msgid "" +":ref:`Pip` is the standard tool to install packages from :term:`PyPI `. You may want to read pip's recommendations " +"for :doc:`secure installs `. Pip is available by " +"default in most Python installations through the standard library " +"package :doc:`ensurepip `." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:36 +msgid "" +"Alternatively, consider :ref:`pipx` for the specific use case of installing " +"Python applications that are distributed through PyPI and run from the " +"command line. Pipx is a wrapper around pip and venv that installs each " +"application into a dedicated virtual environment. This avoids conflicts " +"between the dependencies of different applications, and also with system-" +"wide applications making use of the same Python interpreter (especially on " +"Linux)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:43 +msgid "" +"For scientific software specifically, consider :ref:`Conda` or :ref:`Spack`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:45 +msgid "Write a \"pip vs. Conda\" comparison, here or in a new discussion." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:47 +msgid "" +"Do **not** use ``easy_install`` (part of :ref:`setuptools`), which is " +"deprecated in favor of pip (see :ref:`pip vs easy_install` for details). " +"Likewise, do **not** use ``python setup.py install`` or ``python setup.py " +"develop``, which are also deprecated (see :ref:`setup-py-deprecated` for " +"background and :ref:`modernize-setup-py-project` for migration advice)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:55 +msgid "Lock files" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:57 +msgid "" +":ref:`pip-tools` and :ref:`Pipenv` are two recognized tools to create lock " +"files, which contain the exact versions of all packages installed into an " +"environment, for reproducibility purposes." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:63 +msgid "Build backends" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:67 +msgid "" +"Please, remember: this document does not seek to steer the reader towards a " +"particular tool, only to enumerate common tools. Different use cases often " +"need specialized workflows." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:71 +msgid "" +"Popular :term:`build backends ` for pure-Python packages " +"include, in alphabetical order:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:74 +msgid "" +":doc:`Flit-core ` -- developed with but separate " +"from :ref:`Flit`. A minimal and opinionated build backend. It does not " +"support plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:77 +msgid "" +"Hatchling_ -- developed with but separate from :ref:`Hatch`. Supports " +"plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:79 +msgid "" +"PDM-backend_ -- developed with but separate from :ref:`PDM`. Supports " +"plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:81 +msgid "" +"Poetry-core_ -- developed with but separate from :ref:`Poetry`. Supports " +"plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:84 +msgid "" +"Unlike other backends on this list, Poetry-core does not support the " +"standard :ref:`[project] table ` (it uses a " +"different format, in the ``[tool.poetry]`` table)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:88 +msgid "" +":ref:`setuptools`, which used to be the only build backend. Supports plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:92 +msgid "" +"If you use setuptools, please be aware that some features that predate " +"standardisation efforts are now deprecated and only *temporarily kept* for " +"compatibility." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:96 +msgid "" +"In particular, do **not** use direct ``python setup.py`` invocations. On the " +"other hand, configuring setuptools with a :file:`setup.py` file is still " +"fully supported, although it is recommended to use the " +"modern :ref:`[project] table in pyproject.toml ` " +"(or :file:`setup.cfg`) whenever possible and keep :file:`setup.py` only if " +"programmatic configuration is needed. See :ref:`setup-py-deprecated`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:103 +msgid "" +"Other examples of deprecated features you should **not** use include the " +"``setup_requires`` argument to ``setup()`` (use the :ref:`[build-system] " +"table ` in :file:`pyproject.toml` " +"instead), and the ``easy_install`` command (cf. :ref:`pip vs easy_install`)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:108 +msgid "" +"Do **not** use :ref:`distutils`, which is deprecated, and has been removed " +"from the standard library in Python 3.12, although it still remains " +"available from setuptools." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 +msgid "" +"For packages with :term:`extension modules `, it is best " +"to use a build system with dedicated support for the language the extension " +"is written in, for example:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:121 +msgid "" +":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " +"for Go and Rust)," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:122 +msgid "" +":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " +"by Meson," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:123 +msgid "" +":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " +"by CMake," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:124 +msgid ":ref:`maturin` -- Rust, via Cargo." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:128 +msgid "Building distributions" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:130 +msgid "" +"The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " +"is :ref:`build`. It will invoke whichever build backend you :ref:`declared " +"` in :file:`pyproject.toml`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:135 +msgid "" +"Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " +"for this task. All direct invocations of :file:`setup.py` " +"are :ref:`deprecated `." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:139 +msgid "" +"If you have :term:`extension modules ` and want to " +"distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " +"your CI setup to build distributable wheels." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:145 +msgid "Uploading to PyPI" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:147 +msgid "" +"For projects hosted on or published via supported CI/CD platforms, it is " +"recommended to use the :ref:`Trusted Publishing `, which " +"allows the package to be securely uploaded to PyPI from a CI/CD workflow " +"without a manually configured API token." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:152 +msgid "" +"As of November 2024, PyPI supports the following platforms as Trusted " +"Publishing providers:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:155 +msgid "GitHub Actions (on ``https://github.com``)" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:156 +msgid "GitLab CI/CD (on ``https://gitlab.com``)" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:157 +msgid "ActiveState" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:158 +msgid "Google Cloud" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:160 +msgid "" +"The other available method is to upload the package manually " +"using :ref:`twine`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:164 +msgid "" +"**Never** use ``python setup.py upload`` for this task. In addition to " +"being :ref:`deprecated `, it is insecure." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:169 +msgid "Workflow tools" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:171 +msgid "" +"These tools are environment managers that automatically manage virtual " +"environments for a project. They also act as \"task runners\", allowing you " +"to define and invoke tasks such as running tests, compiling documentation, " +"regenerating some files, etc. Some of them provide shortcuts for building " +"distributions and uploading to PyPI, and some support lock files for " +"applications. They often call the tools mentioned above under the hood. In " +"alphabetical order:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:179 +msgid ":ref:`Flit`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:180 +msgid ":ref:`Hatch`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:181 +msgid ":doc:`nox `," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:182 +msgid ":ref:`PDM`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:183 +msgid ":ref:`Pipenv`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:184 +msgid ":ref:`Poetry`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:185 +msgid ":doc:`tox `." +msgstr "" + +#: ../source/guides/using-manifest-in.rst:5 +msgid "Including files in source distributions with ``MANIFEST.in``" +msgstr "" + +#: ../source/guides/using-manifest-in.rst:7 +msgid "" +"The information on this page has moved to :doc:`setuptools:userguide/" +"miscellaneous` in the setuptools documentation." +msgstr "" + +#: ../source/guides/using-testpypi.rst:7 +msgid "" +"``TestPyPI`` is a separate instance of the :term:`Python Package Index " +"(PyPI)` that allows you to try out the distribution tools and process " +"without worrying about affecting the real index. TestPyPI is hosted at " +"`test.pypi.org `_" +msgstr "" + +#: ../source/guides/using-testpypi.rst:13 +msgid "Registering your account" +msgstr "" + +#: ../source/guides/using-testpypi.rst:15 +msgid "" +"Because TestPyPI has a separate database from the live PyPI, you'll need a " +"separate user account specifically for TestPyPI. Go to https://test.pypi.org/" +"account/register/ to register your account." +msgstr "" + +#: ../source/guides/using-testpypi.rst:19 +msgid "" +"The database for TestPyPI may be periodically pruned, so it is not unusual " +"for user accounts to be deleted." +msgstr "" + +#: ../source/guides/using-testpypi.rst:24 +msgid "Using TestPyPI with Twine" +msgstr "" + +#: ../source/guides/using-testpypi.rst:26 +msgid "" +"You can upload your distributions to TestPyPI using :ref:`twine` by " +"specifying the ``--repository`` flag:" +msgstr "" + +#: ../source/guides/using-testpypi.rst:33 +msgid "" +"You can see if your package has successfully uploaded by navigating to the " +"URL ``https://test.pypi.org/project/`` where " +"``sampleproject`` is the name of your project that you uploaded. It may take " +"a minute or two for your project to appear on the site." +msgstr "" + +#: ../source/guides/using-testpypi.rst:39 +msgid "Using TestPyPI with pip" +msgstr "" + +#: ../source/guides/using-testpypi.rst:41 +msgid "" +"You can tell :ref:`pip` to download packages from TestPyPI instead of PyPI " +"by specifying the ``--index-url`` flag:" +msgstr "" + +#: ../source/guides/using-testpypi.rst:56 +msgid "" +"If you want to allow pip to also download packages from PyPI, you can " +"specify ``--extra-index-url`` to point to PyPI. This is useful when the " +"package you're testing has dependencies:" +msgstr "" + +#: ../source/guides/using-testpypi.rst:73 +msgid "Setting up TestPyPI in :file:`.pypirc`" +msgstr "" + +#: ../source/guides/using-testpypi.rst:75 +msgid "" +"If you want to avoid being prompted for your username and password every " +"time, you can configure TestPyPI in your :file:`$HOME/.pypirc`:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:5 +msgid "Writing your ``pyproject.toml``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:7 +msgid "" +"``pyproject.toml`` is a configuration file used by packaging tools, as well " +"as other tools such as linters, type checkers, etc. There are three possible " +"TOML tables in this file." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:11 +msgid "" +"The ``[build-system]`` table is **strongly recommended**. It allows you to " +"declare which :term:`build backend` you use and which other dependencies are " +"needed to build your project." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:15 +msgid "" +"The ``[project]`` table is the format that most build backends use to " +"specify your project's basic metadata, such as the dependencies, your name, " +"etc." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:18 +msgid "" +"The ``[tool]`` table has tool-specific subtables, e.g., ``[tool.hatch]``, " +"``[tool.black]``, ``[tool.mypy]``. We only touch upon this table here " +"because its contents are defined by each tool. Consult the particular tool's " +"documentation to know what it can contain." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:25 +msgid "" +"The ``[build-system]`` table should always be present, regardless of which " +"build backend you use (``[build-system]`` *defines* the build tool you use)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:29 +msgid "" +"On the other hand, the ``[project]`` table is understood by *most* build " +"backends, but some build backends use a different format." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:32 +msgid "" +"A notable exception is Poetry_, which before version 2.0 (released January " +"5, 2025) did not use the ``[project]`` table, it used the ``[tool.poetry]`` " +"table instead. With version 2.0, it supports both. Also, the setuptools_ " +"build backend supports both the ``[project]`` table, and the older format in " +"``setup.cfg`` or ``setup.py``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:38 +msgid "" +"For new projects, use the ``[project]`` table, and keep ``setup.py`` only if " +"some programmatic configuration is needed (such as building C extensions), " +"but the ``setup.cfg`` and ``setup.py`` formats are still valid. " +"See :ref:`setup-py-deprecated`." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:47 +msgid "Declaring the build backend" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:49 +msgid "" +"The ``[build-system]`` table contains a ``build-backend`` key, which " +"specifies the build backend to be used. It also contains a ``requires`` key, " +"which is a list of dependencies needed to build the project -- this is " +"typically just the build backend package, but it may also contain additional " +"dependencies. You can also constrain the versions, e.g., ``requires = " +"[\"setuptools >= 61.0\"]``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:55 +msgid "" +"Usually, you'll just copy what your build backend's documentation suggests " +"(after :ref:`choosing your build backend `). Here " +"are the values for some common build backends:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:63 +msgid "Static vs. dynamic metadata" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:65 +msgid "The rest of this guide is devoted to the ``[project]`` table." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:67 +msgid "" +"Most of the time, you will directly write the value of a ``[project]`` " +"field. For example: ``requires-python = \">= 3.8\"``, or ``version = " +"\"1.0\"``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:71 +msgid "" +"However, in some cases, it is useful to let your build backend compute the " +"metadata for you. For example: many build backends can read the version from " +"a ``__version__`` attribute in your code, a Git tag, or similar. In such " +"cases, you should mark the field as dynamic using, e.g.," +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:82 +msgid "" +"When a field is dynamic, it is the build backend's responsibility to fill " +"it. Consult your build backend's documentation to learn how it does it." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:88 +msgid "Basic information" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:93 +#: ../source/specifications/pyproject-toml.rst:122 +#: ../source/specifications/pyproject-toml.rst:147 +#: ../source/specifications/pyproject-toml.rst:159 +msgid "``name``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:95 +msgid "" +"Put the name of your project on PyPI. This field is required and is the only " +"field that cannot be marked as dynamic." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:103 +msgid "" +"The project name must consist of ASCII letters, digits, underscores " +"\"``_``\", hyphens \"``-``\" and periods \"``.``\". It must not start or end " +"with an underscore, hyphen or period." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:107 +msgid "" +"Comparison of project names is case insensitive and treats arbitrarily long " +"runs of underscores, hyphens, and/or periods as equal. For example, if you " +"register a project named ``cool-stuff``, users will be able to download it " +"or declare a dependency on it using any of the following spellings: ``Cool-" +"Stuff``, ``cool.stuff``, ``COOL_STUFF``, ``CoOl__-.-__sTuFF``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:115 +#: ../source/specifications/pyproject-toml.rst:127 +#: ../source/specifications/pyproject-toml.rst:153 +#: ../source/specifications/pyproject-toml.rst:174 +msgid "``version``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:117 +msgid "Put the version of your project." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:124 +msgid "" +"Some more complicated version specifiers like ``2020.0.0a1`` (for an alpha " +"release) are possible; see the :ref:`specification ` for " +"full details." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:128 +msgid "This field is required, although it is often marked as dynamic using" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:135 +msgid "" +"This allows use cases such as filling the version from a ``__version__`` " +"attribute or a Git tag. Consult the :ref:`single-source-version` discussion " +"for more details." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:141 +msgid "Dependencies and requirements" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:144 +#: ../source/specifications/pyproject-toml.rst:453 +msgid "``dependencies``/``optional-dependencies``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:146 +msgid "If your project has dependencies, list them like this:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:158 +msgid "" +"See :ref:`Dependency specifiers ` for the full syntax " +"you can use to constrain versions." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:161 +msgid "" +"You may want to make some of your dependencies optional, if they are only " +"needed for a specific feature of your package. In that case, put them in " +"``optional-dependencies``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:174 +msgid "" +"Each of the keys defines a \"packaging extra\". In the example above, one " +"could use, e.g., ``pip install your-project-name[gui]`` to install your " +"project with GUI support, adding the PyQt5 dependency." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:183 +#: ../source/specifications/pylock-toml.rst:95 +#: ../source/specifications/pyproject-toml.rst:150 +#: ../source/specifications/pyproject-toml.rst:243 +msgid "``requires-python``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:185 +msgid "" +"This lets you declare the minimum version of Python that you support " +"[#requires-python-upper-bounds]_." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:197 +msgid "Creating executable scripts" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:199 +msgid "" +"To install a command as part of your package, declare it in the " +"``[project.scripts]`` table." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:207 +msgid "" +"In this example, after installing your project, a ``spam-cli`` command will " +"be available. Executing this command will do the equivalent of ``import sys; " +"from spam import main_cli; sys.exit(main_cli())``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:211 +msgid "" +"On Windows, scripts packaged this way need a terminal, so if you launch them " +"from within a graphical application, they will make a terminal pop up. To " +"prevent this from happening, use the ``[project.gui-scripts]`` table instead " +"of ``[project.scripts]``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:221 +msgid "" +"In that case, launching your script from the command line will give back " +"control immediately, leaving the script to run in the background." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:224 +msgid "" +"The difference between ``[project.scripts]`` and ``[project.gui-scripts]`` " +"is only relevant on Windows." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:230 +msgid "About your project" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:233 +#: ../source/specifications/pyproject-toml.rst:330 +msgid "``authors``/``maintainers``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:235 +msgid "" +"Both of these fields contain lists of people identified by a name and/or an " +"email address." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:255 +#: ../source/specifications/pyproject-toml.rst:137 +#: ../source/specifications/pyproject-toml.rst:189 +msgid "``description``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:257 +msgid "" +"This should be a one-line description of your project, to show as the " +"\"headline\" of your project page on PyPI (`example `_), and " +"other places such as lists of search results (`example `_)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:268 +#: ../source/specifications/pyproject-toml.rst:149 +#: ../source/specifications/pyproject-toml.rst:202 +msgid "``readme``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:270 +msgid "" +"This is a longer description of your project, to display on your project " +"page on PyPI. Typically, your project will have a ``README.md`` or " +"``README.rst`` file and you just put its file name here." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:279 +msgid "The README's format is auto-detected from the extension:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:281 +msgid "``README.md`` → `GitHub-flavored Markdown `_," +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:282 +msgid "" +"``README.rst`` → `reStructuredText `_ (without Sphinx extensions)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:284 +msgid "You can also specify the format explicitly, like this:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:297 +msgid "``license`` and ``license-files``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:299 +msgid "As per :pep:`639`, licenses should be declared with two fields:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:301 +msgid "" +"``license`` is an :term:`SPDX license expression ` " +"consisting of one or more :term:`license identifiers `." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:303 +msgid "``license-files`` is a list of license file glob patterns." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:305 +msgid "" +"A previous PEP had specified ``license`` to be a table with a ``file`` or a " +"``text`` key, this format is now deprecated. Most :term:`build " +"backends` now support the new format as shown in the " +"following table." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:309 +msgid "build backend versions that introduced :pep:`639` support" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:312 +msgid "hatchling" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:313 +msgid "setuptools" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:314 +msgid "flit-core [#flit-core-pep639]_" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:315 +msgid "pdm-backend" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:316 +msgid "poetry-core" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:317 +msgid "uv-build" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:318 +msgid "1.27.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:319 +msgid "77.0.3" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:320 +msgid "3.12" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 +msgid "2.2.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/specifications/pyproject-toml.rst:144 +#: ../source/specifications/pyproject-toml.rst:255 +msgid "``license``" +msgstr "" + +#: ../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 " +"`. The full license list is available at the `SPDX " +"license list page `_. The supported list version is 3.17 " +"or any later compatible one." +msgstr "" + +#: ../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 `_ for more context. The now deprecated format is " +"`described in PEP 621 `__." +msgstr "" + +#: ../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:353 +msgid "" +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:368 +#: ../source/specifications/pyproject-toml.rst:145 +#: ../source/specifications/pyproject-toml.rst:291 +msgid "``license-files``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:370 +msgid "" +"This is a list of license files and files containing other legal information " +"you want to distribute with your package." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:378 +msgid "The glob patterns must follow the specification:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:380 +msgid "" +"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " +"(``.``) will be matched verbatim." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:382 +msgid "" +"Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " +"supported." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:383 +msgid "Path delimiters must be the forward slash character (``/``)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:384 +msgid "" +"Patterns are relative to the directory containing :file:`pyproject.toml`, " +"and thus may not start with a slash character." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:386 +msgid "Parent directory indicators (``..``) must not be used." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:387 +msgid "Each glob must match at least one file." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:389 +msgid "" +"Literal paths are valid globs. Any characters or character sequences not " +"covered by this specification are invalid." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:395 +#: ../source/specifications/pyproject-toml.rst:143 +#: ../source/specifications/pyproject-toml.rst:374 +msgid "``keywords``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:397 +msgid "" +"This will help PyPI's search box to suggest your project when people search " +"for these keywords." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:409 +#: ../source/specifications/pyproject-toml.rst:135 +#: ../source/specifications/pyproject-toml.rst:386 +msgid "``classifiers``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:411 +msgid "" +"A list of PyPI classifiers that apply to your project. Check the `full list " +"of possibilities `_." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:436 +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 " +"browsing projects on PyPI, not for installing projects. To actually restrict " +"what Python versions a project can be installed on, use the :ref:`requires-" +"python` argument." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:441 +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:448 +#: ../source/specifications/pyproject-toml.rst:152 +#: ../source/specifications/pyproject-toml.rst:404 +msgid "``urls``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:450 +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:455 +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 " +"`_ for PyPI-specific " +"URL processing." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:469 +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:473 +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:477 +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:487 +msgid "" +"Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " +"equivalents (``homepage`` and ``download``), and can be presented with those " +"semantics in mind (the project's home page and its external download " +"location, respectively)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:499 +msgid "Advanced plugins" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:501 +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:510 +msgid "See the :ref:`Plugin guide ` for more information." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:515 +msgid "A full example" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:578 +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:582 +msgid "" +"flit-core `does not yet `_ support WITH in SPDX license " +"expressions." +msgstr "" + +#: ../source/index.rst:-1 +msgid "" +"The Python Packaging User Guide (PyPUG) is a collection of tutorials and " +"guides for packaging Python software." +msgstr "" + +#: ../source/index.rst:-1 +msgid "python, packaging, guide, tutorial" +msgstr "" + +#: ../source/index.rst:3 ../source/key_projects.rst:247 +msgid "Python Packaging User Guide" +msgstr "" + +#: ../source/index.rst:25 +msgid "" +"Welcome to the *Python Packaging User Guide*, a collection of tutorials and " +"references to help you distribute and install Python packages with modern " +"tools." +msgstr "" + +#: ../source/index.rst:29 +msgid "" +"This guide is maintained on `GitHub`_ by the :doc:`Python Packaging " +"Authority `. We happily accept :doc:`contributions and feedback " +"`. 😊" +msgstr "" + +#: ../source/index.rst:36 +msgid "Overview and Flow" +msgstr "" + +#: ../source/index.rst:40 +msgid "" +"Building your understanding of Python packaging is a journey. Patience and " +"continuous improvement are key to success. The overview and flow sections " +"provide a starting point for understanding the Python packaging ecosystem." +msgstr "" + +#: ../source/index.rst:44 +msgid "" +"The :doc:`overview` explains Python packaging and its use when preparing and " +"distributing projects. This section helps you build understanding about " +"selecting the tools and processes that are most suitable for your use case. " +"It includes what packaging is, the problems that it solves, and key " +"considerations." +msgstr "" + +#: ../source/index.rst:51 +msgid "" +"To get an overview of the workflow used to publish your code, " +"see :doc:`packaging flow `." +msgstr "" + +#: ../source/index.rst:57 +msgid "" +"Tutorials walk through the steps needed to complete a project for the first " +"time. Tutorials aim to help you succeed and provide a starting point for " +"future exploration. The :doc:`tutorials/index` section includes:" +msgstr "" + +#: ../source/index.rst:62 +msgid "" +"A :doc:`tutorial on installing packages `" +msgstr "" + +#: ../source/index.rst:63 +msgid "" +"A :doc:`tutorial on managing application dependencies ` in a version controlled project" +msgstr "" + +#: ../source/index.rst:65 +msgid "" +"A :doc:`tutorial on packaging and distributing ` your project" +msgstr "" + +#: ../source/index.rst:71 +msgid "" +"Guides provide steps to perform a specific task. Guides are more focused on " +"users who are already familiar with Python packaging and are looking for " +"specific information." +msgstr "" + +#: ../source/index.rst:75 +msgid "" +"The :doc:`guides/index` section provides \"how to\" instructions in three " +"major areas: package installation; building and distributing packages; " +"miscellaneous topics." +msgstr "" + +#: ../source/index.rst:80 +msgid "Explanations and Discussions" +msgstr "" + +#: ../source/index.rst:82 +msgid "" +"The :doc:`discussions/index` section provides in-depth explanations and " +"discussion about topics, such as:" +msgstr "" + +#: ../source/index.rst:85 +msgid ":doc:`discussions/deploying-python-applications`" +msgstr "" + +#: ../source/index.rst:86 +msgid ":doc:`discussions/pip-vs-easy-install`" +msgstr "" + +#: ../source/index.rst:89 +msgid "Reference" +msgstr "" + +#: ../source/index.rst:91 +msgid "" +"The :doc:`specifications/index` section for packaging interoperability " +"specifications." +msgstr "" + +#: ../source/index.rst:92 +msgid "" +"The list of :doc:`other projects ` maintained by members of " +"the Python Packaging Authority." +msgstr "" + +#: ../source/index.rst:93 +msgid "The :doc:`glossary` for definitions of terms used in Python packaging." +msgstr "" + +#: ../source/key_projects.rst:6 +msgid "Project Summaries" +msgstr "" + +#: ../source/key_projects.rst:8 +msgid "" +"Summaries and links for the most relevant projects in the space of Python " +"installation and packaging." +msgstr "" + +#: ../source/key_projects.rst:14 +msgid "PyPA Projects" +msgstr "" + +#: ../source/key_projects.rst:19 +msgid "bandersnatch" +msgstr "" + +#: ../source/key_projects.rst:21 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:26 +msgid "" +"``bandersnatch`` is a PyPI mirroring client designed to efficiently create a " +"complete mirror of the contents of PyPI. Organizations thus save bandwidth " +"and latency on package downloads (especially in the context of automated " +"tests) and to prevent heavily loading PyPI's Content Delivery Network (CDN). " +"Files can be served from a local directory or `AWS S3`_." +msgstr "" + +#: ../source/key_projects.rst:37 +msgid "build" +msgstr "" + +#: ../source/key_projects.rst:39 +msgid "" +":any:`Docs ` | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:44 +msgid "" +"``build`` is a :pep:`517` compatible Python package builder. It provides a " +"CLI to build packages, as well as a Python API." +msgstr "" + +#: ../source/key_projects.rst:51 +msgid "cibuildwheel" +msgstr "" + +#: ../source/key_projects.rst:53 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__ | " +"`Discussions `__ | " +"`Discord #cibuildwheel `__" +msgstr "" + +#: ../source/key_projects.rst:60 +msgid "" +"``cibuildwheel`` is a Python package that builds :term:`wheels ` for " +"all common platforms and Python versions on most CI systems. Also " +"see :ref:`multibuild`." +msgstr "" + +#: ../source/key_projects.rst:66 +msgid "distlib" +msgstr "" + +#: ../source/key_projects.rst:68 +msgid "" +":doc:`Docs ` | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:73 +msgid "" +"``distlib`` is a library which implements low-level functions that relate to " +"packaging and distribution of Python software. ``distlib`` implements " +"several relevant PEPs (Python Enhancement Proposal standards) and is useful " +"for developers of third-party packaging tools to make and upload binary and " +"source :term:`distributions `, achieve " +"interoperability, resolve dependencies, manage package resources, and do " +"other similar functions." +msgstr "" + +#: ../source/key_projects.rst:82 +msgid "" +"Unlike the stricter :ref:`packaging` project (below), which specifically " +"implements modern Python packaging interoperability standards, ``distlib`` " +"also attempts to provide reasonable fallback behaviours when asked to handle " +"legacy packages and metadata that predate the modern interoperability " +"standards and fall into the subset of packages that are incompatible with " +"those standards." +msgstr "" + +#: ../source/key_projects.rst:93 +msgid "distutils" +msgstr "" + +#: ../source/key_projects.rst:95 +msgid "" +"The original Python packaging system, added to the standard library in " +"Python 2.0 and removed in 3.12." +msgstr "" + +#: ../source/key_projects.rst:98 +msgid "" +"Due to the challenges of maintaining a packaging system where feature " +"updates are tightly coupled to language runtime updates, direct usage " +"of :ref:`distutils` has been actively discouraged, with :ref:`Setuptools` " +"being the preferred replacement. :ref:`Setuptools` not only provides " +"features that plain :ref:`distutils` doesn't offer (such as dependency " +"declarations and entry point declarations), it also provides a consistent " +"build interface and feature set across all supported Python versions." +msgstr "" + +#: ../source/key_projects.rst:107 +msgid "" +"Consequently, :ref:`distutils` was deprecated in Python 3.10 by :pep:`632` " +"and has been :doc:`removed ` from the standard library " +"in Python 3.12. Setuptools bundles the standalone copy of distutils, and it " +"is injected even on Python < 3.12 if you import setuptools first or use pip." +msgstr "" + +#: ../source/key_projects.rst:116 +msgid "flit" +msgstr "" + +#: ../source/key_projects.rst:118 +msgid "" +"`Docs `__ | `Issues `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:122 +msgid "" +"Flit provides a simple way to create and upload pure Python packages and " +"modules to PyPI. It focuses on `making the easy things easy `_ for packaging. Flit can generate a configuration file to " +"quickly set up a simple project, build source distributions and wheels, and " +"upload them to PyPI." +msgstr "" + +#: ../source/key_projects.rst:127 +msgid "" +"Flit uses ``pyproject.toml`` to configure a project. Flit does not rely on " +"tools such as :ref:`setuptools` to build distributions, or :ref:`twine` to " +"upload them to PyPI. Flit requires Python 3, but you can use it to " +"distribute modules for Python 2, so long as they can be imported on Python 3." +msgstr "" + +#: ../source/key_projects.rst:132 +msgid "" +"The flit package is lifted by `Matthias Bussonnier `__ since October 2023 on the `tidelift platform `__, and funds sent to the PSF and " +"earmarked for PyPA usage." +msgstr "" + +#: ../source/key_projects.rst:142 +msgid "hatch" +msgstr "" + +#: ../source/key_projects.rst:144 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:148 +msgid "" +"Hatch is a unified command-line tool meant to conveniently manage " +"dependencies and environment isolation for Python developers. Python package " +"developers use Hatch and its :term:`build backend ` Hatchling " +"to configure, version, specify dependencies for, and publish packages to " +"PyPI. Its plugin system allows for easily extending functionality." +msgstr "" + +#: ../source/key_projects.rst:157 +msgid "packaging" +msgstr "" + +#: ../source/key_projects.rst:159 +msgid "" +":doc:`Docs ` | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:164 +msgid "" +"Core utilities for Python packaging used by :ref:`pip` and :ref:`setuptools`." +msgstr "" + +#: ../source/key_projects.rst:166 +msgid "" +"The core utilities in the packaging library handle version handling, " +"specifiers, markers, requirements, tags, and similar attributes and tasks " +"for Python packages. Most Python users rely on this library without needing " +"to explicitly call it; developers of the other Python packaging, " +"distribution, and installation tools listed here often use its functionality " +"to parse, discover, and otherwise handle dependency attributes." +msgstr "" + +#: ../source/key_projects.rst:174 +msgid "" +"This project specifically focuses on implementing the modern Python " +"packaging interoperability standards defined at :ref:`packaging-" +"specifications`, and will report errors for sufficiently old legacy packages " +"that are incompatible with those standards. In contrast, the :ref:`distlib` " +"project is a more permissive library that attempts to provide a plausible " +"reading of ambiguous metadata in cases where :ref:`packaging` will instead " +"report on error." +msgstr "" + +#: ../source/key_projects.rst:186 +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "pip" +msgstr "" + +#: ../source/key_projects.rst:188 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:193 +msgid "" +"The most popular tool for installing Python packages, and the one included " +"with modern versions of Python." +msgstr "" + +#: ../source/key_projects.rst:196 +msgid "" +"It provides the essential core features for finding, downloading, and " +"installing packages from PyPI and other Python package indexes, and can be " +"incorporated into a wide range of development workflows via its command-line " +"interface (CLI)." +msgstr "" + +#: ../source/key_projects.rst:204 +msgid "Pipenv" +msgstr "" + +#: ../source/key_projects.rst:206 +msgid "" +":doc:`Docs ` | `Source `__ | " +"`Issues `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:211 +msgid "" +"Pipenv is a project that aims to bring the best of all packaging worlds to " +"the Python world. It harnesses :ref:`Pipfile`, :ref:`pip`, " +"and :ref:`virtualenv` into one single toolchain. It can autoimport " +"``requirements.txt`` and also check for CVEs in `Pipfile`_ using `safety " +"`_." +msgstr "" + +#: ../source/key_projects.rst:216 +msgid "" +"Pipenv aims to help users manage environments, dependencies, and imported " +"packages on the command line. It also works well on Windows (which other " +"tools often underserve), makes and checks file hashes, to ensure compliance " +"with hash-locked dependency specifiers, and eases uninstallation of packages " +"and dependencies." +msgstr "" + +#: ../source/key_projects.rst:225 +msgid "Pipfile" +msgstr "" + +#: ../source/key_projects.rst:227 +msgid "`Source `__" +msgstr "" + +#: ../source/key_projects.rst:229 +msgid "" +":file:`Pipfile` and its sister :file:`Pipfile.lock` are a higher-level " +"application-centric alternative to :ref:`pip`'s lower-" +"level :file:`requirements.txt` file." +msgstr "" + +#: ../source/key_projects.rst:236 +msgid "pipx" +msgstr "" + +#: ../source/key_projects.rst:238 +msgid "" +"`Docs `__ | `GitHub `__ " +"| `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:242 +msgid "" +"pipx is a tool to install and run Python command-line applications without " +"causing dependency conflicts with other packages installed on the system." +msgstr "" + +#: ../source/key_projects.rst:249 +msgid "" +":doc:`Docs ` | `Issues `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:253 +msgid "This guide!" +msgstr "" + +#: ../source/key_projects.rst:258 +msgid "readme_renderer" +msgstr "" + +#: ../source/key_projects.rst:260 +msgid "" +"`GitHub and docs `__ | `PyPI " +"`__" +msgstr "" + +#: ../source/key_projects.rst:263 +msgid "" +"``readme_renderer`` is a library that package developers use to render their " +"user documentation (README) files into HTML from markup languages such as " +"Markdown or reStructuredText. Developers call it on its own or " +"via :ref:`twine`, as part of their release management process, to check that " +"their package descriptions will properly display on PyPI." +msgstr "" + +#: ../source/key_projects.rst:274 +msgid "Setuptools" +msgstr "" + +#: ../source/key_projects.rst:276 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:281 +msgid "" +"Setuptools (which includes ``easy_install``) is a collection of enhancements " +"to the Python distutils that allow you to more easily build and distribute " +"Python :term:`distributions `, especially ones that " +"have dependencies on other packages." +msgstr "" + +#: ../source/key_projects.rst:289 +msgid "trove-classifiers" +msgstr "" + +#: ../source/key_projects.rst:291 +msgid "" +"`Issues `__ | `GitHub " +"`__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:295 +msgid "" +"trove-classifiers is the canonical source for `classifiers on PyPI `_, which project maintainers use " +"to :ref:`systematically describe their projects ` " +"so that users can better find projects that match their needs on the PyPI." +msgstr "" + +#: ../source/key_projects.rst:300 +msgid "" +"The trove-classifiers package contains a list of valid classifiers and " +"deprecated classifiers (which are paired with the classifiers that replace " +"them). Use this package to validate classifiers used in packages intended " +"for uploading to PyPI. As this list of classifiers is published as code, you " +"can install and import it, giving you a more convenient workflow compared to " +"referring to the `list published on PyPI `_. " +"The `issue tracker `_ for " +"the project hosts discussions on proposed classifiers and requests for new " +"classifiers." +msgstr "" + +#: ../source/key_projects.rst:314 +msgid "twine" +msgstr "" + +#: ../source/key_projects.rst:316 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:321 +msgid "" +"Twine is the primary tool developers use to upload packages to the Python " +"Package Index or other Python package indexes. It is a command-line program " +"that passes program files and metadata to a web API. Developers use it " +"because it's the official PyPI upload tool, it's fast and secure, it's " +"maintained, and it reliably works." +msgstr "" + +#: ../source/key_projects.rst:331 ../source/overview.rst:405 +msgid "virtualenv" +msgstr "" + +#: ../source/key_projects.rst:333 +msgid "" +"`Docs `__ | `Issues " +"`__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:338 +msgid "" +"virtualenv is a tool for creating isolated Python :term:`Virtual " +"Environments `, like :ref:`venv`. Unlike :ref:`venv`, " +"virtualenv can create virtual environments for other versions of Python, " +"which it locates using the PATH environment variable. It also provides " +"convenient features for configuring, maintaining, duplicating, and " +"troubleshooting virtual environments. For more information, see the section " +"on :ref:`Creating and using Virtual Environments`." +msgstr "" + +#: ../source/key_projects.rst:350 +msgid "Warehouse" +msgstr "" + +#: ../source/key_projects.rst:352 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:356 +msgid "" +"The current codebase powering the :term:`Python Package Index (PyPI)`. It is " +"hosted at `pypi.org `_. The default source for :ref:`pip` " +"downloads." +msgstr "" + +#: ../source/key_projects.rst:364 +msgid "wheel" +msgstr "" + +#: ../source/key_projects.rst:366 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:371 +msgid "" +"Primarily, the wheel project offers the ``bdist_wheel`` :ref:`setuptools` " +"extension for creating :term:`wheel distributions `. Additionally, " +"it offers its own command line utility for creating and installing wheels." +msgstr "" + +#: ../source/key_projects.rst:375 +msgid "" +"See also `auditwheel `__, a tool that " +"package developers use to check and fix Python packages they are making in " +"the binary wheel format. It provides functionality to discover dependencies, " +"check metadata for compliance, and repair the wheel and metadata to properly " +"link and include external shared libraries in a package." +msgstr "" + +#: ../source/key_projects.rst:384 +msgid "Non-PyPA Projects" +msgstr "" + +#: ../source/key_projects.rst:389 +msgid "buildout" +msgstr "" + +#: ../source/key_projects.rst:391 +msgid "" +"`Docs `__ | `Issues `__ | `PyPI `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:396 +msgid "" +"Buildout is a Python-based build system for creating, assembling and " +"deploying applications from multiple parts, some of which may be non-Python-" +"based. It lets you create a buildout configuration and reproduce the same " +"software later." +msgstr "" + +#: ../source/key_projects.rst:403 +msgid "conda" +msgstr "" + +#: ../source/key_projects.rst:405 +msgid ":doc:`Docs `" +msgstr "" + +#: ../source/key_projects.rst:407 +msgid "" +"Conda is a package, dependency, and environment management system for any " +"language — Python, R, Ruby, C/C++, Fortran, and more. It is written in " +"Python and widely used in the Python scientific computing community, due to " +"its support for non-Python compiled libraries and extensions. It is used as " +"the basis of the `Anaconda `__ Python " +"distribution from Anaconda, Inc. It was originally aimed at the scientific " +"community, but can also be used on its own, or with the :doc:`miniconda " +"`, `miniforge `_ " +"or `pixi `_ systems. It is available for Windows, Mac and " +"Linux systems." +msgstr "" + +#: ../source/key_projects.rst:416 +msgid "" +"Conda is a completely separate tool from :ref:`pip`, virtualenv and wheel, " +"but provides many of their combined features, such as package management, " +"virtual environment management and deployment of binary extensions and other " +"binary code." +msgstr "" + +#: ../source/key_projects.rst:420 +msgid "" +"Conda does not install packages from PyPI -- it can only manage packages " +"built specifically for conda, which can be made available on a \"conda " +"channel\", such as those hosted on `anaconda.org `__, " +"or a local (e.g. intranet) package server. In addition to the \"default\" " +"channels managed by `Anaconda, Inc. `__, there " +"are a wide variety of packages from the community supported `conda-forge " +"project `__" +msgstr "" + +#: ../source/key_projects.rst:426 +msgid "" +"Note that :ref:`pip` can be installed into, and work side-by-side with conda " +"for managing :term:`distributions ` from PyPI. It is " +"also possible to build conda packages from Python source packages using " +"tools such as `conda skeleton `__: a tool to " +"automatically make conda packages from Python packages available on PyPI." +msgstr "" + +#: ../source/key_projects.rst:435 +msgid "devpi" +msgstr "" + +#: ../source/key_projects.rst:437 +msgid "" +"`Docs `__ | :gh:`Issues ` " +"| `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:441 +msgid "" +"devpi features a powerful PyPI-compatible server and PyPI proxy cache with a " +"complementary command line tool to drive packaging, testing and release " +"activities with Python. devpi also provides a browsable and searchable web " +"interface. devpi supports mirroring PyPI, multiple :term:`package indexes " +"` with inheritance, syncing between these indexes, index " +"replication and fail-over, and package upload." +msgstr "" + +#: ../source/key_projects.rst:452 +msgid "dumb-pypi" +msgstr "" + +#: ../source/key_projects.rst:454 +msgid "" +"`GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:457 +msgid "" +"dumb-pypi is a simple :term:`package index ` static file site " +"generator, which then must be hosted by a static file webserver to become " +"the package index. It supports serving the hash, core-metadata, and yank-" +"status." +msgstr "" + +#: ../source/key_projects.rst:464 +msgid "enscons" +msgstr "" + +#: ../source/key_projects.rst:466 +msgid "" +":gh:`Source ` | :gh:`Issues ` | `PyPI " +"`__" +msgstr "" + +#: ../source/key_projects.rst:470 +msgid "" +"Enscons is a Python packaging tool based on `SCons`_. It builds :ref:`pip`-" +"compatible source distributions and wheels without using distutils or " +"setuptools, including distributions with C extensions. Enscons has a " +"different architecture and philosophy than :ref:`distutils`. Rather than " +"adding build features to a Python packaging system, enscons adds Python " +"packaging to a general purpose build system. Enscons helps you to build " +"sdists that can be automatically built by :ref:`pip`, and wheels that are " +"independent of enscons." +msgstr "" + +#: ../source/key_projects.rst:485 +msgid "Flask-Pypi-Proxy" +msgstr "" + +#: ../source/key_projects.rst:487 +msgid "" +"`Docs `__ | :gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:491 ../source/key_projects.rst:685 +#: ../source/key_projects.rst:744 +msgid "Not maintained, project archived" +msgstr "" + +#: ../source/key_projects.rst:493 +msgid "" +"Flask-Pypi-Proxy is a :term:`package index ` as a cached " +"proxy for PyPI." +msgstr "" + +#: ../source/key_projects.rst:499 +msgid "Hashdist" +msgstr "" + +#: ../source/key_projects.rst:501 +msgid "" +"`Docs `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:504 +msgid "" +"Hashdist is a library for building non-root software distributions. Hashdist " +"is trying to be “the Debian of choice for cases where Debian technology " +"doesn’t work”. The best way for Pythonistas to think about Hashdist may be a " +"more powerful hybrid of :ref:`virtualenv` and :ref:`buildout`. It is aimed " +"at solving the problem of installing scientific software, and making package " +"distribution stateless, cached, and branchable. It is used by some " +"researchers but has been lacking in maintenance since 2016." +msgstr "" + +#: ../source/key_projects.rst:516 +msgid "Maturin" +msgstr "" + +#: ../source/key_projects.rst:518 +msgid "" +"`Docs `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:521 +msgid "" +"Maturin is a build backend for Rust extension modules, also written in Rust. " +"It supports building wheels for python 3.7+ on Windows, Linux, macOS and " +"FreeBSD, can upload them to PyPI and has basic PyPy and GraalPy support." +msgstr "" + +#: ../source/key_projects.rst:529 +msgid "meson-python" +msgstr "" + +#: ../source/key_projects.rst:531 +msgid "" +"`Docs `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:534 +msgid "" +"``meson-python`` is a build backend that uses the Meson_ build system. It " +"enables Python package authors to use Meson_ as the build system for their " +"package. It supports a wide variety of languages, including C, and is able " +"to fill the needs of most complex build configurations." +msgstr "" + +#: ../source/key_projects.rst:544 +msgid "multibuild" +msgstr "" + +#: ../source/key_projects.rst:546 +msgid "`GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:548 +msgid "" +"Multibuild is a set of CI scripts for building and testing " +"Python :term:`wheels ` for Linux, macOS, and (less flexibly) Windows. " +"Also see :ref:`cibuildwheel`." +msgstr "" + +#: ../source/key_projects.rst:554 +msgid "nginx_pypi_cache" +msgstr "" + +#: ../source/key_projects.rst:556 +msgid ":gh:`GitHub `" +msgstr "" + +#: ../source/key_projects.rst:558 +msgid "" +"nginx_pypi_cache is a :term:`package index ` caching proxy " +"using `nginx `_." +msgstr "" + +#: ../source/key_projects.rst:564 +msgid "pdm" +msgstr "" + +#: ../source/key_projects.rst:566 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:570 +msgid "" +"PDM is a modern Python package manager. It uses :term:`pyproject.toml` to " +"store project metadata as defined in :pep:`621`." +msgstr "" + +#: ../source/key_projects.rst:578 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:582 +msgid "" +"Pex is a tool for generating :file:`.pex` (Python EXecutable) files, " +"standalone Python environments in the spirit of :ref:`virtualenv`. PEX files " +"are :doc:`zipapps ` that make deployment of Python " +"applications as simple as ``cp``. A single PEX file can support multiple " +"target platforms and can be created from standard :ref:`pip`-resolvable " +"requirements, a lockfile generated with ``pex3 lock ...`` or even another " +"PEX. PEX files can optionally have tools embedded that support turning the " +"PEX file into a standard venv, graphing dependencies and more." +msgstr "" + +#: ../source/key_projects.rst:594 +msgid "pip-tools" +msgstr "" + +#: ../source/key_projects.rst:596 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:600 +msgid "" +"pip-tools is a suite of tools meant for Python system administrators and " +"release managers who particularly want to keep their builds deterministic " +"yet stay up to date with new versions of their dependencies. Users can " +"specify particular release of their dependencies via hash, conveniently make " +"a properly formatted list of requirements from information in other parts of " +"their program, update all dependencies (a feature :ref:`pip` currently does " +"not provide), and create layers of constraints for the program to obey." +msgstr "" + +#: ../source/key_projects.rst:612 +msgid "pip2pi" +msgstr "" + +#: ../source/key_projects.rst:614 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:617 +msgid "" +"pip2pi is a :term:`package index ` server where specific " +"packages are manually synchronised." +msgstr "" + +#: ../source/key_projects.rst:623 +msgid "piwheels" +msgstr "" + +#: ../source/key_projects.rst:625 +msgid "" +"`Website `__ | :doc:`Docs ` | " +"`GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:629 +msgid "" +"piwheels is a website, and software underpinning it, that fetches source " +"code distribution packages from PyPI and compiles them into binary wheels " +"that are optimized for installation onto Raspberry Pi computers. Raspberry " +"Pi OS pre-configures pip to use piwheels.org as an additional index to PyPI." +msgstr "" + +#: ../source/key_projects.rst:638 +msgid "poetry" +msgstr "" + +#: ../source/key_projects.rst:640 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:644 +msgid "" +"poetry is a command-line tool to handle dependency installation and " +"isolation as well as building and packaging of Python packages. It uses " +"``pyproject.toml`` and, instead of depending on the resolver functionality " +"within :ref:`pip`, provides its own dependency resolver. It attempts to " +"speed users' experience of installation and dependency resolution by locally " +"caching metadata about dependencies." +msgstr "" + +#: ../source/key_projects.rst:654 +msgid "proxpi" +msgstr "" + +#: ../source/key_projects.rst:656 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:659 +msgid "" +"proxpi is a simple :term:`package index ` which proxies PyPI " +"and other indexes with caching." +msgstr "" + +#: ../source/key_projects.rst:665 +msgid "Pulp-python" +msgstr "" + +#: ../source/key_projects.rst:667 +msgid "" +"`Docs `__ | :gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:671 +msgid "" +"Pulp-python is the Python :term:`package index ` plugin for " +"`Pulp `_. Pulp-python supports mirrors backed by " +"local or `AWS S3`_, package upload, and proxying to multiple package indexes." +msgstr "" + +#: ../source/key_projects.rst:679 +msgid "PyPI Cloud" +msgstr "" + +#: ../source/key_projects.rst:681 +msgid "" +"`Docs `__ | :gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:687 +msgid "" +"PyPI Cloud is a :term:`package index ` server, backed by `AWS " +"S3`_ or another cloud storage service, or local files. PyPI Cloud supports " +"redirect/cached proxying for PyPI, as well as authentication and " +"authorisation." +msgstr "" + +#: ../source/key_projects.rst:695 +msgid "pypiprivate" +msgstr "" + +#: ../source/key_projects.rst:697 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:700 +msgid "" +"pypiprivate serves a local (or `AWS S3`_-hosted) directory of packages as " +"a :term:`package index `." +msgstr "" + +#: ../source/key_projects.rst:706 +msgid "pypiserver" +msgstr "" + +#: ../source/key_projects.rst:708 +msgid "" +"`GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:711 +msgid "" +"pypiserver is a minimalist application that serves as a private " +"Python :term:`package index ` (from a local directory) within " +"organizations, implementing a simple API and browser interface. You can " +"upload private packages using standard upload tools, and users can download " +"and install them with :ref:`pip`, without publishing them publicly. " +"Organizations who use pypiserver usually download packages both from " +"pypiserver and from PyPI." +msgstr "" + +#: ../source/key_projects.rst:722 +msgid "PyScaffold" +msgstr "" + +#: ../source/key_projects.rst:724 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:728 +msgid "" +"PyScaffold is a project generator for bootstrapping Python packages, ready " +"to be shared on PyPI and installable via :ref:`pip`. It relies on a set of " +"sane default configurations for established tools (such " +"as :ref:`setuptools`, pytest_ and Sphinx_) to provide a productive " +"environment so developers can start coding right away. PyScaffold can also " +"be used with existing projects to make packaging easier." +msgstr "" + +#: ../source/key_projects.rst:739 +msgid "pywharf" +msgstr "" + +#: ../source/key_projects.rst:741 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:746 +msgid "" +"pywharf is a :term:`package index ` server, serving files " +"locally or from `GitHub `_." +msgstr "" + +#: ../source/key_projects.rst:752 +msgid "scikit-build" +msgstr "" + +#: ../source/key_projects.rst:754 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:758 +msgid "" +"Scikit-build is a :ref:`setuptools` wrapper for CPython that builds C/C++/" +"Fortran/Cython extensions It uses `cmake `__ " +"(available on PyPI) to provide better support for additional compilers, " +"build systems, cross compilation, and locating dependencies and their " +"associated build requirements. To speed up and parallelize the build of " +"large projects, the user can install `ninja `__ (also available on PyPI)." +msgstr "" + +#: ../source/key_projects.rst:769 +msgid "scikit-build-core" +msgstr "" + +#: ../source/key_projects.rst:771 +msgid "" +"`Docs `__ | `GitHub " +"`__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:775 +msgid "" +"Scikit-build-core is a build backend for CPython C/C++/Fortran/Cython " +"extensions. It enables users to write extensions with `cmake `__ (available on PyPI) to provide better support for " +"additional compilers, build systems, cross compilation, and locating " +"dependencies and their associated build requirements. CMake/Ninja are " +"automatically downloaded from PyPI if not available on the system." +msgstr "" + +#: ../source/key_projects.rst:785 +msgid "shiv" +msgstr "" + +#: ../source/key_projects.rst:787 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:791 +msgid "" +"shiv is a command line utility for building fully self contained Python " +"zipapps as outlined in :pep:`441`, but with all their dependencies included. " +"Its primary goal is making distributing Python applications and command line " +"tools fast & easy." +msgstr "" + +#: ../source/key_projects.rst:799 +msgid "simpleindex" +msgstr "" + +#: ../source/key_projects.rst:801 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:804 +msgid "" +"simpleindex is a :term:`package index ` which routes URLs to " +"multiple package indexes (including PyPI), serves local (or cloud-hosted, " +"for example `AWS S3`_, with a custom plugin) directories of packages, and " +"supports custom plugins." +msgstr "" + +#: ../source/key_projects.rst:814 +msgid "" +":doc:`Docs ` | `GitHub `__ | " +"`Paper `__ | `Slides `__" +msgstr "" + +#: ../source/key_projects.rst:819 +msgid "" +"A flexible package manager designed to support multiple versions, " +"configurations, platforms, and compilers. Spack is like Homebrew, but " +"packages are written in Python and parameterized to allow easy swapping of " +"compilers, library versions, build options, etc. Arbitrarily many versions " +"of packages can coexist on the same system. Spack was designed for rapidly " +"building high performance scientific applications on clusters and " +"supercomputers." +msgstr "" + +#: ../source/key_projects.rst:827 +msgid "" +"Spack is not in PyPI (yet), but it requires no installation and can be used " +"immediately after cloning from GitHub." +msgstr "" + +#: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:852 +msgid "" +"``zest.releaser`` is a Python package release tool providing an abstraction " +"layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " +"automate incrementing package version numbers, updating changelogs, tagging " +"releases in source control, and uploading new packages to PyPI." +msgstr "" + +#: ../source/key_projects.rst:859 +msgid "Standard Library Projects" +msgstr "" + +#: ../source/key_projects.rst:864 +msgid "ensurepip" +msgstr "" + +#: ../source/key_projects.rst:866 +msgid "" +"`Docs `__ | `Issues " +"`__" +msgstr "" + +#: ../source/key_projects.rst:869 +msgid "" +"A package in the Python Standard Library that provides support for " +"bootstrapping :ref:`pip` into an existing Python installation or virtual " +"environment. In most cases, end users won't use this module, but rather it " +"will be used during the build of the Python distribution." +msgstr "" + +#: ../source/key_projects.rst:877 +msgid "http.server" +msgstr "" + +#: ../source/key_projects.rst:879 +msgid "" +":doc:`Docs ` | :gh:`Issues `" +msgstr "" + +#: ../source/key_projects.rst:882 +msgid "" +"A package and command-line interface which can host a directory as a " +"website, for example as a :term:`package index ` " +"(see :ref:`Hosting your Own Simple Repository`)." +msgstr "" + +#: ../source/key_projects.rst:889 +msgid "venv" +msgstr "" + +#: ../source/key_projects.rst:891 +msgid "" +"`Docs `__ | `Issues `__" +msgstr "" + +#: ../source/key_projects.rst:894 +msgid "" +"A package in the Python Standard Library (starting with Python 3.3) for " +"creating :term:`Virtual Environments `. For more " +"information, see the section on :ref:`Creating and using Virtual " +"Environments`." +msgstr "" + +#: ../source/news.rst:2 +msgid "News" +msgstr "" + +#: ../source/news.rst:4 +msgid "" +"This document is not currently updated. Previously, the document highlighted " +"changes in Python packaging." +msgstr "" + +#: ../source/news.rst:9 +msgid "September 2019" +msgstr "" + +#: ../source/news.rst:10 +msgid "Added a guide about publishing dists via GitHub Actions. (:pr:`647`)" +msgstr "" + +#: ../source/news.rst:13 +msgid "August 2019" +msgstr "" + +#: ../source/news.rst:14 +msgid "Updated to use :file:`python3 -m` when installing pipx. (:pr:`631`)" +msgstr "" + +#: ../source/news.rst:17 +msgid "July 2019" +msgstr "" + +#: ../source/news.rst:18 +msgid "Marked all PEP numbers with the :pep: role. (:pr:`629`)" +msgstr "" + +#: ../source/news.rst:19 +msgid "Upgraded Sphinx version and removed pypa.io intersphinx. (:pr:`625`)" +msgstr "" + +#: ../source/news.rst:20 +msgid "Mentioned :file:`find_namespace_packages`. (:pr:`622`)" +msgstr "" + +#: ../source/news.rst:21 +msgid "Updated directory layout examples for consistency. (:pr:`611`)" +msgstr "" + +#: ../source/news.rst:22 +msgid "Updated Bandersnatch link to GitHub. (:pr:`623`)" +msgstr "" + +#: ../source/news.rst:25 +msgid "June 2019" +msgstr "" + +#: ../source/news.rst:26 +msgid "Fixed some typos. (:pr:`620`)" +msgstr "" + +#: ../source/news.rst:29 +msgid "May 2019" +msgstr "" + +#: ../source/news.rst:30 +msgid "Added :file:`python_requires` usage to packaging tutorial. (:pr:`613`)" +msgstr "" + +#: ../source/news.rst:31 +msgid "Added a MANIFEST.in guide page. (:pr:`609`)" +msgstr "" + +#: ../source/news.rst:34 +msgid "April 2019" +msgstr "" + +#: ../source/news.rst:35 +msgid "" +"Added a mention for :file:`shiv` in the key projects section. (:pr:`608`)" +msgstr "" + +#: ../source/news.rst:36 +msgid "Reduced emphasis on virtualenv. (:pr:`606`)" +msgstr "" + +#: ../source/news.rst:39 +msgid "March 2019" +msgstr "" + +#: ../source/news.rst:40 +msgid "Moved single-sourcing guide version option to Python 3. (:pr:`605`)" +msgstr "" + +#: ../source/news.rst:41 +msgid "Covered RTD details for contributing. (:pr:`600`)" +msgstr "" + +#: ../source/news.rst:44 +msgid "February 2019" +msgstr "" + +#: ../source/news.rst:45 +msgid "" +"Elaborate upon the differences between the tutorial and the real packaging " +"process. (:pr:`602`)" +msgstr "" + +#: ../source/news.rst:46 +msgid "Added instructions to install Python CLI applications. (:pr:`594`)" +msgstr "" + +#: ../source/news.rst:49 +msgid "January 2019" +msgstr "" + +#: ../source/news.rst:50 +msgid "Added :file:`--no-deps` to the packaging tutorial. (:pr:`593`)" +msgstr "" + +#: ../source/news.rst:51 +msgid "Updated Sphinx and Nox. (:pr:`591`)" +msgstr "" + +#: ../source/news.rst:52 +msgid "Referenced Twine from Python3. (:pr:`581`)" +msgstr "" + +#: ../source/news.rst:55 +msgid "December 2018" +msgstr "" + +#: ../source/news.rst:56 +msgid "No programmers in the office!" +msgstr "" + +#: ../source/news.rst:59 +msgid "November 2018" +msgstr "" + +#: ../source/news.rst:60 +msgid "Removed landing page link to PyPI migration guide. (:pr:`575`)" +msgstr "" + +#: ../source/news.rst:61 +msgid "Changed bumpversion to bump2version. (:pr:`572`)" +msgstr "" + +#: ../source/news.rst:62 +msgid "Added single-sourcing package version example. (:pr:`573`)" +msgstr "" + +#: ../source/news.rst:63 +msgid "Added a guide for creating documentation. (:pr:`568`)" +msgstr "" + +#: ../source/news.rst:66 +msgid "October 2018" +msgstr "" + +#: ../source/news.rst:67 +msgid "Updated Nox package name. (:pr:`566`)" +msgstr "" + +#: ../source/news.rst:68 +msgid "Mentioned Sphinx extensions in guides. (:pr:`562`)" +msgstr "" + +#: ../source/news.rst:71 +msgid "September 2018" +msgstr "" + +#: ../source/news.rst:72 +msgid "Added a section on checking RST markup. (:pr:`554`)" +msgstr "" + +#: ../source/news.rst:73 +msgid "Updated user installs page. (:pr:`558`)" +msgstr "" + +#: ../source/news.rst:74 +msgid "Updated Google BigQuery urls. (:pr:`556`)" +msgstr "" + +#: ../source/news.rst:75 +msgid "Replaced tar command with working command. (:pr:`552`)" +msgstr "" + +#: ../source/news.rst:76 +msgid "" +"Changed to double quotes in the pip install SomeProject==1.4. (:pr:`550`)" +msgstr "" + +#: ../source/news.rst:79 +msgid "August 2018" +msgstr "" + +#: ../source/news.rst:80 +msgid "Removed the recommendation to store passwords in cleartext. (:pr:`546`)" +msgstr "" + +#: ../source/news.rst:81 +msgid "" +"Moved the Overview to a task based lead in along with the others. (:pr:`540`)" +msgstr "" + +#: ../source/news.rst:82 +msgid "Updated Python version supported by virtualenv. (:pr:`538`)" +msgstr "" + +#: ../source/news.rst:83 +msgid "Added outline/rough draft of new Overview page. (:pr:`519`)" +msgstr "" + +#: ../source/news.rst:86 +msgid "July 2018" +msgstr "" + +#: ../source/news.rst:88 +msgid "Improved binary extension docs. (:pr:`531`)" +msgstr "" + +#: ../source/news.rst:89 +msgid "Added scikit-build to key projects. (:pr:`530`)" +msgstr "" + +#: ../source/news.rst:92 +msgid "June 2018" +msgstr "" + +#: ../source/news.rst:94 +msgid "Fixed categories of interop PEP for pypa.io. (:pr:`527`)" +msgstr "" + +#: ../source/news.rst:95 +msgid "Updated Markdown descriptions explanation. (:pr:`522`)" +msgstr "" + +#: ../source/news.rst:98 +msgid "May 2018" +msgstr "" + +#: ../source/news.rst:100 +msgid "Noted issues with Provides-Dist and Obsoletes-Dist. (:pr:`513`)" +msgstr "" + +#: ../source/news.rst:101 +msgid "" +"Removed outdated warning about Python version mixing with Pipenv. (:pr:`501`)" +msgstr "" + +#: ../source/news.rst:102 +msgid "Simplified packaging tutorial. (:pr:`498`)" +msgstr "" + +#: ../source/news.rst:103 +msgid "Updated Windows users instructions for clarity. (:pr:`493`)" +msgstr "" + +#: ../source/news.rst:104 +msgid "Updated the license section description for completeness. (:pr:`492`)" +msgstr "" + +#: ../source/news.rst:105 +msgid "Added specification-style document to contributing section. (:pr:`489`)" +msgstr "" + +#: ../source/news.rst:106 +msgid "Added documentation types to contributing guide. (:pr:`485`)" +msgstr "" + +#: ../source/news.rst:109 +msgid "April 2018" +msgstr "" + +#: ../source/news.rst:111 +msgid "Added README guide. (:pr:`461`)" +msgstr "" + +#: ../source/news.rst:112 +msgid "Updated instructions and status for PyPI launch. (:pr:`475`)" +msgstr "" + +#: ../source/news.rst:113 +msgid "Added instructions for Warehouse. (:pr:`471`)" +msgstr "" + +#: ../source/news.rst:114 +msgid "Removed GPG references from publishing tutorial. (:pr:`466`)" +msgstr "" + +#: ../source/news.rst:115 +msgid "Added 'What’s in which Python 3.4–3.6?'. (:pr:`468`)" +msgstr "" + +#: ../source/news.rst:116 +msgid "Added a guide for phasing out Python versions. (:pr:`459`)" +msgstr "" + +#: ../source/news.rst:117 +msgid "Made default Description-Content-Type variant GFM. (:pr:`462`)" +msgstr "" + +#: ../source/news.rst:120 +msgid "March 2018" +msgstr "" + +#: ../source/news.rst:122 +msgid "Updated \"installing scientific packages\". (:pr:`455`)" +msgstr "" + +#: ../source/news.rst:123 +msgid "" +"Added :file:`long_description_content_type` to follow PEP 556. (:pr:`457`)" +msgstr "" + +#: ../source/news.rst:124 +msgid "Clarified a long description classifier on pypi.org. (:pr:`456`)" +msgstr "" + +#: ../source/news.rst:125 +msgid "Updated Core Metadata spec to follow PEP 556. (:pr:`412`)" +msgstr "" + +#: ../source/news.rst:128 +msgid "February 2018" +msgstr "" + +#: ../source/news.rst:130 +msgid "" +"Added python3-venv and python3-pip to Debian installation instructions. " +"(:pr:`445`)" +msgstr "" + +#: ../source/news.rst:131 +msgid "Updated PyPI migration info. (:pr:`439`)" +msgstr "" + +#: ../source/news.rst:132 +msgid "" +"Added a warning about managing multiple versions with pipenv. (:pr:`430`)" +msgstr "" + +#: ../source/news.rst:133 +msgid "Added example of multiple emails to Core Metadata. (:pr:`429`)" +msgstr "" + +#: ../source/news.rst:134 +msgid "Added explanation of \"legacy\" in test.pypi.org/legacy. (:pr:`426`)" +msgstr "" + +#: ../source/news.rst:137 +msgid "January 2018" +msgstr "" + +#: ../source/news.rst:139 +msgid "Added a link to PyPI's list of classifiers. (:pr:`425`)" +msgstr "" + +#: ../source/news.rst:140 +msgid "Updated README.rst explanation. (:pr:`419`)" +msgstr "" + +#: ../source/news.rst:143 +msgid "December 2017" +msgstr "" + +#: ../source/news.rst:145 +msgid "" +"Replaced :file:`~` with :file:`$HOME` in guides and tutorials. (:pr:`418`)" +msgstr "" + +#: ../source/news.rst:146 +msgid "Noted which fields can be used with environment markers. (:pr:`416`)" +msgstr "" + +#: ../source/news.rst:147 +msgid "Updated Requires-Python section. (:pr:`414`)" +msgstr "" + +#: ../source/news.rst:148 +msgid "Added news page. (:pr:`404`)" +msgstr "" + +#: ../source/news.rst:151 +msgid "November 2017" +msgstr "" + +#: ../source/news.rst:153 +msgid "" +"Introduced a new dependency management tutorial based on Pipenv. (:pr:`402`)" +msgstr "" + +#: ../source/news.rst:154 +msgid "" +"Updated the *Single Sourcing Package Version* tutorial to reflect pip's " +"current strategy. (:pr:`400`)" +msgstr "" + +#: ../source/news.rst:156 +msgid "" +"Added documentation about the ``py_modules`` argument to ``setup``. " +"(:pr:`398`)" +msgstr "" + +#: ../source/news.rst:157 +msgid "Simplified the wording for the :file:`manifest.in` section. (:pr:`395`)" +msgstr "" + +#: ../source/news.rst:160 +msgid "October 2017" +msgstr "" + +#: ../source/news.rst:162 +msgid "" +"Added a specification for the :file:`entry_points.txt` file. (:pr:`398`)" +msgstr "" + +#: ../source/news.rst:163 +msgid "" +"Created a new guide for managing packages using ``pip`` and ``virtualenv``. " +"(:pr:`385`)" +msgstr "" + +#: ../source/news.rst:164 +msgid "Split the specifications page into multiple pages. (:pr:`386`)" +msgstr "" + +#: ../source/news.rst:167 +msgid "September 2017" +msgstr "" + +#: ../source/news.rst:169 +msgid "" +"Encouraged using ``readme_renderer`` to validate :file:`README.rst`. " +"(:pr:`379`)" +msgstr "" + +#: ../source/news.rst:171 +msgid "Recommended using the ``--user-base`` option. (:pr:`374`)" +msgstr "" + +#: ../source/news.rst:174 +msgid "August 2017" +msgstr "" + +#: ../source/news.rst:176 +msgid "" +"Added a new, experimental tutorial on installing packages using ``Pipenv``. " +"(:pr:`369`)" +msgstr "" + +#: ../source/news.rst:177 +msgid "Added a new guide on how to use ``TestPyPI``. (:pr:`366`)" +msgstr "" + +#: ../source/news.rst:178 +msgid "Added :file:`pypi.org` as a term. (:pr:`365`)" +msgstr "" + +#: ../source/news.rst:181 +msgid "July 2017" +msgstr "" + +#: ../source/news.rst:183 +msgid "Added ``flit`` to the key projects list. (:pr:`358`)" +msgstr "" + +#: ../source/news.rst:184 +msgid "Added ``enscons`` to the list of key projects. (:pr:`357`)" +msgstr "" + +#: ../source/news.rst:185 +msgid "" +"Updated this guide's ``readme`` with instructions on how to build the guide " +"locally. (:pr:`356`)" +msgstr "" + +#: ../source/news.rst:186 +msgid "" +"Made the new ``TestPyPI`` URL more visible, adding note to homepage about " +"pypi.org. (:pr:`354`)" +msgstr "" + +#: ../source/news.rst:187 +msgid "" +"Added a note about the removal of the explicit registration API. (:pr:`347`)" +msgstr "" + +#: ../source/news.rst:190 +msgid "June 2017" +msgstr "" + +#: ../source/news.rst:192 +msgid "Added a document on migrating uploads to :file:`PyPI.org`. (:pr:`339`)" +msgstr "" + +#: ../source/news.rst:193 +msgid "Added documentation for ``python_requires``. (:pr:`338`)" +msgstr "" + +#: ../source/news.rst:194 +msgid "" +"Added a note about PyPI migration in the *Tool Recommendations* tutorial. " +"(:pr:`335`)" +msgstr "" + +#: ../source/news.rst:195 +msgid "" +"Added a note that :file:`manifest.in` does not affect wheels. (:pr:`332`)" +msgstr "" + +#: ../source/news.rst:196 +msgid "Added a license section to the distributing guide. (:pr:`331`)" +msgstr "" + +#: ../source/news.rst:197 +msgid "Expanded the section on the ``name`` argument. (:pr:`329`)" +msgstr "" + +#: ../source/news.rst:198 +msgid "Adjusted the landing page. (:pr:`327`, :pr:`326`, :pr:`324`)" +msgstr "" + +#: ../source/news.rst:199 +msgid "Updated to Sphinx 1.6.2. (:pr:`323`)" +msgstr "" + +#: ../source/news.rst:200 +msgid "Switched to the PyPA theme. (:pr:`305`)" +msgstr "" + +#: ../source/news.rst:201 +msgid "Re-organized the documentation into the new structure. (:pr:`318`)" +msgstr "" + +#: ../source/news.rst:204 +msgid "May 2017" +msgstr "" + +#: ../source/news.rst:206 +msgid "" +"Added documentation for the ``Description-Content-Type`` field. (:pr:`258`)" +msgstr "" + +#: ../source/news.rst:207 +msgid "Added contributor and style guide. (:pr:`307`)" +msgstr "" + +#: ../source/news.rst:208 +msgid "" +"Documented ``pip`` and ``easy_install``'s differences for per-project " +"indexes. (:pr:`233`)" +msgstr "" + +#: ../source/news.rst:211 +msgid "April 2017" +msgstr "" + +#: ../source/news.rst:213 +msgid "Added travis configuration for testing pull requests. (:pr:`300`)" +msgstr "" + +#: ../source/news.rst:214 +msgid "" +"Mentioned the requirement of the ``wheel`` package for creating wheels " +"(:pr:`299`)" +msgstr "" + +#: ../source/news.rst:215 +msgid "" +"Removed the ``twine register`` reference in the *Distributing Packages* " +"tutorial. (:pr:`271`)" +msgstr "" + +#: ../source/news.rst:216 +msgid "Added a topic on plugin discovery. (:pr:`294`, :pr:`296`)" +msgstr "" + +#: ../source/news.rst:217 +msgid "Added a topic on namespace packages. (:pr:`290`)" +msgstr "" + +#: ../source/news.rst:218 +msgid "" +"Added documentation explaining prominently how to install ``pip`` in ``/usr/" +"local``. (:pr:`230`)" +msgstr "" + +#: ../source/news.rst:219 +msgid "" +"Updated development mode documentation to mention that order of local " +"packages matters. (:pr:`208`)" +msgstr "" + +#: ../source/news.rst:220 +msgid "" +"Convert readthedocs link for their ``.org`` -> ``.io`` migration for hosted " +"projects (:pr:`239`)" +msgstr "" + +#: ../source/news.rst:221 +msgid "" +"Swapped order of :file:`setup.py` arguments for the upload command, as order " +"is significant. (:pr:`260`)" +msgstr "" + +#: ../source/news.rst:223 +msgid "" +"Explained how to install from unsupported sources using a helper " +"application. (:pr:`289`)" +msgstr "" + +#: ../source/news.rst:227 +msgid "March 2017" +msgstr "" + +#: ../source/news.rst:229 +msgid "Covered ``manylinux1`` in *Platform Wheels*. (:pr:`283`)" +msgstr "" + +#: ../source/news.rst:232 +msgid "February 2017" +msgstr "" + +#: ../source/news.rst:234 +msgid "Added :pep:`518`. (:pr:`281`)" +msgstr "" + +#: ../source/overview.rst:3 +msgid "Overview of Python Packaging" +msgstr "" + +#: ../source/overview.rst:7 +msgid "" +"As a general-purpose programming language, Python is designed to be used in " +"many ways. You can build web sites or industrial robots or a game for your " +"friends to play, and much more, all using the same core technology." +msgstr "" + +#: ../source/overview.rst:12 +msgid "" +"Python's flexibility is why the first step in every Python project must be " +"to think about the project's audience and the corresponding environment " +"where the project will run. It might seem strange to think about packaging " +"before writing code, but this process does wonders for avoiding future " +"headaches." +msgstr "" + +#: ../source/overview.rst:18 +msgid "" +"This overview provides a general-purpose decision tree for reasoning about " +"Python's plethora of packaging options. Read on to choose the best " +"technology for your next project." +msgstr "" + +#: ../source/overview.rst:23 +msgid "Thinking about deployment" +msgstr "" + +#: ../source/overview.rst:25 +msgid "" +"Packages exist to be installed (or *deployed*), so before you package " +"anything, you'll want to have some answers to the deployment questions below:" +msgstr "" + +#: ../source/overview.rst:29 +msgid "" +"Who are your software's users? Will your software be installed by other " +"developers doing software development, operations people in a datacenter, or " +"a less software-savvy group?" +msgstr "" + +#: ../source/overview.rst:32 +msgid "" +"Is your software intended to run on servers, desktops, mobile clients " +"(phones, tablets, etc.), or embedded in dedicated devices?" +msgstr "" + +#: ../source/overview.rst:34 +msgid "" +"Is your software installed individually, or in large deployment batches?" +msgstr "" + +#: ../source/overview.rst:36 +msgid "" +"Packaging is all about target environment and deployment experience. There " +"are many answers to the questions above and each combination of " +"circumstances has its own solutions. With this information, the following " +"overview will guide you to the packaging technologies best suited to your " +"project." +msgstr "" + +#: ../source/overview.rst:43 +msgid "Packaging Python libraries and tools" +msgstr "" + +#: ../source/overview.rst:45 +msgid "" +"You may have heard about PyPI, ``setup.py``, and ``wheel`` files. These are " +"just a few of the tools Python's ecosystem provides for distributing Python " +"code to developers, which you can read about in :doc:`guides/distributing-" +"packages-using-setuptools`." +msgstr "" + +#: ../source/overview.rst:50 +msgid "" +"The following approaches to packaging are meant for libraries and tools used " +"by technical audience in a development setting. If you're looking for ways " +"to package Python for a non-technical audience and/or a production setting, " +"skip ahead to :ref:`packaging-applications`." +msgstr "" + +#: ../source/overview.rst:56 +msgid "Python modules" +msgstr "" + +#: ../source/overview.rst:58 +msgid "" +"A Python file, provided it only relies on the standard library, can be " +"redistributed and reused. You will also need to ensure it's written for the " +"right version of Python, and only relies on the standard library." +msgstr "" + +#: ../source/overview.rst:63 +msgid "" +"This is great for sharing simple scripts and snippets between people who " +"both have compatible Python versions (such as via email, StackOverflow, or " +"GitHub gists). There are even some entire Python libraries that offer this " +"as an option, such as :doc:`bottle.py` and :doc:`boltons " +"`." +msgstr "" + +#: ../source/overview.rst:70 +msgid "" +"However, this pattern won't scale for projects that consist of multiple " +"files, need additional libraries, or need a specific version of Python, " +"hence the options below." +msgstr "" + +#: ../source/overview.rst:75 +msgid "Python source distributions" +msgstr "" + +#: ../source/overview.rst:77 +msgid "" +"If your code consists of multiple Python files, it's usually organized into " +"a directory structure. Any directory containing Python files can comprise " +"an :term:`Import Package`." +msgstr "" + +#: ../source/overview.rst:81 +msgid "" +"Because packages consist of multiple files, they are harder to distribute. " +"Most protocols support transferring only one file at a time (when was the " +"last time you clicked a link and it downloaded multiple files?). It's easier " +"to get incomplete transfers, and harder to guarantee code integrity at the " +"destination." +msgstr "" + +#: ../source/overview.rst:87 +msgid "" +"So long as your code contains nothing but pure Python code, and you know " +"your deployment environment supports your version of Python, then you can " +"use Python's native packaging tools to create a *source* :term:`Distribution " +"Package`, or *sdist* for short." +msgstr "" + +#: ../source/overview.rst:92 +msgid "" +"Python's *sdists* are compressed archives (``.tar.gz`` files) containing one " +"or more packages or modules. If your code is pure-Python, and you only " +"depend on other Python packages, you can go to the :ref:`source-distribution-" +"format` specification to learn more." +msgstr "" + +#: ../source/overview.rst:97 +msgid "" +"If you rely on any non-Python code, or non-Python packages (such as `libxml2 " +"`_ in the case of `lxml `_, or BLAS libraries in the case of `numpy `_), you will need to use the format detailed in the " +"next section, which also has many advantages for pure-Python libraries." +msgstr "" + +#: ../source/overview.rst:104 +msgid "" +"Python and PyPI support multiple distributions providing different " +"implementations of the same package. For instance the unmaintained-but-" +"seminal `PIL distribution `_ provides the PIL " +"package, and so does `Pillow `_, an " +"actively-maintained fork of PIL!" +msgstr "" + +#: ../source/overview.rst:111 +msgid "" +"This Python packaging superpower makes it possible for Pillow to be a drop-" +"in replacement for PIL, just by changing your project's ``install_requires`` " +"or ``requirements.txt``." +msgstr "" + +#: ../source/overview.rst:116 +msgid "Python binary distributions" +msgstr "" + +#: ../source/overview.rst:118 +msgid "" +"So much of Python's practical power comes from its ability to integrate with " +"the software ecosystem, in particular libraries written in C, C++, Fortran, " +"Rust, and other languages." +msgstr "" + +#: ../source/overview.rst:122 +msgid "" +"Not all developers have the right tools or experiences to build these " +"components written in these compiled languages, so Python created " +"the :term:`Wheel`, a package format designed to ship libraries with compiled " +"artifacts. In fact, Python's package installer, ``pip``, always prefers " +"wheels because installation is always faster, so even pure-Python packages " +"work better with wheels." +msgstr "" + +#: ../source/overview.rst:129 +msgid "" +"Binary distributions are best when they come with source distributions to " +"match. Even if you don't upload wheels of your code for every operating " +"system, by uploading the sdist, you're enabling users of other platforms to " +"still build it for themselves. Default to publishing both sdist and wheel " +"archives together, *unless* you're creating artifacts for a very specific " +"use case where you know the recipient only needs one or the other." +msgstr "" + +#: ../source/overview.rst:137 +msgid "" +"Python and PyPI make it easy to upload both wheels and sdists together. Just " +"follow the :doc:`tutorials/packaging-projects` tutorial." +msgstr "" + +#: ../source/overview.rst:145 +msgid "A summary of Python's packaging capabilities for tools and libraries." +msgstr "" + +#: ../source/overview.rst:145 +msgid "" +"Python's recommended built-in library and tool packaging technologies. " +"Excerpted from `The Packaging Gradient (2017) `_." +msgstr "" + +#: ../source/overview.rst:152 +msgid "Packaging Python applications" +msgstr "" + +#: ../source/overview.rst:154 +msgid "" +"So far we've only discussed Python's native distribution tools. Based on our " +"introduction, you would be correct to infer these built-in approaches only " +"target environments which have Python, and an audience who knows how to " +"install Python packages." +msgstr "" + +#: ../source/overview.rst:159 +msgid "" +"With the variety of operating systems, configurations, and people out there, " +"this assumption is only safe when targeting a developer audience." +msgstr "" + +#: ../source/overview.rst:163 +msgid "" +"Python's native packaging is mostly built for distributing reusable code, " +"called libraries, between developers. You can piggyback **tools**, or basic " +"applications for developers, on top of Python's library packaging, using " +"technologies like :doc:`setuptools entry_points `." +msgstr "" + +#: ../source/overview.rst:169 +msgid "" +"Libraries are building blocks, not complete applications. For distributing " +"applications, there's a whole new world of technologies out there." +msgstr "" + +#: ../source/overview.rst:173 +msgid "" +"The next few sections organize these application packaging options according " +"to their dependencies on the target environment, so you can choose the right " +"one for your project." +msgstr "" + +#: ../source/overview.rst:178 +msgid "Depending on a framework" +msgstr "" + +#: ../source/overview.rst:180 +msgid "" +"Some types of Python applications, like web site backends and other network " +"services, are common enough that they have frameworks to enable their " +"development and packaging. Other types of applications, like dynamic web " +"frontends and mobile clients, are complex enough to target that a framework " +"becomes more than a convenience." +msgstr "" + +#: ../source/overview.rst:186 +msgid "" +"In all these cases, it makes sense to work backwards, from the framework's " +"packaging and deployment story. Some frameworks include a deployment system " +"which wraps the technologies outlined in the rest of the guide. In these " +"cases, you'll want to defer to your framework's packaging guide for the " +"easiest and most reliable production experience." +msgstr "" + +#: ../source/overview.rst:192 +msgid "" +"If you ever wonder how these platforms and frameworks work under the hood, " +"you can always read the sections beyond." +msgstr "" + +#: ../source/overview.rst:196 +msgid "Service platforms" +msgstr "" + +#: ../source/overview.rst:198 +msgid "" +"If you're developing for a \"`Platform-as-a-Service `_\" or \"PaaS\", you are going " +"to want to follow their respective packaging guides. These types of " +"platforms take care of packaging and deployment, as long as you follow their " +"patterns. Most software does not fit one of these templates, hence the " +"existence of all the other options below." +msgstr "" + +#: ../source/overview.rst:205 +msgid "" +"If you're developing software that will be deployed to machines you own, " +"users' personal computers, or any other arrangement, read on." +msgstr "" + +#: ../source/overview.rst:209 +msgid "Web browsers and mobile applications" +msgstr "" + +#: ../source/overview.rst:211 +msgid "" +"Python's steady advances are leading it into new spaces. These days you can " +"write a mobile app or web application frontend in Python. While the language " +"may be familiar, the packaging and deployment practices are brand new." +msgstr "" + +#: ../source/overview.rst:216 +msgid "" +"If you're planning on releasing to these new frontiers, you'll want to check " +"out the following frameworks, and refer to their packaging guides:" +msgstr "" + +#: ../source/overview.rst:220 +msgid "`Kivy `_" +msgstr "" + +#: ../source/overview.rst:221 +msgid "`Beeware `_" +msgstr "" + +#: ../source/overview.rst:222 +msgid "`Brython `_" +msgstr "" + +#: ../source/overview.rst:223 +msgid "`Flexx `_" +msgstr "" + +#: ../source/overview.rst:225 +msgid "" +"If you are *not* interested in using a framework or platform, or just wonder " +"about some of the technologies and techniques utilized by the frameworks " +"above, continue reading below." +msgstr "" + +#: ../source/overview.rst:230 +msgid "Depending on a pre-installed Python" +msgstr "" + +#: ../source/overview.rst:232 +msgid "" +"Pick an arbitrary computer, and depending on the context, there's a very " +"good chance Python is already installed. Included by default in most Linux " +"and Mac operating systems for many years now, you can reasonably depend on " +"Python preexisting in your data centers or on the personal machines of " +"developers and data scientists." +msgstr "" + +#: ../source/overview.rst:238 +msgid "Technologies which support this model:" +msgstr "" + +#: ../source/overview.rst:240 +msgid ":gh:`PEX ` (Python EXecutable)" +msgstr "" + +#: ../source/overview.rst:241 +msgid "" +":doc:`zipapp ` (does not help manage dependencies, " +"requires Python 3.5+)" +msgstr "" + +#: ../source/overview.rst:242 +msgid ":gh:`shiv ` (requires Python 3)" +msgstr "" + +#: ../source/overview.rst:244 +msgid "" +"Of all the approaches here, depending on a pre-installed Python relies the " +"most on the target environment. Of course, this also makes for the smallest " +"package, as small as single-digit megabytes, or even kilobytes." +msgstr "" + +#: ../source/overview.rst:249 +msgid "" +"In general, decreasing the dependency on the target system increases the " +"size of our package, so the solutions here are roughly arranged by " +"increasing size of output." +msgstr "" + +#: ../source/overview.rst:256 +msgid "Depending on a separate software distribution ecosystem" +msgstr "" + +#: ../source/overview.rst:258 +msgid "" +"For a long time many operating systems, including Mac and Windows, lacked " +"built-in package management. Only recently did these OSes gain so-called " +"\"app stores\", but even those focus on consumer applications and offer " +"little for developers." +msgstr "" + +#: ../source/overview.rst:263 +msgid "" +"Developers long sought remedies, and in this struggle, emerged with their " +"own package management solutions, such as `Homebrew `_. " +"The most relevant alternative for Python developers is a package ecosystem " +"called `Anaconda `_. Anaconda is built around Python and is " +"increasingly common in academic, analytical, and other data-oriented " +"environments, even making its way `into server-oriented environments " +"`_." +msgstr "" + +#: ../source/overview.rst:273 +msgid "Instructions on building and publishing for the Anaconda ecosystem:" +msgstr "" + +#: ../source/overview.rst:275 +msgid "" +"`Building libraries and applications with conda `_" +msgstr "" + +#: ../source/overview.rst:276 +msgid "" +"`Transitioning a native Python package to Anaconda `_" +msgstr "" + +#: ../source/overview.rst:278 +msgid "" +"A similar model involves installing an alternative Python distribution, but " +"does not support arbitrary operating system-level packages:" +msgstr "" + +#: ../source/overview.rst:282 +msgid "" +"`ActiveState ActivePython `_" +msgstr "" + +#: ../source/overview.rst:283 +msgid "`WinPython `_" +msgstr "" + +#: ../source/overview.rst:288 +msgid "Bringing your own Python executable" +msgstr "" + +#: ../source/overview.rst:290 +msgid "" +"Computing as we know it is defined by the ability to execute programs. Every " +"operating system natively supports one or more formats of programs they can " +"natively execute." +msgstr "" + +#: ../source/overview.rst:294 +msgid "" +"There are many techniques and technologies which turn your Python program " +"into one of these formats, most of which involve embedding the Python " +"interpreter and any other dependencies into a single executable file." +msgstr "" + +#: ../source/overview.rst:299 +msgid "" +"This approach, called *freezing*, offers wide compatibility and seamless " +"user experience, though often requires multiple technologies, and a good " +"amount of effort." +msgstr "" + +#: ../source/overview.rst:303 +msgid "A selection of Python freezers:" +msgstr "" + +#: ../source/overview.rst:305 +msgid "" +"`pyInstaller `_ - Cross-" +"platform" +msgstr "" + +#: ../source/overview.rst:306 +msgid "" +"`cx_Freeze `_ - Cross-platform" +msgstr "" + +#: ../source/overview.rst:307 +msgid "" +"`constructor `_ - For command-line " +"installers" +msgstr "" + +#: ../source/overview.rst:308 +msgid "`py2exe `_ - Windows only" +msgstr "" + +#: ../source/overview.rst:309 +msgid "`py2app `_ - Mac only" +msgstr "" + +#: ../source/overview.rst:310 +msgid "`osnap `_ - Windows and Mac" +msgstr "" + +#: ../source/overview.rst:311 +msgid "`pynsist `_ - Windows only" +msgstr "" + +#: ../source/overview.rst:313 +msgid "" +"Most of the above imply single-user deployments. For multi-component server " +"applications, see :gh:`Chef Omnibus `." +msgstr "" + +#: ../source/overview.rst:319 +msgid "Bringing your own userspace" +msgstr "" + +#: ../source/overview.rst:321 +msgid "" +"An increasing number of operating systems -- including Linux, Mac OS, and " +"Windows -- can be set up to run applications packaged as lightweight images, " +"using a relatively modern arrangement often referred to as `operating-system-" +"level virtualization `_, or *containerization*." +msgstr "" + +#: ../source/overview.rst:328 +msgid "" +"These techniques are mostly Python agnostic, because they package whole OS " +"filesystems, not just Python or Python packages." +msgstr "" + +#: ../source/overview.rst:331 +msgid "" +"Adoption is most extensive among Linux servers, where the technology " +"originated and where the technologies below work best:" +msgstr "" + +#: ../source/overview.rst:334 +msgid "`AppImage `_" +msgstr "" + +#: ../source/overview.rst:335 +msgid "`Docker `_" +msgstr "" + +#: ../source/overview.rst:336 +msgid "`Flatpak `_" +msgstr "" + +#: ../source/overview.rst:337 +msgid "`Snapcraft `_" +msgstr "" + +#: ../source/overview.rst:340 +msgid "Bringing your own kernel" +msgstr "" + +#: ../source/overview.rst:342 +msgid "" +"Most desktop operating systems support some form of classical " +"virtualization, running applications packaged as images containing a full " +"operating system of their own. Running these virtual machines, or VMs, is a " +"mature approach, widespread in data center environments." +msgstr "" + +#: ../source/overview.rst:347 +msgid "" +"These techniques are mostly reserved for larger scale deployments in data " +"centers, though certain complex applications can benefit from this " +"packaging. The technologies are Python agnostic, and include:" +msgstr "" + +#: ../source/overview.rst:351 +msgid "KVM on Linux" +msgstr "" + +#: ../source/overview.rst:352 +msgid "Hyper-V on Windows" +msgstr "" + +#: ../source/overview.rst:353 +msgid "" +"`VHD `_, `AMI `_, and :doc:`other formats " +"`" +msgstr "" + +#: ../source/overview.rst:356 +msgid "" +"`OpenStack `_ - A cloud " +"management system written in Python, with extensive VM support" +msgstr "" + +#: ../source/overview.rst:360 +msgid "Bringing your own hardware" +msgstr "" + +#: ../source/overview.rst:362 +msgid "" +"The most all-encompassing way to ship your software would be to ship it " +"already-installed on some hardware. This way, your software's user would " +"require only electricity." +msgstr "" + +#: ../source/overview.rst:366 +msgid "" +"Whereas the virtual machines described above are primarily reserved for the " +"tech-savvy, you can find hardware appliances being used by everyone from the " +"most advanced data centers to the youngest children." +msgstr "" + +#: ../source/overview.rst:370 +msgid "" +"Embed your code on an :gh:`Adafruit `, `MicroPython " +"`_, or more-powerful hardware running Python, then " +"ship it to the datacenter or your users' homes. They plug and play, and you " +"can call it a day." +msgstr "" + +#: ../source/overview.rst:379 +msgid "A summary of technologies used to package Python applications." +msgstr "" + +#: ../source/overview.rst:379 +msgid "" +"The simplified gamut of technologies used to package Python applications." +msgstr "" + +#: ../source/overview.rst:382 +msgid "What about..." +msgstr "" + +#: ../source/overview.rst:384 +msgid "" +"The sections above can only summarize so much, and you might be wondering " +"about some of the more conspicuous gaps." +msgstr "" + +#: ../source/overview.rst:388 +msgid "Operating system packages" +msgstr "" + +#: ../source/overview.rst:390 +msgid "" +"As mentioned in :ref:`depending-on-a-separate-ecosystem` above, some " +"operating systems have package managers of their own. If you're very sure of " +"the operating system you're targeting, you can depend directly on a format " +"like `deb `_ (for Debian, " +"Ubuntu, etc.) or `RPM `_ " +"(for Red Hat, Fedora, etc.), and use that built-in package manager to take " +"care of installation, and even deployment. You can even use `FPM `_ to generate " +"both deb and RPMs from the same source." +msgstr "" + +#: ../source/overview.rst:401 +msgid "" +"In most deployment pipelines, the OS package manager is just one piece of " +"the puzzle." +msgstr "" + +#: ../source/overview.rst:407 +msgid "" +":doc:`Virtualenvs ` have been an indispensable " +"tool for multiple generations of Python developer, but are slowly fading " +"from view, as they are being wrapped by higher-level tools. With packaging " +"in particular, virtualenvs are used as a primitive in :doc:`the dh-" +"virtualenv tool ` and `osnap `_, both of which wrap virtualenvs in a self-contained way." +msgstr "" + +#: ../source/overview.rst:416 +msgid "" +"For production deployments, do not rely on running ``python -m pip install`` " +"from the Internet into a virtualenv, as one might do in a development " +"environment. The overview above is full of much better solutions." +msgstr "" + +#: ../source/overview.rst:421 +msgid "Security" +msgstr "" + +#: ../source/overview.rst:423 +msgid "" +"The further down the gradient you come, the harder it gets to update " +"components of your package. Everything is more tightly bound together." +msgstr "" + +#: ../source/overview.rst:426 +msgid "" +"For example, if a kernel security issue emerges, and you're deploying " +"containers, the host system's kernel can be updated without requiring a new " +"build on behalf of the application. If you deploy VM images, you'll need a " +"new build. Whether or not this dynamic makes one option more secure is still " +"a bit of an old debate, going back to the still-unsettled matter of `static " +"versus dynamic linking `_." +msgstr "" + +#: ../source/overview.rst:435 +msgid "Wrap up" +msgstr "" + +#: ../source/overview.rst:437 +msgid "" +"Packaging in Python has a bit of a reputation for being a bumpy ride. This " +"impression is mostly a byproduct of Python's versatility. Once you " +"understand the natural boundaries between each packaging solution, you begin " +"to realize that the varied landscape is a small price Python programmers pay " +"for using one of the most balanced, flexible languages available." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:7 +msgid "Binary distribution format" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:9 +msgid "" +"This page specifies the binary distribution format for Python packages, also " +"called the wheel format." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:12 +msgid "" +"A wheel is a ZIP-format archive with a specially formatted file name and the " +"``.whl`` extension. It contains a single distribution nearly as it would be " +"installed according to PEP 376 with a particular installation scheme. " +"Although a specialized installer is recommended, a wheel file may be " +"installed by simply unpacking into site-packages with the standard 'unzip' " +"tool while preserving enough information to spread its contents out onto " +"their final paths at any later time." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:22 +msgid "Details" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:25 +msgid "Installing a wheel 'distribution-1.0-py32-none-any.whl'" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:27 +msgid "Wheel installation notionally consists of two phases:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:29 +msgid "Unpack." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:31 +msgid "Parse ``distribution-1.0.dist-info/WHEEL``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:32 +msgid "" +"Check that installer is compatible with Wheel-Version. Warn if minor " +"version is greater, abort if major version is greater." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:34 +msgid "" +"If Root-Is-Purelib == 'true', unpack archive into purelib (site-packages)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:36 +msgid "Else unpack archive into platlib (site-packages)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:38 +msgid "Spread." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:40 +msgid "" +"Unpacked archive includes ``distribution-1.0.dist-info/`` and (if there is " +"data) ``distribution-1.0.data/``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:42 +msgid "" +"Move each subtree of ``distribution-1.0.data/`` onto its destination path. " +"Each subdirectory of ``distribution-1.0.data/`` is a key into a dict of " +"destination directories, such as ``distribution-1.0.data/(purelib|platlib|" +"headers|scripts|data)``. These subdirectories are :ref:`installation paths " +"defined by sysconfig `." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:48 +msgid "" +"If applicable, update scripts starting with ``#!python`` to point to the " +"correct interpreter." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:50 +msgid "Update ``distribution-1.0.dist-info/RECORD`` with the installed paths." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:52 +msgid "Remove empty ``distribution-1.0.data`` directory." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:53 +msgid "" +"Compile any installed .py to .pyc. (Uninstallers should be smart enough to " +"remove .pyc even if it is not mentioned in RECORD.)" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:57 +msgid "Recommended installer features" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:67 +msgid "Rewrite ``#!python``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:60 +msgid "" +"In wheel, scripts are packaged in ``{distribution}-{version}.data/scripts/" +"``. If the first line of a file in ``scripts/`` starts with exactly ``b'#!" +"python'``, rewrite to point to the correct interpreter. Unix installers may " +"need to add the +x bit to these files if the archive was created on Windows." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:66 +msgid "" +"The ``b'#!pythonw'`` convention is allowed. ``b'#!pythonw'`` indicates a GUI " +"script instead of a console script." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:72 +msgid "Generate script wrappers." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:70 +msgid "" +"In wheel, scripts packaged on Unix systems will certainly not have " +"accompanying .exe wrappers. Windows installers may want to add them during " +"install." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:75 +msgid "Recommended archiver features" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:82 +msgid "Place ``.dist-info`` at the end of the archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:78 +msgid "" +"Archivers are encouraged to place the ``.dist-info`` files physically at the " +"end of the archive. This enables some potentially interesting ZIP tricks " +"including the ability to amend the metadata without rewriting the entire " +"archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:85 +#: ../source/specifications/pylock-toml.rst:51 +msgid "File Format" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:90 +msgid "File name convention" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:92 +msgid "" +"The wheel filename is ``{distribution}-{version}(-{build tag})?-{python tag}-" +"{abi tag}-{platform tag}.whl``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:96 +msgid "distribution" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:96 +msgid "Distribution name, e.g. 'django', 'pyramid'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:99 +msgid "version" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:99 +msgid "Distribution version, e.g. 1.0." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:124 +msgid "build tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:102 +msgid "" +"Optional build number. Must start with a digit. Acts as a tie-breaker if " +"two wheel file names are the same in all other respects (i.e. name, version, " +"and other tags). Sort as an empty tuple if unspecified, else sort as a two-" +"item tuple with the first item being the initial digits as an ``int``, and " +"the second item being the remainder of the tag as a ``str``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:109 +msgid "" +"A common use-case for build numbers is rebuilding a binary distribution due " +"to a change in the build environment, like when using the manylinux image to " +"build distributions using pre-release CPython versions." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:116 +msgid "" +"Build numbers are not a part of the distribution version and thus are " +"difficult to reference externally, especially so outside the Python " +"ecosystem of tools and standards. A common case where a distribution would " +"need to referenced externally is when resolving a security vulnerability." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:121 +msgid "" +"Due to this limitation, new distributions which need to be referenced " +"externally **should not** use build numbers when building the new " +"distribution. Instead a **new distribution version** should be created for " +"such cases." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:127 +msgid "language implementation and version tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:127 +msgid "E.g. 'py27', 'py2', 'py3'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:130 +#: ../source/specifications/platform-compatibility-tags.rst:20 +msgid "abi tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:130 +msgid "E.g. 'cp33m', 'abi3', 'none'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:133 +#: ../source/specifications/platform-compatibility-tags.rst:23 +msgid "platform tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:133 +msgid "E.g. 'linux_x86_64', 'any'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:135 +msgid "" +"For example, ``distribution-1.0-1-py27-none-any.whl`` is the first build of " +"a package called 'distribution', and is compatible with Python 2.7 (any " +"Python 2.7 implementation), with no ABI (pure Python), on any CPU " +"architecture." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:140 +msgid "" +"The last three components of the filename before the extension are called " +"\"compatibility tags.\" The compatibility tags express the package's basic " +"interpreter requirements and are detailed in PEP 425." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:145 +msgid "Escaping and Unicode" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:147 +msgid "" +"As the components of the filename are separated by a dash (``-``, HYPHEN-" +"MINUS), this character cannot appear within any component. This is handled " +"as follows:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:150 +msgid "" +"In distribution names, any run of ``-_.`` characters (HYPHEN-MINUS, LOW LINE " +"and FULL STOP) should be replaced with ``_`` (LOW LINE), and uppercase " +"characters should be replaced with corresponding lowercase ones. This is " +"equivalent to regular :ref:`name normalization ` " +"followed by replacing ``-`` with ``_``. Tools consuming wheels must be " +"prepared to accept ``.`` (FULL STOP) and uppercase letters, however, as " +"these were allowed by an earlier version of this specification." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:157 +msgid "" +"Version numbers should be normalised according to the :ref:`Version " +"specifier specification `. Normalised version numbers " +"cannot contain ``-``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:159 +msgid "" +"The remaining components may not contain ``-`` characters, so no escaping is " +"necessary." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:162 +msgid "" +"Tools producing wheels should verify that the filename components do not " +"contain ``-``, as the resulting file may not be processed correctly if they " +"do." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:165 +msgid "" +"The archive filename is Unicode. It will be some time before the tools are " +"updated to support non-ASCII filenames, but they are supported in this " +"specification." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:169 +msgid "" +"The filenames *inside* the archive are encoded as UTF-8. Although some ZIP " +"clients in common use do not properly display UTF-8 filenames, the encoding " +"is supported by both the ZIP specification and Python's ``zipfile``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:175 +msgid "File contents" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:177 +msgid "" +"The contents of a wheel file, where {distribution} is replaced with " +"the :ref:`normalized name ` of the package, e.g. " +"``beaglevote`` and {version} is replaced with its :ref:`normalized version " +"`, e.g. ``1.0.0``, (with dash/``-`` " +"characters replaced with underscore/``_`` characters in both fields) consist " +"of:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:184 +msgid "" +"``/``, the root of the archive, contains all files to be installed in " +"``purelib`` or ``platlib`` as specified in ``WHEEL``. ``purelib`` and " +"``platlib`` are usually both ``site-packages``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:187 +msgid "``{distribution}-{version}.dist-info/`` contains metadata." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:188 +msgid "" +":file:`{distribution}-{version}.dist-info/licenses/` contains license files." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:189 +msgid "" +"``{distribution}-{version}.data/`` contains one subdirectory for each non-" +"empty install scheme key not already covered, where the subdirectory name is " +"an index into a dictionary of install paths (e.g. ``data``, ``scripts``, " +"``headers``, ``purelib``, ``platlib``)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:193 +msgid "" +"Python scripts must appear in ``scripts`` and begin with exactly ``b'#!" +"python'`` in order to enjoy script wrapper generation and ``#!python`` " +"rewriting at install time. They may have any or no extension. The " +"``scripts`` directory may only contain regular files." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:197 +msgid "" +"``{distribution}-{version}.dist-info/METADATA`` is Metadata version 1.1 or " +"greater format metadata." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:199 +msgid "" +"``{distribution}-{version}.dist-info/WHEEL`` is metadata about the archive " +"itself in the same basic key: value format::" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:209 +msgid "``Wheel-Version`` is the version number of the Wheel specification." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:210 +msgid "" +"``Generator`` is the name and optionally the version of the software that " +"produced the archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:212 +msgid "" +"``Root-Is-Purelib`` is true if the top level directory of the archive should " +"be installed into purelib; otherwise the root should be installed into " +"platlib." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:215 +msgid "" +"``Tag`` is the wheel's expanded compatibility tags; in the example the " +"filename would contain ``py2.py3-none-any``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:217 +msgid "" +"``Build`` is the build number and is omitted if there is no build number." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:218 +msgid "" +"A wheel installer should warn if Wheel-Version is greater than the version " +"it supports, and must fail if Wheel-Version has a greater major version than " +"the version it supports." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:221 +msgid "" +"Wheel, being an installation format that is intended to work across multiple " +"versions of Python, does not generally include .pyc files." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:223 +msgid "Wheel does not contain setup.py or setup.cfg." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:225 +msgid "" +"This version of the wheel specification is based on the distutils install " +"schemes and does not define how to install files to other locations. The " +"layout offers a superset of the functionality provided by the existing " +"wininst and egg binary formats." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:232 +#: ../source/specifications/recording-installed-packages.rst:23 +msgid "The .dist-info directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:234 +msgid "" +"Wheel .dist-info directories include at a minimum METADATA, WHEEL, and " +"RECORD." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:236 +msgid "" +"METADATA is the package metadata, the same format as PKG-INFO as found at " +"the root of sdists." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:238 +msgid "WHEEL is the wheel metadata specific to a build of the package." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:239 +msgid "" +"RECORD is a list of (almost) all the files in the wheel and their secure " +"hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " +"hash of itself, must include its hash. The hash algorithm must be sha256 or " +"better; specifically, md5 and sha1 are not permitted." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:244 +msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:245 +msgid "" +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:250 +msgid "" +"During extraction, wheel installers verify all the hashes in RECORD against " +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:256 +msgid "Subdirectories in :file:`.dist-info/`" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:258 +msgid "" +"Subdirectories under :file:`.dist-info/` are reserved for future use. The " +"following subdirectory names under :file:`.dist-info/` are reserved for " +"specific usage:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:262 +msgid "Subdirectory name" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:262 +msgid "PEP / Standard" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:264 +msgid "``licenses``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:264 +#: ../source/specifications/binary-distribution-format.rst:265 +msgid ":pep:`639`" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:265 +msgid "``license_files``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:266 +msgid "``LICENSES``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:266 +msgid "`REUSE licensing framework `__" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:267 +msgid "``sboms``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:267 +msgid ":pep:`770`" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:271 +msgid "The :file:`.dist-info/licenses/` directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:273 +msgid "" +"If the metadata version is 2.4 or greater and one or more ``License-File`` " +"fields is specified, the :file:`.dist-info/` directory MUST contain " +"a :file:`licenses/` subdirectory, which MUST contain the files listed in the " +"``License-File`` fields in the :file:`METADATA` file at their respective " +"paths relative to the :file:`licenses/` directory." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:280 +msgid "The :file:`.dist-info/sboms/` directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:282 +msgid "" +"All files contained within the :file:`.dist-info/sboms/` directory MUST be " +"Software Bill-of-Materials (SBOM) files that describe software contained " +"within the distribution archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:287 +msgid "The .data directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:289 +msgid "" +"Any file that is not normally installed inside site-packages goes into " +"the .data directory, named as the .dist-info directory but with the .data/ " +"extension::" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:297 +msgid "" +"The .data directory contains subdirectories with the scripts, headers, " +"documentation and so forth from the distribution. During installation the " +"contents of these subdirectories are moved onto their destination paths." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:303 +#: ../source/specifications/platform-compatibility-tags.rst:376 +msgid "FAQ" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:307 +msgid "Wheel defines a .data directory. Should I put all my data there?" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:309 +msgid "" +"This specification does not have an opinion on how you should organize your " +"code. The .data directory is just a place for any files that are not " +"normally installed inside ``site-packages`` or on the PYTHONPATH. In other " +"words, you may continue to use ``pkgutil.get_data(package, resource)`` even " +"though *those* files will usually not be distributed in *wheel's* ``.data`` " +"directory." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:318 +msgid "What's the deal with \"purelib\" vs. \"platlib\"?" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:320 +msgid "" +"Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " +"significant on some platforms. For example, Fedora installs pure Python " +"packages to '/usr/lib/pythonX.Y/site-packages' and platform dependent " +"packages to '/usr/lib64/pythonX.Y/site-packages'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:325 +msgid "" +"A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" +"{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " +"true\" with those same files in the root, and it is legal to have files in " +"both the \"purelib\" and \"platlib\" categories." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:330 +msgid "" +"In practice a wheel should have only one of \"purelib\" or \"platlib\" " +"depending on whether it is pure Python or not and those files should be at " +"the root with the appropriate setting given for \"Root-is-purelib\"." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:338 +msgid "Is it possible to import Python code directly from a wheel file?" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:340 +msgid "" +"Technically, due to the combination of supporting installation via simple " +"extraction and using an archive format that is compatible with " +"``zipimport``, a subset of wheel files *do* support being placed directly on " +"``sys.path``. However, while this behaviour is a natural consequence of the " +"format design, actually relying on it is generally discouraged." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:346 +msgid "" +"Firstly, wheel *is* designed primarily as a distribution format, so skipping " +"the installation step also means deliberately avoiding any reliance on " +"features that assume full installation (such as being able to use standard " +"tools like ``pip`` and ``virtualenv`` to capture and manage dependencies in " +"a way that can be properly tracked for auditing and security update " +"purposes, or integrating fully with the standard build machinery for C " +"extensions by publishing header files in the appropriate place)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:355 +msgid "" +"Secondly, while some Python software is written to support running directly " +"from a zip archive, it is still common for code to be written assuming it " +"has been fully installed. When that assumption is broken by trying to run " +"the software from a zip archive, the failures can often be obscure and hard " +"to diagnose (especially when they occur in third party libraries). The two " +"most common sources of problems with this are the fact that importing C " +"extensions from a zip archive is *not* supported by CPython (since doing so " +"is not supported directly by the dynamic loading machinery on any platform) " +"and that when running from a zip archive the ``__file__`` attribute no " +"longer refers to an ordinary filesystem path, but to a combination path that " +"includes both the location of the zip archive on the filesystem and the " +"relative path to the module inside the archive. Even when software correctly " +"uses the abstract resource APIs internally, interfacing with external " +"components may still require the availability of an actual on-disk file." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:372 +msgid "" +"Like metaclasses, monkeypatching and metapath importers, if you're not " +"already sure you need to take advantage of this feature, you almost " +"certainly don't need it. If you *do* decide to use it anyway, be aware that " +"many projects will require a failure to be reproduced with a fully installed " +"package before accepting it as a genuine bug." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:380 +#: ../source/specifications/core-metadata.rst:1035 +#: ../source/specifications/dependency-groups.rst:250 +#: ../source/specifications/dependency-specifiers.rst:516 +#: ../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 +#: ../source/specifications/glob-patterns.rst:118 +#: ../source/specifications/inline-script-metadata.rst:213 +#: ../source/specifications/name-normalization.rst:50 +#: ../source/specifications/platform-compatibility-tags.rst:440 +#: ../source/specifications/pylock-toml.rst:841 +#: ../source/specifications/pyproject-toml.rst:632 +#: ../source/specifications/recording-installed-packages.rst:278 +#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/source-distribution-format.rst:153 +#: ../source/specifications/version-specifiers.rst:1285 +#: ../source/specifications/virtual-environments.rst:54 +msgid "History" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:382 +msgid "February 2013: This specification was approved through :pep:`427`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:383 +msgid "" +"February 2021: The rules on escaping in wheel filenames were revised, to " +"bring them into line with what popular tools actually do." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:385 +msgid "" +"December 2024: Clarified that the ``scripts`` folder should only contain " +"regular files (the expected behaviour of consuming tools when encountering " +"symlinks or subdirectories in this folder is not formally defined, and hence " +"may vary between tools)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:389 +#: ../source/specifications/recording-installed-packages.rst:288 +msgid "" +"December 2024: The :file:`.dist-info/licenses/` directory was specified " +"through :pep:`639`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:391 +msgid "" +"January 2025: Clarified that name and version needs to be normalized for " +"``.dist-info`` and ``.data`` directories." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 +msgid "Appendix" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:399 +msgid "Example urlsafe-base64-nopad implementation::" +msgstr "" + +#: ../source/specifications/build-details/index.rst:7 +#: ../source/specifications/build-details/index.rst:41 +msgid "v1.0" +msgstr "" + +#: ../source/specifications/build-details/index.rst:5 +msgid ":file:`build-details.json`" +msgstr "" + +#: ../source/specifications/build-details/index.rst:13 +msgid "" +"The ``build-details.json`` file is a standardized file format that provides " +"build-specfic information of a Python installation, such as its version, " +"extension ABI details, and other information that is specific to that " +"particular build of Python." +msgstr "" + +#: ../source/specifications/build-details/index.rst:18 +msgid "" +"Starting from Python 3.14, a ``build-details.json`` file is installed in the " +"platform-independent standard library directory (``stdlib``, e.g. ``/usr/lib/" +"python3.14/build-details.json``)." +msgstr "" + +#: ../source/specifications/build-details/index.rst:22 +msgid "" +"Please refer to the :ref:`latest version ` for its " +"specification." +msgstr "" + +#: ../source/specifications/build-details/index.rst:28 +#: ../source/specifications/build-details/v1.0.rst:16 +#: ../source/specifications/inline-script-metadata.rst:100 +#: ../source/specifications/pylock-toml.rst:737 +msgid "Example" +msgstr "" + +#: ../source/specifications/build-details/index.rst:35 +msgid "Changelog" +msgstr "" + +#: ../source/specifications/build-details/index.rst:45 +#: ../source/specifications/build-details/v1.0.rst:9 +#: ../source/specifications/dependency-groups.rst:20 +#: ../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 "" + +#: ../source/specifications/build-details/index.rst:46 +msgid ":ref:`build-details-v1.0`" +msgstr "" + +#: ../source/specifications/build-details/index.rst:48 +msgid "Schema" +msgstr "" + +#: ../source/specifications/build-details/index.rst:49 +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"https://packaging.python.org/en/latest/specifications/schemas/build-details-" +"v1.0.schema.json" +msgstr "" + +#: ../source/specifications/build-details/index.rst:52 +msgid "Initial version, introduced by :pep:`739`." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:5 +msgid "``build-details.json`` v1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"*build-details.json — a static description file with build details of Python " +"installations*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "type" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*object*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "properties" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**schema\\_version**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Schema version." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This is a string following the format ``.``, where ```` " +"and ```` are unpaded numbers and represent the **major** and " +"**minor** components of the version. Versions may be arithmetically compared " +"by intrepreting the version string as a decimal number." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"For this specification version, this value is constant and **MUST** be " +"``1.0``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Future versions of this schema **MUST** use a higher version number. Future " +"versions of this schema **MUST NOT** use the same **major** version " +"component as other schema version unless its specification is deemed " +"backwards-compatible with them — it can't change, or extend, any parts of " +"the current specification in such a way as the semantics of the interpreted " +"data differ, or that data valid under the new specification is invalid under " +"the older specification, with the exception of additional properties (errors " +"caused by ``additionalProperties``)." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*string*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "const" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**base\\_prefix**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Base prefix of the Python installation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Either an absolute path, or a path relative to directory where this file is " +"contained." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "examples" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "../.." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "base\\_interpreter" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the Python interprer of the base installation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Either an absolute path, or a path relative to ``base_prefix``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the installation provides an interpreter " +"executable." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/bin/python" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "bin/python" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**platform**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "System platform string." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "This field **SHOULD** be equivalent to ``sysconfig.get_platform()``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "linux-x86\\_64" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**language**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to the Python language specification." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**version**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"String representation the Python language version — a version string " +"consisting only of the *major* and *minor* components." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **SHOULD** be equivalent to ``sysconfig.get_python_version()``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "3.14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "version\\_info" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object in the format of :py:data:`sys.version_info`." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "This section **SHOULD** be equivalent to :py:data:`sys.version_info`." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "major" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "3" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "minor" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "micro" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "1" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "releaselevel" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "final" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "serial" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**major**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*number*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**minor**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**micro**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**releaselevel**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "enum" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "alpha, beta, candidate, final" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**serial**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "additionalProperties" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "False" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**implementation**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to Python implementation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **SHOULD** be equivalent to :py:data:`sys.implementation`. It " +"follows specification defined in PEP 421, meaning that on top of the " +"required keys, implementation-specific keys can also exist, but must be " +"prefixed with an underscore." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**name**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Lower-case name of the Python implementation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "cpython" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "pypy" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Object in the format of :py:data:`sys.version_info`, containing the " +"implementation version." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "7" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "16" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "True" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "abi" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to ABI." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**flags**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Build configuration flags, used to calculate the extension suffix." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"The flags **MUST** be defined in the order they appear on the extension " +"suffix." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*array*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "t" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "d" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "extension\\_suffix" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Suffix used for extensions built against the current implementation version." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python implementation supports " +"extensions, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".cpython-314-x86\\_64-linux-gnu.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "stable\\_abi\\_suffix" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Suffix used for extensions built against the stable ABI." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python implementation has a stable ABI " +"extension suffix, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".abi3.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "suffixes" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Valid module suffixes grouped by type." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **MUST** be present if the Python installation supports " +"importing external files, and it **SHOULD** be equivalent to the " +"``importlib.machinery.*_SUFFIXES`` attributes." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Additionally, if a Python implementation provides extension kinds other than " +"the ones listed on ``importlib.machinery`` module, they **MAY** add a sub-" +"section for them." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "source" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".py" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "bytecode" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".pyc" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "optimized_bytecode" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "debug_bytecode" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "extensions" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".cpython-313-x86\\_64-linux-gnu.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "libpython" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to the ``libpython`` library." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **MUST** by present if Python installation provides a " +"``libpython`` library, otherwise this section will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "dynamic" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the dynamic ``libpython`` library." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python installation provides a dynamic " +"``libpython`` library, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/libpython3.14.so.1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/libpython3.14.so.1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "dynamic\\_stableabi" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the dynamic ``libpython`` library for the stable ABI." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python installation provides a dynamic " +"``libpython`` library targeting the Stable ABI, otherwise this entry will be " +"missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "If this key is present ``dynamic`` **MUST** also be set." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/libpython3.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/libpython3.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "static" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the static ``libpython`` library." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python installation provides a static " +"``libpython`` library, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/python3.14/config-3.14-x86\\_64-linux-gnu/libpython3.14.a" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/python3.14/config-3.14-x86\\_64-linux-gnu/libpython3.14.a" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "link\\_extensions" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Should extensions built against a dynamic ``libpython`` link to it?" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*boolean*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "c\\_api" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to the Python C API." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **MUST** be present if the Python implementation provides a C " +"API, otherwise this section will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**headers**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the C API headers." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/include/python3.14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "include/python3.14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "pkgconfig\\_path" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the pkg-config definition files." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python implementation provides pkg-" +"config definition files, otherwise this section will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/pkgconfig" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/pkgconfig" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "arbitrary\\_data" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing extra arbitrary data." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This is meant to be used as an escape-hatch, to include any relevant data " +"that is not covered by this specification. Implementations may choose what " +"data to provide in this section." +msgstr "" + +#: ../source/specifications/core-metadata.rst:7 +msgid "Core metadata specifications" +msgstr "" + +#: ../source/specifications/core-metadata.rst:9 +msgid "This page describes version 2.5, approved in September 2025." +msgstr "" + +#: ../source/specifications/core-metadata.rst:11 +msgid "" +"Fields defined in the following specification should be considered valid, " +"complete and not subject to change. The required fields are:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:14 +msgid "``Metadata-Version``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:15 +msgid "``Name``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:16 +msgid "``Version``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:18 +msgid "All the other fields are optional." +msgstr "" + +#: ../source/specifications/core-metadata.rst:20 +msgid "" +"The standard file format for metadata (including in :doc:`wheels ` and :doc:`installed projects `) is based on the format of email headers. However, email formats " +"have been revised several times, and exactly which email RFC applies to " +"packaging metadata is not specified. In the absence of a precise definition, " +"the practical standard is set by what the standard " +"library :mod:`python:email.parser` module can parse using " +"the :data:`~.python:email.policy.compat32` policy." +msgstr "" + +#: ../source/specifications/core-metadata.rst:29 +msgid "" +"Whenever metadata is serialised to a byte stream (for example, to save to a " +"file), strings must be serialised using the UTF-8 encoding." +msgstr "" + +#: ../source/specifications/core-metadata.rst:32 +msgid "" +"Although :pep:`566` defined a way to transform metadata into a JSON-" +"compatible dictionary, this is not yet used as a standard interchange " +"format. The need for tools to work with years worth of existing packages " +"makes it difficult to shift to a new format." +msgstr "" + +#: ../source/specifications/core-metadata.rst:37 +msgid "" +"*Interpreting old metadata:* In :pep:`566`, the version specifier field " +"format specification was relaxed to accept the syntax used by popular " +"publishing tools (namely to remove the requirement that version specifiers " +"must be surrounded by parentheses). Metadata consumers may want to use the " +"more relaxed formatting rules even for metadata files that are nominally " +"less than version 2.1." +msgstr "" + +#: ../source/specifications/core-metadata.rst:48 +msgid "Metadata-Version" +msgstr "" + +#: ../source/specifications/core-metadata.rst:52 +msgid "" +"Version of the file format; legal values are \"1.0\", \"1.1\", \"1.2\", " +"\"2.1\", \"2.2\", \"2.3\", \"2.4\", and \"2.5\"." +msgstr "" + +#: ../source/specifications/core-metadata.rst:55 +msgid "" +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:62 +msgid "" +"For broader compatibility, build tools MAY choose to produce distribution " +"metadata using the lowest metadata version that includes all of the needed " +"fields." +msgstr "" + +#: ../source/specifications/core-metadata.rst:66 +#: ../source/specifications/core-metadata.rst:84 +#: ../source/specifications/core-metadata.rst:101 +#: ../source/specifications/core-metadata.rst:176 +#: ../source/specifications/core-metadata.rst:191 +#: ../source/specifications/core-metadata.rst:229 +#: ../source/specifications/core-metadata.rst:301 +#: ../source/specifications/core-metadata.rst:305 +#: ../source/specifications/core-metadata.rst:309 +#: ../source/specifications/core-metadata.rst:313 +#: ../source/specifications/core-metadata.rst:345 +#: ../source/specifications/core-metadata.rst:367 +#: ../source/specifications/core-metadata.rst:385 +#: ../source/specifications/core-metadata.rst:410 +#: ../source/specifications/core-metadata.rst:432 +#: ../source/specifications/core-metadata.rst:658 +#: ../source/specifications/core-metadata.rst:693 +#: ../source/specifications/core-metadata.rst:703 +#: ../source/specifications/core-metadata.rst:932 +#: ../source/specifications/core-metadata.rst:1029 +msgid "Example::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:74 +msgid "Name" +msgstr "" + +#: ../source/specifications/core-metadata.rst:77 +msgid "Added restrictions on format from the :ref:`name format `." +msgstr "" + +#: ../source/specifications/core-metadata.rst:80 +msgid "" +"The name of the distribution. The name field is the primary identifier for a " +"distribution. It must conform to the :ref:`name format specification `." +msgstr "" + +#: ../source/specifications/core-metadata.rst:88 +msgid "" +"For comparison purposes, the names should be :ref:`normalized ` before comparing." +msgstr "" + +#: ../source/specifications/core-metadata.rst:93 +msgid "Version" +msgstr "" + +#: ../source/specifications/core-metadata.rst:97 +msgid "" +"A string containing the distribution's version number. This field must be " +"in the format specified in the :ref:`Version specifier specification " +"`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:109 +msgid "Dynamic (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:113 +msgid "" +"A string containing the name of another core metadata field. The field names " +"``Name``, ``Version``, and ``Metadata-Version`` may not be specified in this " +"field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:117 +msgid "" +"When found in the metadata of a source distribution, the following rules " +"apply:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:120 +msgid "" +"If a field is *not* marked as ``Dynamic``, then the value of the field in " +"any wheel built from the sdist MUST match the value in the sdist. If the " +"field is not in the sdist, and not marked as ``Dynamic``, then it MUST NOT " +"be present in the wheel." +msgstr "" + +#: ../source/specifications/core-metadata.rst:124 +msgid "" +"If a field is marked as ``Dynamic``, it may contain any valid value in a " +"wheel built from the sdist (including not being present at all)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:127 +msgid "" +"If the sdist metadata version is older than version 2.2, then all fields " +"should be treated as if they were specified with ``Dynamic`` (i.e. there are " +"no special restrictions on the metadata of wheels built from the sdist)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:131 +msgid "" +"In any context other than a source distribution, ``Dynamic`` is for " +"information only, and indicates that the field value was calculated at wheel " +"build time, and may not be the same as the value in the sdist or in other " +"wheels for the project." +msgstr "" + +#: ../source/specifications/core-metadata.rst:136 +msgid "" +"Note in particular that if you have obtained a prebuilt wheel, you cannot " +"assume that a field which is not marked as ``Dynamic`` will have the same " +"value in other wheels, as some wheels are not built directly from the sdist, " +"but are modified from existing wheels (the ``auditwheel`` tool does this, " +"for example, and it's commonly used when building wheels for PyPI). Such " +"modifications *could* include changing metadata (even non-dynamic " +"metadata). Similarly, if you have a sdist and a wheel which you didn't " +"build from that sdist, you cannot assume that the wheel's metadata matches " +"that of the sdist, even if the field is not marked as ``Dynamic``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:146 +msgid "" +"Full details of the semantics of ``Dynamic`` are described in :pep:`643`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:151 +msgid "Platform (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:155 +msgid "" +"A Platform specification describing an operating system supported by the " +"distribution which is not listed in the \"Operating System\" Trove " +"classifiers. See \"Classifier\" below." +msgstr "" + +#: ../source/specifications/core-metadata.rst:159 +#: ../source/specifications/core-metadata.rst:465 +#: ../source/specifications/core-metadata.rst:492 +#: ../source/specifications/core-metadata.rst:515 +#: ../source/specifications/core-metadata.rst:544 +#: ../source/specifications/core-metadata.rst:585 +#: ../source/specifications/core-metadata.rst:641 +#: ../source/specifications/core-metadata.rst:775 +#: ../source/specifications/core-metadata.rst:816 +#: ../source/specifications/core-metadata.rst:873 +#: ../source/specifications/core-metadata.rst:903 +#: ../source/specifications/core-metadata.rst:983 +#: ../source/specifications/core-metadata.rst:1005 +msgid "Examples::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:167 +msgid "Supported-Platform (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:171 +msgid "" +"Binary distributions containing a PKG-INFO file will use the Supported-" +"Platform field in their metadata to specify the OS and CPU for which the " +"binary distribution was compiled. The semantics of the Supported-Platform " +"field are not specified in this PEP." +msgstr "" + +#: ../source/specifications/core-metadata.rst:185 +msgid "Summary" +msgstr "" + +#: ../source/specifications/core-metadata.rst:189 +msgid "A one-line summary of what the distribution does." +msgstr "" + +#: ../source/specifications/core-metadata.rst:209 +msgid "This field may be specified in the message body instead." +msgstr "" + +#: ../source/specifications/core-metadata.rst:212 +msgid "" +"A longer description of the distribution that can run to several " +"paragraphs. Software that deals with metadata should not assume any maximum " +"size for this field, though people shouldn't include their instruction " +"manual as the description." +msgstr "" + +#: ../source/specifications/core-metadata.rst:217 +msgid "" +"The contents of this field can be written using reStructuredText markup " +"[1]_. For programs that work with the metadata, supporting markup is " +"optional; programs can also display the contents of the field as-is. This " +"means that authors should be conservative in the markup they use." +msgstr "" + +#: ../source/specifications/core-metadata.rst:223 +msgid "" +"To support empty lines and lines with indentation with respect to the RFC " +"822 format, any CRLF character has to be suffixed by 7 spaces followed by a " +"pipe (\"|\") char. As a result, the Description field is encoded into a " +"folded field that can be interpreted by RFC822 parser [2]_." +msgstr "" + +#: ../source/specifications/core-metadata.rst:240 +msgid "" +"This encoding implies that any occurrences of a CRLF followed by 7 spaces " +"and a pipe char have to be replaced by a single CRLF when the field is " +"unfolded using a RFC822 reader." +msgstr "" + +#: ../source/specifications/core-metadata.rst:244 +msgid "" +"Alternatively, the distribution's description may instead be provided in the " +"message body (i.e., after a completely blank line following the headers, " +"with no indentation or other special formatting necessary)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:253 +msgid "Description-Content-Type" +msgstr "" + +#: ../source/specifications/core-metadata.rst:257 +msgid "" +"A string stating the markup syntax (if any) used in the distribution's " +"description, so that tools can intelligently render the description." +msgstr "" + +#: ../source/specifications/core-metadata.rst:260 +msgid "" +"Historically, PyPI supported descriptions in plain text and " +"`reStructuredText (reST) `_, and could render reST into HTML. However, it is " +"common for distribution authors to write the description in `Markdown " +"`_ (:rfc:`7763`) as many code " +"hosting sites render Markdown READMEs, and authors would reuse the file for " +"the description. PyPI didn't recognize the format and so could not render " +"the description correctly. This resulted in many packages on PyPI with " +"poorly-rendered descriptions when Markdown is left as plain text, or worse, " +"was attempted to be rendered as reST. This field allows the distribution " +"author to specify the format of their description, opening up the " +"possibility for PyPI and other tools to be able to render Markdown and other " +"formats." +msgstr "" + +#: ../source/specifications/core-metadata.rst:273 +msgid "" +"The format of this field is the same as the ``Content-Type`` header in HTTP " +"(i.e.: `RFC 1341 `_). Briefly, this means that it has a ``type/subtype`` part and " +"then it can optionally have a number of parameters:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:279 +msgid "Format::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:283 +msgid "The ``type/subtype`` part has only a few legal values:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:285 +msgid "``text/plain``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:286 +msgid "``text/x-rst``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:287 +msgid "``text/markdown``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:289 +msgid "" +"The ``charset`` parameter can be used to specify the character encoding of " +"the description. The only legal value is ``UTF-8``. If omitted, it is " +"assumed to be ``UTF-8``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:293 +msgid "" +"Other parameters might be specific to the chosen subtype. For example, for " +"the ``markdown`` subtype, there is an optional ``variant`` parameter that " +"allows specifying the variant of Markdown in use (defaults to ``GFM`` if not " +"specified). Currently, two variants are recognized:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:298 +msgid "``GFM`` for :rfc:`GitHub-flavored Markdown <7764#section-3.2>`" +msgstr "" + +#: ../source/specifications/core-metadata.rst:299 +msgid "``CommonMark`` for :rfc:`CommonMark <7764#section-3.5>`" +msgstr "" + +#: ../source/specifications/core-metadata.rst:317 +msgid "" +"If a ``Description-Content-Type`` is not specified, then applications should " +"attempt to render it as ``text/x-rst; charset=UTF-8`` and fall back to " +"``text/plain`` if it is not valid rst." +msgstr "" + +#: ../source/specifications/core-metadata.rst:321 +msgid "" +"If a ``Description-Content-Type`` is an unrecognized value, then the assumed " +"content type is ``text/plain`` (Although PyPI will probably reject anything " +"with an unrecognized value)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:325 +msgid "" +"If the ``Description-Content-Type`` is ``text/markdown`` and ``variant`` is " +"not specified or is set to an unrecognized value, then the assumed " +"``variant`` is ``GFM``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:329 +msgid "" +"So for the last example above, the ``charset`` defaults to ``UTF-8`` and the " +"``variant`` defaults to ``GFM`` and thus it is equivalent to the example " +"before it." +msgstr "" + +#: ../source/specifications/core-metadata.rst:338 +msgid "Keywords" +msgstr "" + +#: ../source/specifications/core-metadata.rst:342 +msgid "" +"A list of additional keywords, separated by commas, to be used to assist " +"searching for the distribution in a larger catalog." +msgstr "" + +#: ../source/specifications/core-metadata.rst:351 +msgid "" +"The specification previously showed keywords separated by spaces, but " +"distutils and setuptools implemented it with commas. These tools have been " +"very widely used for many years, so it was easier to update the " +"specification to match the de facto standard." +msgstr "" + +#: ../source/specifications/core-metadata.rst:360 +msgid "Author" +msgstr "" + +#: ../source/specifications/core-metadata.rst:364 +msgid "" +"A string containing the author's name at a minimum; additional contact " +"information may be provided." +msgstr "" + +#: ../source/specifications/core-metadata.rst:377 +msgid "Author-email" +msgstr "" + +#: ../source/specifications/core-metadata.rst:381 +msgid "" +"A string containing the author's e-mail address. It can contain a name and " +"e-mail address in the legal forms for a RFC-822 ``From:`` header." +msgstr "" + +#: ../source/specifications/core-metadata.rst:389 +#: ../source/specifications/core-metadata.rst:436 +msgid "" +"Per RFC-822, this field may contain multiple comma-separated e-mail " +"addresses::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:399 +msgid "Maintainer" +msgstr "" + +#: ../source/specifications/core-metadata.rst:403 +msgid "" +"A string containing the maintainer's name at a minimum; additional contact " +"information may be provided." +msgstr "" + +#: ../source/specifications/core-metadata.rst:406 +msgid "" +"Note that this field is intended for use when a project is being maintained " +"by someone other than the original author: it should be omitted if it is " +"identical to ``Author``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:420 +msgid "Maintainer-email" +msgstr "" + +#: ../source/specifications/core-metadata.rst:424 +msgid "" +"A string containing the maintainer's e-mail address. It can contain a name " +"and e-mail address in the legal forms for a RFC-822 ``From:`` header." +msgstr "" + +#: ../source/specifications/core-metadata.rst:428 +msgid "" +"Note that this field is intended for use when a project is being maintained " +"by someone other than the original author: it should be omitted if it is " +"identical to ``Author-email``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:446 +msgid "License" +msgstr "" + +#: ../source/specifications/core-metadata.rst:449 +msgid "in favour of ``License-Expression``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:453 +msgid "" +"As of Metadata 2.4, ``License`` and ``License-Expression`` are mutually " +"exclusive. If both are specified, tools which parse metadata will disregard " +"``License`` and PyPI will reject uploads. See `PEP 639 `__." +msgstr "" + +#: ../source/specifications/core-metadata.rst:458 +msgid "" +"Text indicating the license covering the distribution where the license is " +"not a selection from the \"License\" Trove classifiers. " +"See :ref:`\"Classifier\" ` below. This field may also " +"be used to specify a particular version of a license which is named via the " +"``Classifier`` field, or to indicate a variation or exception to such a " +"license." +msgstr "" + +#: ../source/specifications/core-metadata.rst:478 +msgid "License-Expression" +msgstr "" + +#: ../source/specifications/core-metadata.rst:482 +msgid "" +"Text string that is a valid SPDX :term:`license expression `, as specified in :doc:`/specifications/license-expression`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:486 +msgid "" +"Note that the expression in this field only applies to " +"the :term:`Distribution Archive` containing the metadata with this field " +"(e.g., :term:`Source Distribution ` " +"or :term:`Wheel`), not the project overall or other files related to the " +"project (including other distribution archives)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:507 +msgid "License-File (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:511 +msgid "" +"Each entry is a string representation of the path of a license-related file. " +"The path is located within the project source tree, relative to the project " +"root directory. For details see :pep:`639`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:528 +msgid "Classifier (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:532 +msgid "" +"Each entry is a string giving a single classification value for the " +"distribution. Classifiers are described in :pep:`301`, and the Python " +"Package Index publishes a dynamic list of `currently defined classifiers " +"`__." +msgstr "" + +#: ../source/specifications/core-metadata.rst:538 +msgid "" +"The use of ``License ::`` classifiers is deprecated as of Metadata 2.4, use " +"``License-Expression`` instead. See `PEP 639 `_." +msgstr "" + +#: ../source/specifications/core-metadata.rst:542 +#: ../source/specifications/core-metadata.rst:632 +#: ../source/specifications/core-metadata.rst:871 +#: ../source/specifications/core-metadata.rst:896 +msgid "This field may be followed by an environment marker after a semicolon." +msgstr "" + +#: ../source/specifications/core-metadata.rst:553 +msgid "Requires-Dist (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:556 +#: ../source/specifications/core-metadata.rst:619 +#: ../source/specifications/core-metadata.rst:843 +#: ../source/specifications/core-metadata.rst:885 +msgid "" +"The field format specification was relaxed to accept the syntax used by " +"popular publishing tools." +msgstr "" + +#: ../source/specifications/core-metadata.rst:560 +msgid "" +"Each entry contains a string naming some other distutils project required by " +"this distribution." +msgstr "" + +#: ../source/specifications/core-metadata.rst:563 +msgid "The format of a requirement string contains from one to four parts:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:565 +msgid "" +"A project name, in the same format as the ``Name:`` field. The only " +"mandatory part." +msgstr "" + +#: ../source/specifications/core-metadata.rst:567 +msgid "" +"A comma-separated list of 'extra' names. These are defined by the required " +"project, referring to specific features which may need extra dependencies. " +"The names MUST conform to the restrictions specified by the ``Provides-" +"Extra:`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:571 +msgid "" +"A version specifier. Tools parsing the format should accept optional " +"parentheses around this, but tools generating it should not use parentheses." +msgstr "" + +#: ../source/specifications/core-metadata.rst:574 +msgid "" +"An environment marker after a semicolon. This means that the requirement is " +"only needed in the specified conditions." +msgstr "" + +#: ../source/specifications/core-metadata.rst:577 +msgid "See :pep:`508` for full details of the allowed format." +msgstr "" + +#: ../source/specifications/core-metadata.rst:579 +msgid "" +"The project names should correspond to names as found on the `Python Package " +"Index`_." +msgstr "" + +#: ../source/specifications/core-metadata.rst:582 +msgid "" +"Version specifiers must follow the rules described in :doc:`version-" +"specifiers`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:596 +msgid "Requires-Python" +msgstr "" + +#: ../source/specifications/core-metadata.rst:600 +msgid "" +"This field specifies the Python version(s) that the distribution is " +"compatible with. Installation tools may look at this when picking which " +"version of a project to install." +msgstr "" + +#: ../source/specifications/core-metadata.rst:604 +msgid "The value must be in the format specified in :doc:`version-specifiers`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:606 +msgid "" +"For example, if a distribution uses :ref:`f-strings ` " +"then it may prevent installation on Python < 3.6 by specifying::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:611 +msgid "This field cannot be followed by an environment marker." +msgstr "" + +#: ../source/specifications/core-metadata.rst:616 +msgid "Requires-External (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:623 +msgid "" +"Each entry contains a string describing some dependency in the system that " +"the distribution is to be used. This field is intended to serve as a hint " +"to downstream project maintainers, and has no semantics which are meaningful " +"to the ``distutils`` distribution." +msgstr "" + +#: ../source/specifications/core-metadata.rst:628 +msgid "" +"The format of a requirement string is a name of an external dependency, " +"optionally followed by a version declaration within parentheses." +msgstr "" + +#: ../source/specifications/core-metadata.rst:634 +msgid "" +"Because they refer to non-Python software releases, version numbers for this " +"field are **not** required to conform to the format specified in " +"the :ref:`Version specifier specification `: they should " +"correspond to the version scheme used by the external dependency." +msgstr "" + +#: ../source/specifications/core-metadata.rst:639 +msgid "Notice that there is no particular rule on the strings to be used." +msgstr "" + +#: ../source/specifications/core-metadata.rst:651 +msgid "Project-URL (multiple-use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:655 +msgid "" +"A string containing a browsable URL for the project and a label for it, " +"separated by a comma." +msgstr "" + +#: ../source/specifications/core-metadata.rst:662 +msgid "The label is free text limited to 32 characters." +msgstr "" + +#: ../source/specifications/core-metadata.rst:664 +msgid "" +"Starting with :pep:`753`, project metadata consumers (such as the Python " +"Package Index) can use a standard normalization process to discover \"well-" +"known\" labels, which can then be given special presentations when being " +"rendered for human consumption. See :ref:`well-known-project-urls`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:674 +msgid "Provides-Extra (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:677 +msgid "" +":pep:`685` restricted valid values to be unambiguous (i.e. no normalization " +"required). For older metadata versions, value restrictions were brought into " +"line with ``Name:`` and normalization rules were introduced." +msgstr "" + +#: ../source/specifications/core-metadata.rst:682 +msgid "" +"A string containing the name of an optional feature. A valid name consists " +"only of lowercase ASCII letters, ASCII numbers, and hyphen. It must start " +"and end with a letter or number. Hyphens cannot be followed by another " +"hyphen. Names are limited to those which match the following regex (which " +"guarantees unambiguity)::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:690 +msgid "" +"The specified name may be used to make a dependency conditional on whether " +"the optional feature has been requested." +msgstr "" + +#: ../source/specifications/core-metadata.rst:698 +msgid "" +"A second distribution requires an optional dependency by placing it inside " +"square brackets, and can request multiple features by separating them with a " +"comma (,). The requirements are evaluated for each requested feature and " +"added to the set of requirements for the distribution." +msgstr "" + +#: ../source/specifications/core-metadata.rst:708 +msgid "" +"Two feature names ``test`` and ``doc`` are reserved to mark dependencies " +"that are needed for running automated tests and generating documentation, " +"respectively." +msgstr "" + +#: ../source/specifications/core-metadata.rst:712 +msgid "" +"It is legal to specify ``Provides-Extra:`` without referencing it in any " +"``Requires-Dist:``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:715 +msgid "" +"When writing data for older metadata versions, names MUST be normalized " +"following the same rules used for the ``Name:`` field when performing " +"comparisons. Tools writing metadata MUST raise an error if two ``Provides-" +"Extra:`` entries would clash after being normalized." +msgstr "" + +#: ../source/specifications/core-metadata.rst:720 +msgid "" +"When reading data for older metadata versions, tools SHOULD warn when values " +"for this field would be invalid under newer metadata versions. If a value " +"would be invalid following the rules for ``Name:`` in any core metadata " +"version, the user SHOULD be warned and the value ignored to avoid ambiguity. " +"Tools MAY choose to raise an error when reading an invalid name for older " +"metadata versions." +msgstr "" + +#: ../source/specifications/core-metadata.rst:730 +msgid "Import-Name (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:734 +msgid "" +"A string containing an import name that the project exclusively provides " +"when installed. The specified import name MUST be a valid Python identifier " +"or can be empty. The import names listed in this field MUST be importable " +"when the project is installed on *some* platform for the same version of the " +"project. This implies that the metadata MUST be consistent across all sdists " +"and wheels for a project release." +msgstr "" + +#: ../source/specifications/core-metadata.rst:741 +#: ../source/specifications/core-metadata.rst:796 +msgid "" +"An import name MAY be followed by a semicolon and the term \"private\" (e.g. " +"``; private``) with any amount of whitespace surrounding the semicolon. This " +"signals to tools that the import name is not part of the public API for the " +"project." +msgstr "" + +#: ../source/specifications/core-metadata.rst:746 +#: ../source/specifications/core-metadata.rst:801 +msgid "" +"Projects SHOULD list all the shortest import names that are exclusively " +"provided by the project. If any of the shortest names are dotted names, all " +"intervening names from that name to the top-level name SHOULD also be listed " +"appropriately in ``Import-Name`` and/or ``Import-Namespace``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:751 +#: ../source/specifications/core-metadata.rst:811 +msgid "" +"If a project lists the same name in both ``Import-Name`` and ``Import-" +"Namespace``, tools MUST raise an error due to ambiguity." +msgstr "" + +#: ../source/specifications/core-metadata.rst:754 +msgid "" +"Tools SHOULD raise an error when two projects that are about to be installed " +"list names that overlap in each other's ``Import-Name`` entries, or when a " +"project has an entry in ``Import-Name`` that overlaps with another project's " +"``Import-Namespace`` entries. This is to avoid projects unexpectedly " +"shadowing another project's code. Tools MAY warn or raise an error when " +"installing a project into a preexisting environment where there is import " +"name overlap with a project that is already installed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:762 +msgid "" +"Projects MAY have an empty ``Import-Name`` field in their metadata to " +"represent a project with no import names (i.e. there are no Python modules " +"of any kind in the distribution file)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:766 +msgid "" +"Since projects MAY have no ``Import-Name`` metadata (either because the " +"project uses an older metadata version, or because it didn't specify any), " +"then tools have no information about what names the project provides. " +"However, in practice the majority of projects have their project name match " +"what their import name would be. As such, it is a reasonable assumption to " +"make that a project name that is normalized in some way to an import name " +"(e.g. ``packaging.utils.canonicalize_name(name, validate=True).replace(\"-" +"\", \"_\")``) can be used if some answer is needed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:786 +msgid "Import-Namespace (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:790 +msgid "" +"A string containing an import name that the project provides when installed, " +"but not exclusively. The specified import name MUST be a valid Python " +"identifier. This field is used for namespace packages where multiple " +"projects can contribute to the same import namespace. Projects all listing " +"the same import name in ``Import-Namespace`` can be installed together " +"without shadowing each other." +msgstr "" + +#: ../source/specifications/core-metadata.rst:806 +msgid "" +"The import names listed in this field MUST be importable when the project is " +"installed on *some* platform for the same version of the project. This " +"implies that the metadata MUST be consistent across all sdists and wheels " +"for a project release." +msgstr "" + +#: ../source/specifications/core-metadata.rst:814 +msgid "Note that ``Import-Namespace`` CANNOT be empty like ``Import-Name``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:823 +msgid "Rarely Used Fields" +msgstr "" + +#: ../source/specifications/core-metadata.rst:825 +msgid "" +"The fields in this section are currently rarely used, as their design was " +"inspired by comparable mechanisms in Linux package management systems, and " +"it isn't at all clear how tools should interpret them in the context of an " +"open index server such as `PyPI `__." +msgstr "" + +#: ../source/specifications/core-metadata.rst:830 +msgid "" +"As a result, popular installation tools ignore them completely, which in " +"turn means there is little incentive for package publishers to set them " +"appropriately. However, they're retained in the metadata specification, as " +"they're still potentially useful for informational purposes, and can also be " +"used for their originally intended purpose in combination with a curated " +"package repository." +msgstr "" + +#: ../source/specifications/core-metadata.rst:840 +msgid "Provides-Dist (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:847 +msgid "" +"Each entry contains a string naming a Distutils project which is contained " +"within this distribution. This field *must* include the project identified " +"in the ``Name`` field, followed by the version : Name (Version)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:852 +msgid "" +"A distribution may provide additional names, e.g. to indicate that multiple " +"projects have been bundled together. For instance, source distributions of " +"the ``ZODB`` project have historically included the ``transaction`` project, " +"which is now available as a separate distribution. Installing such a source " +"distribution satisfies requirements for both ``ZODB`` and ``transaction``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:859 +msgid "" +"A distribution may also provide a \"virtual\" project name, which does not " +"correspond to any separately-distributed project: such a name might be used " +"to indicate an abstract capability which could be supplied by one of " +"multiple projects. E.g., multiple projects might supply RDBMS bindings for " +"use by a given ORM: each project might declare that it provides ``ORM-" +"bindings``, allowing other projects to depend only on having at most one of " +"them installed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:867 +msgid "" +"A version declaration may be supplied and must follow the rules described " +"in :doc:`version-specifiers`. The distribution's version number will be " +"implied if none is specified." +msgstr "" + +#: ../source/specifications/core-metadata.rst:882 +msgid "Obsoletes-Dist (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:889 +msgid "" +"Each entry contains a string describing a distutils project's distribution " +"which this distribution renders obsolete, meaning that the two projects " +"should not be installed at the same time." +msgstr "" + +#: ../source/specifications/core-metadata.rst:893 +msgid "" +"Version declarations can be supplied. Version numbers must be in the format " +"specified in :doc:`version-specifiers`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:898 +msgid "" +"The most common use of this field will be in case a project name changes, " +"e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0. When you install " +"Torqued Python, the Gorgon distribution should be removed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:911 +msgid "Deprecated Fields" +msgstr "" + +#: ../source/specifications/core-metadata.rst:913 +msgid "" +"Deprecated fields should be avoided, but they are valid metadata fields. " +"They may be removed in future versions of the core metadata standard (at " +"which point they will only be valid in files that specify a metadata version " +"prior to the removal). Tools SHOULD warn users when deprecated fields are " +"used." +msgstr "" + +#: ../source/specifications/core-metadata.rst:922 +msgid "Home-page" +msgstr "" + +#: ../source/specifications/core-metadata.rst:928 +#: ../source/specifications/core-metadata.rst:945 +msgid "Per :pep:`753`, use :ref:`core-metadata-project-url` instead." +msgstr "" + +#: ../source/specifications/core-metadata.rst:930 +msgid "A string containing the URL for the distribution's home page." +msgstr "" + +#: ../source/specifications/core-metadata.rst:939 +msgid "Download-URL" +msgstr "" + +#: ../source/specifications/core-metadata.rst:947 +msgid "" +"A string containing the URL from which this version of the distribution can " +"be downloaded. (This means that the URL can't be something like \"``.../" +"BeagleVote-latest.tgz``\", but instead must be \"``.../" +"BeagleVote-0.45.tgz``\".)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:953 +msgid "Requires" +msgstr "" + +#: ../source/specifications/core-metadata.rst:956 +msgid "in favour of ``Requires-Dist``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:959 +msgid "" +"Each entry contains a string describing some other module or package " +"required by this package." +msgstr "" + +#: ../source/specifications/core-metadata.rst:962 +msgid "" +"The format of a requirement string is identical to that of a module or " +"package name usable with the ``import`` statement, optionally followed by a " +"version declaration within parentheses." +msgstr "" + +#: ../source/specifications/core-metadata.rst:966 +msgid "" +"A version declaration is a series of conditional operators and version " +"numbers, separated by commas. Conditional operators must be one of \"<\", " +"\">\"', \"<=\", \">=\", \"==\", and \"!=\". Version numbers must be in the " +"format accepted by the ``distutils.version.StrictVersion`` class: two or " +"three dot-separated numeric components, with an optional \"pre-release\" tag " +"on the end consisting of the letter 'a' or 'b' followed by a number. Example " +"version numbers are \"1.0\", \"2.3a2\", \"1.3.99\"," +msgstr "" + +#: ../source/specifications/core-metadata.rst:974 +msgid "" +"Any number of conditional operators can be specified, e.g. the string " +"\">1.0, !=1.3.4, <2.0\" is a legal version declaration." +msgstr "" + +#: ../source/specifications/core-metadata.rst:977 +msgid "" +"All of the following are possible requirement strings: \"rfc822\", \"zlib " +"(>=1.1.4)\", \"zope\"." +msgstr "" + +#: ../source/specifications/core-metadata.rst:980 +msgid "" +"There’s no canonical list of what strings should be used; the Python " +"community is left to choose its own standards." +msgstr "" + +#: ../source/specifications/core-metadata.rst:993 +msgid "Provides" +msgstr "" + +#: ../source/specifications/core-metadata.rst:996 +msgid "in favour of ``Provides-Dist``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:999 +msgid "" +"Each entry contains a string describing a package or module that will be " +"provided by this package once it is installed. These strings should match " +"the ones used in Requirements fields. A version declaration may be supplied " +"(without a comparison operator); the package’s version number will be " +"implied if none is specified." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1015 +msgid "Obsoletes" +msgstr "" + +#: ../source/specifications/core-metadata.rst:1018 +msgid "in favour of ``Obsoletes-Dist``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:1021 +msgid "" +"Each entry contains a string describing a package or module that this " +"package renders obsolete, meaning that the two packages should not be " +"installed at the same time. Version declarations can be supplied." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1025 +msgid "" +"The most common use of this field will be in case a package name changes, " +"e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0. When you install " +"Torqued Python, the Gorgon package should be removed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1037 +msgid "March 2001: Core metadata 1.0 was approved through :pep:`241`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1039 +msgid "April 2003: Core metadata 1.1 was approved through :pep:`314`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1041 +msgid "February 2010: Core metadata 1.2 was approved through :pep:`345`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1043 +msgid "February 2018: Core metadata 2.1 was approved through :pep:`566`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1045 +msgid "Added ``Description-Content-Type`` and ``Provides-Extra``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1046 +msgid "Added canonical method for transforming metadata to JSON." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1047 +msgid "Restricted the grammar of the ``Name`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1049 +msgid "October 2020: Core metadata 2.2 was approved through :pep:`643`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1051 +msgid "Added the ``Dynamic`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1053 +msgid "March 2022: Core metadata 2.3 was approved through :pep:`685`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1055 +msgid "Restricted extra names to be normalized." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1057 +msgid "August 2024: Core metadata 2.4 was approved through :pep:`639`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1059 +msgid "Added the ``License-Expression`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1060 +msgid "Added the ``License-File`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1062 +msgid "" +"August 2025: Clarified that ``Dynamic`` only affects how fields must be " +"treated when building a wheel from a sdist, not when modifying a wheel." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1066 +msgid "September 2025: Core metadata 2.5 was approved through :pep:`794`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1068 +msgid "Added the ``Import-Name`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1069 +msgid "Added the ``Import-Namespace`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1071 +msgid "" +"October 2025: Clarified that ``License-Expression`` applies to the " +"containing distribution file and not the project itself." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1076 +msgid "reStructuredText markup: https://docutils.sourceforge.io/" +msgstr "" + +#: ../source/specifications/core-metadata.rst:1081 +msgid "RFC 822 Long Header Fields: :rfc:`822#section-3.1.1`" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:5 +msgid "Dependency Groups" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:7 +msgid "" +"This specification defines dependency groups, a mechanism for storing " +"package requirements in ``pyproject.toml`` files such that they are not " +"included in project metadata when it is built." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:11 +msgid "" +"Dependency groups are suitable for internal development use-cases like " +"linting and testing, as well as for projects which are not built for " +"distribution, like collections of related scripts." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:15 +msgid "" +"Fundamentally, dependency groups should be thought of as being a " +"standardized subset of the capabilities of ``requirements.txt`` files (which " +"are ``pip``-specific)." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:25 +msgid "This is a simple table which shows ``docs`` and ``test`` groups::" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:31 +msgid "" +"and a similar table which defines ``docs``, ``test``, and ``coverage`` " +"groups::" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:39 +msgid "The ``[dependency-groups]`` Table" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:41 +msgid "" +"Dependency groups are defined as a table in ``pyproject.toml`` named " +"``dependency-groups``. The ``dependency-groups`` table contains an arbitrary " +"number of user-defined keys, each of which has, as its value, a list of " +"requirements." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:46 +msgid "" +"``[dependency-groups]`` keys, sometimes also called \"group names\", must " +"be :ref:`valid non-normalized names `. Tools which handle " +"Dependency Groups MUST :ref:`normalize ` these names " +"before comparisons." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:51 +msgid "" +"Tools SHOULD prefer to present the original, non-normalized name to users, " +"and if duplicate names are detected after normalization, tools SHOULD emit " +"an error." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:55 +msgid "" +"Requirement lists, the values in ``[dependency-groups]``, may contain " +"strings, tables (``dict`` in Python), or a mix of strings and tables. " +"Strings must be valid :ref:`dependency specifiers `, " +"and tables must be valid Dependency Group Includes." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:61 +msgid "Dependency Group Include" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:63 +msgid "" +"A Dependency Group Include includes another Dependency Group in the current " +"group." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:66 +msgid "" +"An include is a table with exactly one key, ``\"include-group\"``, whose " +"value is a string, the name of another Dependency Group." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:69 +msgid "" +"Includes are defined to be exactly equivalent to the contents of the named " +"Dependency Group, inserted into the current group at the location of the " +"include. For example, if ``foo = [\"a\", \"b\"]`` is one group, and ``bar = " +"[\"c\", {include-group = \"foo\"}, \"d\"]`` is another, then ``bar`` should " +"evaluate to ``[\"c\", \"a\", \"b\", \"d\"]`` when Dependency Group Includes " +"are expanded." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:75 +msgid "" +"Dependency Group Includes may specify the same package multiple times. Tools " +"SHOULD NOT deduplicate or otherwise alter the list contents produced by the " +"include. For example, given the following table:" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:92 +msgid "" +"The resolved value of ``all`` SHOULD be ``[\"foo\", \"foo\", \"foo>1.0\", " +"\"foo<1.0\"]``. Tools should handle such a list exactly as they would handle " +"any other case in which they are asked to process the same requirement " +"multiple times with different version constraints." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:97 +msgid "" +"Dependency Group Includes may include groups containing Dependency Group " +"Includes, in which case those includes should be expanded as well. " +"Dependency Group Includes MUST NOT include cycles, and tools SHOULD report " +"an error if they detect a cycle." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:102 +msgid "Package Building" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:104 +msgid "" +"Build backends MUST NOT include Dependency Group data in built distributions " +"as package metadata. This means that sdist ``PKG-INFO`` and wheel " +"``METADATA`` files should not include referenceable fields containing " +"dependency groups." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:108 +msgid "" +"It is, however, valid to use dependency groups in the evaluation of dynamic " +"metadata, and ``pyproject.toml`` files included in sdists will still contain " +"``[dependency-groups]``. However, the table's contents are not part of a " +"built package's interfaces." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:114 +msgid "Installing Dependency Groups & Extras" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:116 +msgid "" +"There is no syntax or specification-defined interface for installing or " +"referring to dependency groups. Tools are expected to provide dedicated " +"interfaces for this purpose." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:120 +msgid "" +"Tools MAY choose to provide the same or similar interfaces for interacting " +"with dependency groups as they do for managing extras. Tools authors are " +"advised that the specification does not forbid having an extra whose name " +"matches a Dependency Group. Separately, users are advised to avoid creating " +"dependency groups whose names match extras, and tools MAY treat such " +"matching as an error." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:128 +msgid "Validation and Compatibility" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:130 +msgid "" +"Tools supporting dependency groups may want to validate data before using " +"it. When implementing such validation, authors should be aware of the " +"possibility of future extensions to the specification, so that they do not " +"unnecessarily emit errors or warnings." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:135 +msgid "" +"Tools SHOULD error when evaluating or processing unrecognized data in " +"dependency groups." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:138 +msgid "" +"Tools SHOULD NOT eagerly validate the contents of *all* dependency groups " +"unless they have a need to do so." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:141 +msgid "" +"This means that in the presence of the following data, most tools should " +"allow the ``foo`` group to be used and only error if the ``bar`` group is " +"used:" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:152 +msgid "" +"There are several known cases of tools which have good cause to be stricter. " +"Linters and validators are an example, as their purpose is to validate the " +"contents of all dependency groups." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:157 +#: ../source/specifications/inline-script-metadata.rst:123 +msgid "Reference Implementation" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:159 +msgid "" +"The following Reference Implementation prints the contents of a Dependency " +"Group to stdout, newline delimited. The output is therefore valid " +"``requirements.txt`` data." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:252 +msgid "October 2024: This specification was approved through :pep:`735`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:7 +msgid "Dependency specifiers" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:9 +msgid "" +"This document describes the dependency specifiers format as originally " +"specified in :pep:`508`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:12 +msgid "" +"The job of a dependency is to enable tools like pip [#pip]_ to find the " +"right package to install. Sometimes this is very loose - just specifying a " +"name, and sometimes very specific - referring to a specific file to install. " +"Sometimes dependencies are only relevant in one platform, or only some " +"versions are acceptable, so the language permits describing all these cases." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:18 +msgid "" +"The language defined is a compact line based format which is already in " +"widespread use in pip requirements files, though we do not specify the " +"command line option handling that those files permit. There is one caveat - " +"the URL reference form, specified in :ref:`Versioning specifier " +"specification ` is not actually implemented in pip, but " +"we use that format rather than pip's current native format." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:31 +msgid "All features of the language shown with a name based lookup::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:35 +msgid "A minimal URL based lookup::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:40 +msgid "Concepts" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:42 +msgid "" +"A dependency specification always specifies a distribution name. It may " +"include extras, which expand the dependencies of the named distribution to " +"enable optional features. The version installed can be controlled using " +"version limits, or giving the URL to a specific artifact to install. Finally " +"the dependency can be made conditional using environment markers." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:49 +msgid "Grammar" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:51 +msgid "" +"We first cover the grammar briefly and then drill into the semantics of each " +"section later." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:54 +msgid "" +"A distribution specification is written in ASCII text. We use a parsley " +"[#parsley]_ grammar to provide a precise grammar. It is expected that the " +"specification will be embedded into a larger system which offers framing " +"such as comments, multiple line support via continuations, or other such " +"features." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:59 +msgid "" +"The full grammar including annotations to build a useful parse tree is " +"included at the end of this document." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:62 +msgid "" +"Versions may be specified according to the rules of the :ref:`Version " +"specifier specification `. (Note: URI is defined " +"in :rfc:`std-66 <3986>`)::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:73 +msgid "" +"Environment markers allow making a specification only take effect in some " +"environments::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:102 +msgid "" +"Optional components of a distribution may be specified using the extras " +"field::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:111 +msgid "Restrictions on names for extras is defined in :pep:`685`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:113 +msgid "Giving us a rule for name based requirements::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:117 +msgid "And a rule for direct reference specifications::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:121 +msgid "Leading to the unified rule that can specify a dependency.::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:126 +msgid "Whitespace" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:128 +msgid "" +"Non line-breaking whitespace is mostly optional with no semantic meaning. " +"The sole exception is detecting the end of a URL requirement." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:134 +msgid "Names" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:136 +msgid "" +"Python distribution names are currently defined in :pep:`345`. Names act as " +"the primary identifier for distributions. They are present in all dependency " +"specifications, and are sufficient to be a specification on their own. " +"However, PyPI places strict restrictions on names - they must match a case " +"insensitive regex or they won't be accepted. Accordingly, in this document " +"we limit the acceptable values for identifiers to that regex. A full " +"redefinition of name may take place in a future metadata PEP. The regex (run " +"with re.IGNORECASE) is::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:150 +msgid "Extras" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:152 +msgid "" +"An extra is an optional part of a distribution. Distributions can specify as " +"many extras as they wish, and each extra results in the declaration of " +"additional dependencies of the distribution **when** the extra is used in a " +"dependency specification. For instance::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:159 +msgid "" +"Extras union in the dependencies they define with the dependencies of the " +"distribution they are attached to. The example above would result in " +"requests being installed, and requests own dependencies, and also any " +"dependencies that are listed in the \"security\" extra of requests." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:164 +msgid "" +"If multiple extras are listed, all the dependencies are unioned together." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:169 +msgid "Versions" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:171 +msgid "" +"See the :ref:`Version specifier specification ` for more " +"detail on both version numbers and version comparisons. Version " +"specifications limit the versions of a distribution that can be used. They " +"only apply to distributions looked up by name, rather than via a URL. " +"Version comparison are also used in the markers feature. The optional " +"brackets around a version are present for compatibility with :pep:`345` but " +"should not be generated, only accepted." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:182 +msgid "Environment Markers" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:184 +msgid "" +"Environment markers allow a dependency specification to provide a rule that " +"describes when the dependency should be used. For instance, consider a " +"package that needs argparse. In Python 2.7 argparse is always present. On " +"older Python versions it has to be installed as a dependency. This can be " +"expressed as so::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:191 +msgid "" +"A marker expression evaluates to either True or False. When it evaluates to " +"False, the dependency specification should be ignored." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:194 +msgid "" +"The marker language is inspired by Python itself, chosen for the ability to " +"safely evaluate it without running arbitrary code that could become a " +"security vulnerability. Markers were first standardised in :pep:`345`. This " +"document fixes some issues that were observed in the design described " +"in :pep:`426`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:199 +msgid "" +"Comparisons in marker expressions are typed by the comparison operator and " +"the type of the marker value. The operators that are not in " +" perform the same as they do for strings or sets in Python " +"based on whether the marker value is a string or set itself. The " +" operators use the version comparison rules of " +"the :ref:`Version specifier specification ` when those " +"are defined (that is when both sides have a valid version specifier). If " +"there is no defined behaviour of this specification and the operator exists " +"in Python, then the operator falls back to the Python behaviour for the " +"types involved. Otherwise an error should be raised. e.g. the following will " +"result in errors::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:213 +msgid "" +"User supplied constants are always encoded as strings with either ``'`` or " +"``\"`` quote marks. Note that backslash escapes are not defined, but " +"existing implementations do support them. They are not included in this " +"specification because they add complexity and there is no observable need " +"for them today. Similarly we do not define non-ASCII character support: all " +"the runtime variables we are referencing are expected to be ASCII-only." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:220 +msgid "" +"The variables in the marker grammar such as \"os_name\" resolve to values " +"looked up in the Python runtime. With the exception of \"extra\" all values " +"are defined on all Python versions today - it is an error in the " +"implementation of markers if a value is not defined." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:225 +msgid "" +"Unknown variables must raise an error rather than resulting in a comparison " +"that evaluates to True or False." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:228 +msgid "" +"Variables whose value cannot be calculated on a given Python implementation " +"should evaluate to ``0`` for versions, and an empty string for all other " +"variables." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:232 +msgid "" +"The \"extra\" variable is special. It is used by wheels to signal which " +"specifications apply to a given extra in the wheel ``METADATA`` file, but " +"since the ``METADATA`` file is based on a draft version of :pep:`426`, there " +"is no current specification for this. Regardless, outside of a context where " +"this special handling is taking place, the \"extra\" variable should result " +"in an error like all other unknown variables." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:239 +msgid "" +"The \"extras\" and \"dependency_groups\" variables are also special. They " +"are used to specify any requested extras or dependency groups when " +"installing from a lock file. Outside of the context of lock files, these two " +"variables should result in an error like all other unknown variables." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:247 +msgid "Marker" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:248 +msgid "Python equivalent" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:249 +msgid "Type" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:250 +msgid "Sample values" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:251 +msgid "``os_name``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:252 +msgid ":py:data:`os.name`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:253 +#: ../source/specifications/dependency-specifiers.rst:257 +#: ../source/specifications/dependency-specifiers.rst:262 +#: ../source/specifications/dependency-specifiers.rst:266 +#: ../source/specifications/dependency-specifiers.rst:270 +#: ../source/specifications/dependency-specifiers.rst:274 +#: ../source/specifications/dependency-specifiers.rst:278 +#: ../source/specifications/dependency-specifiers.rst:292 +#: ../source/specifications/dependency-specifiers.rst:301 +msgid "String" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:254 +msgid "``posix``, ``java``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:255 +msgid "``sys_platform``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:256 +msgid ":py:data:`sys.platform`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:258 +msgid "" +"``linux``, ``linux2``, ``darwin``, ``java1.8.0_51`` (note that \"linux\" is " +"from Python3 and \"linux2\" from Python2)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:260 +msgid "``platform_machine``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:261 +msgid ":py:func:`platform.machine()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:263 +#: ../source/specifications/platform-compatibility-tags.rst:262 +msgid "``x86_64``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:264 +msgid "``platform_python_implementation``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:265 +msgid ":py:func:`platform.python_implementation()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:267 +msgid "``CPython``, ``Jython``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:268 +msgid "``platform_release``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:269 +msgid ":py:func:`platform.release()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:271 +msgid "``3.14.1-x86_64-linode39``, ``14.5.0``, ``1.8.0_51``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:272 +msgid "``platform_system``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:273 +msgid ":py:func:`platform.system()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:275 +msgid "``Linux``, ``Windows``, ``Java``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:276 +msgid "``platform_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:277 +msgid ":py:func:`platform.version()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:279 +msgid "" +"``#1 SMP Fri Apr 25 13:07:35 EDT 2014`` ``Java HotSpot(TM) 64-Bit Server VM, " +"25.51-b03, Oracle Corporation`` ``Darwin Kernel Version 14.5.0: Wed Jul 29 " +"02:18:53 PDT 2015; root:xnu-2782.40.9~2/RELEASE_X86_64``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:282 +msgid "``python_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:283 +msgid "``'.'.join(platform.python_version_tuple()[:2])``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:284 +#: ../source/specifications/dependency-specifiers.rst:288 +#: ../source/specifications/dependency-specifiers.rst:296 +msgid ":ref:`Version `" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:285 +msgid "``3.4``, ``2.7``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:286 +msgid "``python_full_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:287 +msgid ":py:func:`platform.python_version()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:289 +#: ../source/specifications/dependency-specifiers.rst:297 +msgid "``3.4.0``, ``3.5.0b1``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:290 +msgid "``implementation_name``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:291 +msgid ":py:data:`sys.implementation.name `" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:293 +msgid "``cpython``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:294 +msgid "``implementation_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:295 +msgid "see definition below" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:298 +msgid "``extra``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:299 +#: ../source/specifications/dependency-specifiers.rst:304 +#: ../source/specifications/dependency-specifiers.rst:309 +msgid "" +"An error except when defined by the context interpreting the specification." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:302 +msgid "``toml``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:303 +#: ../source/specifications/pylock-toml.rst:108 +msgid "``extras``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:306 +#: ../source/specifications/dependency-specifiers.rst:311 +msgid "Set of strings" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:307 +msgid "``{\"toml\"}``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:308 +msgid "``dependency_groups``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:312 +msgid "``{\"test\"}``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:314 +msgid "" +"The ``implementation_version`` marker variable is derived " +"from :py:data:`sys.implementation.version `:" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:331 +msgid "" +"This environment markers section, initially defined through :pep:`508`, " +"supersedes the environment markers section in :pep:`345`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:337 +msgid "Complete Grammar" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:339 +msgid "The complete parsley grammar::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:446 +msgid "A test program - if the grammar is in a string ``grammar``:" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:518 +msgid "November 2015: This specification was approved through :pep:`508`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:519 +msgid "" +"July 2019: The definition of ``python_version`` was `changed `_ from ``platform.python_version()[:3]`` to " +"``'.'.join(platform.python_version_tuple()[:2])``, to accommodate potential " +"future versions of Python with 2-digit major and minor versions (e.g. 3.10). " +"[#future_versions]_" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:524 +msgid "" +"June 2024: The definition of ``version_many`` was changed to allow trailing " +"commas, matching with the behavior of the Python implementation that has " +"been in use since late 2022." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:527 +msgid "" +"April 2025: Added ``extras`` and ``dependency_groups`` for :ref:`lock-file-" +"spec` as approved through :pep:`751`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:529 +#: ../source/specifications/name-normalization.rst:56 +msgid "" +"August 2025: The suggested name validation regex was fixed to match the " +"field specification (it previously finished with ``$`` instead of ``\\Z``, " +"incorrectly permitting trailing newlines)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 +msgid "" +"pip, the recommended installer for Python packages (http://" +"pip.readthedocs.org/en/stable/)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:542 +msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:545 +msgid "" +"Future Python versions might be problematic with the definition of " +"Environment Marker Variable ``python_version`` (https://github.com/python/" +"peps/issues/560)" +msgstr "" + +#: ../source/specifications/direct-url.rst:6 +msgid "Recording the Direct URL Origin of installed distributions" +msgstr "" + +#: ../source/specifications/direct-url.rst:8 +msgid "" +"This document specifies a :file:`direct_url.json` file in the ``*.dist-" +"info`` directory of an installed distribution, to record the Direct URL " +"Origin of the distribution. The general structure and usage of ``*.dist-" +"info`` directories is described in :ref:`recording-installed-packages`." +msgstr "" + +#: ../source/specifications/direct-url.rst:17 +msgid "" +"The :file:`direct_url.json` file MUST be created in the :file:`*.dist-info` " +"directory by installers when installing a distribution from a requirement " +"specifying a direct URL reference (including a VCS URL)." +msgstr "" + +#: ../source/specifications/direct-url.rst:21 +#: ../source/specifications/recording-installed-packages.rst:222 +msgid "" +"This file MUST NOT be created when installing a distribution from an other " +"type of requirement (i.e. name plus version specifier)." +msgstr "" + +#: ../source/specifications/direct-url.rst:24 +msgid "" +"This JSON file MUST be a UTF-8 encoded, :rfc:`8259` compliant, serialization " +"of the :doc:`direct-url-data-structure`." +msgstr "" + +#: ../source/specifications/direct-url.rst:29 +msgid "" +"When the requested URL has the file:// scheme and points to a local " +"directory that happens to contain a VCS checkout, installers MUST NOT " +"attempt to infer any VCS information and therefore MUST NOT output any VCS " +"related information (such as ``vcs_info``) in :file:`direct_url.json`." +msgstr "" + +#: ../source/specifications/direct-url.rst:36 +msgid "" +"As a general rule, installers should as much as possible preserve the " +"information that was provided in the requested URL when " +"generating :file:`direct_url.json`. For example user:password environment " +"variables should be preserved and ``requested_revision`` should reflect the " +"revision that was provided in the requested URL as faithfully as possible. " +"This information is however *enriched* with more precise data, such as " +"``commit_id``." +msgstr "" + +#: ../source/specifications/direct-url.rst:45 +msgid "Example pip commands and their effect on direct_url.json" +msgstr "" + +#: ../source/specifications/direct-url.rst:47 +msgid "Commands that generate a ``direct_url.json``:" +msgstr "" + +#: ../source/specifications/direct-url.rst:49 +msgid "``pip install https://example.com/app-1.0.tgz``" +msgstr "" + +#: ../source/specifications/direct-url.rst:50 +msgid "``pip install https://example.com/app-1.0.whl``" +msgstr "" + +#: ../source/specifications/direct-url.rst:51 +msgid "" +"``pip install \"app @ git+https://example.com/repo/" +"app.git#subdirectory=setup\"``" +msgstr "" + +#: ../source/specifications/direct-url.rst:52 +msgid "``pip install ./app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:53 +msgid "``pip install file:///home/user/app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:54 +msgid "" +"``pip install --editable \"app @ git+https://example.com/repo/" +"app.git#subdirectory=setup\"`` (in which case, ``url`` will be the local " +"directory where the git repository has been cloned to, and ``dir_info`` will " +"be present with ``\"editable\": true`` and no ``vcs_info`` will be set)" +msgstr "" + +#: ../source/specifications/direct-url.rst:58 +msgid "``pip install -e ./app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:60 +msgid "Commands that *do not* generate a ``direct_url.json``" +msgstr "" + +#: ../source/specifications/direct-url.rst:62 +msgid "``pip install app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:63 +msgid "``pip install app --no-index --find-links https://example.com/``" +msgstr "" + +#: ../source/specifications/direct-url.rst:69 +msgid "March 2020: This specification was approved through :pep:`610`." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:7 +msgid "Direct URL Data Structure" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:9 +msgid "" +"This document specifies a JSON-serializable abstract data structure that can " +"represent URLs to python projects and distribution artifacts such as VCS " +"source trees, local source trees, source distributions and wheels." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:13 +msgid "" +"At time of writing, it is not formally specified how to merge the parts of " +"this data structure into a single URL that can be passed to tools. A common " +"representation is the pip URL format (`VCS Support `_), " +"other examples are provided in the :ref:`Version specifier specification " +"`." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:21 +msgid "" +"The Direct URL Data Structure MUST be a dictionary, serializable to JSON " +"according to :rfc:`8259`." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:24 +msgid "" +"It MUST contain at least two fields. The first one is ``url``, with type " +"``string``. Its content must be a valid URL according to the `WHATWG URL " +"Standard `_." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:28 +msgid "" +"Depending on what ``url`` refers to, the second field MUST be one of " +"``vcs_info`` (if ``url`` is a VCS reference), ``archive_info`` (if ``url`` " +"is a source archive or a wheel), or ``dir_info`` (if ``url`` is a local " +"directory). These info fields have a (possibly empty) subdictionary as " +"value, with the possible keys defined below." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:35 +msgid "Security Considerations" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:37 +msgid "" +"When persisted, ``url`` MUST be stripped of any sensitive authentication " +"information, for security reasons." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:40 +msgid "" +"The user:password section of the URL MAY however be composed of environment " +"variables, matching the following regular expression:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:48 +msgid "" +"Additionally, the user:password section of the URL MAY be a well-known, non " +"security sensitive string. A typical example is ``git`` in the case of a URL " +"such as ``ssh://git@gitlab.com/user/repo``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:55 +msgid "VCS URLs" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:57 +msgid "" +"When ``url`` refers to a VCS repository, the ``vcs_info`` key MUST be " +"present as a dictionary with the following keys:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:60 +msgid "" +"A ``vcs`` key (type ``string``) MUST be present, containing the name of the " +"VCS (i.e. one of ``git``, ``hg``, ``bzr``, ``svn``). Other VCS's SHOULD be " +"registered by writing a PEP to amend this specification. The ``url`` value " +"MUST be compatible with the corresponding VCS, so an installer can hand it " +"off without transformation to a checkout/download command of the VCS." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:66 +msgid "" +"A ``requested_revision`` key (type ``string``) MAY be present naming a " +"branch/tag/ref/commit/revision/etc (in a format compatible with the VCS). " +"This field MUST match the revision requested by the user and MUST NOT exist " +"when the user did not select a specific revision." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:70 +msgid "" +"A ``commit_id`` key (type ``string``) MUST be present, containing the exact " +"commit/revision number that was/is to be installed. If the VCS supports " +"commit-hash based revision identifiers, such commit-hash MUST be used as " +"``commit_id`` in order to reference an immutable version of the source code." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:80 +msgid "Archive URLs" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:82 +msgid "" +"When ``url`` refers to a source archive or a wheel, the ``archive_info`` key " +"MUST be present as a dictionary with the following keys:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:85 +msgid "" +"A ``hashes`` key SHOULD be present as a dictionary mapping a hash name to a " +"hex encoded digest of the file." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:88 +msgid "" +"Multiple hashes can be included, and it is up to the consumer to decide what " +"to do with multiple hashes (it may validate all of them or a subset of them, " +"or nothing at all)." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:92 +msgid "These hash names SHOULD always be normalized to be lowercase." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:94 +msgid "" +"Any hash algorithm available via :py:mod:`hashlib` (specifically any that " +"can be passed to :py:func:`hashlib.new()` and do not require additional " +"parameters) can be used as a key for the hashes dictionary. At least one " +"secure algorithm from :py:data:`hashlib.algorithms_guaranteed` SHOULD always " +"be included. At time of writing, ``sha256`` specifically is recommended." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:100 +msgid "" +"A deprecated ``hash`` key (type ``string``) MAY be present for backwards " +"compatibility purposes, with value ``=``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:103 +msgid "" +"Producers of the data structure SHOULD emit the ``hashes`` key whether one " +"or multiple hashes are available. Producers SHOULD continue to emit the " +"``hash`` key in contexts where they did so before, so as to keep backwards " +"compatibility for existing clients." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:107 +msgid "" +"When both the ``hash`` and ``hashes`` keys are present, the hash represented " +"in the ``hash`` key MUST also be present in the ``hashes`` dictionary, so " +"consumers can consider the ``hashes`` key only if it is present, and fall " +"back to ``hash`` otherwise." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:114 +msgid "Local directories" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:116 +msgid "" +"When ``url`` refers to a local directory, the ``dir_info`` key MUST be " +"present as a dictionary with the following key:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:119 +msgid "" +"``editable`` (type: ``boolean``): ``true`` if the distribution was/is to be " +"installed in editable mode, ``false`` otherwise. If absent, default to " +"``false``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:122 +msgid "" +"When ``url`` refers to a local directory, it MUST have the ``file`` scheme " +"and be compliant with :rfc:`8089`. In particular, the path component must be " +"absolute. Symbolic links SHOULD be preserved when making relative paths " +"absolute." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:130 +msgid "Projects in subdirectories" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:132 +msgid "" +"A top-level ``subdirectory`` field MAY be present containing a directory " +"path, relative to the root of the VCS repository, source archive or local " +"directory, to specify where ``pyproject.toml`` or ``setup.py`` is located." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:139 +msgid "Registered VCS" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:141 +msgid "" +"This section lists the registered VCS's; expanded, VCS-specific information " +"on how to use the ``vcs``, ``requested_revision``, and other fields of " +"``vcs_info``; and in some cases additional VCS-specific fields. Tools MAY " +"support other VCS's although it is RECOMMENDED to register them by writing a " +"PEP to amend this specification. The ``vcs`` field SHOULD be the command " +"name (lowercased). Additional fields that would be necessary to support such " +"VCS SHOULD be prefixed with the VCS command name." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:151 +msgid "Git" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:154 +#: ../source/specifications/direct-url-data-structure.rst:181 +#: ../source/specifications/direct-url-data-structure.rst:199 +#: ../source/specifications/direct-url-data-structure.rst:217 +msgid "Home page" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:154 +msgid "https://git-scm.com/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:157 +#: ../source/specifications/direct-url-data-structure.rst:184 +#: ../source/specifications/direct-url-data-structure.rst:202 +#: ../source/specifications/direct-url-data-structure.rst:220 +msgid "vcs command" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:157 +#: ../source/specifications/direct-url-data-structure.rst:160 +msgid "git" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:160 +#: ../source/specifications/direct-url-data-structure.rst:187 +#: ../source/specifications/direct-url-data-structure.rst:205 +#: ../source/specifications/direct-url-data-structure.rst:223 +msgid "``vcs`` field" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:164 +#: ../source/specifications/direct-url-data-structure.rst:190 +#: ../source/specifications/direct-url-data-structure.rst:208 +#: ../source/specifications/direct-url-data-structure.rst:227 +msgid "``requested_revision`` field" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:163 +msgid "" +"A tag name, branch name, Git ref, commit hash, shortened commit hash, or " +"other commit-ish." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:167 +#: ../source/specifications/direct-url-data-structure.rst:193 +#: ../source/specifications/direct-url-data-structure.rst:211 +#: ../source/specifications/direct-url-data-structure.rst:232 +msgid "``commit_id`` field" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:167 +msgid "A commit hash (40 hexadecimal characters sha1)." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:171 +msgid "" +"Tools can use the ``git show-ref`` and ``git symbolic-ref`` commands to " +"determine if the ``requested_revision`` corresponds to a Git ref. In turn, a " +"ref beginning with ``refs/tags/`` corresponds to a tag, and a ref beginning " +"with ``refs/remotes/origin/`` after cloning corresponds to a branch." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:178 +msgid "Mercurial" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:181 +msgid "https://www.mercurial-scm.org/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:184 +#: ../source/specifications/direct-url-data-structure.rst:187 +msgid "hg" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:190 +msgid "A tag name, branch name, changeset ID, shortened changeset ID." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:193 +msgid "A changeset ID (40 hexadecimal characters)." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:196 +msgid "Bazaar" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:199 +msgid "https://www.breezy-vcs.org/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:202 +#: ../source/specifications/direct-url-data-structure.rst:205 +msgid "bzr" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:208 +msgid "A tag name, branch name, revision id." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:211 +msgid "A revision id." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:214 +msgid "Subversion" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:217 +msgid "https://subversion.apache.org/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:220 +#: ../source/specifications/direct-url-data-structure.rst:223 +msgid "svn" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:226 +msgid "" +"``requested_revision`` must be compatible with ``svn checkout`` ``--" +"revision`` option. In Subversion, branch or tag is part of ``url``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:230 +msgid "" +"Since Subversion does not support globally unique identifiers, this field is " +"the Subversion revision number in the corresponding repository." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:235 +msgid "JSON Schema" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:237 +msgid "" +"The following JSON Schema can be used to validate the contents of " +"``direct_url.json``:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:244 +msgid "Source archive:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:257 +msgid "Git URL with tag and commit-hash:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:270 +msgid "Local directory:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:279 +msgid "Local directory in editable mode:" +msgstr "" + +#: ../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:296 +msgid "" +"January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." +msgstr "" + +#: ../source/specifications/entry-points.rst:5 +msgid "Entry points specification" +msgstr "" + +#: ../source/specifications/entry-points.rst:7 +msgid "" +"*Entry points* are a mechanism for an installed distribution to advertise " +"components it provides to be discovered and used by other code. For example:" +msgstr "" + +#: ../source/specifications/entry-points.rst:11 +msgid "" +"Distributions can specify ``console_scripts`` entry points, each referring " +"to a function. When *pip* (or another console_scripts aware installer) " +"installs the distribution, it will create a command-line wrapper for each " +"entry point." +msgstr "" + +#: ../source/specifications/entry-points.rst:14 +msgid "" +"Applications can use entry points to load plugins; e.g. Pygments (a syntax " +"highlighting tool) can use additional lexers and styles from separately " +"installed packages. For more about this, see :doc:`/guides/creating-and-" +"discovering-plugins`." +msgstr "" + +#: ../source/specifications/entry-points.rst:19 +msgid "" +"The entry point file format was originally developed to allow packages built " +"with setuptools to provide integration point metadata that would be read at " +"runtime with :py:mod:`importlib.metadata`. It is now defined as a PyPA " +"interoperability specification in order to allow build tools other than " +"``setuptools`` to publish :py:mod:`importlib.metadata` compatible entry " +"point metadata, and runtime libraries other " +"than :py:mod:`importlib.metadata` to portably read published entry point " +"metadata (potentially with different caching and conflict resolution " +"strategies)." +msgstr "" + +#: ../source/specifications/entry-points.rst:28 +msgid "Data model" +msgstr "" + +#: ../source/specifications/entry-points.rst:30 +msgid "Conceptually, an entry point is defined by three required properties:" +msgstr "" + +#: ../source/specifications/entry-points.rst:32 +msgid "" +"The **group** that an entry point belongs to indicates what sort of object " +"it provides. For instance, the group ``console_scripts`` is for entry points " +"referring to functions which can be used as a command, while " +"``pygments.styles`` is the group for classes defining pygments styles. The " +"consumer typically defines the expected interface. To avoid clashes, " +"consumers defining a new group should use names starting with a PyPI name " +"owned by the consumer project, followed by ``.``. Group names must be one or " +"more groups of letters, numbers and underscores, separated by dots (regex " +"``^\\w+(\\.\\w+)*$``)." +msgstr "" + +#: ../source/specifications/entry-points.rst:42 +msgid "" +"The **name** identifies this entry point within its group. The precise " +"meaning of this is up to the consumer. For console scripts, the name of the " +"entry point is the command that will be used to launch it. Within a " +"distribution, entry point names should be unique. If different distributions " +"provide the same name, the consumer decides how to handle such conflicts. " +"The name may contain any characters except ``=``, but it cannot start or end " +"with any whitespace character, or start with ``[``. For new entry points, it " +"is recommended to use only letters, numbers, underscores, dots and dashes " +"(regex ``[\\w.-]+``)." +msgstr "" + +#: ../source/specifications/entry-points.rst:51 +msgid "" +"The **object reference** points to a Python object. It is either in the form " +"``importable.module``, or ``importable.module:object.attr``. Each of the " +"parts delimited by dots and the colon is a valid Python identifier. It is " +"intended to be looked up like this::" +msgstr "" + +#: ../source/specifications/entry-points.rst:64 +msgid "" +"Some tools call this kind of object reference by itself an 'entry point', " +"for want of a better term, especially where it points to a function to " +"launch a program." +msgstr "" + +#: ../source/specifications/entry-points.rst:68 +msgid "" +"There is also an optional property: the **extras** are a set of strings " +"identifying optional features of the distribution providing the entry point. " +"If these are specified, the entry point requires the dependencies of those " +"'extras'. See the metadata field :ref:`metadata_provides_extra`." +msgstr "" + +#: ../source/specifications/entry-points.rst:73 +msgid "" +"Using extras for an entry point is no longer recommended. Consumers should " +"support parsing them from existing distributions, but may then ignore them. " +"New publishing tools need not support specifying extras. The functionality " +"of handling extras was tied to setuptools' model of managing 'egg' packages, " +"but newer tools such as pip and virtualenv use a different model." +msgstr "" + +#: ../source/specifications/entry-points.rst:80 +msgid "File format" +msgstr "" + +#: ../source/specifications/entry-points.rst:82 +msgid "" +"Entry points are defined in a file called :file:`entry_points.txt` in " +"the :file:`*.dist-info` directory of the distribution. This is the directory " +"described in :ref:`recording-installed-packages` for installed " +"distributions, and in :ref:`binary-distribution-format` for wheels. The file " +"uses the UTF-8 character encoding." +msgstr "" + +#: ../source/specifications/entry-points.rst:88 +msgid "" +"The file contents are in INI format, as read by Python's :mod:`configparser` " +"module. However, configparser treats names as case-insensitive by default, " +"whereas entry point names are case sensitive. A case-sensitive config parser " +"can be made like this::" +msgstr "" + +#: ../source/specifications/entry-points.rst:98 +msgid "" +"The entry points file must always use ``=`` to delimit names from values " +"(whereas configparser also allows using ``:``)." +msgstr "" + +#: ../source/specifications/entry-points.rst:101 +msgid "" +"The sections of the config file represent entry point groups, the names are " +"names, and the values encode both the object reference and the optional " +"extras. If extras are used, they are a comma-separated list inside square " +"brackets." +msgstr "" + +#: ../source/specifications/entry-points.rst:105 +msgid "" +"Within a value, readers must accept and ignore spaces (including multiple " +"consecutive spaces) before or after the colon, between the object reference " +"and the left square bracket, between the extra names and the square brackets " +"and colons delimiting them, and after the right square bracket. The syntax " +"for extras is formally specified as part of :pep:`508` (as ``extras``) and " +"restrictions on values specified in :pep:`685`. For tools writing the file, " +"it is recommended only to insert a space between the object reference and " +"the left square bracket." +msgstr "" + +#: ../source/specifications/entry-points.rst:128 +msgid "Use for scripts" +msgstr "" + +#: ../source/specifications/entry-points.rst:130 +msgid "" +"Two groups of entry points have special significance in packaging: " +"``console_scripts`` and ``gui_scripts``. In both groups, the name of the " +"entry point should be usable as a command in a system shell after the " +"package is installed. The object reference points to a function which will " +"be called with no arguments when this command is run. The function may " +"return an integer to be used as a process exit code, and returning ``None`` " +"is equivalent to returning ``0``." +msgstr "" + +#: ../source/specifications/entry-points.rst:138 +msgid "" +"For instance, the entry point ``mycmd = mymod:main`` would create a command " +"``mycmd`` launching a script like this::" +msgstr "" + +#: ../source/specifications/entry-points.rst:145 +msgid "" +"The difference between ``console_scripts`` and ``gui_scripts`` only affects " +"Windows systems. ``console_scripts`` are wrapped in a console executable, so " +"they are attached to a console and can " +"use :py:data:`sys.stdin`, :py:data:`sys.stdout` and :py:data:`sys.stderr` " +"for input and output. ``gui_scripts`` are wrapped in a GUI executable, so " +"they can be started without a console, but cannot use standard streams " +"unless application code redirects them. Other platforms do not have the same " +"distinction." +msgstr "" + +#: ../source/specifications/entry-points.rst:153 +msgid "" +"Install tools are expected to set up wrappers for both ``console_scripts`` " +"and ``gui_scripts`` in the scripts directory of the install scheme. They are " +"not responsible for putting this directory in the ``PATH`` environment " +"variable which defines where command-line tools are found." +msgstr "" + +#: ../source/specifications/entry-points.rst:158 +msgid "" +"As files are created from the names, and some filesystems are case-" +"insensitive, packages should avoid using names in these groups which differ " +"only in case. The behaviour of install tools when names differ only in case " +"is undefined." +msgstr "" + +#: ../source/specifications/entry-points.rst:166 +msgid "" +"October 2017: This specification was written to formalize the existing entry " +"points feature of setuptools (discussion_)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:6 +msgid "Externally Managed Environments" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:8 +msgid "" +"While some Python installations are entirely managed by the user that " +"installed Python, others may be provided and managed by another means (such " +"as the operating system package manager in a Linux distribution, or as a " +"bundled Python environment in an application with a dedicated installer)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:13 +msgid "" +"Attempting to use conventional Python packaging tools to manipulate such " +"environments can be confusing at best and outright break the entire " +"underlying operating system at worst. Documentation and interoperability " +"guides only go so far in resolving such problems." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:18 +msgid "" +"This specification defines an ``EXTERNALLY-MANAGED`` marker file that allows " +"a Python installation to indicate to Python-specific tools such as ``pip`` " +"that they neither install nor remove packages into the interpreter’s default " +"installation environment, and should instead guide the end user towards " +"using :ref:`virtual-environments`." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:24 +msgid "" +"It also standardizes an interpretation of the ``sysconfig`` schemes so that, " +"if a Python-specific package manager is about to install a package in an " +"interpreter-wide context, it can do so in a manner that will avoid " +"conflicting with the external package manager and reduces the risk of " +"breaking software shipped by the external package manager." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:32 +msgid "Terminology" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:34 +msgid "" +"A few terms used in this specification have multiple meanings in the " +"contexts that it spans. For clarity, this specification uses the following " +"terms in specific ways:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:61 +msgid "distro" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:39 +msgid "" +"Short for \"distribution,\" a collection of various sorts of software, " +"ideally designed to work properly together, including (in contexts relevant " +"to this document) the Python interpreter itself, software written in Python, " +"and software written in other languages. That is, this is the sense used in " +"phrases such as \"Linux distro\" or \"Berkeley Software Distribution.\"" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:46 +msgid "" +"A distro can be an operating system (OS) of its own, such as Debian, Fedora, " +"or FreeBSD. It can also be an overlay distribution that installs on top of " +"an existing OS, such as Homebrew or MacPorts." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:51 +msgid "" +"This document uses the short term \"distro,\" because the term " +"\"distribution\" has another meaning in Python packaging contexts: a source " +"or binary distribution package of a single piece of Python language " +"software, that is, in the sense of ``setuptools.dist.Distribution`` or " +"\"sdist\". To avoid confusion, this document does not use the plain term " +"\"distribution\" at all. In the Python packaging sense, it uses the full " +"phrase \"distribution package\" or just \"package\" (see below)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:60 +msgid "" +"The provider of a distro - the team or company that collects and publishes " +"the software and makes any needed modifications - is its **distributor**." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:79 +msgid "package" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:64 +msgid "" +"A unit of software that can be installed and used within Python. That is, " +"this refers to what Python-specific packaging tools tend to call " +"a :term:`distribution package` or simply a \"distribution\"; the colloquial " +"abbreviation \"package\" is used in the sense of the Python Package Index." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:70 +msgid "" +"This document does not use \"package\" in the sense of an importable name " +"that contains Python modules, though in many cases, a distribution package " +"consists of a single importable package of the same name." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:75 +msgid "" +"This document generally does not use the term \"package\" to refer to units " +"of installation by a distro's package manager (such as ``.deb`` or ``.rpm`` " +"files). When needed, it uses phrasing such as \"a distro's package.\" " +"(Again, in many cases, a Python package is shipped inside a distro's package " +"named something like ``python-`` plus the Python package name.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:102 +msgid "Python-specific package manager" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:82 +msgid "" +"A tool for installing, upgrading, and/or removing Python packages in a " +"manner that conforms to Python packaging standards. The most popular Python-" +"specific package manager is pip_; other examples include the old `Easy " +"Install command `_ as well as direct usage of a ``setup.py`` " +"command." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:92 +msgid "" +"(Note that the ``easy_install`` command was removed in setuptools version " +"52, released 23 January 2021.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:96 +msgid "" +"(Conda_ is a bit of a special case, as the ``conda`` command can install " +"much more than just Python packages, making it more like a distro package " +"manager in some senses. Since the ``conda`` command generally only operates " +"on Conda-created environments, most of the concerns in this document do not " +"apply to ``conda`` when acting as a Python-specific package manager.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:118 +msgid "distro package manager" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:105 +msgid "" +"A tool for installing, upgrading, and/or removing a distro's packages in an " +"installed instance of that distro, which is capable of installing Python " +"packages as well as non-Python packages, and therefore generally has its own " +"database of installed software unrelated to the :ref:`database of installed " +"distributions `. Examples include ``apt``, " +"``dpkg``, ``dnf``, ``rpm``, ``pacman``, and ``brew``. The salient feature is " +"that if a package was installed by a distro package manager, removing or " +"upgrading it in a way that would satisfy a Python-specific package manager " +"will generally leave a distro package manager in an inconsistent state." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:117 +msgid "" +"This document also uses phrases like \"external package manager\" or " +"\"system's package manager\" to refer to a distro package manager in certain " +"contexts." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:127 +msgid "shadow" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:121 +msgid "" +"To shadow an installed Python package is to cause some other package to be " +"preferred for imports without removing any files from the shadowed package. " +"This requires multiple entries on ``sys.path``: if package A 2.0 installs " +"module ``a.py`` in one ``sys.path`` entry, and package A 1.0 installs module " +"``a.py`` in a later ``sys.path`` entry, then ``import a`` returns the module " +"from the former, and we say that A 2.0 shadows A 1.0." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:132 +msgid "This specification is twofold." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:134 +msgid "" +"First, it describes **a way for distributors of a Python interpreter to mark " +"that interpreter as having its packages managed by means external to " +"Python**, such that Python-specific tools like pip should not change the " +"installed packages in the interpreter's global ``sys.path`` in any way (add, " +"upgrade/downgrade, or remove) unless specifically overridden. It also " +"provides a means for the distributor to indicate how to use a virtual " +"environment as an alternative." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:142 +msgid "" +"This is an opt-in mechanism: by default, the Python interpreter compiled " +"from upstream sources will not be so marked, and so running ``pip install`` " +"with a self-compiled interpreter, or with a distro that has not explicitly " +"marked its interpreter, will work as it always has worked." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:148 +msgid "" +"Second, it sets the rule that when installing packages to an interpreter's " +"global context (either to an unmarked interpreter, or if overriding the " +"marking), **Python-specific package managers should modify or delete files " +"only within the directories of the sysconfig scheme in which they would " +"create files**. This permits a distributor of a Python interpreter to set up " +"two directories, one for its own managed packages, and one for unmanaged " +"packages installed by the end user, and ensure that installing unmanaged " +"packages will not delete (or overwrite) files owned by the external package " +"manager." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:160 +msgid "Marking an interpreter as using an external package manager" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:162 +msgid "" +"Before a Python-specific package installer (that is, a tool such as pip - " +"not an external tool such as apt) installs a package into a certain Python " +"context, it should make the following checks by default:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:167 +msgid "" +"Is it running outside of a virtual environment? It can determine this by " +"whether ``sys.prefix == sys.base_prefix``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:170 +msgid "" +"Is there an ``EXTERNALLY-MANAGED`` file in the directory identified by " +"``sysconfig.get_path(\"stdlib\", sysconfig.get_default_scheme())``?" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:173 +msgid "" +"If both of these conditions are true, the installer should exit with an " +"error message indicating that package installation into this Python " +"interpreter's directory are disabled outside of a virtual environment." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:177 +msgid "" +"The installer should have a way for the user to override these rules, such " +"as a command-line flag ``--break-system-packages``. This option should not " +"be enabled by default and should carry some connotation that its use is " +"risky." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:182 +msgid "" +"The ``EXTERNALLY-MANAGED`` file is an INI-style metadata file intended to be " +"parsable by the standard library configparser_ module. If the file can be " +"parsed by ``configparser.ConfigParser(interpolation=None)`` using the UTF-8 " +"encoding, and it contains a section ``[externally-managed]``, then the " +"installer should look for an error message specified in the file and output " +"it as part of its error. If the first element of the tuple returned by " +"``locale.getlocale(locale.LC_MESSAGES)``, i.e., the language code, is not " +"``None``, it should look for the error message as the value of a key named " +"``Error-`` followed by the language code. If that key does not exist, and if " +"the language code contains underscore or hyphen, it should look for a key " +"named ``Error-`` followed by the portion of the language code before the " +"underscore or hyphen. If it cannot find either of those, or if the language " +"code is ``None``, it should look for a key simply named ``Error``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:200 +msgid "" +"If the installer cannot find an error message in the file (either because " +"the file cannot be parsed or because no suitable error key exists), then the " +"installer should just use a pre-defined error message of its own, which " +"should suggest that the user create a virtual environment to install " +"packages." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:206 +msgid "" +"Software distributors who have a non-Python-specific package manager that " +"manages libraries in the ``sys.path`` of their Python package should, in " +"general, ship an ``EXTERNALLY-MANAGED`` file in their standard library " +"directory. For instance, Debian may ship a file in ``/usr/lib/python3.9/" +"EXTERNALLY-MANAGED`` consisting of something like" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:230 +msgid "" +"which provides useful and distro-relevant information to a user trying to " +"install a package. Optionally, translations can be provided in the same file:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:240 +msgid "" +"In certain contexts, such as single-application container images that aren't " +"updated after creation, a distributor may choose not to ship an ``EXTERNALLY-" +"MANAGED`` file, so that users can install whatever they like (as they can " +"today) without having to manually override this rule." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:247 +msgid "Writing to only the target ``sysconfig`` scheme" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:249 +msgid "" +"Usually, a Python package installer installs to directories in a scheme " +"returned by the ``sysconfig`` standard library package. Ordinarily, this is " +"the scheme returned by ``sysconfig.get_default_scheme()``, but based on " +"configuration (e.g. ``pip install --user``), it may use a different scheme." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:255 +msgid "" +"Whenever the installer is installing to a ``sysconfig`` scheme, this " +"specification declares that the installer should never modify or delete " +"files outside of that scheme. For instance, if it's upgrading a package, and " +"the package is already installed in a directory outside that scheme (perhaps " +"in a directory from another scheme), it should leave the existing files " +"alone." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:262 +msgid "" +"If the installer does end up shadowing an existing installation during an " +"upgrade, we recommend that it produces a warning at the end of its run." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:266 +msgid "" +"If the installer is installing to a location outside of a ``sysconfig`` " +"scheme (e.g., ``pip install --target``), then this subsection does not apply." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:271 +msgid "Recommendations for distros" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:273 +msgid "" +"This section is non-normative. It provides best practices we believe distros " +"should follow unless they have a specific reason otherwise." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:277 +msgid "Mark the installation as externally managed" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:279 +msgid "" +"Distros should create an ``EXTERNALLY-MANAGED`` file in their ``stdlib`` " +"directory." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:283 +msgid "Guide users towards virtual environments" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:285 +msgid "" +"The file should contain a useful and distro-relevant error message " +"indicating both how to install system-wide packages via the distro's package " +"manager and how to set up a virtual environment. If your distro is often " +"used by users in a state where the ``python3`` command is available (and " +"especially where ``pip`` or ``get-pip`` is available) but ``python3 -m " +"venv`` does not work, the message should indicate clearly how to make " +"``python3 -m venv`` work properly." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:293 +msgid "" +"Consider packaging pipx_, a tool for installing Python-language " +"applications, and suggesting it in the error. pipx automatically creates a " +"virtual environment for that application alone, which is a much better " +"default for end users who want to install some Python-language software " +"(which isn't available in the distro) but are not themselves Python users. " +"Packaging pipx in the distro avoids the irony of instructing users to ``pip " +"install --user --break-system-packages pipx`` to *avoid* breaking system " +"packages. Consider arranging things so your distro's package / environment " +"for Python for end users (e.g., ``python3`` on Fedora or ``python3-full`` on " +"Debian) depends on pipx." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:308 +msgid "Keep the marker file in container images" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:310 +msgid "" +"Distros that produce official images for single-application containers " +"(e.g., Docker container images) should keep the ``EXTERNALLY-MANAGED`` file, " +"preferably in a way that makes it not go away if a user of that image " +"installs package updates inside their image (think ``RUN apt-get dist-" +"upgrade``)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:317 +msgid "Create separate distro and local directories" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:319 +msgid "" +"Distros should place two separate paths on the system interpreter's " +"``sys.path``, one for distro-installed packages and one for packages " +"installed by the local system administrator, and configure " +"``sysconfig.get_default_scheme()`` to point at the latter path. This ensures " +"that tools like pip will not modify distro-installed packages. The path for " +"the local system administrator should come before the distro path on " +"``sys.path`` so that local installs take preference over distro packages." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:328 +msgid "" +"For example, Fedora and Debian (and their derivatives) both implement this " +"split by using ``/usr/local`` for locally-installed packages and ``/usr`` " +"for distro-installed packages. Fedora uses ``/usr/local/lib/python3.x/site-" +"packages`` vs. ``/usr/lib/python3.x/site-packages``. (Debian uses ``/usr/" +"local/lib/python3/dist-packages`` vs. ``/usr/lib/python3/dist-packages`` as " +"an additional layer of separation from a locally-compiled Python " +"interpreter: if you build and install upstream CPython in ``/usr/local/" +"bin``, it will look at ``/usr/local/lib/python3/site-packages``, and Debian " +"wishes to make sure that packages installed via the locally-built " +"interpreter don't show up on ``sys.path`` for the distro interpreter.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:341 +msgid "" +"Note that the ``/usr/local`` vs. ``/usr`` split is analogous to how the " +"``PATH`` environment variable typically includes ``/usr/local/bin:/usr/bin`` " +"and non-distro software installs to ``/usr/local`` by default. This split is " +"`recommended by the Filesystem Hierarchy Standard`__." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:349 +msgid "" +"There are two ways you could do this. One is, if you are building and " +"packaging Python libraries directly (e.g., your packaging helpers unpack a " +"wheel or call ``setup.py install``), arrange for those tools to use a " +"directory that is not in a ``sysconfig`` scheme but is still on ``sys.path``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:355 +msgid "" +"The other is to arrange for the default ``sysconfig`` scheme to change when " +"running inside a package build versus when running on an installed system. " +"The ``sysconfig`` customization hooks from bpo-43976_ should make this easy " +"(once accepted and implemented): make your packaging tool set an environment " +"variable or some other detectable configuration, and define a " +"``get_preferred_schemes`` function to return a different scheme when called " +"from inside a package build. Then you can use ``pip install`` as part of " +"your distro packaging." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:367 +msgid "" +"We propose adding a ``--scheme=...`` option to instruct pip to run against a " +"specific scheme. (See `Implementation Notes`_ below for how pip currently " +"determines schemes.) Once that's available, for local testing and possibly " +"for actual packaging, you would be able to run something like ``pip install " +"--scheme=posix_distro`` to explicitly install a package into your distro's " +"location (bypassing ``get_preferred_schemes``). One could also, if " +"absolutely needed, use ``pip uninstall --scheme=posix_distro`` to use pip to " +"remove packages from the system-managed directory." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:377 +msgid "" +"To install packages with pip, you would also need to either suppress the " +"``EXTERNALLY-MANAGED`` marker file to allow pip to run or to override it on " +"the command line. You may want to use the same means for suppressing the " +"marker file in build chroots as you do in container images." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:383 +msgid "" +"The advantage of setting these up to be automatic (suppressing the marker " +"file in your build environment and having ``get_preferred_schemes`` " +"automatically return your distro's scheme) is that an unadorned ``pip " +"install`` will work inside a package build, which generally means that an " +"unmodified upstream build script that happens to internally call ``pip " +"install`` will do the right thing. You can, of course, just ensure that your " +"packaging process always calls ``pip install --scheme=posix_distro --break-" +"system-packages``, which would work too." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:393 +msgid "" +"The best approach here depends a lot on your distro's conventions and " +"mechanisms for packaging." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:396 +msgid "" +"Similarly, the ``sysconfig`` paths that are not for importable Python code - " +"that is, ``include``, ``platinclude``, ``scripts``, and ``data`` - should " +"also have two variants, one for use by distro-packaged software and one for " +"use for locally-installed software, and the distro should be set up such " +"that both are usable. For instance, a typical FHS-compliant distro will use " +"``/usr/local/include`` for the default scheme's ``include`` and ``/usr/" +"include`` for distro-packaged headers and place both on the compiler's " +"search path, and it will use ``/usr/local/bin`` for the default scheme's " +"``scripts`` and ``/usr/bin`` for distro-packaged entry points and place both " +"on ``$PATH``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:410 +msgid "Implementation Notes" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:412 +msgid "" +"This section is non-normative and contains notes relevant to both the " +"specification and potential implementations." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:415 +msgid "" +"Currently (as of May 2021), pip does not directly expose a way to choose a " +"target ``sysconfig`` scheme, but it has three ways of looking up schemes " +"when installing:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:422 +msgid "``pip install``" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:420 +msgid "" +"Calls ``sysconfig.get_default_scheme()``, which is usually (in upstream " +"CPython and most current distros) the same as " +"``get_preferred_scheme('prefix')``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:425 +msgid "``pip install --prefix=/some/path``" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:425 +msgid "Calls ``sysconfig.get_preferred_scheme('prefix')``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:428 +msgid "``pip install --user``" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:428 +msgid "Calls ``sysconfig.get_preferred_scheme('user')``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:430 +msgid "" +"Finally, ``pip install --target=/some/path`` writes directly to ``/some/" +"path`` without looking up any schemes." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:433 +msgid "" +"Debian currently carries a `patch to change the default install location " +"inside a virtual environment`__, using a few heuristics (including checking " +"for the ``VIRTUAL_ENV`` environment variable), largely so that the directory " +"used in a virtual environment remains ``site-packages`` and not ``dist-" +"packages``. This does not particularly affect this proposal, because the " +"implementation of that patch does not actually change the default " +"``sysconfig`` scheme, and notably does not change the result of " +"``sysconfig.get_path(\"stdlib\")``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:445 +msgid "" +"Fedora currently carries a `patch to change the default install location " +"when not running inside rpmbuild`__, which they use to implement the two-" +"system-wide-directories approach. This is conceptually the sort of hook " +"envisioned by bpo-43976_, except implemented as a code patch to " +"``distutils`` instead of as a changed ``sysconfig`` scheme." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:454 +msgid "" +"The implementation of ``is_virtual_environment`` above, as well as the logic " +"to load the ``EXTERNALLY-MANAGED`` file and find the error message from it, " +"may as well get added to the standard library (``sys`` and ``sysconfig``, " +"respectively), to centralize their implementations, but they don't need to " +"be added yet." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:464 +msgid "Copyright" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:466 +msgid "" +"This document is placed in the public domain or under the CC0-1.0-Universal " +"license, whichever is more permissive." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:474 +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 "" + +#: ../source/specifications/glob-patterns.rst:5 +msgid "" +"Some PyPA specifications, e.g. :ref:`pyproject.toml's license-files " +"`, accept certain types of *glob patterns* to " +"match a given string containing wildcards and character ranges against files " +"and directories. This specification defines which patterns are acceptable " +"and how they should be handled." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:13 +msgid "Valid glob patterns" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:15 +msgid "" +"For PyPA purposes, a *valid glob pattern* MUST be a string matched against " +"filesystem entries as specified below:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:18 +msgid "" +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:21 +msgid "" +"Special glob characters: ``*``, ``?``, ``**`` and character ranges: ``[]`` " +"containing only the verbatim matched characters MUST be supported. Within " +"``[...]``, the hyphen indicates a locale-agnostic range (e.g. ``a-z``, order " +"based on Unicode code points). Hyphens at the start or end are matched " +"literally." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:27 +msgid "Path delimiters MUST be the forward slash character (``/``)." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:29 +msgid "" +"Patterns always refer to *relative paths*, e.g., when used " +"in :file:`pyproject.toml`, patterns should always be relative to the " +"directory containing that file. Therefore the leading slash character MUST " +"NOT be used." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:34 +msgid "Parent directory indicators (``..``) MUST NOT be used." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:36 +msgid "" +"Any characters or character sequences not covered by this specification are " +"invalid. Projects MUST NOT use such values. Tools consuming glob patterns " +"SHOULD reject invalid values with an error." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:40 +msgid "" +"Literal paths (e.g. :file:`LICENSE`) are valid globs which means they can " +"also be defined." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:43 +msgid "Tools consuming glob patterns:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:45 +msgid "" +"MUST treat each value as a glob pattern, and MUST raise an error if the " +"pattern contains invalid glob syntax." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:47 +msgid "" +"MUST raise an error if any individual user-specified pattern does not match " +"at least one file." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:50 +msgid "Examples of valid glob patterns:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:61 +msgid "Examples of invalid glob patterns:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:74 +msgid "Reference implementation in Python" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:76 +msgid "" +"It is possible to defer the majority of the pattern matching against the " +"file system to the :mod:`glob` module in Python's standard library. It is " +"necessary however to perform additional validations." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:80 +msgid "The code below is as a simple reference implementation:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + +#: ../source/specifications/index.rst:4 +msgid "PyPA specifications" +msgstr "" + +#: ../source/specifications/index.rst:6 +msgid "" +"This is a list of currently active interoperability specifications " +"maintained by the Python Packaging Authority. The process for updating these " +"standards, and for proposing new ones, is documented on `pypa.io `__." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:6 +msgid "Index hosted attestations" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:8 +msgid "This specification was originally defined in :pep:`740`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:12 +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`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:22 +msgid "Upload endpoint changes" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:26 +msgid "" +"The \"legacy\" upload API is not standardized. See `PyPI's Upload API " +"documentation `_ for how attestations are " +"uploaded." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:33 +msgid "Attestation objects" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:35 +msgid "" +"An attestation object is a JSON object with several required keys; " +"applications or signers may include additional keys so long as all " +"explicitly listed keys are provided. The required layout of an attestation " +"object is provided as pseudocode below." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:88 +msgid "" +"A full data model for each object in ``transparency_entries`` is provided " +"in :ref:`appendix`. Attestation objects **SHOULD** include one or more " +"transparency log entries, and **MAY** include additional keys for other " +"sources of signed time (such as an :rfc:`3161` Time Stamping Authority or a " +"`Roughtime `__ server)." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:94 +msgid "" +"Attestation objects are versioned; this PEP specifies version 1. Each " +"version is tied to a single cryptographic suite to minimize unnecessary " +"cryptographic agility. In version 1, the suite is as follows:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:98 +msgid "" +"Certificates are specified as X.509 certificates, and comply with the " +"profile in :rfc:`5280`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:100 +msgid "" +"The message signature algorithm is ECDSA, with the P-256 curve for public " +"keys and SHA-256 as the cryptographic digest function." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:103 +msgid "" +"Future PEPs may change this suite (and the overall shape of the attestation " +"object) by selecting a new version number." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:109 +msgid "Attestation statement and signature generation" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:111 +msgid "" +"The *attestation statement* is the actual claim that is cryptographically " +"signed over within the attestation object (i.e., the ``envelope.statement``)." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:114 +msgid "" +"The attestation statement is encoded as a `v1 in-toto Statement object " +"`__, in JSON form. When serialized the statement is treated as " +"an opaque binary blob, avoiding the need for canonicalization." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:119 +msgid "" +"In addition to being a v1 in-toto Statement, the attestation statement is " +"constrained in the following ways:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:122 +msgid "The in-toto ``subject`` **MUST** contain only a single subject." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:123 +msgid "" +"``subject[0].name`` is the distribution's filename, which **MUST** be a " +"valid :ref:`source distribution ` or :ref:`wheel " +"distribution ` filename." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:126 +msgid "" +"``subject[0].digest`` **MUST** contain a SHA-256 digest. Other digests " +"**MAY** be present. The digests **MUST** be represented as hexadecimal " +"strings." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:128 +msgid "The following ``predicateType`` values are supported:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:130 +msgid "" +"`SLSA Provenance `__: ``https://slsa.dev/" +"provenance/v1``" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:131 +msgid "" +"`PyPI Publish Attestation `__: ``https://docs.pypi.org/attestations/publish/v1``" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:133 +msgid "" +"The signature over this statement is constructed using the `v1 DSSE " +"signature protocol `__, with a ``PAYLOAD_TYPE`` of ``application/vnd.in-toto+json`` " +"and a ``PAYLOAD_BODY`` of the JSON-encoded statement above. No other " +"``PAYLOAD_TYPE`` is permitted." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:141 +msgid "Provenance objects" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:143 +msgid "" +"The index will serve uploaded attestations along with metadata that can " +"assist in verifying them in the form of JSON serialized objects." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:146 +msgid "" +"These *provenance objects* will be available via both the Simple Index and " +"JSON-based Simple API as described above, and will have the following layout:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:169 +msgid "or, as pseudocode:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:217 +msgid "" +"``version`` is ``1``. Like attestation objects, provenance objects are " +"versioned, and this PEP only defines version ``1``." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:219 +msgid "" +"``attestation_bundles`` is a **required** JSON array, containing one or more " +"\"bundles\" of attestations. Each bundle corresponds to a signing identity " +"(such as a Trusted Publishing identity), and contains one or more " +"attestation objects." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:224 +msgid "" +"As noted in the ``Publisher`` model, each ``AttestationBundle.publisher`` " +"object is specific to its Trusted Publisher but must include at minimum:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:228 +msgid "" +"A ``kind`` key, which **MUST** be a JSON string that uniquely identifies the " +"kind of Trusted Publisher." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:230 +msgid "" +"A ``claims`` key, which **MUST** be a JSON object containing any context-" +"specific claims retained by the index during Trusted Publisher " +"authentication." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:233 +msgid "All other keys in the publisher object are publisher-specific." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:235 +msgid "" +"Each array of attestation objects is a superset of the ``attestations`` " +"array supplied by the uploaded through the ``attestations`` field at upload " +"time, as described in :ref:`upload-endpoint` and :ref:`changes-to-provenance-" +"objects`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:243 +msgid "Changes to provenance objects" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:245 +msgid "" +"Provenance objects are *not* immutable, and may change over time. Reasons " +"for changes to the provenance object include but are not limited to:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:248 +msgid "" +"Addition of new attestations for a pre-existing signing identity: the index " +"**MAY** choose to allow additional attestations by pre-existing signing " +"identities, such as newer attestation versions for already uploaded files." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:253 +msgid "" +"Addition of new signing identities and associated attestations: the index " +"**MAY** choose to support attestations from sources other than the file's " +"uploader, such as third-party auditors or the index itself. These " +"attestations may be performed asynchronously, requiring the index to insert " +"them into the provenance object *post facto*." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:262 +msgid "Attestation verification" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:264 +msgid "" +"Verifying an attestation object against a distribution file requires " +"verification of each of the following:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:267 +msgid "``version`` is ``1``. The verifier **MUST** reject any other version." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:268 +msgid "" +"``verification_material.certificate`` is a valid signing certificate, as " +"issued by an *a priori* trusted authority (such as a root of trust already " +"present within the verifying client)." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:271 +msgid "" +"``verification_material.certificate`` identifies an appropriate signing " +"subject, such as the machine identity of the Trusted Publisher that " +"published the package." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:274 +msgid "" +"``envelope.statement`` is a valid in-toto v1 Statement, with a subject and " +"digest that **MUST** match the distribution's filename and contents. For the " +"distribution's filename, matching **MUST** be performed by parsing using the " +"appropriate source distribution or wheel filename format, as the statement's " +"subject may be equivalent but normalized." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:279 +msgid "" +"``envelope.signature`` is a valid signature for ``envelope.statement`` " +"corresponding to ``verification_material.certificate``, as reconstituted via " +"the `v1 DSSE signature protocol `__." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:284 +msgid "" +"In addition to the above required steps, a verifier **MAY** additionally " +"verify ``verification_material.transparency_entries`` on a policy basis, " +"e.g. requiring at least one transparency log entry or a threshold of " +"entries. When verifying transparency entries, the verifier **MUST** confirm " +"that the inclusion time for each entry lies within the signing certificate's " +"validity period." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:293 +msgid "Appendix: Data models for Transparency Log Entries" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:295 +msgid "" +"This appendix contains pseudocoded data models for transparency log entries " +"in attestation objects. Each transparency log entry serves as a source of " +"signed inclusion time, and can be verified either online or offline." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:5 +msgid "Inline script metadata" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:7 +msgid "" +"This specification defines a metadata format that can be embedded in single-" +"file Python scripts to assist launchers, IDEs and other external tools which " +"may need to interact with such scripts." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:15 +msgid "" +"This specification defines a metadata comment block format (loosely inspired " +"by `reStructuredText Directives`__)." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:20 +msgid "" +"Any Python script may have top-level comment blocks that MUST start with the " +"line ``# /// TYPE`` where ``TYPE`` determines how to process the content. " +"That is: a single ``#``, followed by a single space, followed by three " +"forward slashes, followed by a single space, followed by the type of " +"metadata. Block MUST end with the line ``# ///``. That is: a single ``#``, " +"followed by a single space, followed by three forward slashes. The ``TYPE`` " +"MUST only consist of ASCII letters, numbers and hyphens." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:28 +msgid "" +"Every line between these two lines (``# /// TYPE`` and ``# ///``) MUST be a " +"comment starting with ``#``. If there are characters after the ``#`` then " +"the first character MUST be a space. The embedded content is formed by " +"taking away the first two characters of each line if the second character is " +"a space, otherwise just the first character (which means the line consists " +"of only a single ``#``)." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:35 +msgid "" +"Precedence for an ending line ``# ///`` is given when the next line is not a " +"valid embedded content line as described above. For example, the following " +"is a single fully valid block:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:51 +msgid "" +"A starting line MUST NOT be placed between another starting line and its " +"ending line. In such cases tools MAY produce an error. Unclosed blocks MUST " +"be ignored." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:54 +msgid "" +"When there are multiple comment blocks of the same ``TYPE`` defined, tools " +"MUST produce an error." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:57 +msgid "" +"Tools reading embedded metadata MAY respect the standard Python encoding " +"declaration. If they choose not to do so, they MUST process the file as " +"UTF-8." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:60 +msgid "" +"This is the canonical regular expression that MAY be used to parse the " +"metadata:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:67 +msgid "" +"In circumstances where there is a discrepancy between the text specification " +"and the regular expression, the text specification takes precedence." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:70 +msgid "" +"Tools MUST NOT read from metadata blocks with types that have not been " +"standardized by this specification." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:74 +msgid "script type" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:76 +msgid "" +"The first type of metadata block is named ``script``, which contains script " +"metadata (dependency data and tool configuration)." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:79 +msgid "" +"This document MAY include the top-level fields ``dependencies`` and " +"``requires-python``, and MAY optionally include a ``[tool]`` table." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:82 +msgid "" +"The ``[tool]`` table MAY be used by any tool, script runner or otherwise, to " +"configure behavior. It has the same semantics as the :ref:`[tool] table in " +"pyproject.toml `." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:86 +msgid "The top-level fields are:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:88 +msgid "" +"``dependencies``: A list of strings that specifies the runtime dependencies " +"of the script. Each entry MUST be a valid :ref:`dependency specifier " +"`." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:91 +msgid "" +"``requires-python``: A string that specifies the Python version(s) with " +"which the script is compatible. The value of this field MUST be a " +"valid :ref:`version specifier `." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:95 +msgid "" +"Script runners MUST error if the specified ``dependencies`` cannot be " +"provided. Script runners SHOULD error if no version of Python that satisfies " +"the specified ``requires-python`` can be provided." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:102 +msgid "The following is an example of a script with embedded metadata:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:125 +msgid "" +"The following is an example of how to read the metadata on Python 3.11 or " +"higher." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:151 +msgid "" +"Often tools will edit dependencies like package managers or dependency " +"update automation in CI. The following is a crude example of modifying the " +"content using the ``tomlkit`` library__." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:182 +msgid "" +"Note that this example used a library that preserves TOML formatting. This " +"is not a requirement for editing by any means but rather is a \"nice to " +"have\" feature." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:186 +msgid "" +"The following is an example of how to read a stream of arbitrary metadata " +"blocks." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:205 +#: ../source/specifications/simple-repository-api.rst:916 +msgid "Recommendations" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:207 +msgid "" +"Tools that support managing different versions of Python should attempt to " +"use the highest available version of Python that is compatible with the " +"script's ``requires-python`` metadata, if defined." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:215 +msgid "" +"October 2023: This specification was conditionally approved " +"through :pep:`723`." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:216 +msgid "" +"January 2024: Through amendments to :pep:`723`, the ``pyproject`` metadata " +"block type was renamed to ``script``, and the ``[run]`` table was dropped, " +"making the ``dependencies`` and ``requires-python`` keys top-level. " +"Additionally, the specification is no longer provisional." +msgstr "" + +#: ../source/specifications/license-expression.rst:5 +msgid "" +":pep:`639` defined a new :ref:`pyproject.toml's license ` value and added a corresponding :ref:`core metadata License-" +"Expression field `. This specification " +"defines which license expressions are acceptable." +msgstr "" + +#: ../source/specifications/license-expression.rst:14 +msgid "" +"License can be defined as a text string that is a valid SPDX :term:`license " +"expression `, as documented in the `SPDX specification " +"`__, either Version 2.2 or a later compatible version." +msgstr "" + +#: ../source/specifications/license-expression.rst:19 +msgid "A license expression can use the following license identifiers:" +msgstr "" + +#: ../source/specifications/license-expression.rst:21 +msgid "" +"Any SPDX-listed license short-form identifiers that are published in the " +"`SPDX License List `__, version 3.17 or any later compatible " +"version." +msgstr "" + +#: ../source/specifications/license-expression.rst:25 +msgid "" +"The custom ``LicenseRef-[idstring]`` string(s), where ``[idstring]`` is a " +"unique string containing letters, numbers, ``.`` and/or ``-``, to identify " +"licenses that are not included in the SPDX license list. The custom " +"identifiers must follow the SPDX specification, `clause 10.1 " +"`__ of the given specification version." +msgstr "" + +#: ../source/specifications/license-expression.rst:32 +msgid "Examples of valid license expressions:" +msgstr "" + +#: ../source/specifications/license-expression.rst:45 +msgid "Examples of invalid license expressions:" +msgstr "" + +#: ../source/specifications/name-normalization.rst:3 +msgid "Names and normalization" +msgstr "" + +#: ../source/specifications/name-normalization.rst:5 +msgid "" +"This specification defines the format that names for packages and extras are " +"required to follow. It also describes how to normalize them, which should be " +"done before lookups and comparisons." +msgstr "" + +#: ../source/specifications/name-normalization.rst:13 +msgid "Name format" +msgstr "" + +#: ../source/specifications/name-normalization.rst:15 +msgid "" +"A valid name consists only of ASCII letters and numbers, period, underscore " +"and hyphen. It must start and end with a letter or number. This means that " +"valid project names are limited to those which match the following regex " +"(run with :py:data:`re.IGNORECASE`)::" +msgstr "" + +#: ../source/specifications/name-normalization.rst:26 +msgid "Name normalization" +msgstr "" + +#: ../source/specifications/name-normalization.rst:28 +msgid "" +"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/name-normalization.rst:39 +msgid "This means that the following names are all equivalent:" +msgstr "" + +#: ../source/specifications/name-normalization.rst:41 +msgid "``friendly-bard`` (normalized form)" +msgstr "" + +#: ../source/specifications/name-normalization.rst:42 +msgid "``Friendly-Bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:43 +msgid "``FRIENDLY-BARD``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:44 +msgid "``friendly.bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:45 +msgid "``friendly_bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:46 +msgid "``friendly--bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:47 +msgid "" +"``FrIeNdLy-._.-bArD`` (a *terrible* way to write a name, but it is valid)" +msgstr "" + +#: ../source/specifications/name-normalization.rst:52 +msgid "" +"September 2015: The specification of name normalized was approved " +"through :pep:`503 <503#normalized-names>`." +msgstr "" + +#: ../source/specifications/name-normalization.rst:54 +msgid "" +"November 2015: The specification of valid names was approved " +"through :pep:`508 <508#names>`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:6 +msgid "Platform compatibility tags" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:8 +msgid "" +"Platform compatibility tags allow build tools to mark distributions as being " +"compatible with specific platforms, and allows installers to understand " +"which distributions are compatible with the system they are running on." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:16 +msgid "The tag format is ``{python tag}-{abi tag}-{platform tag}``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:18 +msgid "python tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:19 +msgid "'py27', 'cp33'" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:21 +msgid "'cp32dmu', 'none'" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:23 +msgid "'linux_x86_64', 'any'" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:25 +msgid "" +"For example, the tag ``py27-none-any`` indicates compatibility with Python " +"2.7 (any Python 2.7 implementation) with no abi requirement, on any platform." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:28 +msgid "" +"The ``wheel`` built package format includes these tags in its filenames, of " +"the form ``{distribution}-{version}(-{build tag})?-{python tag}-{abitag}-" +"{platform tag}.whl``. Other package formats may have their own conventions." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:33 +msgid "Any potential spaces in any tag should be replaced with ``_``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:37 +msgid "Python Tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:39 +msgid "" +"The Python tag indicates the implementation and version required by a " +"distribution. Major implementations have abbreviated codes, initially:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:42 +msgid "py: Generic Python (does not require implementation-specific features)" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:43 +msgid "cp: CPython" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:44 +msgid "ip: IronPython" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:45 +msgid "pp: PyPy" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:46 +msgid "jy: Jython" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:48 +msgid "" +"Other Python implementations should use :py:data:`sys.implementation.name " +"`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:50 +msgid "" +"The version is ``py_version_nodot``. CPython gets away with no dot, but if " +"one is needed the underscore ``_`` is used instead. PyPy should probably " +"use its own versions here ``pp18``, ``pp19``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:54 +msgid "" +"The version can be just the major version ``2`` or ``3`` ``py2``, ``py3`` " +"for many pure-Python distributions." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:57 +msgid "" +"Importantly, major-version-only tags like ``py2`` and ``py3`` are not " +"shorthand for ``py20`` and ``py30``. Instead, these tags mean the packager " +"intentionally released a cross-version-compatible distribution." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:61 +msgid "" +"A single-source Python 2/3 compatible distribution can use the compound tag " +"``py2.py3``. See `Compressed Tag Sets`_, below." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:66 +msgid "ABI Tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:68 +msgid "" +"The ABI tag indicates which Python ABI is required by any included extension " +"modules. For implementation-specific ABIs, the implementation is " +"abbreviated in the same way as the Python Tag, e.g. ``cp33d`` would be the " +"CPython 3.3 ABI with debugging." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:73 +msgid "The CPython stable ABI is ``abi3`` as in the shared library suffix." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:75 +msgid "" +"Implementations with a very unstable ABI may use the first 6 bytes (as 8 " +"base64-encoded characters) of the SHA-256 hash of their source code revision " +"and compiler flags, etc, but will probably not have a great need to " +"distribute binary distributions. Each implementation's community may decide " +"how to best use the ABI tag." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:83 +msgid "Platform Tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:86 +msgid "" +"Platform tags are dependent on the versioning of the operating system or " +"platform they represent and may change over time as the underlying platform " +"changes its versioning." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:91 +msgid "Basic platform tags" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:93 +msgid "" +"In its simplest form, the platform tag " +"is :py:func:`sysconfig.get_platform()` with all hyphens ``-`` and periods " +"``.`` replaced with underscore ``_``. Until the removal of :ref:`distutils` " +"in Python 3.12, this was ``distutils.util.get_platform()``. For example:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:98 +msgid "win32" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:99 +msgid "linux_i386" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:100 +msgid "linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:106 +msgid "``manylinux``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:108 +msgid "" +"The simple scheme above is insufficient for public distribution of wheel " +"files to Linux platforms, due to the large ecosystem of Linux platforms and " +"subtle differences between them." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:112 +msgid "" +"Instead, for those platforms, the ``manylinux`` standard represents a common " +"subset of Linux platforms, and allows building wheels tagged with the " +"``manylinux`` platform tag which can be used across most common Linux " +"distributions." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:117 +msgid "" +"The current standard is the future-proof :file:`manylinux_{x}_{y}` standard. " +"It defines tags of the form :file:`manylinux_{x}_{y}_{arch}`, where ``x`` " +"and ``y`` are glibc major and minor versions supported (e.g. " +"``manylinux_2_24_xxx`` should work on any distro using glibc 2.24+), and " +"``arch`` is the architecture, matching the value " +"of :py:func:`sysconfig.get_platform()` on the system as in the \"simple\" " +"form above." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:123 +msgid "" +"The following older tags are still supported for backward compatibility:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:125 +msgid "" +"``manylinux1`` supports glibc 2.5 on ``x86_64`` and ``i686`` architectures." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:126 +msgid "``manylinux2010`` supports glibc 2.12 on ``x86_64`` and ``i686``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:127 +msgid "" +"``manylinux2014`` supports glibc 2.17 on ``x86_64``, ``i686``, ``aarch64``, " +"``armv7l``, ``ppc64``, ``ppc64le``, and ``s390x``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:130 +msgid "" +"In general, distributions built for older versions of the specification are " +"forwards-compatible (meaning that ``manylinux1`` distributions should " +"continue to work on modern systems) but not backwards-compatible (meaning " +"that ``manylinux2010`` distributions are not expected to work on platforms " +"that existed before 2010)." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:136 +msgid "" +"Package maintainers should attempt to target the most compatible " +"specification possible, with the caveat that the provided build environment " +"for ``manylinux1`` and ``manylinux2010`` have reached end-of-life meaning " +"that these images will no longer receive security updates." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:141 +msgid "" +"The following table shows the minimum versions of relevant projects to " +"support the various ``manylinux`` standards:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "Tool" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux1``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux2010``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux2014``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux_x_y``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=8.1.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=19.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=19.3``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=20.3``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "auditwheel" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=1.0.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=2.0.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=3.0.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=3.3.0`` [#]_" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:151 +msgid "Only support for ``manylinux_2_24`` has been added in auditwheel 3.3.0" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:155 +msgid "``musllinux``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:157 +msgid "" +"The ``musllinux`` family of tags is similar to ``manylinux``, but for Linux " +"platforms that use the musl_ libc rather than glibc (a prime example being " +"Alpine Linux). The schema is :file:`musllinux_{x}_{y}_{arch}`, supporting " +"musl ``x.y`` and higher on the architecture ``arch``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:162 +msgid "" +"The musl version values can be obtained by executing the musl libc shared " +"library the Python interpreter is currently running on, and parsing the " +"output:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:193 +msgid "" +"There are currently two possible ways to find the musl library’s location " +"that a Python interpreter is running on, either with the system ldd_ " +"command, or by parsing the ``PT_INTERP`` section’s value from the " +"executable’s ELF_ header." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:202 +msgid "" +"macOS uses the ``macosx`` family of tags (the ``x`` suffix is a historical " +"artefact of Apple's official macOS naming scheme). The schema for " +"compatibility tags is :file:`macosx_{x}_{y}_{arch}`, indicating that the " +"wheel is compatible with macOS ``x.y`` or later on the architecture ``arch``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:207 +msgid "" +"For macOS 10, the tag is :file:`macosx_10_{y}_{arch}`, where ``y`` " +"corresponds to the minor version number of the macOS release. For macOS 11 " +"and higher, the tag is :file:`macosx_{x}_0_{arch}`, where ``x`` corresponds " +"to the major version number of the macOS release. Following the published " +"macOS major versions, the ``x`` value is either ``10 <= x <= 15``, or " +"``>=26`` and corresponding to the year of the macOS release. For example, " +"``macosx_11_0_arm64`` indicates compatibility with macOS 11 or later." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:215 +msgid "" +"macOS binaries can be compiled for a single architecture, or can include " +"support for multiple architectures in the same binary (sometimes called " +"\"fat\" binaries). To indicate support for a single architecture, the value " +"of ``arch`` must match the value of :py:func:`platform.machine()` on the " +"system. To indicate support multiple architectures, the ``arch`` tag should " +"be an identifier from the following list that describes the set of supported " +"architectures:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:223 +msgid "``arch``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:223 +msgid "Architectures supported" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:225 +msgid "``universal2``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:225 +msgid "``arm64``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:226 +msgid "``universal``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:226 +msgid "``i386``, ``ppc``, ``ppc64``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:227 +msgid "``intel``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:227 +msgid "``i386``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:228 +msgid "``fat``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:228 +msgid "``i386``, ``ppc``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:229 +msgid "``fat3``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:229 +msgid "``i386``, ``ppc``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:230 +msgid "``fat64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:230 +msgid "``ppc64``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:233 +msgid "" +"The minimum supported macOS version may also be constrained by architecture. " +"For example, macOS 11 (Big Sur) was the first release to support arm64. " +"These additional constraints are enforced transparently by the macOS " +"compilation toolchain when building binaries that support multiple " +"architectures." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:241 +msgid "Android" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:243 +msgid "" +"Android uses the schema :file:`android_{apilevel}_{abi}`, indicating " +"compatibility with the given Android API level or later, on the given ABI. " +"For example, ``android_27_arm64_v8a`` indicates support for API level 27 or " +"later, on ``arm64_v8a`` devices. Android makes no distinction between " +"physical devices and emulated devices." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:249 +msgid "" +"The API level should be a positive integer. This is *not* the same thing as " +"the user-facing Android version. For example, the release known as Android " +"12 (code named \"Snow Cone\") uses API level 31 or 32, depending on the " +"specific Android version in use. Android's release documentation contains " +"the `full list of Android versions and their corresponding API levels " +"`__." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:256 +msgid "" +"There are 4 `supported ABIs `__. Normalized according to the rules above, they are:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:259 +msgid "``armeabi_v7a``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:260 +msgid "``arm64_v8a``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:261 +msgid "``x86``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:264 +msgid "" +"Virtually all current physical devices use one of the ARM architectures. " +"``x86`` and ``x86_64`` are supported for use in the emulator. ``x86`` has " +"not been supported as a development platform since 2020, and no new emulator " +"images have been released since then." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:272 +msgid "iOS" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:274 +msgid "" +"iOS uses the schema :file:`ios_{x}_{y}_{arch}_{sdk}`, indicating " +"compatibility with iOS ``x.y`` or later, on the ``arch`` architecture, using " +"the ``sdk`` SDK." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:277 +msgid "" +"The value of ``x`` and ``y`` correspond to the major and minor version " +"number of the iOS release, respectively. They must both be positive " +"integers. The version number always includes a major *and* minor version, " +"even if Apple's official version numbering only refers to the major value. " +"For example, a ``ios_13_0_arm64_iphonesimulator`` indicates compatibility " +"with iOS 13 or later." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:283 +msgid "" +"The value of ``arch`` must match the value of :py:func:`platform.machine()` " +"on the system." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:286 +msgid "" +"The value of ``sdk`` must be either ``iphoneos`` (for physical devices), or " +"``iphonesimulator`` (for device simulators). These SDKs have the same API " +"surface, but are incompatible at the binary level, even if they are running " +"on the same CPU architecture. Code compiled for an arm64 simulator will not " +"run on an arm64 device." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:292 +msgid "" +"The combination of :file:`{arch}_{sdk}` is referred to as the \"multiarch\". " +"There are three possible values for multiarch:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:295 +msgid "" +"``arm64_iphoneos``, for physical iPhone/iPad devices. This includes every " +"iOS device manufactured since ~2015;" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:297 +msgid "" +"``arm64_iphonesimulator``, for simulators running on Apple Silicon macOS " +"hardware; and" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:299 +msgid "``x86_64_iphonesimulator``, for simulators running on x86_64 hardware." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:302 +msgid "Use" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:304 +msgid "" +"The tags are used by installers to decide which built distribution (if any) " +"to download from a list of potential built distributions. The installer " +"maintains a list of (pyver, abi, arch) tuples that it will support. If the " +"built distribution's tag is ``in`` the list, then it can be installed." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:310 +msgid "" +"It is recommended that installers try to choose the most feature complete " +"built distribution available (the one most specific to the installation " +"environment) by default before falling back to pure Python versions " +"published for older Python releases. Installers are also recommended to " +"provide a way to configure and re-order the list of allowed compatibility " +"tags; for example, a user might accept only the ``*-none-any`` tags to only " +"download built packages that advertise themselves as being pure Python." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:318 +msgid "" +"Another desirable installer feature might be to include \"re-compile from " +"source if possible\" as more preferable than some of the compatible but " +"legacy pre-built options." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:322 +msgid "" +"This example list is for an installer running under CPython 3.3 on a " +"linux_x86_64 system. It is in order from most-preferred (a distribution with " +"a compiled extension module, built for the current version of Python) to " +"least-preferred (a pure-Python distribution built with an older version of " +"Python):" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:328 +msgid "cp33-cp33m-linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:329 +msgid "cp33-abi3-linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:330 +msgid "cp3-abi3-linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:331 +msgid "cp33-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:332 +msgid "cp3-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:333 +msgid "py33-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:334 +msgid "py3-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:335 +msgid "cp33-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:336 +msgid "cp3-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:337 +msgid "py33-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:338 +msgid "py3-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:339 +msgid "py32-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:340 +msgid "py31-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:341 +msgid "py30-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:343 +msgid "" +"Built distributions may be platform specific for reasons other than C " +"extensions, such as by including a native executable invoked as a subprocess." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:347 +msgid "" +"Sometimes there will be more than one supported built distribution for a " +"particular version of a package. For example, a packager could release a " +"package tagged ``cp33-abi3-linux_x86_64`` that contains an optional C " +"extension and the same distribution tagged ``py3-none-any`` that does not. " +"The index of the tag in the supported tags list breaks the tie, and the " +"package with the C extension is installed in preference to the package " +"without because that tag appears first in the list." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:356 +msgid "Compressed Tag Sets" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:358 +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, 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:370 +msgid "" +"A bdist format that implements this scheme should include the expanded tags " +"in bdist-specific metadata. This compression scheme can generate large " +"numbers of unsupported tags and \"impossible\" tags that are supported by no " +"Python implementation e.g. \"cp33-cp31u-win64\", so use it sparingly." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:383 +msgid "What tags are used by default?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:379 +msgid "" +"Tools should use the most-preferred architecture dependent tag e.g. ``cp33-" +"cp33m-win32`` or the most-preferred pure python tag e.g. ``py33-none-any`` " +"by default. If the packager overrides the default it indicates that they " +"intended to provide cross-Python compatibility." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:393 +msgid "" +"What tag do I use if my distribution uses a feature exclusive to the newest " +"version of Python?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:386 +msgid "" +"Compatibility tags aid installers in selecting the *most compatible* build " +"of a *single version* of a distribution. For example, when there is no " +"Python 3.3 compatible build of ``beaglevote-1.2.0`` (it uses a Python 3.4 " +"exclusive feature) it may still use the ``py3-none-any`` tag instead of the " +"``py34-none-any`` tag. A Python 3.3 user must combine other qualifiers, such " +"as a requirement for the older release ``beaglevote-1.1.0`` that does not " +"use the new feature, to get a compatible build." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:398 +msgid "Why isn't there a ``.`` in the Python version number?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:396 +msgid "" +"CPython has lasted 20+ years without a 3-digit major release. This should " +"continue for some time. Other implementations may use _ as a delimiter, " +"since both - and . delimit the surrounding filename." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:404 +msgid "" +"Why normalise hyphens and other non-alphanumeric characters to underscores?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:401 +msgid "" +"To avoid conflicting with the ``.`` and ``-`` characters that separate " +"components of the filename, and for better compatibility with the widest " +"range of filesystem limitations for filenames (including being usable in URL " +"paths without quoting)." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:413 +msgid "Why not use special character rather than ``.`` or ``-``?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:407 +msgid "" +"Either because that character is inconvenient or potentially confusing in " +"some contexts (for example, ``+`` must be quoted in URLs, ``~`` is used to " +"denote the user's home directory in POSIX), or because the advantages " +"weren't sufficiently compelling to justify changing the existing reference " +"implementation for the wheel format defined in :pep:`427` (for example, " +"using ``,`` rather than ``.`` to separate components in a compressed tag)." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:418 +msgid "Who will maintain the registry of abbreviated implementations?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:416 +msgid "" +"New two-letter abbreviations can be requested on the python-dev mailing " +"list. As a rule of thumb, abbreviations are reserved for the current 4 most " +"prominent implementations." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:423 +msgid "Does the compatibility tag go into METADATA or PKG-INFO?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:421 +msgid "" +"No. The compatibility tag is part of the built distribution's metadata. " +"METADATA / PKG-INFO should be valid for an entire distribution, not a single " +"build of that distribution." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:429 +msgid "Why didn't you mention my favorite Python implementation?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:426 +msgid "" +"The abbreviated tags facilitate sharing compiled Python code in a public " +"index. Your Python implementation can use this specification too, but with " +"longer tags. Recall that all \"pure Python\" built distributions just use " +"``py``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:437 +msgid "" +"Why is the ABI tag (the second tag) sometimes \"none\" in the reference " +"implementation?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:432 +msgid "" +"Since Python 2 does not have an easy way to get to the SOABI (the concept " +"comes from newer versions of Python 3) the reference implementation at the " +"time of writing guesses \"none\". Ideally it would detect \"py27(d|m|u)\" " +"analogous to newer versions of Python, but in the meantime \"none\" is a " +"good enough way to say \"don't know\"." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:442 +msgid "" +"February 2013: The original version of this specification was approved " +"through :pep:`425`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:444 +msgid "January 2016: The ``manylinux1`` tag was approved through :pep:`513`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:445 +msgid "April 2018: The ``manylinux2010`` tag was approved through :pep:`571`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:446 +msgid "July 2019: The ``manylinux2014`` tag was approved through :pep:`599`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:447 +msgid "" +"November 2019: The ``manylinux_x_y`` perennial tag was approved " +"through :pep:`600`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:449 +msgid "April 2021: The ``musllinux_x_y`` tag was approved through :pep:`656`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:450 +msgid "December 2023: The tags for iOS were approved through :pep:`730`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:451 +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 "" + +#: ../source/specifications/pylock-toml.rst:8 +msgid "" +"The ``pylock.toml`` file format is for specifying dependencies to enable " +"reproducible installation in a Python environment." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:11 +msgid "This specification was originally defined in :pep:`751`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:16 +msgid "File Name" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:18 +msgid "" +"A lock file MUST be named :file:`pylock.toml` or match the regular " +"expression ``r\"^pylock\\.([^.]+)\\.toml$\"`` if a name for the lock file is " +"desired or if multiple lock files exist (i.e. the regular expression " +"``r\"^pylock\\.([^.]+\\.)?toml$\"`` for any file name). The prefix and " +"suffix of a named file MUST be lowercase when possible, for easy detection " +"and removal, e.g.:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:30 +msgid "" +"The expectation is that services that automatically install from lock files " +"will search for:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:33 +msgid "The lock file with the service's name and doing the default install" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:34 +msgid "" +"A multi-use :file:`pylock.toml` with a dependency group with the name of the " +"service" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:35 +msgid "The default install of :file:`pylock.toml`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:37 +msgid "" +"E.g. a cloud host service named \"spam\" would first look " +"for :file:`pylock.spam.toml` to install from, and if that file didn't exist " +"then install from :file:`pylock.toml` and look for a dependency group named " +"\"spam\" to use if present." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:42 +msgid "" +"The lock file(s) SHOULD be located in the directory as appropriate for the " +"scope of the lock file. Locking against a single :file:`pyproject.toml`, for " +"instance, would place the :file:`pylock.toml` in the same directory. If the " +"lock file covered multiple projects in a monorepo, then the expectation is " +"the :file:`pylock.toml` file would be in the directory that held all the " +"projects being locked." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:53 +msgid "The format of the file is TOML_." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:55 +msgid "" +"Tools SHOULD write their lock files in a consistent way to minimize noise in " +"diff output. Keys in tables -- including the top-level table -- SHOULD be " +"recorded in a consistent order (if inspiration is desired, this " +"specification has tried to write down keys in a logical order). As well, " +"tools SHOULD sort arrays in consistent order. Usage of inline tables SHOULD " +"also be kept consistent." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:65 +msgid "``lock-version``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:67 +msgid "**Type**: string; value of ``\"1.0\"``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:68 +#: ../source/specifications/pylock-toml.rst:174 +#: ../source/specifications/pylock-toml.rst:189 +#: ../source/specifications/pylock-toml.rst:202 +#: ../source/specifications/pylock-toml.rst:298 +#: ../source/specifications/pylock-toml.rst:348 +#: ../source/specifications/pylock-toml.rst:397 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 +msgid "**Required?**: yes" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:69 +msgid "**Inspiration**: :ref:`core-metadata-metadata-version`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:70 +msgid "Record the file format version that the file adheres to." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:71 +msgid "" +"This PEP specifies the initial version -- and only valid value until future " +"updates to the standard change it -- as ``\"1.0\"``." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:73 +msgid "" +"If a tool supports the major version but not the minor version, a tool " +"SHOULD warn when an unknown key is seen." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:75 +msgid "If a tool doesn't support a major version, it MUST raise an error." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:81 +msgid "``environments``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:83 +#: ../source/specifications/pylock-toml.rst:110 +#: ../source/specifications/pylock-toml.rst:132 +#: ../source/specifications/pylock-toml.rst:154 +msgid "**Type**: Array of strings" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:84 +#: ../source/specifications/pylock-toml.rst:98 +#: ../source/specifications/pylock-toml.rst:213 +#: ../source/specifications/pylock-toml.rst:230 +#: ../source/specifications/pylock-toml.rst:243 +#: ../source/specifications/pylock-toml.rst:255 +#: ../source/specifications/pylock-toml.rst:334 +#: ../source/specifications/pylock-toml.rst:362 +#: ../source/specifications/pylock-toml.rst:435 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 +msgid "**Required?**: no" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:85 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 +msgid "**Inspiration**: uv_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:86 +msgid "" +"A list of :ref:`dependency-specifiers-environment-markers` for which the " +"lock file is considered compatible with." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:88 +msgid "" +"Tools SHOULD write exclusive/non-overlapping environment markers to ease in " +"understanding." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:97 +#: ../source/specifications/pylock-toml.rst:173 +#: ../source/specifications/pylock-toml.rst:201 +#: ../source/specifications/pylock-toml.rst:212 +#: ../source/specifications/pylock-toml.rst:229 +#: ../source/specifications/pylock-toml.rst:242 +#: ../source/specifications/pylock-toml.rst:308 +#: ../source/specifications/pylock-toml.rst:319 +#: ../source/specifications/pylock-toml.rst:333 +#: ../source/specifications/pylock-toml.rst:347 +#: ../source/specifications/pylock-toml.rst:361 +#: ../source/specifications/pylock-toml.rst:396 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 +msgid "**Type**: string" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:99 +#: ../source/specifications/pylock-toml.rst:190 +#: ../source/specifications/pylock-toml.rst:256 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 +msgid "**Inspiration**: PDM_, Poetry_, uv_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:100 +msgid "" +"Specifies the :ref:`core-metadata-requires-python` for the minimum Python " +"version compatible for any environment supported by the lock file (i.e. the " +"minimum viable Python version for the lock file)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:111 +#: ../source/specifications/pylock-toml.rst:133 +#: ../source/specifications/pylock-toml.rst:155 +msgid "**Required?**: no; defaults to ``[]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:112 +msgid "**Inspiration**: :ref:`core-metadata-provides-extra`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:113 +msgid "" +"The list of :ref:`extras ` supported by this " +"lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:115 +#: ../source/specifications/pylock-toml.rst:138 +msgid "" +"Lockers MAY choose to not support writing lock files that support extras and " +"dependency groups (i.e. tools may only support exporting a single-use lock " +"file)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:118 +msgid "Tools supporting extras MUST also support dependency groups." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:119 +msgid "" +"Tools should explicitly set this key to an empty array to signal that the " +"inputs used to generate the lock file had no extras (e.g. " +"a :ref:`pyproject.toml ` file had " +"no :ref:`[project.optional-dependencies] ` table), signalling that the lock file is, in effect, multi-" +"use even if it only looks to be single-use." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:130 +msgid "``dependency-groups``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 +msgid "**Inspiration**: :ref:`pyproject-tool-table`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:135 +msgid "" +"The list of :ref:`dependency-groups` publicly supported by this lock file " +"(i.e. dependency groups users are expected to be able to specify via a " +"tool's UI)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:141 +msgid "Tools supporting dependency groups MUST also support extras." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:142 +msgid "" +"Tools SHOULD explicitly set this key to an empty array to signal that the " +"inputs used to generate the lock file had no dependency groups (e.g. " +"a :ref:`pyproject.toml ` file had no :ref:`[dependency-" +"groups] ` table), signalling that the lock file is, in " +"effect, multi-use even if it only looks to be single-use." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:152 +msgid "``default-groups``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:156 +msgid "**Inspiration**: Poetry_, PDM_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:157 +msgid "" +"The name of synthetic dependency groups to represent what should be " +"installed by default (e.g. what :ref:`[project.dependencies] ` implicitly represents)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:161 +msgid "" +"Meant to be used in situations where :ref:`pylock-packages-marker` " +"necessitates such a group to exist." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:163 +msgid "" +"The groups listed by this key SHOULD NOT be listed in :ref:`pylock-" +"dependency-groups` as the groups are not meant to be directly exposed to " +"users by name but instead via an installer's UI." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:171 +msgid "``created-by``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:175 +msgid "**Inspiration**: Tools with their name in their lock file name" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:176 +msgid "Records the name of the tool used to create the lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:177 +msgid "" +"Tools MAY use the :ref:`pylock-tool` table to record enough details that it " +"can be inferred what inputs were used to create the lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:179 +msgid "" +"Tools SHOULD record the normalized name of the tool if it is available as a " +"Python package to facilitate finding the tool." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:186 +msgid "``[[packages]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:188 +#: ../source/specifications/pylock-toml.rst:254 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 +msgid "**Type**: array of tables" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:191 +msgid "An array containing all packages that *may* be installed." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:192 +msgid "" +"Packages MAY be listed multiple times with varying data, but all packages to " +"be installed MUST narrow down to a single entry at install time." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:199 +msgid "``packages.name``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:203 +msgid "**Inspiration**: :ref:`core-metadata-name`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:204 +msgid "The name of the package :ref:`normalized `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:210 +msgid "``packages.version``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:214 +msgid "**Inspiration**: :ref:`core-metadata-version`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:215 +msgid "The version of the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:216 +msgid "" +"The version SHOULD be specified when the version is known to be stable (i.e. " +"when an :ref:`sdist ` or :ref:`wheels ` are specified)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:219 +msgid "" +"The version MUST NOT be included when it cannot be guaranteed to be " +"consistent with the code used (i.e. when a :ref:`source tree ` is used)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:227 +msgid "``packages.marker``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:231 +msgid "**Inspiration**: PDM_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:232 +msgid "" +"The :ref:`environment marker ` " +"which specify when the package should be installed." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:240 +msgid "``packages.requires-python``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:244 +msgid "**Inspiration**: :ref:`core-metadata-requires-python`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:245 +msgid "" +"Holds the :ref:`version-specifiers` for Python version compatibility for the " +"package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:252 +msgid "``[[packages.dependencies]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:257 +msgid "" +"Records the other entries in :ref:`pylock-packages` which are direct " +"dependencies of this package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:259 +msgid "" +"Each entry is a table which contains the minimum information required to " +"tell which other package entry it corresponds to where doing a key-by-key " +"comparison would find the appropriate package with no ambiguity (e.g. if " +"there are two entries for the ``spam`` package, then you can include the " +"version number like ``{name = \"spam\", version = \"1.0.0\"}``, or by source " +"like ``{name = \"spam\", vcs = { url = \"...\"}``)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:265 +msgid "" +"Tools MUST NOT use this information when doing installation; it is purely " +"informational for auditing purposes." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:272 +msgid "``[packages.vcs]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:274 +#: ../source/specifications/pylock-toml.rst:376 +#: ../source/specifications/pylock-toml.rst:434 +#: ../source/specifications/pylock-toml.rst:546 +#: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 +msgid "**Type**: table" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:275 +msgid "" +"**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" +"directory`, :ref:`pylock-packages-archive`, :ref:`pylock-packages-sdist`, " +"and :ref:`pylock-packages-wheels`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:278 +msgid "**Inspiration**: :ref:`direct-url-data-structure`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:279 +msgid "" +"Record the version control system details for the :ref:`source tree ` it contains." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:282 +msgid "" +"Tools MAY choose to not support version control systems, both from a locking " +"and/or installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:284 +msgid "Tools MAY choose to only support a subset of the available VCS types." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:285 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using version control " +"systems." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:287 +msgid "" +"Installation from a version control system is considered originating from " +"a :ref:`direct URL reference `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:294 +msgid "``packages.vcs.type``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:296 +msgid "" +"**Type**: string; supported values specified in :ref:`direct-url-data-" +"structure-registered-vcs`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:299 +#: ../source/specifications/pylock-toml.rst:310 +#: ../source/specifications/pylock-toml.rst:321 +#: ../source/specifications/pylock-toml.rst:335 +#: ../source/specifications/pylock-toml.rst:349 +msgid "**Inspiration**: :ref:`direct-url-data-structure-vcs`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:300 +msgid "The type of version control system used." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:306 +msgid "``packages.vcs.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:309 +msgid "**Required?**: if :ref:`pylock-packages-vcs-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:311 +msgid "The URL_ to the source tree." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:317 +msgid "``packages.vcs.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:320 +msgid "**Required?**: if :ref:`pylock-packages-vcs-url` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:322 +msgid "The path to the local directory of the source tree." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 +msgid "" +"If a relative path is used it MUST be relative to the location of this file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 +msgid "" +"If the path is relative it MAY use POSIX-style path separators explicitly " +"for portability." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:331 +msgid "``packages.vcs.requested-revision``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:336 +msgid "The branch/tag/ref/commit/revision/etc. that the user requested." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:337 +msgid "" +"This is purely informational and to facilitate writing the :ref:`direct-url-" +"data-structure`; it MUST NOT be used to checkout the repository." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:345 +msgid "``packages.vcs.commit-id``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:350 +msgid "The exact commit/revision number that is to be installed." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:351 +msgid "" +"If the VCS supports commit-hash based revision identifiers, such a commit-" +"hash, it MUST be used as the commit ID in order to reference an immutable " +"version of the source code." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:359 +msgid "``packages.vcs.subdirectory``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:363 +msgid "**Inspiration**: :ref:`direct-url-data-structure-subdirectories`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:364 +msgid "" +"The subdirectory within the :ref:`source tree ` where the project root of the project is (e.g. the location of " +"the :ref:`pyproject.toml ` file)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:368 +msgid "The path MUST be relative to the root of the source tree structure." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:374 +msgid "``[packages.directory]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:377 +msgid "" +"**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" +"vcs`, :ref:`pylock-packages-archive`, :ref:`pylock-packages-sdist`, " +"and :ref:`pylock-packages-wheels`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:380 +#: ../source/specifications/pylock-toml.rst:398 +#: ../source/specifications/pylock-toml.rst:412 +msgid "**Inspiration**: :ref:`direct-url-data-structure-local-directory`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:381 +msgid "" +"Record the local directory details for the :ref:`source tree ` it contains." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:384 +msgid "" +"Tools MAY choose to not support local directories, both from a locking and/" +"or installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:386 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using local " +"directories." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:387 +msgid "" +"Installation from a directory is considered originating from a :ref:`direct " +"URL reference `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:394 +msgid "``packages.directory.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:399 +msgid "The local directory where the source tree is." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:400 +msgid "" +"If the path is relative it MUST be relative to the location of the lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:401 +msgid "" +"If the path is relative it MAY use POSIX-style path separators for " +"portability." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:408 +msgid "``packages.directory.editable``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:410 +msgid "**Type**: boolean" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:411 +msgid "**Required?**: no; defaults to ``false``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:413 +msgid "" +"A flag representing whether the source tree was an editable install at lock " +"time." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:415 +msgid "" +"An installer MAY choose to ignore this flag if user actions or context would " +"make an editable install unnecessary or undesirable (e.g. a container image " +"that will not be mounted for development purposes but instead deployed to " +"production where it would be treated at read-only)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:424 +msgid "``packages.directory.subdirectory``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:426 +#: ../source/specifications/pylock-toml.rst:521 +msgid "See :ref:`pylock-packages-vcs-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:432 +msgid "``[packages.archive]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 +msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:437 +msgid "" +"A direct reference to an archive file to install from (this can include " +"wheels and sdists, as well as other archive formats containing a source " +"tree)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:440 +msgid "" +"Tools MAY choose to not support archive files, both from a locking and/or " +"installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:442 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using archive files." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:443 +msgid "" +"Installation from an archive file is considered originating from " +"a :ref:`direct URL reference `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:450 +msgid "``packages.archive.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:461 +msgid "``packages.archive.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 +msgid "``packages.archive.size``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:479 +msgid "**Type**: integer" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:481 +msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:482 +msgid "The size of the archive file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:483 +msgid "" +"Tools SHOULD provide the file size when reasonably possible (e.g. the file " +"size is available via the Content-Length_ header from a HEAD_ HTTP request)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:490 +msgid "``packages.archive.upload-time``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:492 +msgid "**Type**: datetime" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:494 +msgid "**Inspiration**: :ref:`simple-repository-api`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:495 +msgid "The time the file was uploaded." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:496 +msgid "The date and time MUST be recorded in UTC." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:502 +msgid "``[packages.archive.hashes]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:504 +msgid "**Type**: Table of strings" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:506 +msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:507 +msgid "" +"A table listing known hash values of the file where the key is the hash " +"algorithm and the value is the hash value." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:509 +msgid "The table MUST contain at least one entry." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:510 +msgid "Hash algorithm keys SHOULD be lowercase." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:511 +msgid "" +"At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " +"SHOULD always be included (at time of writing, sha256 specifically is " +"recommended." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:519 +msgid "``packages.archive.subdirectory``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:527 +msgid "``packages.index``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:532 +msgid "" +"The base URL for the package index from :ref:`simple-repository-api` where " +"the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:534 +msgid "" +"When possible, this SHOULD be specified to assist with generating `software " +"bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " +"ceases to be valid." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:537 +msgid "" +"Tools MAY support installing from an index if the URL recorded for a " +"specific file is no longer valid (e.g. returns a 404 HTTP error code)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:544 +msgid "``[packages.sdist]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 +msgid "" +"**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" +"vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:550 +msgid "Details of a :ref:`source-distribution-format-sdist` for the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:552 +msgid "" +"Tools MAY choose to not support sdist files, both from a locking and/or " +"installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:554 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using sdist files." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:560 +msgid "``packages.sdist.name``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:563 +msgid "" +"**Required?**: no, not when the last component of :ref:`pylock-packages-" +"sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:567 +msgid "The file name of the :ref:`source-distribution-format-sdist` file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 +msgid "``packages.sdist.upload-time``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 +msgid "See :ref:`pylock-packages-archive-upload-time`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:583 +msgid "``packages.sdist.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 +msgid "See :ref:`pylock-packages-archive-url`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:591 +msgid "``packages.sdist.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 +msgid "See :ref:`pylock-packages-archive-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:599 +msgid "``packages.sdist.size``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 +msgid "See :ref:`pylock-packages-archive-size`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:607 +msgid "``packages.sdist.hashes``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 +msgid "See :ref:`pylock-packages-archive-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:616 +msgid "``[[packages.wheels]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:622 +msgid "" +"For recording the wheel files as specified by :ref:`binary-distribution-" +"format` for the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:624 +msgid "" +"Tools MUST support wheel files, both from a locking and installation " +"perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:631 +msgid "``packages.wheels.name``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:634 +msgid "" +"**Required?**: no, not when the last component of :ref:`pylock-packages-" +"wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:638 +msgid "The file name of the :ref:`binary-distribution-format` file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 +msgid "``packages.wheels.upload-time``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:654 +msgid "``packages.wheels.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:662 +msgid "``packages.wheels.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:670 +msgid "``packages.wheels.size``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:678 +msgid "``packages.wheels.hashes``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:686 +msgid "``[[packages.attestation-identities]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:691 +msgid "" +"A recording of the attestations for **any** file recorded for this package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:692 +msgid "If available, tools SHOULD include the attestation identities found." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:693 +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`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:701 +msgid "``packages.attestation-identities.kind``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:706 +msgid "The unique identity of the Trusted Publisher." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:712 +msgid "``[packages.tool]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:717 +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 lock file level (which is also available via :ref:`pylock-tool`)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:720 +msgid "" +"Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " +"installation)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:727 +msgid "``[tool]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:732 +msgid "See :ref:`pylock-packages-tool`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:746 +msgid "" +"The following outlines the steps to be taken to install from a lock file " +"(while the requirements are prescriptive, the general steps and order are a " +"suggestion):" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:750 +msgid "" +"Gather the extras and dependency groups to install and set ``extras`` and " +"``dependency_groups`` for marker evaluation, respectively." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:753 +msgid "``extras`` SHOULD be set to the empty set by default." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:754 +msgid "" +"``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" +"groups` by default." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:757 +msgid "" +"Check if the metadata version specified by :ref:`pylock-lock-version` is " +"supported; an error or warning MUST be raised as appropriate." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:759 +msgid "" +"If :ref:`pylock-requires-python` is specified, check that the environment " +"being installed for meets the requirement; an error MUST be raised if it is " +"not met." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:762 +msgid "" +"If :ref:`pylock-environments` is specified, check that at least one of the " +"environment marker expressions is satisfied; an error MUST be raised if no " +"expression is satisfied." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:765 +msgid "For each package listed in :ref:`pylock-packages`:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:767 +msgid "" +"If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " +"it isn't, skip to the next package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:769 +msgid "" +"If :ref:`pylock-packages-requires-python` is specified, check if it is " +"satisfied; an error MUST be raised if it isn't." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:771 +msgid "" +"Check that no other conflicting instance of the package has been slated to " +"be installed; an error about the ambiguity MUST be raised otherwise." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:773 +msgid "" +"Check that the source of the package is specified appropriately (i.e. there " +"are no conflicting sources in the package entry); an error MUST be raised if " +"any issues are found." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:776 +msgid "Add the package to the set of packages to install." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:778 +msgid "For each package to be installed:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:780 +msgid "If :ref:`pylock-packages-vcs` is set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:782 +msgid "" +"Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" +"commit-id`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:784 +msgid "" +":ref:`Build ` the package, " +"respecting :ref:`pylock-packages-vcs-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:786 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 +#: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 +msgid ":ref:`Install `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:788 +msgid "Else if :ref:`pylock-packages-directory` is set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:790 +msgid "" +":ref:`Build ` the package, " +"respecting :ref:`pylock-packages-directory-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:794 +msgid "Else if :ref:`pylock-packages-archive` is set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 +msgid "Get the file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:797 +msgid "" +"Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" +"archive-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:799 +msgid "" +":ref:`Build ` the package, " +"respecting :ref:`pylock-packages-archive-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:803 +msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:805 +msgid "" +"Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" +"name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " +"an error MUST be raised about a lack of source for the project." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:809 +msgid "Get the file:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:811 +msgid "If :ref:`pylock-packages-wheels-path` is set, use it." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:812 +msgid "" +"Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " +"tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " +"to download the selected wheel file (tools MUST NOT try to change what wheel " +"file to download based on what's available; what file to install should be " +"determined in an offline fashion for reproducibility)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:819 +msgid "" +"Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" +"wheels-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:823 +msgid "" +"Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" +"packages-sdist` is solely set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:828 +msgid "If :ref:`pylock-packages-sdist-path` is set, use it." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:829 +msgid "" +"Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " +"use :ref:`pylock-packages-index` or some tool-specific mechanism to download " +"the file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:833 +msgid "" +"Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" +"sdist-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:835 +msgid ":ref:`Build ` the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:843 +msgid "April 2025: Initial version, approved via :pep:`751`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + +#: ../source/specifications/pypirc.rst:6 +msgid "The :file:`.pypirc` file" +msgstr "" + +#: ../source/specifications/pypirc.rst:8 +msgid "" +"A :file:`.pypirc` file allows you to define the configuration " +"for :term:`package indexes ` (referred to here as " +"\"repositories\"), so that you don't have to enter the URL, username, or " +"password whenever you upload a package with :ref:`twine` or :ref:`flit`." +msgstr "" + +#: ../source/specifications/pypirc.rst:13 +msgid "The :file:`.pypirc` file **SHOULD** be UTF-8 encoded." +msgstr "" + +#: ../source/specifications/pypirc.rst:15 +msgid "" +"Tools that read or write :file:`.pypirc` files may not function correctly if " +"another character encoding is used." +msgstr "" + +#: ../source/specifications/pypirc.rst:18 +msgid "The format (originally defined by the :ref:`distutils` package) is:" +msgstr "" + +#: ../source/specifications/pypirc.rst:37 +msgid "" +"The ``distutils`` section defines an ``index-servers`` field that lists the " +"name of all sections describing a repository." +msgstr "" + +#: ../source/specifications/pypirc.rst:40 +msgid "Each section describing a repository defines three fields:" +msgstr "" + +#: ../source/specifications/pypirc.rst:42 +msgid "``repository``: The URL of the repository." +msgstr "" + +#: ../source/specifications/pypirc.rst:43 +msgid "``username``: The registered username on the repository." +msgstr "" + +#: ../source/specifications/pypirc.rst:44 +msgid "``password``: The password that will used to authenticate the username." +msgstr "" + +#: ../source/specifications/pypirc.rst:48 +msgid "" +"Be aware that this stores your password in plain text. For better security, " +"consider an alternative like `keyring`_, setting environment variables, or " +"providing the password on the command line." +msgstr "" + +#: ../source/specifications/pypirc.rst:52 +msgid "" +"Otherwise, set the permissions on :file:`.pypirc` so that only you can view " +"or modify it. For example, on Linux or macOS, run:" +msgstr "" + +#: ../source/specifications/pypirc.rst:62 +msgid "Common configurations" +msgstr "" + +#: ../source/specifications/pypirc.rst:66 +msgid "" +"These examples apply to :ref:`twine`. Other projects (e.g. :ref:`flit`) also " +"use :file:`.pypirc`, but with different defaults. Please refer to each " +"project's documentation for more details and usage instructions." +msgstr "" + +#: ../source/specifications/pypirc.rst:70 +msgid "" +"Twine's default configuration mimics a :file:`.pypirc` with repository " +"sections for PyPI and TestPyPI:" +msgstr "" + +#: ../source/specifications/pypirc.rst:86 +msgid "" +"Twine will add additional configuration from :file:`$HOME/.pypirc`, the " +"command line, and environment variables to this default configuration." +msgstr "" + +#: ../source/specifications/pypirc.rst:90 +msgid "Using a PyPI token" +msgstr "" + +#: ../source/specifications/pypirc.rst:92 +msgid "" +"To set your `API token`_ for PyPI, you can create a :file:`$HOME/.pypirc` " +"similar to:" +msgstr "" + +#: ../source/specifications/pypirc.rst:101 +msgid "" +"For :ref:`TestPyPI `, add a ``[testpypi]`` section, using " +"the API token from your TestPyPI account." +msgstr "" + +#: ../source/specifications/pypirc.rst:107 +msgid "Using another package index" +msgstr "" + +#: ../source/specifications/pypirc.rst:109 +msgid "" +"To configure an additional repository, you'll need to redefine the ``index-" +"servers`` field to include the repository name. Here is a complete example " +"of a :file:`$HOME/.pypirc` for PyPI, TestPyPI, and a private repository:" +msgstr "" + +#: ../source/specifications/pypirc.rst:136 +msgid "" +"Instead of using the ``password`` field, consider saving your API tokens and " +"passwords securely using `keyring`_ (which is installed by Twine):" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:6 +msgid "``pyproject.toml`` specification" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:10 +msgid "" +"This is a **technical, formal specification**. For a gentle, user-friendly " +"guide to ``pyproject.toml``, see :ref:`writing-pyproject-toml`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:14 +msgid "" +"The ``pyproject.toml`` file acts as a configuration file for packaging-" +"related tools (as well as other tools)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:17 +msgid "" +"The ``pyproject.toml`` file is written in `TOML `_. Three " +"tables are currently specified, namely :ref:`[build-system] `, :ref:`[project] ` and :ref:`[tool] " +"`. Other tables are reserved for future use (tool-" +"specific configuration should use the ``[tool]`` table)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:27 +msgid "Declaring build system dependencies: the ``[build-system]`` table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:29 +msgid "" +"The ``[build-system]`` table declares any Python level dependencies that " +"must be installed in order to run the project's build system successfully." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:35 +msgid "" +"The ``[build-system]`` table is used to store build-related data. Initially, " +"only one key of the table is valid and is mandatory for the table: " +"``requires``. This key must have a value of a list of strings representing " +"dependencies required to execute the build system. The strings in this list " +"follow the :ref:`version specifier specification `." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:42 +msgid "" +"An example ``[build-system]`` table for a project built with ``setuptools`` " +"is:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:51 +msgid "" +"Build tools are expected to use the example configuration file above as " +"their default semantics when a ``pyproject.toml`` file is not present." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:54 +msgid "" +"Tools should not require the existence of the ``[build-system]`` table. A " +"``pyproject.toml`` file may be used to store configuration details other " +"than build-related data and thus lack a ``[build-system]`` table " +"legitimately. If the file exists but is lacking the ``[build-system]`` table " +"then the default values as specified above should be used. If the table is " +"specified but is missing required fields then the tool should consider it an " +"error." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:62 +msgid "" +"Tools may choose to present an error to the user if the file exists, " +"``[build-system]`` table is missing, and there is no clear indication that " +"the project should be built (e.g., no setup.py/setup.cfg or other build " +"configuration files, and no ``[project]`` table)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:67 +msgid "" +"To provide a type-specific representation of the resulting data from the " +"TOML file for illustrative purposes only, the following `JSON Schema " +"`_ would match the data format:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:105 +msgid "Declaring project metadata: the ``[project]`` table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:107 +msgid "" +"The ``[project]`` table specifies the project's :ref:`core metadata `." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:109 +msgid "" +"There are two kinds of metadata: *static* and *dynamic*. Static metadata is " +"specified in the ``pyproject.toml`` file directly and cannot be specified or " +"changed by a tool (this includes data *referred* to by the metadata, e.g. " +"the contents of files referenced by the metadata). Dynamic metadata is " +"listed via the ``dynamic`` key (defined later in this specification) and " +"represents metadata that a tool will later provide." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:117 +msgid "" +"The lack of a ``[project]`` table implicitly means the :term:`build backend " +"` will dynamically provide all keys." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:120 +msgid "The only keys required to be statically defined are:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:124 +msgid "" +"The keys which are required but may be specified *either* statically or " +"listed as dynamic are:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:129 +msgid "" +"All other keys are considered optional and may be specified statically, " +"listed as dynamic, or left unspecified." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:132 +msgid "The complete list of keys allowed in the ``[project]`` table are:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:134 +msgid "``authors``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:136 +msgid "``dependencies``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:138 +#: ../source/specifications/pyproject-toml.rst:574 +msgid "``dynamic``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:139 +msgid "``entry-points``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:140 +msgid "``gui-scripts``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:141 +#: ../source/specifications/pyproject-toml.rst:482 +msgid "``import-names``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:142 +#: ../source/specifications/pyproject-toml.rst:533 +msgid "``import-namespaces``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:146 +msgid "``maintainers``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:148 +msgid "``optional-dependencies``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:161 +#: ../source/specifications/pyproject-toml.rst:176 +#: ../source/specifications/pyproject-toml.rst:191 +#: ../source/specifications/pyproject-toml.rst:245 +#: ../source/specifications/pyproject-toml.rst:257 +msgid "TOML_ type: string" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:162 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Name `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:165 +msgid "The name of the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:167 +msgid "" +"Tools SHOULD :ref:`normalize ` this name, as soon as it " +"is read for internal consistency." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:177 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Version " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:180 +msgid "" +"The version of the project, as defined in the :ref:`Version specifier " +"specification `." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:183 +msgid "Users SHOULD prefer to specify already-normalized versions." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:192 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Summary " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:195 +msgid "" +"The summary description of the project in one line. Tools MAY error if this " +"includes multiple lines." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:204 +msgid "TOML_ type: string or table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:205 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Description " +"` and :ref:`Description-Content-Type `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:209 +msgid "The full description of the project (i.e. the README)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:211 +msgid "" +"The key accepts either a string or a table. If it is a string then it is a " +"path relative to ``pyproject.toml`` to a text file containing the full " +"description. Tools MUST assume the file's encoding is UTF-8. If the file " +"path ends in a case-insensitive ``.md`` suffix, then tools MUST assume the " +"content-type is ``text/markdown``. If the file path ends in a case-" +"insensitive ``.rst``, then tools MUST assume the content-type is ``text/x-" +"rst``. If a tool recognizes more extensions than this PEP, they MAY infer " +"the content-type for the user without specifying this key as ``dynamic``. " +"For all unrecognized suffixes when a content-type is not provided, tools " +"MUST raise an error." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:222 +msgid "" +"The ``readme`` key may also take a table. The ``file`` key has a string " +"value representing a path relative to ``pyproject.toml`` to a file " +"containing the full description. The ``text`` key has a string value which " +"is the full description. These keys are mutually-exclusive, thus tools MUST " +"raise an error if the metadata specifies both keys." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:229 +msgid "" +"A table specified in the ``readme`` key also has a ``content-type`` key " +"which takes a string specifying the content-type of the full description. A " +"tool MUST raise an error if the metadata does not specify this key in the " +"table. If the metadata does not specify the ``charset`` parameter, then it " +"is assumed to be UTF-8. Tools MAY support other encodings if they choose to. " +"Tools MAY support alternative content-types which they can transform to a " +"content-type as supported by the :ref:`core metadata `. " +"Otherwise tools MUST raise an error for unsupported content-types." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:246 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Requires-" +"Python `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:249 +msgid "The Python version requirements of the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:258 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`License-" +"Expression `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:261 +msgid "" +"Text string that is a valid SPDX :term:`license expression `, as specified in :doc:`/specifications/license-expression`. " +"Tools SHOULD validate and perform case normalization of the expression." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:266 +msgid "" +"This key should **only** be specified if the license expression for any and " +"all distribution files created by a build backend using " +"the :file:`pyproject.toml` is the same as the one specified. If the license " +"expression will differ then it should either be specified as dynamic or not " +"set at all." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:273 +msgid "Legacy specification" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:275 +msgid "TOML_ type: table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:276 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`License " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:279 +msgid "" +"The table may have one of two keys. The ``file`` key has a string value that " +"is a file path relative to :file:`pyproject.toml` to the file which contains " +"the license for the project. Tools MUST assume the file's encoding is UTF-8. " +"The ``text`` key has a string value which is the license of the project. " +"These keys are mutually exclusive, so a tool MUST raise an error if the " +"metadata specifies both keys." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:286 +msgid "" +"The table subkeys were deprecated by :pep:`639` in favor of the string value." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:293 +#: ../source/specifications/pyproject-toml.rst:376 +#: ../source/specifications/pyproject-toml.rst:388 +#: ../source/specifications/pyproject-toml.rst:484 +#: ../source/specifications/pyproject-toml.rst:535 +msgid "TOML_ type: array of strings" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:294 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`License-File " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:297 +msgid "" +"An array specifying paths in the project source tree relative to the project " +"root directory (i.e. directory containing :file:`pyproject.toml` or legacy " +"project configuration files, e.g. :file:`setup.py`, :file:`setup.cfg`, etc.) " +"to file(s) containing licenses and other legal notices to be distributed " +"with the package." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:303 +msgid "" +"The strings MUST contain valid glob patterns, as specified in :doc:`/" +"specifications/glob-patterns`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:306 +msgid "" +"Patterns are relative to the directory containing :file:`pyproject.toml`," +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:308 +msgid "" +"Tools MUST assume that license file content is valid UTF-8 encoded text, and " +"SHOULD validate this and raise an error if it is not." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:311 +msgid "Build tools:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:313 +msgid "" +"MUST include all files matched by a listed pattern in all distribution " +"archives." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:315 +msgid "" +"MUST list each matched file path under a License-File field in the Core " +"Metadata." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:318 +msgid "" +"If the ``license-files`` key is present and is set to a value of an empty " +"array, then tools MUST NOT include any license files and MUST NOT raise an " +"error. If the ``license-files`` key is not defined, tools can decide how to " +"handle license files. For example they can choose not to include any files " +"or use their own logic to discover the appropriate files in the distribution." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:332 +msgid "TOML_ type: Array of inline tables with string keys and values" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:333 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Author `, :ref:`Author-email `, :ref:`Maintainer `, and :ref:`Maintainer-" +"email `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:339 +msgid "" +"The people or organizations considered to be the \"authors\" of the project. " +"The exact meaning is open to interpretation — it may list the original or " +"primary authors, current maintainers, or owners of the package." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:344 +msgid "" +"The \"maintainers\" key is similar to \"authors\" in that its exact meaning " +"is open to interpretation." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:347 +msgid "" +"These keys accept an array of tables with 2 keys: ``name`` and ``email``. " +"Both values must be strings. The ``name`` value MUST be a valid email name " +"(i.e. whatever can be put as a name, before an email, in :rfc:`822`) and not " +"contain commas. The ``email`` value MUST be a valid email address. Both keys " +"are optional, but at least one of the keys must be specified in the table." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:354 +msgid "" +"Using the data to fill in :ref:`core metadata ` is as follows:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:357 +msgid "" +"If only ``name`` is provided, the value goes in :ref:`Author ` or :ref:`Maintainer ` as appropriate." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:360 +msgid "" +"If only ``email`` is provided, the value goes in :ref:`Author-email ` or :ref:`Maintainer-email ` as appropriate." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:364 +msgid "" +"If both ``email`` and ``name`` are provided, the value goes in :ref:`Author-" +"email ` or :ref:`Maintainer-email ` as appropriate, with the format ``{name} <{email}>``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:368 +msgid "Multiple values should be separated by commas." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:377 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Keywords " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:380 +msgid "The keywords for the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:389 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Classifier " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:392 +msgid "Trove classifiers which apply to the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:394 +msgid "" +"The use of ``License ::`` classifiers is deprecated and tools MAY issue a " +"warning informing users about that. Build tools MAY raise an error if both " +"the ``license`` string value (translating to ``License-Expression`` metadata " +"field) and the ``License ::`` classifiers are used." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:406 +msgid "TOML_ type: table with keys and values of strings" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:407 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Project-URL " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:410 +msgid "" +"A table of URLs where the key is the URL label and the value is the URL " +"itself. See :ref:`well-known-project-urls` for normalization rules and well-" +"known rules when processing metadata for presentation." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:420 +msgid "Entry points" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:422 +msgid "" +"TOML_ type: table (``[project.scripts]``, ``[project.gui-scripts]``, and " +"``[project.entry-points]``)" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:424 +msgid ":ref:`Entry points specification `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:426 +msgid "" +"There are three tables related to entry points. The ``[project.scripts]`` " +"table corresponds to the ``console_scripts`` group in the :ref:`entry points " +"specification `. The key of the table is the name of the entry " +"point and the value is the object reference." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:432 +msgid "" +"The ``[project.gui-scripts]`` table corresponds to the ``gui_scripts`` group " +"in the :ref:`entry points specification `. Its format is the " +"same as ``[project.scripts]``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:436 +msgid "" +"The ``[project.entry-points]`` table is a collection of tables. Each sub-" +"table's name is an entry point group. The key and value semantics are the " +"same as ``[project.scripts]``. Users MUST NOT create nested sub-tables but " +"instead keep the entry point groups to only one level deep." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:442 +msgid "" +"Build back-ends MUST raise an error if the metadata defines a " +"``[project.entry-points.console_scripts]`` or ``[project.entry-" +"points.gui_scripts]`` table, as they would be ambiguous in the face of " +"``[project.scripts]`` and ``[project.gui-scripts]``, respectively." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:455 +msgid "" +"TOML_ type: Array of :pep:`508` strings (``dependencies``), and a table with " +"values of arrays of :pep:`508` strings (``optional-dependencies``)" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:458 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Requires-" +"Dist ` and :ref:`Provides-Extra `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:462 +msgid "The (optional) dependencies of the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:464 +msgid "" +"For ``dependencies``, it is a key whose value is an array of strings. Each " +"string represents a dependency of the project and MUST be formatted as a " +"valid :pep:`508` string. Each string maps directly to a :ref:`Requires-Dist " +"` entry." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:469 +msgid "" +"For ``optional-dependencies``, it is a table where each key specifies an " +"extra and whose value is an array of strings. The strings of the arrays must " +"be valid :pep:`508` strings. The keys MUST be valid values " +"for :ref:`Provides-Extra `. Each value in the " +"array thus becomes a corresponding :ref:`Requires-Dist ` entry for the matching :ref:`Provides-Extra ` metadata." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:485 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Import-Name " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:488 +msgid "" +"An array of strings specifying the import names that the project exclusively " +"provides when installed. Each string MUST be a valid Python identifier or " +"can be empty. An import name MAY be followed by a semicolon and the term " +"\"private\" (e.g. ``\"; private\"``) with any amount of whitespace " +"surrounding the semicolon." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:493 +msgid "" +"Projects SHOULD list all the shortest import names that are exclusively " +"provided by the project. If any of the shortest names are dotted names, all " +"intervening names from that name to the top-level name should also be listed " +"appropriately in ``import-names`` and/or ``import-namespaces``. For " +"instance, a project which is a single package named spam with multiple " +"submodules would only list ``project.import-names = [\"spam\"]``. A project " +"that lists ``spam.bacon.eggs`` would also need to account for ``spam`` and " +"``spam.bacon`` appropriately in ``import-names`` and ``import-namespaces``. " +"Listing all names acts as a check that the intent of the import names is as " +"expected. As well, projects SHOULD list all import names, public or private, " +"using the ``; private`` modifier as appropriate." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:505 +#: ../source/specifications/pyproject-toml.rst:554 +msgid "" +"If a project lists the same name in both ``import-names`` and ``import-" +"namespaces``, then tools MUST raise an error due to ambiguity." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:508 +msgid "" +"Projects MAY set ``import-names`` to an empty array to represent a project " +"with no import names (i.e. there are no Python modules of any kind in the " +"distribution file)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:512 +#: ../source/specifications/pyproject-toml.rst:557 +msgid "" +"Build back-ends MAY support dynamically calculating the value if the user " +"declares the key in ``project.dynamic``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:515 +msgid "Examples:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:536 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Import-" +"Namespace `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:539 +msgid "" +"An array of strings specifying the import names that the project provides " +"when installed, but not exclusively. Each string MUST be a valid Python " +"identifier. An import name MAY be followed by a semicolon and the term " +"\"private\" (e.g. ``\"; private\"``) with any amount of whitespace " +"surrounding the semicolon. Note that unlike ``import-names``, ``import-" +"namespaces`` CANNOT be an empty array." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:545 +msgid "" +"Projects SHOULD list all the shortest import names that are exclusively " +"provided by the project. If any of the shortest names are dotted names, all " +"intervening names from that name to the top-level name should also be listed " +"appropriately in ``import-names`` and/or ``import-namespaces``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:550 +msgid "" +"This field is used for namespace packages where multiple projects can " +"contribute to the same import namespace. Projects all listing the same " +"import name in ``import-namespaces`` can be installed together without " +"shadowing each other." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:560 +msgid "Example:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:576 +msgid "TOML_ type: array of string" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:577 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Dynamic " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:580 +msgid "" +"Specifies which keys listed by this PEP were intentionally unspecified so " +"another tool can/will provide such metadata dynamically. This clearly " +"delineates which metadata is purposefully unspecified and expected to stay " +"unspecified compared to being provided via tooling later on." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:586 +msgid "" +"A build back-end MUST honour statically-specified metadata (which means the " +"metadata did not list the key in ``dynamic``)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:588 +msgid "" +"A build back-end MUST raise an error if the metadata specifies ``name`` in " +"``dynamic``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:590 +msgid "" +"If the :ref:`core metadata ` specification lists a field as " +"\"Required\", then the metadata MUST specify the key statically or list it " +"in ``dynamic`` (build back-ends MUST raise an error otherwise, i.e. it " +"should not be possible for a required key to not be listed somehow in the " +"``[project]`` table)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:595 +msgid "" +"If the :ref:`core metadata ` specification lists a field as " +"\"Optional\", the metadata MAY list it in ``dynamic`` if the expectation is " +"a build back-end will provide the data for the key later." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:599 +msgid "" +"Build back-ends MUST raise an error if the metadata specifies a key " +"statically as well as being listed in ``dynamic``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:601 +msgid "" +"If the metadata does not list a key in ``dynamic``, then a build back-end " +"CANNOT fill in the requisite metadata on behalf of the user (i.e. " +"``dynamic`` is the only way to allow a tool to fill in metadata and the user " +"must opt into the filling in)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:605 +msgid "" +"Build back-ends MUST raise an error if the metadata specifies a key in " +"``dynamic`` but the build back-end was unable to determine the data for it " +"(omitting the data, if determined to be the accurate value, is acceptable)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:615 +msgid "Arbitrary tool configuration: the ``[tool]`` table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:617 +msgid "" +"The ``[tool]`` table is where any tool related to your Python project, not " +"just build tools, can have users specify configuration data as long as they " +"use a sub-table within ``[tool]``, e.g. the `flit `_ tool would store its configuration in ``[tool.flit]``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:623 +msgid "" +"A mechanism is needed to allocate names within the ``tool.*`` namespace, to " +"make sure that different projects do not attempt to use the same sub-table " +"and collide. Our rule is that a project can use the subtable ``tool.$NAME`` " +"if, and only if, they own the entry for ``$NAME`` in the Cheeseshop/PyPI." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:634 +msgid "" +"May 2016: The initial specification of the ``pyproject.toml`` file, with " +"just a ``[build-system]`` containing a ``requires`` key and a ``[tool]`` " +"table, was approved through :pep:`518`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:638 +msgid "" +"November 2020: The specification of the ``[project]`` table was approved " +"through :pep:`621`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:641 +msgid "" +"December 2024: The ``license`` key was redefined, the ``license-files`` key " +"was added and ``License::`` classifiers were deprecated through :pep:`639`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:644 +msgid "" +"September 2025: Clarity that the ``license`` key applies to all distribution " +"files generated from the :file:`pyproject.toml` file." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:647 +msgid "" +"October 2025: The ``import-names`` and ``import-namespaces`` keys were added " +"through :pep:`794`." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:7 +msgid "Recording installed projects" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:9 +msgid "" +"This document specifies a common format of recording information about " +"Python :term:`projects ` installed in an environment. A common " +"metadata format allows tools to query, manage or uninstall projects, " +"regardless of how they were installed." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:14 +msgid "" +"Almost all information is optional. This allows tools outside the Python " +"ecosystem, such as Linux package managers, to integrate with Python tooling " +"as much as possible. For example, even if an installer cannot easily provide " +"a list of installed files in a format specific to Python tooling, it should " +"still record the name and version of the installed project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:25 +msgid "" +"Each project installed from a distribution must, in addition to files, " +"install a \"``.dist-info``\" directory located alongside importable modules " +"and packages (commonly, the ``site-packages`` directory)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:29 +msgid "" +"This directory is named as ``{name}-{version}.dist-info``, with ``name`` and " +"``version`` fields corresponding to :ref:`core-metadata`. Both fields must " +"be normalized (see the :ref:`name normalization specification ` and the :ref:`version normalization specification `), and replace dash (``-``) characters with " +"underscore (``_``) characters, so the ``.dist-info`` directory always has " +"exactly one dash (``-``) character in its stem, separating the ``name`` and " +"``version`` fields." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:37 +msgid "" +"Historically, tools have failed to replace dot characters or normalize case " +"in the ``name`` field, or not perform normalization in the ``version`` " +"field. Tools consuming ``.dist-info`` directories should expect those fields " +"to be unnormalized, and treat them as equivalent to their normalized " +"counterparts. New tools that write ``.dist-info`` directories MUST normalize " +"both ``name`` and ``version`` fields using the rules described above, and " +"existing tools are encouraged to start normalizing those fields." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:47 +msgid "" +"The ``.dist-info`` directory's name is formatted to unambiguously represent " +"a distribution as a filesystem path. Tools presenting a distribution name to " +"a user should avoid using the normalized name, and instead present the " +"specified name (when needed prior to resolution to an installed package), or " +"read the respective fields in Core Metadata, since values listed there are " +"unescaped and accurately reflect the distribution. Libraries should provide " +"API for such tools to consume, so tools can have access to the unnormalized " +"name when displaying distribution information." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:56 +msgid "" +"This ``.dist-info`` directory may contain the following files, described in " +"detail below:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:59 +msgid "``METADATA``: contains project metadata" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:60 +msgid "``RECORD``: records the list of installed files." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:61 +msgid "" +"``INSTALLER``: records the name of the tool used to install the project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:62 +msgid "``entry_points.txt``: see :ref:`entry-points` for details" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:63 +msgid "``direct_url.json``: see :ref:`direct-url` for details" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:65 +msgid "" +"The ``METADATA`` file is mandatory. All other files may be omitted at the " +"installing tool's discretion. Additional installer-specific files may be " +"present." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:69 +msgid "" +"This :file:`.dist-info/` directory may contain the following directories, " +"described in detail below:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:72 +msgid ":file:`licenses/`: contains license files." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:73 +msgid ":file:`sboms/`: contains Software Bill-of-Materials files (SBOMs)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:77 +msgid "" +"The :ref:`binary-distribution-format` specification describes additional " +"files that may appear in the ``.dist-info`` directory of a :term:`Wheel`. " +"Such files may be copied to the ``.dist-info`` directory of an installed " +"project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:82 +msgid "" +"The previous versions of this specification also specified a ``REQUESTED`` " +"file. This file is now considered a tool-specific extension, but may be " +"standardized again in the future. See `PEP 376 `_ for its original meaning." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:89 +msgid "The METADATA file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:91 +msgid "" +"The ``METADATA`` file contains metadata as described in the :ref:`core-" +"metadata` specification, version 1.1 or greater." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:94 +msgid "" +"The ``METADATA`` file is mandatory. If it cannot be created, or if required " +"core metadata is not available, installers must report an error and fail to " +"install the project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:100 +msgid "The RECORD file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:102 +msgid "" +"The ``RECORD`` file holds the list of installed files. It is a CSV file " +"containing one record (line) per installed file." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:105 +msgid "" +"The CSV dialect must be readable with the default ``reader`` of Python's " +"``csv`` module:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:108 +msgid "field delimiter: ``,`` (comma)," +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:109 +msgid "quoting char: ``\"`` (straight double quote)," +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:110 +msgid "line terminator: either ``\\r\\n`` or ``\\n``." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:112 +msgid "" +"Each record is composed of three elements: the file's **path**, the **hash** " +"of the contents, and its **size**." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:115 +msgid "" +"The *path* may be either absolute, or relative to the directory containing " +"the ``.dist-info`` directory (commonly, the ``site-packages`` directory). On " +"Windows, directories may be separated either by forward- or backslashes (``/" +"`` or ``\\``)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:120 +msgid "" +"The *hash* is either an empty string or the name of a hash algorithm " +"from :py:data:`hashlib.algorithms_guaranteed`, followed by the equals " +"character ``=`` and the digest of the file's contents, encoded with the " +"urlsafe-base64-nopad encoding (:py:func:`base64.urlsafe_b64encode(digest) " +"` with trailing ``=`` removed)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:125 +msgid "" +"The *size* is either the empty string, or file's size in bytes, as a base 10 " +"integer." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:128 +msgid "" +"For any file, either or both of the *hash* and *size* fields may be left " +"empty. Commonly, entries for ``.pyc`` files and the ``RECORD`` file itself " +"have empty *hash* and *size*. For other files, leaving the information out " +"is discouraged, as it prevents verifying the integrity of the installed " +"project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:134 +msgid "" +"If the ``RECORD`` file is present, it must list all installed files of the " +"project, except ``.pyc`` files corresponding to ``.py`` files listed in " +"``RECORD``, which are optional. Notably, the contents of the ``.dist-info`` " +"directory (including the ``RECORD`` file itself) must be listed. Directories " +"should not be listed." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:141 +msgid "" +"To completely uninstall a package, a tool needs to remove all files listed " +"in ``RECORD``, all ``.pyc`` files (of all optimization levels) corresponding " +"to removed ``.py`` files, and any directories emptied by the uninstallation." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:146 +msgid "Here is an example snippet of a possible ``RECORD`` file::" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:165 +msgid "" +"If the ``RECORD`` file is missing, tools that rely on ``.dist-info`` must " +"not attempt to uninstall or upgrade the package. (This restriction does not " +"apply to tools that rely on other sources of information, such as system " +"package managers in Linux distros.)" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:172 +msgid "" +"It is *strongly discouraged* for an installed package to modify itself " +"(e.g., store cache files under its namespace in ``site-packages``). Changes " +"inside ``site-packages`` should be left to specialized installer tools such " +"as pip. If a package is nevertheless modified in this way, then the " +"``RECORD`` must be updated, otherwise uninstalling the package will leave " +"unlisted files in place (possibly resulting in a zombie namespace package)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:181 +msgid "The INSTALLER file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:183 +msgid "" +"If present, ``INSTALLER`` is a single-line text file naming the tool used to " +"install the project. If the installer is executable from the command line, " +"``INSTALLER`` should contain the command name. Otherwise, it should contain " +"a printable ASCII string." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:189 +msgid "The file can be terminated by zero or more ASCII whitespace characters." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:191 +msgid "Here are examples of two possible ``INSTALLER`` files::" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:199 +msgid "" +"This value should be used for informational purposes only. For example, if a " +"tool is asked to uninstall a project but finds no ``RECORD`` file, it may " +"suggest that the tool named in ``INSTALLER`` may be able to do the " +"uninstallation." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:206 +msgid "The entry_points.txt file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:208 +msgid "" +"This file MAY be created by installers to indicate when packages contain " +"components intended for discovery and use by other code, including console " +"scripts and other applications that the installer has made available for " +"execution." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:213 +msgid "Its detailed specification is at :ref:`entry-points`." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:217 +msgid "The direct_url.json file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:219 +msgid "" +"This file MUST be created by installers when installing a distribution from " +"a requirement specifying a direct URL reference (including a VCS URL)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:225 +msgid "Its detailed specification is at :ref:`direct-url`." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:229 +msgid "The :file:`licenses/` subdirectory" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:231 +msgid "" +"If the metadata version is 2.4 or greater and one or more ``License-File`` " +"fields is specified, the :file:`.dist-info/` directory MUST contain " +"a :file:`licenses/` subdirectory which MUST contain the files listed in the " +"``License-File`` fields in the :file:`METADATA` file at their respective " +"paths relative to the :file:`licenses/` directory. Any files in this " +"directory MUST be copied from wheels by the install tools." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:240 +msgid "The :file:`sboms/` subdirectory" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:242 +msgid "" +"All files contained within the :file:`.dist-info/sboms/` directory MUST be " +"Software Bill-of-Materials (SBOM) files that describe software contained " +"within the installed package. Any files in this directory MUST be copied " +"from wheels by the install tools." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:249 +msgid "Intentionally preventing changes to installed packages" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:251 +msgid "" +"In some cases (such as when needing to manage external dependencies in " +"addition to Python ecosystem dependencies), it is desirable for a tool that " +"installs packages into a Python environment to ensure that other tools are " +"not used to uninstall or otherwise modify that installed package, as doing " +"so may cause compatibility problems with the wider environment." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:257 +msgid "To achieve this, affected tools should take the following steps:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:259 +msgid "" +"Rename or remove the ``RECORD`` file to prevent changes via other tools " +"(e.g. appending a suffix to create a non-standard ``RECORD.tool`` file if " +"the tool itself needs the information, or omitting the file entirely if the " +"package contents are tracked and managed via other means)" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:263 +msgid "" +"Write an ``INSTALLER`` file indicating the name of the tool that should be " +"used to manage the package (this allows ``RECORD``-aware tools to provide " +"better error notices when asked to modify affected packages)" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:267 +msgid "" +"Python runtime providers may also prevent inadvertent modification of " +"platform provided packages by modifying the default Python package " +"installation scheme to use a location other than that used by platform " +"provided packages (while also ensuring both locations appear on the default " +"Python import path)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:272 +msgid "" +"In some circumstances, it may be desirable to block even installation of " +"additional packages via Python-specific tools. For these cases refer " +"to :ref:`externally-managed-environments`" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:280 +msgid "" +"June 2009: The original version of this specification was approved " +"through :pep:`376`. At the time, it was known as the *Database of Installed " +"Python Distributions*." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:283 +msgid "" +"March 2020: The specification of the ``direct_url.json`` file was approved " +"through :pep:`610`. It is only mentioned on this page; see :ref:`direct-url` " +"for the full definition." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:286 +msgid "" +"September 2020: Various amendments and clarifications were approved " +"through :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 "" + +#: ../source/specifications/section-distribution-metadata.rst:3 +msgid "Package Distribution Metadata" +msgstr "" + +#: ../source/specifications/section-installation-metadata.rst:3 +msgid "Package Installation Metadata" +msgstr "" + +#: ../source/specifications/section-package-indices.rst:3 +msgid "Package Index Interfaces" +msgstr "" + +#: ../source/specifications/section-python-description-formats.rst:3 +msgid "Python Description Formats" +msgstr "" + +#: ../source/specifications/section-reproducible-environments.rst:3 +msgid "Reproducible Environments" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:6 +msgid "Simple repository API" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:8 +msgid "" +"The keywords \"**MUST**\", \"**MUST NOT**\", \"**REQUIRED**\", " +"\"**SHALL**\", \"**SHALL NOT**\", \"**SHOULD**\", \"**SHOULD NOT**\", " +"\"**RECOMMENDED**\", \"**MAY**\", and \"**OPTIONAL**\"\" in this document " +"are to be interpreted as described in :rfc:`2119`." +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: :ref:`HTML ` and :ref:`JSON `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:23 +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/``." +msgstr "" + +#: ../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: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 "" + +#: ../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 +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 "" + +#: ../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 +msgid "HTML Serialization" +msgstr "" + +#: ../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 +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." +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: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." +msgstr "" + +#: ../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: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: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:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." +msgstr "" + +#: ../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: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: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 " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +msgstr "" + +#: ../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:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." +msgstr "" + +#: ../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:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." +msgstr "" + +#: ../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: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: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 " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." +msgstr "" + +#: ../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 " +"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:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." +msgstr "" + +#: ../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: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: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:258 +#: ../source/specifications/simple-repository-api.rst:603 +msgid "" +"The semantics of how tools should handle yanked files is described " +"in :ref:`file-yanking`." +msgstr "" + +#: ../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:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." +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:274 +msgid "" +"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:277 +msgid "" +"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:489 +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: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: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 " +"presence of the attribute indicates the distribution represented by the " +"anchor tag **MUST** contain a Core Metadata file that will not be modified " +"when the distribution is processed and/or installed." +msgstr "" + +#: ../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 " +"distribution with a ``.metadata`` appended to the distribution's file name. " +"For example, the Core Metadata of a distribution served at ``/files/" +"distribution-1.0-py3.none.any.whl`` would be located at ``/files/" +"distribution-1.0-py3.none.any.whl.metadata``. This is similar to " +"how :ref:`the base HTML API specification ` " +"specifies the GPG signature file's location." +msgstr "" + +#: ../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 " +"``=``, 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:319 +msgid "Backwards Compatibility" +msgstr "" + +#: ../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: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 " +"downloading the distribution to inspect the metadata. This is similar to how " +"prior ``data-`` attribute additions expect existing tools to operate." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:334 +msgid "JSON-based Simple API for Python Package Indexes" +msgstr "" + +#: ../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 " +"responses from :ref:`the base HTML API specification `) should be serialized using `JSON `_." +msgstr "" + +#: ../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 " +"specification ` such that all of the API " +"endpoints (other than the files themselves) will utilize HTTP content " +"negotiation to allow client and server to select the correct serialization " +"format to serve, i.e. either HTML or JSON." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:351 +msgid "" +"Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " +"existing HTML responses to be ``1.0``. Since this spec does not introduce " +"new features into the API, rather it describes a different serialization " +"format for the existing features, this spec does not change the existing " +"``1.0`` version, and instead just describes how to serialize that into JSON." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:358 +msgid "" +"Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " +"changes to the new format would result in no longer being able to expect " +"existing clients to meaningfully understand the format." +msgstr "" + +#: ../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: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: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: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 " +"version numbers, within a major version, **SHOULD** be kept in sync, but the " +"specifics of how a feature serializes into each format may differ, including " +"whether or not that feature is present at all." +msgstr "" + +#: ../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:390 +msgid "JSON Serialization" +msgstr "" + +#: ../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." +msgstr "" + +#: ../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: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: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 " +"the correct location. If relative, they are relative to the current URL as " +"if it were HTML." +msgstr "" + +#: ../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: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: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`` version number, with the same " +"fail/warn semantics as defined in :ref:`the API versioning specification " +"`." +msgstr "" + +#: ../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: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: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: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:434 +#: ../source/specifications/simple-repository-api.rst:508 +msgid "" +"``meta``: The general response metadata as `described earlier `__." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:634 +msgid "As an example:" +msgstr "" + +#: ../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 " +"it is the non-normalized display name or the normalized name. In practice " +"different implementations of these specs are choosing differently here, so " +"relying on it being either non-normalized or normalized is relying on an " +"implementation detail of the repository in question." +msgstr "" + +#: ../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 ` nor this spec requires any specific ordering nor that " +"the ordering is consistent from one request to the next. Mentally this is " +"best thought of as a set, but both JSON and HTML lack the functionality to " +"have sets." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:475 +msgid "" +"The format of this URL is ``//`` where the ```` is " +"replaced by the :ref:`the base HTML API specification ` normalized name for that project, so a project named \"Silly_Walk\" " +"would have a URL like ``/silly-walk/``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:480 +msgid "" +"This URL must respond with a JSON encoded dictionary that has five keys:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:482 +msgid "``name``: The normalized name of the project." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:483 +msgid "``project-status``: An optional dictionary, containing the following:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:505 +msgid "The ``project-status`` key was added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:507 +msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" +"``versions``: A list of version strings specifying all of the project " +"versions uploaded for this project. The value of ``versions`` is logically a " +"set, and as such may not contain duplicates, and the order of the versions " +"is not significant." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:516 +msgid "" +"All of the files listed in the ``files`` key MUST be associated with one of " +"the versions in the ``versions`` key. The ``versions`` key MAY contain " +"versions with no associated files (to represent versions with no files " +"uploaded, if the server has such a concept)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:523 +msgid "" +"Because servers may hold \"legacy\" data from before the adoption " +"of :ref:`the version specifiers specification (VSS) `, " +"version strings currently cannot be required to be valid VSS versions, and " +"therefore cannot be assumed to be orderable using the VSS rules. However, " +"servers **SHOULD** use normalized VSS versions where possible." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:531 +msgid "The ``versions`` key was added with API version 1.1." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:533 +msgid "Each individual file dictionary has the following keys:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:535 +msgid "``filename``: The filename that is being represented." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:536 +msgid "``url``: The URL that the file can be fetched from." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:537 +msgid "" +"``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " +"file. Multiple hashes can be included, and it is up to the client to decide " +"what to do with multiple hashes (it may validate all of them or a subset of " +"them, or nothing at all). These hash names **SHOULD** always be normalized " +"to be lowercase." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:542 +msgid "" +"The ``hashes`` dictionary **MUST** be present, even if no hashes are " +"available for the file, however it is **HIGHLY** recommended that at least " +"one secure, guaranteed-to-be-available hash is always included." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:546 +msgid "" +"By default, any hash algorithm available via :py:mod:`hashlib` (specifically " +"any that can be passed to :py:func:`hashlib.new()` and do not require " +"additional parameters) can be used as a key for the hashes dictionary. At " +"least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " +"**SHOULD** always be included. At the time of this spec, ``sha256`` " +"specifically is recommended." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:551 +msgid "" +"``requires-python``: An **optional** key that exposes the :ref:`core-" +"metadata-requires-python` metadata field. Where this is present, installer " +"tools **SHOULD** ignore the download when installing to a Python version " +"that doesn't satisfy the requirement." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:557 +msgid "" +"Unlike ``data-requires-python`` in :ref:`the base HTML API specification " +"`, the ``requires-python`` key does not require " +"any special escaping other than anything JSON does naturally." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:560 +msgid "" +"``core-metadata``: An **optional** key that indicates that metadata for this " +"file is available, via the same location as specified in :ref:`the API " +"metadata file specification ` " +"(``{file_url}.metadata``). Where this is present, it **MUST** be either a " +"boolean to indicate if the file has an associated metadata file, or a " +"dictionary mapping hash names to a hex encoded digest of the metadata's hash." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:568 +msgid "" +"When this is a dictionary of hashes instead of a boolean, then all the same " +"requirements and recommendations as the ``hashes`` key hold true for this " +"key as well." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:572 +msgid "" +"If this key is missing then the metadata file may or may not exist. If the " +"key value is truthy, then the metadata file is present, and if it is falsey " +"then it is not." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:576 +msgid "" +"It is recommended that servers make the hashes of the metadata file " +"available if possible." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:579 +msgid "" +"``dist-info-metadata``: An **optional**, deprecated alias for ``core-" +"metadata``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:581 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``core-metadata``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:586 +msgid "" +"``dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``core-metadata`` with :pep:`714`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:589 +msgid "" +"``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " +"has an associated GPG signature or not. The URL for the signature file " +"follows what is specified in :ref:`the base HTML API specification ` (``{file_url}.asc``). If this key does not exist, then " +"the signature may or may not exist." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:595 +msgid "" +"``yanked``: An **optional** key which may be either a boolean to indicate if " +"the file has been yanked, or a non empty, but otherwise arbitrary, string to " +"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\"." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:606 +msgid "" +"``size``: A **mandatory** key. It **MUST** contain an integer which is the " +"file size in bytes." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:610 +msgid "The ``size`` key was added with API version 1.1." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:612 +msgid "" +"``upload-time``: An **optional** key that, if present, **MUST** contain a " +"valid ISO 8601 date/time string in the format ``yyyy-mm-" +"ddThh:mm:ss.ffffffZ`` which represents the time the file was uploaded to the " +"index." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:616 +msgid "" +"As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " +"timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " +"part) is optional, and if present may contain up to 6 digits of precision. " +"If a server does not record upload time information for a file, it **MAY** " +"omit the ``upload-time`` key." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:623 +msgid "The ``upload-time`` key was added with API version 1.1." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:625 +msgid "" +"``provenance``: An **optional** key which, if present **MUST** be either a " +"JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " +"associated provenance, with the same rules as ``data-provenance`` in " +"the :ref:`base HTML API specification `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:632 +msgid "The ``provenance`` field was added with API version 1.3." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:670 +msgid "" +"While the ``files`` key is an array, and thus is required to be in some kind " +"of an order, neither :ref:`the base HTML API specification ` nor this spec requires any specific ordering nor that " +"the ordering is consistent from one request to the next. Mentally this is " +"best thought of as a set, but both JSON and HTML lack the functionality to " +"have sets." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:679 +msgid "Content-Types" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:681 +msgid "" +"This spec proposes that all responses from the Simple API will have a " +"standard content type that describes what the response is (a Simple API " +"response), what version of the API it represents, and what serialization " +"format has been used." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:685 +msgid "The structure of this content type will be:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:691 +msgid "" +"Since only major versions should be disruptive to clients attempting to " +"understand one of these API responses, only the major version will be " +"included in the content type, and will be prefixed with a ``v`` to clarify " +"that it is a version number." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:696 +msgid "Which means that for the existing 1.0 API, the content types would be:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:698 +msgid "**JSON:** ``application/vnd.pypi.simple.v1+json``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:699 +msgid "**HTML:** ``application/vnd.pypi.simple.v1+html``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:701 +msgid "" +"In addition to the above, a special \"meta\" version is supported named " +"``latest``, whose purpose is to allow clients to request the absolute latest " +"version, without having to know ahead of time what that version is. It is " +"recommended however, that clients be explicit about what versions they " +"support." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:706 +msgid "" +"To support existing clients which expect the existing :ref:`the base HTML " +"API specification ` API responses to use the " +"``text/html`` content type, this spec further defines ``text/html`` as an " +"alias for the ``application/vnd.pypi.simple.v1+html`` content type." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:713 +msgid "Version + Format Selection" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:715 +msgid "" +"Now that there is multiple possible serializations, we need a mechanism to " +"allow clients to indicate what serialization formats they're able to " +"understand. In addition, it would be beneficial if any possible new major " +"version to the API can be added without disrupting existing clients " +"expecting the previous API version." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:720 +msgid "" +"To enable this, this spec standardizes on the use of HTTP's `Server-Driven " +"Content Negotiation `_." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:723 +msgid "" +"While this spec won't fully describe the entirety of server-driven content " +"negotiation, the flow is roughly:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:726 +msgid "" +"The client makes an HTTP request containing an ``Accept`` header listing all " +"of the version+format content types that they are able to understand." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:728 +msgid "" +"The server inspects that header, selects one of the listed content types, " +"then returns a response using that content type (treating the absence of an " +"``Accept`` header as ``Accept: */*``)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:731 +msgid "" +"If the server does not support any of the content types in the ``Accept`` " +"header then they are able to choose between 3 different options for how to " +"respond:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:735 +msgid "" +"Select a default content type other than what the client has requested and " +"return a response with that." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:737 +msgid "" +"Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " +"requested content types were available, and the server was unable or " +"unwilling to select a default content type to respond with." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:740 +msgid "" +"Return a HTTP ``300 Multiple Choices`` response that contains a list of all " +"of the possible responses that could have been chosen." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:742 +msgid "" +"The client interprets the response, handling the different types of " +"responses that the server may have responded with." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:745 +msgid "" +"This spec does not specify which choices the server makes in regards to " +"handling a content type that it isn't able to return, and clients **SHOULD** " +"be prepared to handle all of the possible responses in whatever way makes " +"the most sense for that client." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:750 +msgid "" +"However, as there is no standard format for how a ``300 Multiple Choices`` " +"response can be interpreted, this spec highly discourages servers from " +"utilizing that option, as clients will have no way to understand and select " +"a different content-type to request. In addition, it's unlikely that the " +"client *could* understand a different content type anyways, so at best this " +"response would likely just be treated the same as a ``406 Not Acceptable`` " +"error." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:757 +msgid "" +"This spec **does** require that if the meta version ``latest`` is being " +"used, the server **MUST** respond with the content type for the actual " +"version that is contained in the response (i.e. an ``Accept: application/" +"vnd.pypi.simple.latest+json`` request that returns a ``v1.x`` response " +"should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:764 +msgid "" +"The ``Accept`` header is a comma separated list of content types that the " +"client understands and is able to process. It supports three different " +"formats for each content type that is being requested:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:768 +msgid "``$type/$subtype``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:769 +msgid "``$type/*``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:770 +msgid "``*/*``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:772 +msgid "" +"For the use of selecting a version+format, the most useful of these is " +"``$type/$subtype``, as that is the only way to actually specify the version " +"and format you want." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:776 +msgid "" +"The order of the content types listed in the ``Accept`` header does not have " +"any specific meaning, and the server **SHOULD** consider all of them to be " +"equally valid to respond with. If a client wishes to specify that they " +"prefer a specific content type over another, they may use the ``Accept`` " +"header's `quality value `_ syntax." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:783 +msgid "" +"This allows a client to specify a priority for a specific entry in their " +"``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " +"and ``1`` inclusive, with up to 3 decimal digits. When interpreting this " +"value, an entry with a higher quality has priority over an entry with a " +"lower quality, and any entry without a quality present will default to a " +"quality of ``1``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:789 +msgid "" +"However, clients should keep in mind that a server is free to select **any** " +"of the content types they've asked for, regardless of their requested " +"priority, and it may even return a content type that they did **not** ask " +"for." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:793 +msgid "" +"To aid clients in determining the content type of the response that they " +"have received from an API request, this spec requires that servers always " +"include a ``Content-Type`` header indicating the content type of the " +"response. This is technically a backwards incompatible change, however in " +"practice `pip has been enforcing this requirement `_ so the risks for actual breakages is low." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:800 +msgid "An example of how a client can operate would look like:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:851 +msgid "" +"If a client wishes to only support HTML or only support JSON, then they " +"would just remove the content types that they do not want from the " +"``Accept`` header, and turn receiving them into an error." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:857 +msgid "Alternative Negotiation Mechanisms" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:859 +msgid "" +"While using HTTP's Content negotiation is considered the standard way for a " +"client and server to coordinate to ensure that the client is getting an HTTP " +"response that it is able to understand, there are situations where that " +"mechanism may not be sufficient. For those cases this spec has alternative " +"negotiation mechanisms that may *optionally* be used instead." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:867 +msgid "URL Parameter" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:869 +msgid "" +"Servers that implement the Simple API may choose to support a URL parameter " +"named ``format`` to allow the clients to request a specific version of the " +"URL." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:872 +msgid "" +"The value of the ``format`` parameter should be **one** of the valid content " +"types. Passing multiple content types, wild cards, quality values, etc... is " +"**not** supported." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:876 +msgid "" +"Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " +"for interacting with the API. This negotiation mechanism is intended to " +"allow for easier human based exploration of the API within a browser, or to " +"allow documentation or notes to link to a specific version+format." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:881 +msgid "" +"Servers that do not support this parameter may choose to return an error " +"when it is present, or they may simple ignore its presence." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:884 +msgid "" +"When a server does implement this parameter, it **SHOULD** take precedence " +"over any values in the client's ``Accept`` header, and if the server does " +"not support the requested format, it may choose to fall back to the " +"``Accept`` header, or choose any of the error conditions that standard " +"server-driven content negotiation typically has (e.g. ``406 Not Available``, " +"``303 Multiple Choices``, or selecting a default type to return)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:893 +msgid "Endpoint Configuration" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:895 +msgid "" +"This option technically is not a special option at all, it is just a natural " +"consequence of using content negotiation and allowing servers to select " +"which of the available content types is their default." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:899 +msgid "" +"If a server is unwilling or unable to implement the server-driven content " +"negotiation, and would instead rather require users to explicitly configure " +"their client to select the version they want, then that is a supported " +"configuration." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:903 +msgid "" +"To enable this, a server should make multiple endpoints (for instance, ``/" +"simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " +"they wish to support. Under that endpoint, they can host a copy of their " +"repository that only supports one (or a subset) of the content-types. When a " +"client makes a request using the ``Accept`` header, the server can ignore it " +"and return the content type that corresponds to that endpoint." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:910 +msgid "" +"For clients that wish to require specific configuration, they can keep track " +"of which version+format a specific repository URL was configured for, and " +"when making a request to that server, emit an ``Accept`` header that *only* " +"includes the correct content type." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:918 +msgid "" +"This section is non-normative, and represents what the spec authors believe " +"to be the best default implementation decisions for something implementing " +"this spec, but it does **not** represent any sort of requirement to match " +"these decisions." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:922 +msgid "" +"These decisions have been chosen to maximize the number of requests that can " +"be moved onto the newest version of an API, while maintaining the greatest " +"amount of compatibility. In addition, they've also tried to make using the " +"API provide guardrails that attempt to push clients into making the best " +"choices it can." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:927 +msgid "It is recommended that servers:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:929 +msgid "" +"Support all 3 content types described in this spec, using server-driven " +"content negotiation, for as long as they reasonably can, or at least as long " +"as they're receiving non trivial traffic that uses the HTML responses." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:933 +msgid "" +"When encountering an ``Accept`` header that does not contain any content " +"types that it knows how to work with, the server should not ever return a " +"``300 Multiple Choice`` response, and instead return a ``406 Not " +"Acceptable`` response." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:938 +msgid "" +"However, if choosing to use the endpoint configuration, you should prefer to " +"return a ``200 OK`` response in the expected content type for that endpoint." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:941 +msgid "" +"When selecting an acceptable version, the server should choose the highest " +"version that the client supports, with the most expressive/featureful " +"serialization format, taking into account the specificity of the client " +"requests as well as any quality priority values they have expressed, and it " +"should only use the ``text/html`` content type as a last resort." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:947 +msgid "It is recommended that clients:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:949 +msgid "" +"Support all 3 content types described in this spec, using server-driven " +"content negotiation, for as long as they reasonably can." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:952 +msgid "" +"When constructing an ``Accept`` header, include all of the content types " +"that you support." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:955 +msgid "" +"You should generally *not* include a quality priority value for your content " +"types, unless you have implementation specific reasons that you want the " +"server to take into account (for example, if you're using the standard " +"library HTML parser and you're worried that there may be some kinds of HTML " +"responses that you're unable to parse in some edge cases)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:961 +msgid "" +"The one exception to this recommendation is that it is recommended that you " +"*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " +"type, unless it is the only content type that you are requesting." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:965 +msgid "" +"Explicitly select what versions they are looking for, rather than using the " +"``latest`` meta version during normal operation." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:968 +msgid "" +"Check the ``Content-Type`` of the response and ensure it matches something " +"that you were expecting." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:976 +msgid "September 2015: initial form of the HTML format, in :pep:`503`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:977 +msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:978 +msgid "May 2019: \"yank\" support, in :pep:`592`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:979 +msgid "" +"July 2020: API versioning convention and metadata, and declaring the HTML " +"format as API v1, in :pep:`629`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:981 +msgid "" +"May 2021: providing package metadata independently from a package, " +"in :pep:`658`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:983 +msgid "" +"May 2022: initial form of the JSON format, with a mechanism for clients to " +"choose between them, and declaring both formats as API v1, in :pep:`691`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:985 +msgid "" +"October 2022: project versions and file size and upload-time in the JSON " +"format, in :pep:`700`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:987 +msgid "" +"June 2023: renaming the field which provides package metadata independently " +"from a package, in :pep:`714`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:989 +msgid "" +"November 2024: provenance metadata in the HTML and JSON formats, " +"in :pep:`740`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:990 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:991 +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 "" + +#: ../source/specifications/source-distribution-format.rst:8 +msgid "" +"The current standard source distribution format is identified by the " +"presence of a :file:`pyproject.toml` file in the distribution archive. The " +"layout of such a distribution was originally specified in :pep:`517` and is " +"formally documented here." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:13 +msgid "" +"There is also the legacy source distribution format, implicitly defined by " +"the behaviour of ``distutils`` module in the standard library, when " +"executing :command:`setup.py sdist`. This document does not attempt to " +"standardise this format, except to note that if a legacy source distribution " +"contains a ``PKG-INFO`` file using metadata version 2.2 or later, then it " +"MUST follow the rules applicable to source distributions defined in the " +"metadata specification." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:21 +msgid "Source distributions are also known as *sdists* for short." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:26 +msgid "Source trees" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:28 +msgid "" +"A *source tree* is a collection of files and directories -- like a version " +"control system checkout -- which contains a :file:`pyproject.toml` file that " +"can be used to build a source distribution from the contained files and " +"directories. :pep:`517` and :pep:`518` specify what is required to meet the " +"definition of what :file:`pyproject.toml` must contain for something to be " +"deemed a source tree." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:38 +msgid "Source distribution file name" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:40 +msgid "" +"The file name of a sdist was standardised in :pep:`625`. The file name must " +"be in the form ``{name}-{version}.tar.gz``, where ``{name}`` is normalised " +"according to the same rules as for binary distributions (see :ref:`binary-" +"distribution-format`), and ``{version}`` is the canonicalized form of the " +"project version (see :ref:`version-specifiers`)." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:46 +msgid "" +"The name and version components of the filename MUST match the values stored " +"in the metadata contained in the file." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:49 +msgid "" +"Code that produces a source distribution file MUST give the file a name that " +"matches this specification. This includes the ``build_sdist`` hook of " +"a :term:`build backend `." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:53 +msgid "" +"Code that processes source distribution files MAY recognise source " +"distribution files by the ``.tar.gz`` suffix and the presence of precisely " +"*one* hyphen in the filename. Code that does this may then use the " +"distribution name and version from the filename without further verification." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:59 +msgid "Source distribution file format" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:61 +msgid "" +"A ``.tar.gz`` source distribution (sdist) contains a single top-level " +"directory called ``{name}-{version}`` (e.g. ``foo-1.0``), containing the " +"source files of the package. The name and version MUST match the metadata " +"stored in the file. This directory must also contain " +"a :file:`pyproject.toml` in the format defined in :ref:`pyproject-toml-" +"spec`, and a :file:`PKG-INFO` file containing metadata in the format " +"described in the :ref:`core-metadata` specification. The metadata MUST " +"conform to at least version 2.2 of the metadata specification." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:69 +msgid "" +"If the metadata version is 2.4 or greater, the source distribution MUST " +"contain any license files specified by the ``License-File`` field in " +"the :file:`PKG-INFO` at their respective paths relative to the root " +"directory of the sdist (containing the :file:`pyproject.toml` and " +"the :file:`PKG-INFO` metadata)." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:74 +msgid "" +"No other content of a sdist is required or defined. Build systems can store " +"whatever information they need in the sdist to build the project." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:77 +msgid "" +"The tarball should use the modern POSIX.1-2001 pax tar format, which " +"specifies UTF-8 based file names. In particular, source distribution files " +"must be readable using the standard library tarfile module with the open " +"flag 'r:gz'." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:85 +msgid "Source distribution archive features" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:87 +msgid "" +"Because extracting tar files as-is is dangerous, and the results are " +"platform-specific, archive features of source distributions are limited." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:91 +msgid "Unpacking with the data filter" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:93 +msgid "" +"When extracting a source distribution, tools MUST either " +"use :py:func:`tarfile.data_filter` (e.g. :py:meth:`TarFile.extractall(..., " +"filter='data') `), OR follow the *Unpacking " +"without the data filter* section below." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:97 +msgid "" +"As an exception, on Python interpreters without :py:func:`hasattr(tarfile, " +"'data_filter') ` (:pep:`706`), tools that normally use " +"that filter (directly on indirectly) MAY warn the user and ignore this " +"specification. The trade-off between usability (e.g. fully trusting the " +"archive) and security (e.g. refusing to unpack) is left up to the tool in " +"this case." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:105 +msgid "Unpacking without the data filter" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:107 +msgid "" +"Tools that do not use the ``data`` filter directly (e.g. for backwards " +"compatibility, allowing additional features, or not using Python) MUST " +"follow this section. (At the time of this writing, the ``data`` filter also " +"follows this section, but it may get out of sync in the future.)" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:113 +msgid "" +"The following files are invalid in an *sdist* archive. Upon encountering " +"such an entry, tools SHOULD notify the user, MUST NOT unpack the entry, and " +"MAY abort with a failure:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:117 +msgid "Files that would be placed outside the destination directory." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:118 +msgid "Links (symbolic or hard) pointing outside the destination directory." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:119 +msgid "Device files (including pipes)." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:121 +msgid "" +"The following are also invalid. Tools MAY treat them as above, but are NOT " +"REQUIRED to do so:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:124 +msgid "Files with a ``..`` component in the filename or link target." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:125 +msgid "Links pointing to a file that is not part of the archive." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:127 +msgid "" +"Tools MAY unpack links (symbolic or hard) as regular files, using content " +"from the archive." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:130 +msgid "When extracting *sdist* archives:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:132 +msgid "" +"Leading slashes in file names MUST be dropped. (This is nowadays standard " +"behaviour for ``tar`` unpacking.)" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:134 +msgid "For each ``mode`` (Unix permission) bit, tools MUST either:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:136 +msgid "use the platform's default for a new file/directory (respectively)," +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:137 +msgid "set the bit according to the archive, or" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:138 +msgid "" +"use the bit from ``rw-r--r--`` (``0o644``) for non-executable files or " +"``rwxr-xr-x`` (``0o755``) for executable files and directories." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:141 +msgid "High ``mode`` bits (setuid, setgid, sticky) MUST be cleared." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:142 +msgid "It is RECOMMENDED to preserve the user *executable* bit." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:146 +msgid "Further hints" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:148 +msgid "" +"Tool authors are encouraged to consider how *hints for further verification* " +"in ``tarfile`` documentation apply to their tool." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:155 +msgid "" +"November 2020: The original version of this specification was approved " +"through :pep:`643`." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:157 +msgid "July 2021: Defined what a source tree is." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:158 +msgid "" +"September 2022: The filename of a source distribution was standardized " +"through :pep:`625`." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:160 +msgid "" +"August 2023: Source distribution archive features were standardized " +"through :pep:`721`." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:162 +msgid "" +"December 2024: License files inclusion into source distribution was " +"standardized through :pep:`639`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:7 +#: ../source/specifications/version-specifiers.rst:800 +msgid "Version specifiers" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:10 +msgid "" +"This specification describes a scheme for identifying versions of Python " +"software distributions, and declaring dependencies on particular versions." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:15 +msgid "Definitions" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:17 +msgid "" +"The key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL " +"NOT\", \"SHOULD\", \"SHOULD NOT\", \"RECOMMENDED\", \"MAY\", and " +"\"OPTIONAL\" in this document are to be interpreted as described " +"in :rfc:`2119`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:21 +msgid "" +"\"Build tools\" are automated tools intended to run on development systems, " +"producing source and binary distribution archives. Build tools may also be " +"invoked by integration tools in order to build software distributed as " +"sdists rather than prebuilt binary archives." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:26 +msgid "" +"\"Index servers\" are active distribution registries which publish version " +"and dependency metadata and place constraints on the permitted metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:29 +msgid "" +"\"Publication tools\" are automated tools intended to run on development " +"systems and upload source and binary distribution archives to index servers." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:32 +msgid "" +"\"Installation tools\" are integration tools specifically intended to run on " +"deployment targets, consuming source and binary distribution archives from " +"an index server or other designated location and deploying them to the " +"target system." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:37 +msgid "" +"\"Automated tools\" is a collective term covering build tools, index " +"servers, publication tools, integration tools and any other software that " +"produces or consumes distribution version and dependency metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:43 +msgid "Version scheme" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:45 +msgid "" +"Distributions are identified by a public version identifier which supports " +"all defined version comparison operations" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:48 +msgid "" +"The version scheme is used both to describe the distribution version " +"provided by a particular distribution archive, as well as to place " +"constraints on the version of dependencies needed in order to build or run " +"the software." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:57 +msgid "Public version identifiers" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:59 +msgid "" +"The canonical public version identifiers MUST comply with the following " +"scheme::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:64 +msgid "" +"Public version identifiers MUST NOT include leading or trailing whitespace." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:66 +msgid "Public version identifiers MUST be unique within a given distribution." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:68 +msgid "" +"Installation tools SHOULD ignore any public versions which do not comply " +"with this scheme but MUST also include the normalizations specified below. " +"Installation tools MAY warn the user when non-compliant or ambiguous " +"versions are detected." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:73 +msgid "" +"See also :ref:`version-specifiers-regex` which provides a regular expression " +"to check strict conformance with the canonical format, as well as a more " +"permissive regular expression accepting inputs that may require subsequent " +"normalization." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:78 +msgid "Public version identifiers are separated into up to five segments:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:80 +msgid "Epoch segment: ``N!``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:81 +msgid "Release segment: ``N(.N)*``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:82 +msgid "Pre-release segment: ``{a|b|rc}N``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:83 +msgid "Post-release segment: ``.postN``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:84 +msgid "Development release segment: ``.devN``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:86 +msgid "" +"Any given release will be a \"final release\", \"pre-release\", \"post-" +"release\" or \"developmental release\" as defined in the following sections." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:89 +msgid "" +"All numeric components MUST be non-negative integers represented as " +"sequences of ASCII digits." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:92 +msgid "" +"All numeric components MUST be interpreted and ordered according to their " +"numeric value, not as text strings." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:95 +msgid "" +"All numeric components MAY be zero. Except as described below for the " +"release segment, a numeric component of zero has no special significance " +"aside from always being the lowest possible value in the version ordering." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:101 +msgid "" +"Some hard to read version identifiers are permitted by this scheme in order " +"to better accommodate the wide range of versioning practices across existing " +"public and private Python projects." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:105 +msgid "" +"Accordingly, some of the versioning practices which are technically " +"permitted by the specification are strongly discouraged for new projects. " +"Where this is the case, the relevant details are noted in the following " +"sections." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:116 +msgid "Local version identifiers MUST comply with the following scheme::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:120 +msgid "" +"They consist of a normal public version identifier (as defined in the " +"previous section), along with an arbitrary \"local version label\", " +"separated from the public version identifier by a plus. Local version labels " +"have no specific semantics assigned, but some syntactic restrictions are " +"imposed." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:125 +msgid "" +"Local version identifiers are used to denote fully API (and, if applicable, " +"ABI) compatible patched versions of upstream projects. For example, these " +"may be created by application developers and system integrators by applying " +"specific backported bug fixes when upgrading to a new upstream release would " +"be too disruptive to the application or other integrated system (such as a " +"Linux distribution)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:132 +msgid "" +"The inclusion of the local version label makes it possible to differentiate " +"upstream releases from potentially altered rebuilds by downstream " +"integrators. The use of a local version identifier does not affect the kind " +"of a release but, when applied to a source distribution, does indicate that " +"it may not contain the exact same code as the corresponding upstream release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:138 +msgid "" +"To ensure local version identifiers can be readily incorporated as part of " +"filenames and URLs, and to avoid formatting inconsistencies in hexadecimal " +"hash representations, local version labels MUST be limited to the following " +"set of permitted characters:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:143 +msgid "ASCII letters (``[a-zA-Z]``)" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:144 +msgid "ASCII digits (``[0-9]``)" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:145 +msgid "periods (``.``)" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:147 +msgid "Local version labels MUST start and end with an ASCII letter or digit." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:149 +msgid "" +"Comparison and ordering of local versions considers each segment of the " +"local version (divided by a ``.``) separately. If a segment consists " +"entirely of ASCII digits then that section should be considered an integer " +"for comparison purposes and if a segment contains any ASCII letters then " +"that segment is compared lexicographically with case insensitivity. When " +"comparing a numeric and lexicographic segment, the numeric section always " +"compares as greater than the lexicographic segment. Additionally a local " +"version with a great number of segments will always compare as greater than " +"a local version with fewer segments, as long as the shorter local version's " +"segments match the beginning of the longer local version's segments exactly." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:160 +msgid "" +"An \"upstream project\" is a project that defines its own public versions. A " +"\"downstream project\" is one which tracks and redistributes an upstream " +"project, potentially backporting security and bug fixes from later versions " +"of the upstream project." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:165 +msgid "" +"Local version identifiers SHOULD NOT be used when publishing upstream " +"projects to a public index server, but MAY be used to identify private " +"builds created directly from the project source. Local version identifiers " +"SHOULD be used by downstream projects when releasing a version that is API " +"compatible with the version of the upstream project identified by the public " +"version identifier, but contains additional changes (such as bug fixes). As " +"the Python Package Index is intended solely for indexing and hosting " +"upstream projects, it MUST NOT allow the use of local version identifiers." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:175 +msgid "" +"Source distributions using a local version identifier SHOULD provide the " +"``python.integrator`` extension metadata (as defined in :pep:`459`)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:180 +msgid "Final releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:182 +msgid "" +"A version identifier that consists solely of a release segment and " +"optionally an epoch identifier is termed a \"final release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:185 +msgid "" +"The release segment consists of one or more non-negative integer values, " +"separated by dots::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:190 +msgid "" +"Final releases within a project MUST be numbered in a consistently " +"increasing fashion, otherwise automated tools will not be able to upgrade " +"them correctly." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:194 +msgid "" +"Comparison and ordering of release segments considers the numeric value of " +"each component of the release segment in turn. When comparing release " +"segments with different numbers of components, the shorter segment is padded " +"out with additional zeros as necessary." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:199 +msgid "" +"While any number of additional components after the first are permitted " +"under this scheme, the most common variants are to use two components " +"(\"major.minor\") or three components (\"major.minor.micro\")." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:203 +msgid "For example::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:218 +msgid "" +"A release series is any set of final release numbers that start with a " +"common prefix. For example, ``3.3.1``, ``3.3.5`` and ``3.3.9.45`` are all " +"part of the ``3.3`` release series." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:224 +msgid "" +"``X.Y`` and ``X.Y.0`` are not considered distinct release numbers, as the " +"release segment comparison rules implicit expand the two component form to " +"``X.Y.0`` when comparing it to any release segment that includes three " +"components." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:229 +msgid "" +"Date-based release segments are also permitted. An example of a date-based " +"release scheme using the year and month of the release::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:243 +msgid "Pre-releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:245 +msgid "" +"Some projects use an \"alpha, beta, release candidate\" pre-release cycle to " +"support testing by their users prior to a final release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:248 +msgid "" +"If used as part of a project's development cycle, these pre-releases are " +"indicated by including a pre-release segment in the version identifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:256 +msgid "" +"A version identifier that consists solely of a release segment and a pre-" +"release segment is termed a \"pre-release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:259 +msgid "" +"The pre-release segment consists of an alphabetical identifier for the pre-" +"release phase, along with a non-negative integer value. Pre-releases for a " +"given release are ordered first by phase (alpha, beta, release candidate) " +"and then by the numerical component within that phase." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:264 +msgid "" +"Installation tools MAY accept both ``c`` and ``rc`` releases for a common " +"release segment in order to handle some existing legacy distributions." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:267 +msgid "" +"Installation tools SHOULD interpret ``c`` versions as being equivalent to " +"``rc`` versions (that is, ``c1`` indicates the same version as ``rc1``)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:270 +msgid "" +"Build tools, publication tools and index servers SHOULD disallow the " +"creation of both ``rc`` and ``c`` releases for a common release segment." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:275 +msgid "Post-releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:277 +msgid "" +"Some projects use post-releases to address minor errors in a final release " +"that do not affect the distributed software (for example, correcting an " +"error in the release notes)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:281 +msgid "" +"If used as part of a project's development cycle, these post-releases are " +"indicated by including a post-release segment in the version identifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:286 +msgid "" +"A version identifier that includes a post-release segment without a " +"developmental release segment is termed a \"post-release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:289 +msgid "" +"The post-release segment consists of the string ``.post``, followed by a non-" +"negative integer value. Post-releases are ordered by their numerical " +"component, immediately following the corresponding release, and ahead of any " +"subsequent release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:296 +msgid "" +"The use of post-releases to publish maintenance releases containing actual " +"bug fixes is strongly discouraged. In general, it is better to use a longer " +"release number and increment the final component for each maintenance " +"release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:301 +msgid "Post-releases are also permitted for pre-releases::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:309 +msgid "" +"Creating post-releases of pre-releases is strongly discouraged, as it makes " +"the version identifier difficult to parse for human readers. In general, it " +"is substantially clearer to simply create a new pre-release by incrementing " +"the numeric component." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:316 +msgid "Developmental releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:318 +msgid "" +"Some projects make regular developmental releases, and system packagers " +"(especially for Linux distributions) may wish to create early releases " +"directly from source control which do not conflict with later project " +"releases." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:323 +msgid "" +"If used as part of a project's development cycle, these developmental " +"releases are indicated by including a developmental release segment in the " +"version identifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:329 +msgid "" +"A version identifier that includes a developmental release segment is termed " +"a \"developmental release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:332 +msgid "" +"The developmental release segment consists of the string ``.dev``, followed " +"by a non-negative integer value. Developmental releases are ordered by their " +"numerical component, immediately before the corresponding release (and " +"before any pre-releases with the same release segment), and following any " +"previous release (including any post-releases)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:338 +msgid "" +"Developmental releases are also permitted for pre-releases and post-" +"releases::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:346 +msgid "" +"Do note that development releases are considered a type of pre-release when " +"handling them." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:351 +msgid "" +"While they may be useful for continuous integration purposes, publishing " +"developmental releases of pre-releases to general purpose public index " +"servers is strongly discouraged, as it makes the version identifier " +"difficult to parse for human readers. If such a release needs to be " +"published, it is substantially clearer to instead create a new pre-release " +"by incrementing the numeric component." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:358 +msgid "" +"Developmental releases of post-releases are also strongly discouraged, but " +"they may be appropriate for projects which use the post-release notation for " +"full maintenance releases which may include code changes." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:364 +msgid "Version epochs" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:366 +msgid "" +"If included in a version identifier, the epoch appears before all other " +"components, separated from the release segment by an exclamation mark::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:371 +msgid "If no explicit epoch is given, the implicit epoch is ``0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:373 +msgid "" +"Most version identifiers will not include an epoch, as an explicit epoch is " +"only needed if a project *changes* the way it handles version numbering in a " +"way that means the normal version ordering rules will give the wrong answer. " +"For example, if a project is using date based versions like ``2014.04`` and " +"would like to switch to semantic versions like ``1.0``, then the new " +"releases would be identified as *older* than the date based releases when " +"using the normal sorting scheme::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:387 +msgid "" +"However, by specifying an explicit epoch, the sort order can be changed " +"appropriately, as all versions from a later epoch are sorted after versions " +"from an earlier epoch::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:399 +msgid "" +"Use of nonzero epochs is discouraged. They are often not supported or " +"discouraged by downstream packaging where Python packages may need to be " +"consumed, and due to their scarce use they may also not be well supported by " +"Python packaging tools." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:404 +msgid "" +"When version scheme needs to be changed, it is preferable to continue with " +"monotonically increasing numbers in epoch zero. For example, the version " +"2026.x could be unambiguously followed by 3000.x." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:408 +msgid "" +"See `Discouraging use of epoch segments in versions `__ for the relevant discussion." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:416 +msgid "Normalization" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:418 +msgid "" +"In order to maintain better compatibility with existing versions there are a " +"number of \"alternative\" syntaxes that MUST be taken into account when " +"parsing versions. These syntaxes MUST be considered when parsing a version, " +"however they should be \"normalized\" to the standard syntax defined above." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:425 +msgid "Case sensitivity" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:427 +msgid "" +"All ascii letters should be interpreted case insensitively within a version " +"and the normal form is lowercase. This allows versions such as ``1.1RC1`` " +"which would be normalized to ``1.1rc1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:433 +msgid "Integer Normalization" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:435 +msgid "" +"All integers are interpreted via the ``int()`` built in and normalize to the " +"string form of the output. This means that an integer version of ``00`` " +"would normalize to ``0`` while ``09000`` would normalize to ``9000``. This " +"does not hold true for integers inside of an alphanumeric segment of a local " +"version such as ``1.0+foo0100`` which is already in its normalized form." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:443 +msgid "Pre-release separators" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:445 +msgid "" +"Pre-releases should allow a ``.``, ``-``, or ``_`` separator between the " +"release segment and the pre-release segment. The normal form for this is " +"without a separator. This allows versions such as ``1.1.a1`` or ``1.1-a1`` " +"which would be normalized to ``1.1a1``. It should also allow a separator to " +"be used between the pre-release signifier and the numeral. This allows " +"versions such as ``1.0a.1`` which would be normalized to ``1.0a1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:454 +msgid "Pre-release spelling" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:456 +msgid "" +"Pre-releases allow the additional spellings of ``alpha``, ``beta``, ``c``, " +"``pre``, and ``preview`` for ``a``, ``b``, ``rc``, ``rc``, and ``rc`` " +"respectively. This allows versions such as ``1.1alpha1``, ``1.1beta2``, or " +"``1.1c3`` which normalize to ``1.1a1``, ``1.1b2``, and ``1.1rc3``. In every " +"case the additional spelling should be considered equivalent to their normal " +"forms." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:465 +msgid "Implicit pre-release number" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:467 +msgid "" +"Pre releases allow omitting the numeral in which case it is implicitly " +"assumed to be ``0``. The normal form for this is to include the ``0`` " +"explicitly. This allows versions such as ``1.2a`` which is normalized to " +"``1.2a0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:473 +msgid "Post release separators" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:475 +msgid "" +"Post releases allow a ``.``, ``-``, or ``_`` separator as well as omitting " +"the separator all together. The normal form of this is with the ``.`` " +"separator. This allows versions such as ``1.2-post2`` or ``1.2post2`` which " +"normalize to ``1.2.post2``. Like the pre-release separator this also allows " +"an optional separator between the post release signifier and the numeral. " +"This allows versions like ``1.2.post-2`` which would normalize to " +"``1.2.post2``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:484 +msgid "Post release spelling" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:486 +msgid "" +"Post-releases allow the additional spellings of ``rev`` and ``r``. This " +"allows versions such as ``1.0-r4`` which normalizes to ``1.0.post4``. As " +"with the pre-releases the additional spellings should be considered " +"equivalent to their normal forms." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:493 +msgid "Implicit post release number" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:495 +msgid "" +"Post releases allow omitting the numeral in which case it is implicitly " +"assumed to be ``0``. The normal form for this is to include the ``0`` " +"explicitly. This allows versions such as ``1.2.post`` which is normalized to " +"``1.2.post0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:501 +msgid "Implicit post releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:503 +msgid "" +"Post releases allow omitting the ``post`` signifier all together. When using " +"this form the separator MUST be ``-`` and no other form is allowed. This " +"allows versions such as ``1.0-1`` to be normalized to ``1.0.post1``. This " +"particular normalization MUST NOT be used in conjunction with the implicit " +"post release number rule. In other words, ``1.0-`` is *not* a valid version " +"and it does *not* normalize to ``1.0.post0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:512 +msgid "Development release separators" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:514 +msgid "" +"Development releases allow a ``.``, ``-``, or a ``_`` separator as well as " +"omitting the separator all together. The normal form of this is with the " +"``.`` separator. This allows versions such as ``1.2-dev2`` or ``1.2dev2`` " +"which normalize to ``1.2.dev2``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:521 +msgid "Implicit development release number" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:523 +msgid "" +"Development releases allow omitting the numeral in which case it is " +"implicitly assumed to be ``0``. The normal form for this is to include the " +"``0`` explicitly. This allows versions such as ``1.2.dev`` which is " +"normalized to ``1.2.dev0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:530 +msgid "Local version segments" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:532 +msgid "" +"With a local version, in addition to the use of ``.`` as a separator of " +"segments, the use of ``-`` and ``_`` is also acceptable. The normal form is " +"using the ``.`` character. This allows versions such as ``1.0+ubuntu-1`` to " +"be normalized to ``1.0+ubuntu.1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:539 +msgid "Preceding v character" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:541 +msgid "" +"In order to support the common version notation of ``v1.0`` versions may be " +"preceded by a single literal ``v`` character. This character MUST be ignored " +"for all purposes and should be omitted from all normalized forms of the " +"version. The same version with and without the ``v`` is considered " +"equivalent." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:548 +msgid "Leading and Trailing Whitespace" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:550 +msgid "" +"Leading and trailing whitespace must be silently ignored and removed from " +"all normalized forms of a version. This includes ``\" \"``, ``\\t``, " +"``\\n``, ``\\r``, ``\\f``, and ``\\v``. This allows accidental whitespace to " +"be handled sensibly, such as a version like ``1.0\\n`` which normalizes to " +"``1.0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:557 +msgid "Examples of compliant version schemes" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:559 +msgid "" +"The standard version scheme is designed to encompass a wide range of " +"identification practices across public and private Python projects. In " +"practice, a single project attempting to use the full flexibility offered by " +"the scheme would create a situation where human users had difficulty " +"figuring out the relative order of versions, even though the rules above " +"ensure all compliant tools will order them consistently." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:566 +msgid "" +"The following examples illustrate a small selection of the different " +"approaches projects may choose to identify their releases, while still " +"ensuring that the \"latest release\" and the \"latest stable release\" can " +"be easily determined, both by human users and automated tools." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:571 +msgid "Simple \"major.minor\" versioning::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:580 +msgid "Simple \"major.minor.micro\" versioning::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:588 +msgid "" +"\"major.minor\" versioning with alpha, beta and candidate pre-releases::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:600 +msgid "" +"\"major.minor\" versioning with developmental releases, release candidates " +"and post-releases for minor corrections::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:615 +msgid "" +"Date based releases, using an incrementing serial within each year, skipping " +"zero::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:629 +msgid "Summary of permitted suffixes and relative ordering" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:633 +msgid "" +"This section is intended primarily for authors of tools that automatically " +"process distribution metadata, rather than developers of Python " +"distributions deciding on a versioning scheme." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:637 +msgid "" +"The epoch segment of version identifiers MUST be sorted according to the " +"numeric value of the given epoch. If no epoch segment is present, the " +"implicit numeric value is ``0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:641 +msgid "" +"The release segment of version identifiers MUST be sorted in the same order " +"as Python's tuple sorting when the normalized release segment is parsed as " +"follows::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:647 +msgid "" +"All release segments involved in the comparison MUST be converted to a " +"consistent length by padding shorter segments with zeros as needed." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:650 +msgid "" +"Within a numeric release (``1.0``, ``2.7.3``), the following suffixes are " +"permitted and MUST be ordered as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:655 +msgid "" +"Note that ``c`` is considered to be semantically equivalent to ``rc`` and " +"must be sorted as if it were ``rc``. Tools MAY reject the case of having the " +"same ``N`` for both a ``c`` and a ``rc`` in the same release segment as " +"ambiguous and remain in compliance with the specification." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:660 +msgid "" +"Within an alpha (``1.0a1``), beta (``1.0b1``), or release candidate " +"(``1.0rc1``, ``1.0c1``), the following suffixes are permitted and MUST be " +"ordered as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:666 +msgid "" +"Within a post-release (``1.0.post1``), the following suffixes are permitted " +"and MUST be ordered as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:671 +msgid "" +"Note that ``devN`` and ``postN`` MUST always be preceded by a dot, even when " +"used immediately following a numeric version (e.g. ``1.0.dev456``, " +"``1.0.post1``)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:675 +msgid "" +"Within a pre-release, post-release or development release segment with a " +"shared prefix, ordering MUST be by the value of the numeric component." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:678 +msgid "The following example covers many of the possible combinations::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:703 +msgid "Version ordering across different metadata versions" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:705 +msgid "" +"Metadata v1.0 (:pep:`241`) and metadata v1.1 (:pep:`314`) do not specify a " +"standard version identification or ordering scheme. However metadata v1.2 " +"(:pep:`345`) does specify a scheme which is defined in :pep:`386`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:709 +msgid "" +"Due to the nature of the simple installer API it is not possible for an " +"installer to be aware of which metadata version a particular distribution " +"was using. Additionally installers required the ability to create a " +"reasonably prioritized list that includes all, or as many as possible, " +"versions of a project to determine which versions it should install. These " +"requirements necessitate a standardization across one parsing mechanism to " +"be used for all versions of a project." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:717 +msgid "" +"Due to the above, this specification MUST be used for all versions of " +"metadata and supersedes :pep:`386` even for metadata v1.2. Tools SHOULD " +"ignore any versions which cannot be parsed by the rules in this " +"specification, but MAY fall back to implementation defined version parsing " +"and ordering schemes if no versions complying with this specification are " +"available." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:723 +msgid "" +"Distribution users may wish to explicitly remove non-compliant versions from " +"any private package indexes they control." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:728 +msgid "Compatibility with other version schemes" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:730 +msgid "" +"Some projects may choose to use a version scheme which requires translation " +"in order to comply with the public version scheme defined in this " +"specification. In such cases, the project specific version can be stored in " +"the metadata while the translated public version is published in the version " +"field." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:735 +msgid "" +"This allows automated distribution tools to provide consistently correct " +"ordering of published releases, while still allowing developers to use the " +"internal versioning scheme they prefer for their projects." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:743 +msgid "" +"`Semantic versioning`_ is a popular version identification scheme that is " +"more prescriptive than this specification regarding the significance of " +"different elements of a release number. Even if a project chooses not to " +"abide by the details of semantic versioning, the scheme is worth " +"understanding as it covers many of the issues that can arise when depending " +"on other distributions, and when publishing a distribution that others rely " +"on." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:750 +msgid "" +"The \"Major.Minor.Patch\" (described in this specification as " +"\"major.minor.micro\") aspects of semantic versioning (clauses 1-8 in the " +"2.0.0 specification) are fully compatible with the version scheme defined in " +"this specification, and abiding by these aspects is encouraged." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:755 +msgid "" +"Semantic versions containing a hyphen (pre-releases - clause 10) or a plus " +"sign (builds - clause 11) are *not* compatible with this specification and " +"are not permitted in the public version field." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:759 +msgid "" +"One possible mechanism to translate such semantic versioning based source " +"labels to compatible public versions is to use the ``.devN`` suffix to " +"specify the appropriate version order." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:763 +msgid "" +"Specific build information may also be included in local version labels." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:769 +msgid "DVCS based version labels" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:771 +msgid "" +"Many build tools integrate with distributed version control systems like Git " +"and Mercurial in order to add an identifying hash to the version identifier. " +"As hashes cannot be ordered reliably such versions are not permitted in the " +"public version field." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:776 +msgid "" +"As with semantic versioning, the public ``.devN`` suffix may be used to " +"uniquely identify such releases for publication, while the original DVCS " +"based label can be stored in the project metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:780 +msgid "" +"Identifying hash information may also be included in local version labels." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:784 +msgid "Olson database versioning" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:786 +msgid "" +"The ``pytz`` project inherits its versioning scheme from the corresponding " +"Olson timezone database versioning scheme: the year followed by a lowercase " +"character indicating the version of the database within that year." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:790 +msgid "" +"This can be translated to a compliant public version identifier as ``." +"``, where the serial starts at zero or one (for the 'a' " +"release) and is incremented with each subsequent database update within the " +"year." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:795 +msgid "" +"As with other translated version identifiers, the corresponding Olson " +"database version could be recorded in the project metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:802 +msgid "" +"A version specifier consists of a series of version clauses, separated by " +"commas. For example::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:807 +msgid "The comparison operator determines the kind of version clause:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:809 +msgid "``~=``: `Compatible release`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:810 +msgid "``==``: `Version matching`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:811 +msgid "``!=``: `Version exclusion`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:812 +msgid "``<=``, ``>=``: `Inclusive ordered comparison`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:813 +msgid "``<``, ``>``: `Exclusive ordered comparison`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:814 +msgid "``===``: `Arbitrary equality`_ clause." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:816 +msgid "" +"The comma (\",\") is equivalent to a logical **and** operator: a candidate " +"version must match all given version clauses in order to match the specifier " +"as a whole." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:820 +msgid "" +"Whitespace between a conditional operator and the following version " +"identifier is optional, as is the whitespace around the commas." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:823 +msgid "" +"When multiple candidate versions match a version specifier, the preferred " +"version SHOULD be the latest version as determined by the consistent " +"ordering defined by the standard `Version scheme`_. Whether or not pre-" +"releases are considered as candidate versions SHOULD be handled as described " +"in `Handling of pre-releases`_." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:829 +msgid "" +"Except where specifically noted below, local version identifiers MUST NOT be " +"permitted in version specifiers, and local version labels MUST be ignored " +"entirely when checking if candidate versions match a given version specifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:838 +msgid "Compatible release" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:840 +msgid "" +"A compatible release clause consists of the compatible release operator " +"``~=`` and a version identifier. It matches any candidate version that is " +"expected to be compatible with the specified version." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:844 +msgid "" +"The specified version identifier must be in the standard format described in " +"`Version scheme`_. Local version identifiers are NOT permitted in this " +"version specifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:848 +msgid "" +"For a given release identifier ``V.N``, the compatible release clause is " +"approximately equivalent to the pair of comparison clauses::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:853 +msgid "" +"This operator MUST NOT be used with a single segment version number such as " +"``~=1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:856 +msgid "For example, the following groups of version clauses are equivalent::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:864 +msgid "" +"If a pre-release, post-release or developmental release is named in a " +"compatible release clause as ``V.N.suffix``, then the suffix is ignored when " +"determining the required prefix match::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:874 +msgid "" +"The padding rules for release segment comparisons means that the assumed " +"degree of forward compatibility in a compatible release clause can be " +"controlled by appending additional zeros to the version specifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:886 +msgid "Version matching" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:888 +msgid "" +"A version matching clause includes the version matching operator ``==`` and " +"a version identifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:891 +msgid "" +"The specified version identifier must be in the standard format described in " +"`Version scheme`_, but a trailing ``.*`` is permitted on public version " +"identifiers as described below." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:895 +msgid "" +"By default, the version matching operator is based on a strict equality " +"comparison: the specified version must be exactly the same as the requested " +"version. The *only* substitution performed is the zero padding of the " +"release segment to ensure the release segments are compared with the same " +"length." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:901 +msgid "" +"Whether or not strict version matching is appropriate depends on the " +"specific use case for the version specifier. Automated tools SHOULD at least " +"issue warnings and MAY reject them entirely when strict version matches are " +"used inappropriately." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:906 +msgid "" +"Prefix matching may be requested instead of strict comparison, by appending " +"a trailing ``.*`` to the version identifier in the version matching clause. " +"This means that additional trailing segments will be ignored when " +"determining whether or not a version identifier matches the clause. If the " +"specified version includes only a release segment, then trailing components " +"(or the lack thereof) in the release segment are also ignored." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:913 +#: ../source/specifications/version-specifiers.rst:974 +msgid "" +"For example, given the version ``1.1.post1``, the following clauses would " +"match or not as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:920 +msgid "" +"For purposes of prefix matching, the pre-release segment is considered to " +"have an implied preceding ``.``, so given the version ``1.1a1``, the " +"following clauses would match or not as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:928 +msgid "" +"An exact match is also considered a prefix match (this interpretation is " +"implied by the usual zero padding rules for the release segment of version " +"identifiers). Given the version ``1.1``, the following clauses would match " +"or not as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:940 +msgid "" +"It is invalid to have a prefix match containing a development or local " +"release such as ``1.0.dev1.*`` or ``1.0+foo1.*``. If present, the " +"development release segment is always the final segment in the public " +"version, and the local version is ignored for comparison purposes, so using " +"either in a prefix match wouldn't make any sense." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:946 +msgid "" +"The use of ``==`` (without at least the wildcard suffix) when defining " +"dependencies for published distributions is strongly discouraged as it " +"greatly complicates the deployment of security fixes. The strict version " +"comparison operator is intended primarily for use when defining dependencies " +"for repeatable *deployments of applications* while using a shared " +"distribution index." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:953 +msgid "" +"If the specified version identifier is a public version identifier (no local " +"version label), then the local version label of any candidate versions MUST " +"be ignored when matching versions." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:957 +msgid "" +"If the specified version identifier is a local version identifier, then the " +"local version labels of candidate versions MUST be considered when matching " +"versions, with the public version identifier being matched as described " +"above, and the local version label being checked for equivalence using a " +"strict string equality comparison." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:965 +msgid "Version exclusion" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:967 +msgid "" +"A version exclusion clause includes the version exclusion operator ``!=`` " +"and a version identifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:970 +msgid "" +"The allowed version identifiers and comparison semantics are the same as " +"those of the `Version matching`_ operator, except that the sense of any " +"match is inverted." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:983 +msgid "Inclusive ordered comparison" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:985 +msgid "" +"An inclusive ordered comparison clause includes a comparison operator and a " +"version identifier, and will match any version where the comparison is " +"correct based on the relative position of the candidate version and the " +"specified version given the consistent ordering defined by the standard " +"`Version scheme`_." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:991 +msgid "The inclusive ordered comparison operators are ``<=`` and ``>=``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:993 +#: ../source/specifications/version-specifiers.rst:1023 +msgid "" +"As with version matching, the release segment is zero padded as necessary to " +"ensure the release segments are compared with the same length." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:996 +#: ../source/specifications/version-specifiers.rst:1026 +msgid "Local version identifiers are NOT permitted in this version specifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1000 +msgid "Exclusive ordered comparison" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1002 +msgid "" +"The exclusive ordered comparisons ``>`` and ``<`` are similar to the " +"inclusive ordered comparisons in that they rely on the relative position of " +"the candidate version and the specified version given the consistent " +"ordering defined by the standard `Version scheme`_. However, they " +"specifically exclude pre-releases, post-releases, and local versions of the " +"specified version." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1008 +msgid "" +"The exclusive ordered comparison ``>V`` **MUST NOT** allow a post-release of " +"the given version unless ``V`` itself is a post release. You may mandate " +"that releases are later than a particular post release, including additional " +"post releases, by using ``>V.postN``. For example, ``>1.7`` will allow " +"``1.7.1`` but not ``1.7.0.post1`` and ``>1.7.post2`` will allow ``1.7.1`` " +"and ``1.7.0.post3`` but not ``1.7.0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1015 +msgid "" +"The exclusive ordered comparison ``>V`` **MUST NOT** match a local version " +"of the specified version." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1018 +msgid "" +"The exclusive ordered comparison ``=`` entry as part " +"of the URL fragment." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1148 +msgid "" +"For version control references, the ``VCS+protocol`` scheme SHOULD be used " +"to identify both the version control system and the secure transport, and a " +"version control system with hash based commit identifiers SHOULD be used. " +"Automated tools MAY omit warnings about missing hashes for version control " +"systems that do not provide hash based commit identifiers." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1154 +msgid "" +"To handle version control systems that do not support including commit or " +"tag references directly in the URL, that information may be appended to the " +"end of the URL using the ``@`` or the ``@#`` " +"notation." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1161 +msgid "" +"This isn't *quite* the same as the existing VCS reference notation supported " +"by pip. Firstly, the distribution name is moved in front rather than " +"embedded as part of the URL. Secondly, the commit hash is included even when " +"retrieving based on a tag, in order to meet the requirement above that " +"*every* link should include a hash to make things harder to forge (creating " +"a malicious repo with a particular tag is easy, creating one with a specific " +"*hash*, less so)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1169 +msgid "Remote URL examples::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1177 +msgid "File URLs" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1179 +msgid "" +"File URLs take the form of ``file:///``. If the ```` is " +"omitted it is assumed to be ``localhost`` and even if the ```` is " +"omitted the third slash MUST still exist. The ```` defines what the " +"file path on the filesystem that is to be accessed." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1184 +msgid "" +"On the various \\*nix operating systems the only allowed values for " +"```` is for it to be omitted, ``localhost``, or another FQDN that the " +"current machine believes matches its own host. In other words, on \\*nix the " +"``file://`` scheme can only be used to access paths on the local machine." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1189 +msgid "" +"On Windows the file format should include the drive letter if applicable as " +"part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " +"on Windows the ```` parameter may be used to specify a file residing " +"on a network share. In other words, in order to translate ``\\" +"\\machine\\volume\\file`` to a ``file://`` url, it would end up as ``file://" +"machine/volume/file``. For more information on ``file://`` URLs on Windows " +"see `MSDN `_." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1200 +msgid "Summary of differences from pkg_resources.parse_version" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1202 +msgid "" +"Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " +"the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " +"and later versions adopted the behaviour described here." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1206 +msgid "" +"Local versions sort differently, this specification requires that they sort " +"as greater than the same version without a local version, whereas " +"``pkg_resources.parse_version`` considers it a pre-release marker." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1210 +msgid "" +"This specification purposely restricts the syntax which constitutes a valid " +"version while ``pkg_resources.parse_version`` attempts to provide some " +"meaning from *any* arbitrary string." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1214 +msgid "" +"``pkg_resources.parse_version`` allows arbitrarily deeply nested version " +"signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " +"only a single use of each type and they must exist in a certain order." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1223 +msgid "Appendix: Parsing version strings with regular expressions" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1225 +msgid "" +"As noted earlier in the :ref:`public-version-identifiers` section, published " +"version identifiers SHOULD use the canonical format. This section provides " +"regular expressions that can be used to test whether a version is already in " +"that form, and if it's not, extract the various components for subsequent " +"normalization." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1231 +msgid "" +"To test whether a version identifier is in the canonical format, you can use " +"the following function:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1240 +msgid "" +"To extract the components of a version identifier, use the following regular " +"expression (as defined by the `packaging `_ project):" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1287 +msgid "August 2014: This specification was approved through :pep:`440`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1288 +msgid "" +"May 2025: Clarify that development releases are a form of pre-release when " +"they are handled." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1290 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1291 +msgid "Jan 2026: The use of epochs was discouraged." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:6 +msgid "Python Virtual Environments" +msgstr "" + +#: ../source/specifications/virtual-environments.rst:8 +msgid "" +"For Python 3.3 and later versions, :pep:`405` introduced interpreter level " +"support for the concept of \"Python Virtual Environments\". Each virtual " +"environment has its own Python binary (allowing creation of environments " +"with various Python versions) and can have its own independent set of " +"installed Python packages in its site directories, but shares the standard " +"library with the base installed Python. While the concept of virtual " +"environments existed prior to this update, there was no previously " +"standardised mechanism for declaring or discovering them." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:18 +msgid "Runtime detection of virtual environments" +msgstr "" + +#: ../source/specifications/virtual-environments.rst:20 +msgid "" +"At runtime, virtual environments can be identified by virtue " +"of :py:data:`sys.prefix` (the filesystem location of the running " +"interpreter) having a different value from :py:data:`sys.base_prefix` (the " +"default filesystem location of the standard library directories)." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:25 +msgid "" +":ref:`venv-explanation` in the Python standard library documentation for " +"the :py:mod:`venv` module covers this along with the concept of " +"\"activating\" a virtual environment in an interactive operating system " +"shell (this activation step is optional and hence the changes it makes can't " +"be reliably used to detect whether a Python program is running in a virtual " +"environment or not)." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:33 +msgid "Declaring installation environments as Python virtual environments" +msgstr "" + +#: ../source/specifications/virtual-environments.rst:35 +msgid "" +"As described in :pep:`405`, a Python virtual environment in its simplest " +"form consists of nothing more than a copy or symlink of the Python binary " +"accompanied by a ``site-packages`` directory and a ``pyvenv.cfg`` file with " +"a ``home`` key that indicates where to find the Python standard library " +"modules." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:40 +msgid "" +"While designed to meet the needs of the standard :py:mod:`venv` module, this " +"split installation and ``pyvenv.cfg`` file approach can be used by *any* " +"Python installation provider that desires Python-specific tools to be aware " +"that they are already operating in a virtual environment and no further " +"environment nesting is required or desired." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:46 +msgid "" +"Even in the absence of a ``pyvenv.cfg`` file, any approach (e.g. " +"``sitecustomize.py``, patching the installed Python runtime) that results " +"in :py:data:`sys.prefix` and :py:data:`sys.base_prefix` having different " +"values, while still providing a matching default package installation scheme " +"in :py:mod:`sysconfig`, will be detected and behave as a Python virtual " +"environment." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:56 +msgid "May 2012: This specification was approved through :pep:`405`." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:5 +msgid "Well-known Project URLs in Metadata" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:9 +msgid "" +"This document is primarily of interest to metadata *consumers*, who should " +"use the normalization rules and well-known list below to make their " +"presentation of project URLs consistent across the Python ecosystem." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:14 +msgid "" +"Metadata *producers* (such as build tools and individual package " +"maintainers) may continue to use any labels they please, within the overall " +"``Project-URL`` length restrictions. However, when possible, users are " +"*encouraged* to pick meaningful labels that normalize to well-known labels." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:22 +msgid "" +"See :ref:`Writing your pyproject.toml - urls ` " +"for user-oriented guidance on choosing project URL labels in your package's " +"metadata." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:26 +msgid "This specification was originally defined in :pep:`753`." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:28 +msgid "" +":pep:`753` deprecates the :ref:`core-metadata-home-page` and :ref:`core-" +"metadata-download-url` metadata fields in favor of :ref:`core-metadata-" +"project-url`, and defines a normalization and lookup procedure for " +"determining whether a ``Project-URL`` is \"well-known,\" i.e. has the " +"semantics assigned to ``Home-page``, ``Download-URL``, or other common " +"project URLs." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:35 +msgid "" +"This allows indices (such as the Python Package Index) and other downstream " +"metadata consumers to present project URLs in a consistent manner." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:42 +msgid "Label normalization" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:46 +msgid "" +"Label normalization is performed by metadata *consumers*, not metadata " +"producers." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:49 +msgid "" +"To determine whether a ``Project-URL`` label is \"well-known,\" metadata " +"consumers should normalize the label before comparing it to the :ref:`list " +"of well-known labels `." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:53 +msgid "" +"The normalization procedure for ``Project-URL`` labels is defined by the " +"following Python function:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:65 +msgid "" +"In plain language: a label is *normalized* by deleting all ASCII punctuation " +"and whitespace, and then converting the result to lowercase." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:68 +msgid "" +"The following table shows examples of labels before (raw) and after " +"normalization:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:74 +msgid "Raw" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:75 +msgid "Normalized" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:76 +msgid "``Homepage``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:77 +#: ../source/specifications/well-known-project-urls.rst:79 +#: ../source/specifications/well-known-project-urls.rst:81 +msgid "``homepage``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:78 +msgid "``Home-page``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:80 +msgid "``Home page``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:82 +msgid "``Change_Log``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:83 +msgid "``changelog``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:84 +msgid "``What's New?``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:85 +msgid "``whatsnew``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:86 +#: ../source/specifications/well-known-project-urls.rst:87 +msgid "``github``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:92 +msgid "Well-known labels" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:96 +msgid "" +"The list of well-known labels is a living standard, maintained as part of " +"this document." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:99 +msgid "" +"The following table lists labels that are well-known for the purpose of " +"specializing the presentation of ``Project-URL`` metadata:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:105 +msgid "Label (Human-readable equivalent)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:107 +msgid "Aliases" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:108 +msgid "``homepage`` (Homepage)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:109 +msgid "The project's home page" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:110 +#: ../source/specifications/well-known-project-urls.rst:116 +#: ../source/specifications/well-known-project-urls.rst:122 +msgid "*(none)*" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:111 +msgid "``source`` (Source Code)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:112 +msgid "The project's hosted source code or repository" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:113 +msgid "``repository``, ``sourcecode``, ``github``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:114 +msgid "``download`` (Download)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:115 +msgid "" +"A download URL for the current distribution, equivalent to ``Download-URL``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:117 +msgid "``changelog`` (Changelog)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:118 +msgid "The project's comprehensive changelog" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:119 +msgid "``changes``, ``whatsnew``, ``history``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:120 +msgid "``releasenotes`` (Release Notes)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:121 +msgid "The project's curated release notes" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:123 +msgid "``documentation`` (Documentation)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:124 +msgid "The project's online documentation" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:125 +msgid "``docs``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:126 +msgid "``issues`` (Issue Tracker)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:127 +msgid "The project's bug tracker" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:128 +msgid "``bugs``, ``issue``, ``tracker``, ``issuetracker``, ``bugtracker``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:129 +msgid "``funding`` (Funding)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:130 +msgid "Funding Information" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:131 +msgid "``sponsor``, ``donate``, ``donation``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:133 +msgid "" +"Package metadata consumers may choose to render aliased labels the same as " +"their \"parent\" well known label, or further specialize them." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:137 +msgid "Example behavior" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:139 +msgid "" +"The following shows the flow of project URL metadata from ``pyproject.toml`` " +"to core metadata to a potential index presentation:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:142 +msgid "Example project URLs in standard configuration" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:151 +msgid "Core metadata representation" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:159 +msgid "Potential rendering" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:167 +msgid "" +"Observe that the core metadata appears in the form provided by the user " +"(since metadata *producers* do not perform normalization), but the metadata " +"*consumer* normalizes and identifies appropriate human-readable equivalents " +"based on the normalized form:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:172 +msgid "``Home page`` becomes ``homepage``, which is rendered as ``Homepage``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:173 +msgid "" +"``DOCUMENTATION`` becomes ``documentation``, which is rendered as " +"``Documentation``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:174 +msgid "" +"``Repository`` becomes ``repository``, which is rendered as ``Source Code``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:175 +msgid "" +"``GitHub`` becomes ``github``, which is rendered as ``Source Code (GitHub)`` " +"(as a specialization of ``Source Code``)" +msgstr "" + +#: ../source/support.rst:3 +msgid "How to Get Support" +msgstr "" + +#: ../source/support.rst:5 +msgid "" +"For support related to a specific project, see the links on " +"the :doc:`Projects ` page." +msgstr "" + +#: ../source/support.rst:8 +msgid "" +"For something more general, or when you're just not sure, please `open an " +"issue `_ on the `packaging-problems `_ repository on GitHub." +msgstr "" + +#: ../source/tutorials/creating-documentation.rst:4 +msgid "Creating documentation" +msgstr "" + +#: ../source/tutorials/creating-documentation.rst:6 +msgid "" +"This tutorial has been removed since it is not related to packaging and was " +"unmaintained. Please see the `Sphinx tutorial `_ instead." +msgstr "" + +#: ../source/tutorials/index.rst:4 +msgid "" +"**Tutorials** are opinionated step-by-step guides to help you get familiar " +"with packaging concepts. For more detailed information on specific packaging " +"topics, see :doc:`/guides/index`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:5 +msgid "Installing Packages" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:7 +msgid "" +"This section covers the basics of how to install Python :term:`packages " +"`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:10 +msgid "" +"It's important to note that the term \"package\" in this context is being " +"used to describe a bundle of software to be installed (i.e. as a synonym for " +"a :term:`distribution `). It does not refer to the " +"kind of :term:`package ` that you import in your Python " +"source code (i.e. a container of modules). It is common in the Python " +"community to refer to a :term:`distribution ` using " +"the term \"package\". Using the term \"distribution\" is often not " +"preferred, because it can easily be confused with a Linux distribution, or " +"another larger software distribution like Python itself." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:24 +msgid "Requirements for Installing Packages" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:26 +msgid "" +"This section describes the steps to follow before installing other Python " +"packages." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:31 +msgid "Ensure you can run Python from the command line" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:33 +msgid "" +"Before you go any further, make sure you have Python and that the expected " +"version is available from your command line. You can check this by running:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:49 +msgid "" +"You should get some output like ``Python 3.6.3``. If you do not have Python, " +"please install the latest 3.x version from `python.org`_ or refer to " +"the :ref:`Installing Python ` section of the " +"Hitchhiker's Guide to Python." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:53 +msgid "If you're a newcomer and you get an error like this:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:62 +msgid "" +"It's because this command and other suggested commands in this tutorial are " +"intended to be run in a *shell* (also called a *terminal* or *console*). See " +"the Python for Beginners `getting started tutorial`_ for an introduction to " +"using your operating system's shell and interacting with Python." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:68 +msgid "" +"If you're using an enhanced shell like IPython or the Jupyter notebook, you " +"can run system commands like those in this tutorial by prefacing them with a " +"``!`` character:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:78 +msgid "" +"It's recommended to write ``{sys.executable}`` rather than plain ``python`` " +"in order to ensure that commands are run in the Python installation matching " +"the currently running notebook (which may not be the same Python " +"installation that the ``python`` command refers to)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:83 +msgid "" +"Due to the way most Linux distributions are handling the Python 3 migration, " +"Linux users using the system Python without creating a virtual environment " +"first should replace the ``python`` command in this tutorial with " +"``python3`` and the ``python -m pip`` command with ``python3 -m pip --" +"user``. Do *not* run any of the commands in this tutorial with ``sudo``: if " +"you get a permissions error, come back to the section on creating virtual " +"environments, set one up, and then continue with the tutorial as written." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:95 +msgid "Ensure you can run pip from the command line" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:97 +msgid "" +"Additionally, you'll need to make sure you have :ref:`pip` available. You " +"can check this by running:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:112 +msgid "" +"If you installed Python from source, with an installer from `python.org`_, " +"or via `Homebrew`_ you should already have pip. If you're on Linux and " +"installed using your OS package manager, you may have to install pip " +"separately, see :doc:`/guides/installing-using-linux-tools`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:119 +msgid "" +"If ``pip`` isn't already installed, then first try to bootstrap it from the " +"standard library:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:134 +msgid "If that still doesn't allow you to run ``python -m pip``:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:136 +msgid "" +"Securely Download `get-pip.py `_ [1]_" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:139 +msgid "" +"Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " +"not installed already." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:145 +msgid "" +"Be cautious if you're using a Python install that's managed by your " +"operating system or another package manager. get-pip.py does not coordinate " +"with those tools, and may leave your system in an inconsistent state. You " +"can use ``python get-pip.py --prefix=/usr/local/`` to install in ``/usr/" +"local`` which is designed for locally-installed software." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:154 +msgid "Ensure pip is up to date" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:156 +msgid "" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:172 +msgid "Optionally, create a virtual environment" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:174 +msgid "" +"See :ref:`section below ` for " +"details, but here's the basic :doc:`venv ` [3]_ command " +"to use on a typical Linux system:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:191 +msgid "" +"This will create a new virtual environment in the ``tutorial_env`` " +"subdirectory, and configure the current shell to use it as the default " +"``python`` environment." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:198 +msgid "Creating Virtual Environments" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:200 +msgid "" +"Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " +"application, rather than being installed globally. If you are looking to " +"safely install global command line tools, see :doc:`/guides/installing-stand-" +"alone-command-line-tools`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:206 +msgid "" +"Imagine you have an application that needs version 1 of LibFoo, but another " +"application requires version 2. How can you use both these applications? If " +"you install everything into /usr/lib/python3.6/site-packages (or whatever " +"your platform’s standard location is), it’s easy to end up in a situation " +"where you unintentionally upgrade an application that shouldn’t be upgraded." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:212 +msgid "" +"Or more generally, what if you want to install an application and leave it " +"be? If an application works, any change in its libraries or the versions of " +"those libraries can break the application." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:216 +msgid "" +"Also, what if you can’t install :term:`packages ` into " +"the global site-packages directory? For instance, on a shared host." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:219 +msgid "" +"In all these cases, virtual environments can help you. They have their own " +"installation directories and they don’t share libraries with other virtual " +"environments." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:223 +msgid "" +"Currently, there are two common tools for creating Python virtual " +"environments:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:225 +msgid "" +":doc:`venv ` is available by default in Python 3.3 and " +"later, and installs :ref:`pip` into created virtual environments in Python " +"3.4 and later (Python versions prior to 3.12 also " +"installed :ref:`setuptools`)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:228 +msgid "" +":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " +"and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " +"installed into created virtual environments by default. Note that " +"``setuptools`` is no longer included by default starting with Python 3.12 " +"(and ``virtualenv`` follows this behavior)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:233 +msgid "The basic usage is like so:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:235 +msgid "Using :doc:`venv `:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:251 +msgid "Using :ref:`virtualenv`:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:267 +msgid "" +"For more information, see the :doc:`venv ` docs or " +"the :doc:`virtualenv ` docs." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:270 +msgid "" +"The use of :command:`source` under Unix shells ensures that the virtual " +"environment's variables are set within the current shell, and not in a " +"subprocess (which then disappears, having no useful effect)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:275 +msgid "" +"In both of the above cases, Windows users should *not* use " +"the :command:`source` command, but should rather run the :command:`activate` " +"script directly from the command shell like so:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:285 +msgid "" +"Managing multiple virtual environments directly can become tedious, so " +"the :ref:`dependency management tutorial ` introduces " +"a higher level tool, :ref:`Pipenv`, that automatically manages a separate " +"virtual environment for each project and application that you work on." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:292 +msgid "Use pip for Installing" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:294 +msgid "" +":ref:`pip` is the recommended installer. Below, we'll cover the most common " +"usage scenarios. For more detail, see the :doc:`pip docs `, which " +"includes a complete :doc:`Reference Guide `." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:300 +msgid "Installing from PyPI" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:302 +msgid "" +"The most common usage of :ref:`pip` is to install from the :term:`Python " +"Package Index ` using a :term:`requirement " +"specifier `. Generally speaking, a requirement " +"specifier is composed of a project name followed by an " +"optional :term:`version specifier `. A full description " +"of the supported specifiers can be found in the :ref:`Version specifier " +"specification `. Below are some examples." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:310 +msgid "To install the latest version of \"SomeProject\":" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:324 +msgid "To install a specific version:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:338 +msgid "To install greater than or equal to one version and less than another:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:353 +msgid "" +"To install a version that's :ref:`compatible ` with a certain version: [4]_" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:368 +msgid "" +"In this case, this means to install any version \"==1.4.*\" version that's " +"also \">=1.4.2\"." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:373 +msgid "Source Distributions vs Wheels" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:375 +msgid "" +":ref:`pip` can install from either :term:`Source Distributions (sdist) " +"` or :term:`Wheels `, but if both " +"are present on PyPI, pip will prefer a compatible :term:`wheel `. You " +"can override pip`s default behavior by e.g. using its :ref:`--no-binary " +"` option." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:381 +msgid "" +":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " +"Distributions (sdist) `, especially when " +"a project contains compiled extensions." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:386 +msgid "" +"If :ref:`pip` does not find a wheel to install, it will locally build a " +"wheel and cache it for future installs, instead of rebuilding the source " +"distribution in the future." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:394 +msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:411 +msgid "Installing to the User Site" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:413 +msgid "" +"To install :term:`packages ` that are isolated to the " +"current user, use the ``--user`` flag:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:428 +msgid "" +"For more information see the `User Installs `_ section from the pip docs." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:432 +msgid "" +"Note that the ``--user`` flag has no effect when inside a virtual " +"environment - all installation commands will affect the virtual environment." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:435 +msgid "" +"If ``SomeProject`` defines any command-line scripts or console entry points, " +"``--user`` will cause them to be installed inside the `user base`_'s binary " +"directory, which may or may not already be present in your " +"shell's :envvar:`PATH`. (Starting in version 10, pip displays a warning " +"when installing any scripts to a directory outside :envvar:`PATH`.) If the " +"scripts are not available in your shell after installation, you'll need to " +"add the directory to your :envvar:`PATH`:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:443 +msgid "" +"On Linux and macOS you can find the user base binary directory by running " +"``python -m site --user-base`` and adding ``bin`` to the end. For example, " +"this will typically print ``~/.local`` (with ``~`` expanded to the absolute " +"path to your home directory) so you'll need to add ``~/.local/bin`` to your " +"``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:449 +msgid "" +"On Windows you can find the user base binary directory by running ``py -m " +"site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " +"example, this could return ``C:" +"\\Users\\Username\\AppData\\Roaming\\Python36\\site-packages`` so you would " +"need to set your ``PATH`` to include ``C:" +"\\Users\\Username\\AppData\\Roaming\\Python36\\Scripts``. You can set your " +"user ``PATH`` permanently in the `Control Panel`_. You may need to log out " +"for the ``PATH`` changes to take effect." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:465 +msgid "" +"Install a list of requirements specified in a :ref:`Requirements File " +"`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:481 +msgid "Installing from VCS" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:483 +msgid "" +"Install a project from VCS in \"editable\" mode. For a full breakdown of " +"the syntax, see pip's section on :ref:`VCS Support `." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:505 +msgid "Installing from other Indexes" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:507 +msgid "Install from an alternate index" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:521 +msgid "" +"Search an additional index during install, in addition to :term:`PyPI " +"`" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:537 +msgid "Installing from a local src tree" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:540 +msgid "" +"Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " +"installed, but yet is still editable from the src tree." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:557 +msgid "You can also install normally from src" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:572 +msgid "Installing from local archives" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:574 +msgid "Install a particular source archive file." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:588 +msgid "" +"Install from a local directory containing archives (and don't " +"check :term:`PyPI `)" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:608 +msgid "Installing from other sources" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:610 +msgid "" +"To install from other data sources (for example Amazon S3 storage) you can " +"create a helper application that presents the data in a format compliant " +"with the :ref:`simple repository API `:, and use the " +"``--extra-index-url`` flag to direct pip to use that index." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:622 +msgid "Installing Prereleases" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:624 +msgid "" +"Find pre-release and development versions, in addition to stable versions. " +"By default, pip only finds stable versions." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:640 +msgid "Installing \"Extras\"" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:642 +msgid "" +"Extras are optional \"variants\" of a package, which may include additional " +"dependencies, and thereby enable additional functionality from the package. " +"If you wish to install an extra for a package which you know publishes one, " +"you can include it in the pip installation command:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:665 +msgid "" +"\"Secure\" in this context means using a modern browser or a tool " +"like :command:`curl` that verifies SSL certificates when downloading from " +"https URLs." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:674 +msgid "" +"Beginning with Python 3.4, ``venv`` (a stdlib alternative " +"to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" +"installed, thereby making it an equal alternative to :ref:`virtualenv`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:679 +msgid "" +"The compatible release specifier was accepted in :pep:`440` and support was " +"released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:4 +msgid "Managing Application Dependencies" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:6 +msgid "" +"The :ref:`package installation tutorial ` covered the " +"basics of getting set up to install and update Python packages." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:9 +msgid "" +"However, running these commands interactively can get tedious even for your " +"own personal projects, and things get even more difficult when trying to set " +"up development environments automatically for projects with multiple " +"contributors." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:13 +msgid "" +"This tutorial walks you through the use of :ref:`Pipenv` to manage " +"dependencies for an application. It will show you how to install and use the " +"necessary tools and make strong recommendations on best practices." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:17 +msgid "" +"Keep in mind that Python is used for a great many different purposes, and " +"precisely how you want to manage your dependencies may change based on how " +"you decide to publish your software. The guidance presented here is most " +"directly applicable to the development and deployment of network services " +"(including web applications), but is also very well suited to managing " +"development and testing environments for any kind of project." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:24 +msgid "" +"For alternatives, see `Other Tools for Application Dependency Management`_." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:27 +msgid "Installing Pipenv" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:29 +msgid "" +":ref:`Pipenv` is a dependency manager for Python projects. If you're " +"familiar with Node.js' `npm`_ or Ruby's `bundler`_, it is similar in spirit " +"to those tools. While :ref:`pip` alone is often sufficient for personal use, " +"Pipenv is recommended for collaborative projects as it's a higher-level tool " +"that simplifies dependency management for common use cases." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:35 +msgid "Use ``pip`` to install Pipenv:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:51 +msgid "" +"This does a `user installation`_ to prevent breaking any system-wide " +"packages. If ``pipenv`` isn't available in your shell after installation, " +"you'll need to add the :py:data:`user base `'s binary " +"directory to your ``PATH``. See :ref:`Installing to the User Site` for more " +"information." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:62 +msgid "Installing packages for your project" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:64 +msgid "" +"Pipenv manages dependencies on a per-project basis. To install packages, " +"change into your project's directory (or just an empty directory for this " +"tutorial) and run:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:73 +msgid "" +"Pipenv will install the `Requests`_ library and create a ``Pipfile`` for you " +"in your project's directory. The :ref:`Pipfile` is used to track which " +"dependencies your project needs in case you need to re-install them, such as " +"when you share your project with others. You should get output similar to " +"this (although the exact paths shown will vary):" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:109 +msgid "Using installed packages" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:111 +msgid "" +"Now that Requests is installed you can create a simple :file:`main.py` file " +"to use it:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:122 +msgid "Then you can run this script using ``pipenv run``:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:128 +msgid "You should get output similar to this:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:134 +msgid "" +"Using ``pipenv run`` ensures that your installed packages are available to " +"your script. It's also possible to spawn a new shell that ensures all " +"commands have access to your installed packages with ``pipenv shell``." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:140 +#: ../source/tutorials/packaging-projects.rst:484 +msgid "Next steps" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:142 +msgid "" +"Congratulations, you now know how to effectively manage dependencies and " +"development environments on a collaborative Python project! ✨ 🍰 ✨" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:145 +msgid "" +"If you're interested in creating and distributing your own Python packages, " +"see the :ref:`tutorial on packaging and distributing packages `." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:148 +msgid "" +"Note that when your application includes definitions of Python source " +"packages, they (and their dependencies) can be added to your ``pipenv`` " +"environment with ``pipenv install -e `` " +"(e.g. ``pipenv install -e .`` or ``pipenv install -e src``)." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:157 +msgid "Other Tools for Application Dependency Management" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:159 +msgid "" +"If you find this particular approach to managing application dependencies " +"isn't working well for you or your use case, you may want to explore these " +"other tools and techniques, listed in alphabetical order, to see if one of " +"them is a better fit:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:163 +msgid "" +"`hatch `_ for opinionated coverage of even " +"more steps in the project management workflow, such as incrementing versions " +"and creating new skeleton projects from project templates." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:166 +msgid "" +"`micropipenv `_ for a " +"lightweight wrapper around pip that supports ``requirements.txt``, Pipenv " +"and Poetry lock files, or converting them to pip-tools compatible output. " +"Designed for containerized Python applications, but not limited to them." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:170 +msgid "" +"`PDM `_ for a modern Python package " +"management relying on standards such as :pep:`517` and :pep:`621`." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:172 +msgid "" +"`pip-tools `_ for creating a lock " +"file of all dependencies from a list of packages directly used in a project, " +"and ensuring that only those dependencies are installed." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:175 +msgid "" +"`Poetry `__ for a tool comparable " +"in scope to Pipenv that focuses more directly on use cases where the project " +"being managed is structured as a distributable Python package with a valid " +"``pyproject.toml`` file. By contrast, Pipenv explicitly avoids making the " +"assumption that the application being worked on will support distribution as " +"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 "" + +#: ../source/tutorials/packaging-projects.rst:4 +msgid "" +"This tutorial walks you through how to package a simple Python project. It " +"will show you how to add the necessary files and structure to create the " +"package, how to build the package, and how to upload it to the Python " +"Package Index (PyPI)." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:10 +msgid "" +"If you have trouble running the commands in this tutorial, please copy the " +"command and its output, then `open an issue`_ on the `packaging-problems`_ " +"repository on GitHub. We'll do our best to help you!" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:18 +msgid "" +"Some of the commands require a newer version of :ref:`pip`, so start by " +"making sure you have the latest version installed:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:35 +msgid "A simple project" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:37 +msgid "" +"This tutorial uses a simple project named " +"``example_package_YOUR_USERNAME_HERE``. If your username is ``me``, then the " +"package would be ``example_package_me``; this ensures that you have a unique " +"package name that doesn't conflict with packages uploaded by other people " +"following this tutorial. We recommend following this tutorial as-is using " +"this project, before packaging your own project." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:44 +msgid "Create the following file structure locally:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:54 +msgid "" +"The directory containing the Python files should match the project name. " +"This simplifies the configuration and is more obvious to users who install " +"the package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:57 +msgid "" +"Creating the file :file:`__init__.py` is recommended because the existence " +"of an :file:`__init__.py` file allows users to import the directory as a " +"regular package, even if (as is the case in this " +"tutorial) :file:`__init__.py` is empty. [#namespace-packages]_" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:62 +msgid "" +":file:`example.py` is an example of a module within the package that could " +"contain the logic (functions, classes, constants, etc.) of your package. " +"Open that file and enter the following content:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:71 +msgid "" +"If you are unfamiliar with Python's :term:`modules ` " +"and :term:`import packages `, take a few minutes to read " +"over the `Python documentation for packages and modules`_." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:75 +msgid "" +"Once you create this structure, you'll want to run all of the commands in " +"this tutorial within the ``packaging_tutorial`` directory." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:83 +msgid "Creating the package files" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:85 +msgid "" +"You will now add files that are used to prepare the project for " +"distribution. When you're done, the project structure will look like this:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:103 +msgid "Creating a test directory" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:105 +msgid ":file:`tests/` is a placeholder for test files. Leave it empty for now." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:111 +msgid "Choosing a build backend" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:113 +msgid "" +"Tools like :ref:`pip` and :ref:`build` do not actually convert your sources " +"into a :term:`distribution package ` (like a wheel); " +"that job is performed by a :term:`build backend `. The build " +"backend determines how your project will specify its configuration, " +"including metadata (information about the project, for example, the name and " +"tags that are displayed on PyPI) and input files. Build backends have " +"different levels of functionality, such as whether they support " +"building :term:`extension modules `, and you should choose " +"one that suits your needs and preferences." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:122 +msgid "" +"You can choose from a number of backends; this tutorial uses :ref:`Hatchling " +"` by default, but it will work identically " +"with :ref:`setuptools`, :ref:`Flit `, :ref:`PDM `, and others " +"that support the ``[project]`` table for :ref:`metadata `." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:129 +msgid "" +"Some build backends are part of larger tools that provide a command-line " +"interface with additional features like project initialization and version " +"management, as well as building, uploading, and installing packages. This " +"tutorial uses single-purpose tools that work independently." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:134 +msgid "" +"The :file:`pyproject.toml` tells :term:`build frontend ` " +"tools like :ref:`pip` and :ref:`build` which backend to use for your " +"project. Below are some examples for common build backends, but check your " +"backend's own documentation for more details." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:141 +msgid "" +"The ``requires`` key is a list of packages that are needed to build your " +"package. The :term:`frontend ` should install them " +"automatically when building your package. Frontends usually run builds in " +"isolated environments, so omitting dependencies here may cause build-time " +"errors. This should always include your backend's package, and might have " +"other build-time dependencies. The minimum version specified in the above " +"code block is the one that introduced support for :ref:`the new license " +"metadata `." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:150 +msgid "" +"The ``build-backend`` key is the name of the Python object that frontends " +"will use to perform the build." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:153 +msgid "" +"Both of these values will be provided by the documentation for your build " +"backend, or generated by its command line interface. There should be no need " +"for you to customize these settings." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:157 +msgid "" +"Additional configuration of the build tool will either be in a ``tool`` " +"section of the ``pyproject.toml``, or in a special file defined by the build " +"tool. For example, when using ``setuptools`` as your build backend, " +"additional configuration may be added to a ``setup.py`` or ``setup.cfg`` " +"file, and specifying ``setuptools.build_meta`` in your build allows the " +"tools to locate and use these automatically." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:167 +msgid "Configuring metadata" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:169 +msgid "" +"Open :file:`pyproject.toml` and enter the following content. Change the " +"``name`` to include your username; this ensures that you have a unique " +"package name that doesn't conflict with packages uploaded by other people " +"following this tutorial." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:196 +msgid "" +"``name`` is the *distribution name* of your package. This can be any name as " +"long as it only contains letters, numbers, ``.``, ``_`` , and ``-``. It also " +"must not already be taken on PyPI. **Be sure to update this with your " +"username** for this tutorial, as this ensures you won't try to upload a " +"package with the same name as one which already exists." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:201 +msgid "" +"``version`` is the package version. (Some build backends allow it to be " +"specified another way, such as from a file or Git tag.)" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:203 +msgid "" +"``authors`` is used to identify the author of the package; you specify a " +"name and an email for each author. You can also list ``maintainers`` in the " +"same format." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:206 +msgid "``description`` is a short, one-sentence summary of the package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:207 +msgid "" +"``readme`` is a path to a file containing a detailed description of the " +"package. This is shown on the package detail page on PyPI. In this case, the " +"description is loaded from :file:`README.md` (which is a common pattern). " +"There also is a more advanced table form described in " +"the :ref:`pyproject.toml guide `." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:212 +msgid "" +"``requires-python`` gives the versions of Python supported by your project. " +"An installer like :ref:`pip` will look back through older versions of " +"packages until it finds one that has a matching Python version." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:215 +msgid "" +"``classifiers`` gives the index and :ref:`pip` some additional metadata " +"about your package. In this case, the package is only compatible with Python " +"3 and is OS-independent. You should always include at least which version(s) " +"of Python your package works on and which operating systems your package " +"will work on. For a complete list of classifiers, see https://pypi.org/" +"classifiers/." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:222 +msgid "" +"``license`` is the :term:`SPDX license expression ` of " +"your :term:`Distribution Archive` files." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:224 +msgid "" +"``license-files`` is the list of glob paths to the license files, relative " +"to the directory where :file:`pyproject.toml` is located." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:226 +msgid "" +"``urls`` lets you list any number of extra links to show on PyPI. Generally " +"this could be to the source, documentation, issue trackers, etc." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:229 +msgid "" +"See the :ref:`pyproject.toml guide ` for details on " +"these and other fields that can be defined in the ``[project]`` table. Other " +"common fields are ``keywords`` to improve discoverability and the " +"``dependencies`` that are required to install your package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:236 +msgid "Creating README.md" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:238 +msgid "" +"Open :file:`README.md` and enter the following content. You can customize " +"this if you'd like." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:251 +msgid "Creating a LICENSE" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:253 +msgid "" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:282 +msgid "" +"Most build backends automatically include license files in packages. See " +"your backend's documentation for more details. If you include the path to " +"license in the ``license-files`` key of :file:`pyproject.toml`, and your " +"build backend supports :pep:`639`, the file will be automatically included " +"in the package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:290 +msgid "Including other files" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:292 +msgid "" +"The files listed above will be included automatically in your :term:`source " +"distribution `. If you want to include " +"additional files, see the documentation for your build backend." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:299 +msgid "Generating distribution archives" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:301 +msgid "" +"The next step is to generate :term:`distribution packages ` for the package. These are archives that are uploaded to the " +"Python Package Index and can be installed by :ref:`pip`." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:305 +msgid "Make sure you have the latest version of PyPA's :ref:`build` installed:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:319 +msgid "" +"If you have trouble installing these, see the :doc:`installing-packages` " +"tutorial." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:322 +msgid "" +"Now run this command from the same directory where :file:`pyproject.toml` is " +"located:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:336 +msgid "" +"This command should output a lot of text and once completed should generate " +"two files in the :file:`dist` directory:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:346 +msgid "" +"The ``tar.gz`` file is a :term:`source distribution ` whereas the ``.whl`` file is a :term:`built distribution `. Newer :ref:`pip` versions preferentially install built " +"distributions, but will fall back to source distributions if needed. You " +"should always upload a source distribution and provide built distributions " +"for the platforms your project is compatible with. In this case, our example " +"package is compatible with Python on any platform so only one built " +"distribution is needed." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:355 +msgid "Uploading the distribution archives" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:357 +msgid "Finally, it's time to upload your package to the Python Package Index!" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:359 +msgid "" +"The first thing you'll need to do is register an account on TestPyPI, which " +"is a separate instance of the package index intended for testing and " +"experimentation. It's great for things like this tutorial where we don't " +"necessarily want to upload to the real index. To register an account, go to " +"https://test.pypi.org/account/register/ and complete the steps on that page. " +"You will also need to verify your email address before you're able to upload " +"any packages. For more details, see :doc:`/guides/using-testpypi`." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:367 +msgid "" +"To securely upload your project, you'll need a PyPI `API token`_. Create one " +"at https://test.pypi.org/manage/account/#api-tokens, setting the \"Scope\" " +"to \"Entire account\". **Don't close the page until you have copied and " +"saved the token — you won't see that token again.**" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:374 +msgid "" +"Now that you are registered, you can use :ref:`twine` to upload the " +"distribution packages. You'll need to install Twine:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:389 +msgid "" +"Once installed, run Twine to upload all of the archives under :file:`dist`:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:403 +msgid "" +"You will be prompted for an API token. Use the token value, including the " +"``pypi-`` prefix. Note that the input will be hidden, so be sure to paste " +"correctly." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:406 +msgid "After the command completes, you should see output similar to this:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:417 +msgid "" +"Once uploaded, your package should be viewable on TestPyPI; for example: " +"``https://test.pypi.org/project/example_package_YOUR_USERNAME_HERE``." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:422 +msgid "Installing your newly uploaded package" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:424 +msgid "" +"You can use :ref:`pip` to install your package and verify that it works. " +"Create a :ref:`virtual environment ` and install your package from TestPyPI:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:440 +msgid "Make sure to specify your username in the package name!" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:442 +msgid "" +"pip should install the package from TestPyPI and the output should look " +"something like this:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:452 +msgid "" +"This example uses ``--index-url`` flag to specify TestPyPI instead of live " +"PyPI. Additionally, it specifies ``--no-deps``. Since TestPyPI doesn't have " +"the same packages as the live PyPI, it's possible that attempting to install " +"dependencies may fail or install something unexpected. While our example " +"package doesn't have any dependencies, it's a good practice to avoid " +"installing dependencies when using TestPyPI." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:459 +msgid "" +"You can test that it was installed correctly by importing the package. Make " +"sure you're still in your virtual environment, then run Python:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:474 +msgid "and import the package:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:486 +msgid "" +"**Congratulations, you've packaged and distributed a Python project!** ✨ 🍰 " +"✨" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:489 +msgid "" +"Keep in mind that this tutorial showed you how to upload your package to " +"Test PyPI, which isn't a permanent storage. The Test system occasionally " +"deletes packages and accounts. It is best to use TestPyPI for testing and " +"experiments like this tutorial." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:494 +msgid "" +"When you are ready to upload a real package to the Python Package Index you " +"can do much the same as you did in this tutorial, but with these important " +"differences:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:498 +msgid "" +"Choose a memorable and unique name for your package. You don't have to " +"append your username as you did in the tutorial, but you can't use an " +"existing name." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:500 +msgid "" +"Register an account on https://pypi.org - note that these are two separate " +"servers and the login details from the test server are not shared with the " +"main server." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:503 +msgid "" +"Use ``twine upload dist/*`` to upload your package and enter your " +"credentials for the account you registered on the real PyPI. Now that " +"you're uploading the package in production, you don't need to specify ``--" +"repository``; the package will upload to https://pypi.org/ by default." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:507 +msgid "" +"Install your package from the real PyPI using ``python3 -m pip install [your-" +"package]``." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:509 +msgid "" +"At this point if you want to read more on packaging Python libraries here " +"are some things you can do:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:512 +msgid "" +"Read about advanced configuration for your chosen build backend: `Hatchling " +"`_, :doc:`setuptools `, :doc:`Flit `, `PDM `_." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:516 +msgid "" +"Look at the :doc:`guides ` on this site for more advanced " +"practical information, or the :doc:`discussions ` for " +"explanations and background on specific topics." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:519 +msgid "" +"Consider packaging tools that provide a single command-line interface for " +"project management and packaging, such " +"as :ref:`hatch`, :ref:`flit`, :ref:`pdm`, and :ref:`poetry`." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:527 +msgid "Notes" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:529 +msgid "" +"Technically, you can also create Python packages without an ``__init__.py`` " +"file, but those are called :doc:`namespace packages ` and considered an **advanced topic** (not covered in " +"this tutorial). If you are only getting started with Python packaging, it is " +"recommended to stick with *regular packages* and ``__init__.py`` (even if " +"the file is empty)." +msgstr "" diff --git a/locales/my/LC_MESSAGES/messages.po b/locales/my/LC_MESSAGES/messages.po new file mode 100644 index 000000000..819450c59 --- /dev/null +++ b/locales/my/LC_MESSAGES/messages.po @@ -0,0 +1,26850 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) 2013–2020, PyPA +# This file is distributed under the same license as the Python Packaging User Guide package. +# Laitei , 2026. +msgid "" +msgstr "" +"Project-Id-Version: Python Packaging User Guide\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: my\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" + +#: ../source/contribute.rst:5 +msgid "Contribute to this guide" +msgstr "" + +#: ../source/contribute.rst:7 +msgid "" +"The |PyPUG| welcomes contributors! There are lots of ways to help out, " +"including:" +msgstr "" + +#: ../source/contribute.rst:10 +msgid "Reading the guide and giving feedback" +msgstr "" + +#: ../source/contribute.rst:11 +msgid "Reviewing new contributions" +msgstr "" + +#: ../source/contribute.rst:12 +msgid "Revising existing content" +msgstr "" + +#: ../source/contribute.rst:13 +msgid "Writing new content" +msgstr "" + +#: ../source/contribute.rst:14 +msgid "Translating the guide" +msgstr "" + +#: ../source/contribute.rst:16 +msgid "" +"Most of the work on the |PyPUG| takes place on the `project's GitHub " +"repository`__. To get started, check out the list of `open issues`__ and " +"`pull requests`__. If you're planning to write or edit the guide, please " +"read the :ref:`style guide `." +msgstr "" + +#: ../source/contribute.rst:25 +msgid "" +"By contributing to the |PyPUG|, you're expected to follow the PSF's `Code of " +"Conduct`__." +msgstr "" + +#: ../source/contribute.rst:32 +msgid "Documentation types" +msgstr "" + +#: ../source/contribute.rst:34 +msgid "" +"This project consists of four distinct documentation types with specific " +"purposes. The project aspires to follow the `Diátaxis process`_ for creating " +"quality documentation. When proposing new additions to the project please " +"pick the appropriate documentation type." +msgstr "" + +#: ../source/contribute.rst:42 ../source/index.rst:55 +#: ../source/tutorials/index.rst:2 +msgid "Tutorials" +msgstr "" + +#: ../source/contribute.rst:44 +msgid "" +"Tutorials are focused on teaching the reader new concepts by accomplishing a " +"goal. They are opinionated step-by-step guides. They do not include " +"extraneous warnings or information. `example tutorial-style document`_." +msgstr "" + +#: ../source/contribute.rst:51 ../source/guides/index.rst:2 +#: ../source/index.rst:69 +msgid "Guides" +msgstr "" + +#: ../source/contribute.rst:53 +msgid "" +"Guides are focused on accomplishing a specific task and can assume some " +"level of pre-requisite knowledge. These are similar to tutorials, but have a " +"narrow and clear focus and can provide lots of caveats and additional " +"information as needed. They may also discuss multiple approaches to " +"accomplishing the task. :doc:`example guide-style document `." +msgstr "" + +#: ../source/contribute.rst:60 ../source/discussions/index.rst:2 +msgid "Discussions" +msgstr "" + +#: ../source/contribute.rst:62 +msgid "" +"Discussions are focused on understanding and information. These explore a " +"specific topic without a specific goal in mind. :doc:`example discussion-" +"style document `." +msgstr "" + +#: ../source/contribute.rst:67 +msgid "Specifications" +msgstr "" + +#: ../source/contribute.rst:69 +msgid "" +"Specifications are reference documentation focused on comprehensively " +"documenting an agreed-upon interface for interoperability between packaging " +"tools. :doc:`example specification-style document `." +msgstr "" + +#: ../source/contribute.rst:75 +msgid "Translations" +msgstr "" + +#: ../source/contribute.rst:77 +msgid "" +"We use `Weblate`_ to manage translations of this project. Please visit the " +"`packaging.python.org`_ project on Weblate to contribute." +msgstr "" + +#: ../source/contribute.rst:80 +msgid "" +"If you are experiencing issues while you are working on translations, please " +"open an issue on `GitHub`_." +msgstr "" + +#: ../source/contribute.rst:85 +msgid "" +"Any translations of this project should follow `reStructuredText syntax`_." +msgstr "" + +#: ../source/contribute.rst:93 +msgid "Adding a language" +msgstr "" + +#: ../source/contribute.rst:95 +msgid "" +"If your language is not listed on `packaging.python.org`_, click the " +"button :guilabel:`Start new translation` at the bottom of the language list " +"and add the language you want to translate." +msgstr "" + +#: ../source/contribute.rst:100 +msgid "Following reStructuredText syntax" +msgstr "" + +#: ../source/contribute.rst:102 +msgid "" +"If you are not familiar with reStructuredText (RST) syntax, please read " +"`this guide`_ before translating on Weblate." +msgstr "" + +#: ../source/contribute.rst:118 +msgid "**Do not translate the text in reference directly**" +msgstr "" + +#: ../source/contribute.rst:106 +msgid "" +"When translating the text in reference, please do not translate them " +"directly." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: Translate the following text directly:" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "" +"Right: Translate the following text with your own language and add the " +"original reference:" +msgstr "" + +#: ../source/contribute.rst:123 +msgid "Building the guide locally" +msgstr "" + +#: ../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:129 +msgid ":doc:`Nox `. You can install or upgrade nox using ``pip``:" +msgstr "" + +#: ../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 ` to install Python 3.11 on your operating " +"system." +msgstr "" + +#: ../source/contribute.rst:140 +msgid "" +"To build the guide, run the following shell command in the project's root " +"folder:" +msgstr "" + +#: ../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 " +"guide in web browser, but it's recommended to serve the guide using an HTTP " +"server." +msgstr "" + +#: ../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:158 +msgid "The guide will be browsable via http://localhost:8000." +msgstr "" + +#: ../source/contribute.rst:162 +msgid "Where the guide is deployed" +msgstr "" + +#: ../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:170 +msgid "Style guide" +msgstr "" + +#: ../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, " +"your contributions will help add to a cohesive whole and make it easier for " +"your contributions to be accepted into the project." +msgstr "" + +#: ../source/contribute.rst:179 +msgid "Purpose" +msgstr "" + +#: ../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:186 +msgid "Scope" +msgstr "" + +#: ../source/contribute.rst:188 +msgid "" +"The guide is meant to answer questions and solve problems with accurate and " +"focused recommendations." +msgstr "" + +#: ../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, " +"options, and settings. The pip documentation describes each of them in " +"detail, while this guide describes only the parts of pip that are needed to " +"complete the specific tasks described in this guide." +msgstr "" + +#: ../source/contribute.rst:199 +msgid "Audience" +msgstr "" + +#: ../source/contribute.rst:201 +msgid "The audience of this guide is anyone who uses Python with packages." +msgstr "" + +#: ../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: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:213 +msgid "Voice and tone" +msgstr "" + +#: ../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: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 " +"person has asked you a question and you know the answer. How do you respond? " +"*That* is how you should write this guide." +msgstr "" + +#: ../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 " +"like you're acting out a part or giving a speech? Feel free to use " +"contractions and don't worry about sticking to fussy grammar rules. You are " +"hereby granted permission to end a sentence in a preposition, if that's what " +"you want to end it with." +msgstr "" + +#: ../source/contribute.rst:230 +msgid "" +"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 " +"joke, but if you're covering a sensitive security recommendation, you might " +"want to avoid jokes altogether." +msgstr "" + +#: ../source/contribute.rst:237 +msgid "Conventions and mechanics" +msgstr "" + +#: ../source/contribute.rst:245 +msgid "**Write to the reader**" +msgstr "" + +#: ../source/contribute.rst:240 +msgid "" +"When giving recommendations or steps to take, address the reader as *you* or " +"use the imperative mood." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: To install it, the user runs…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: You can install it by running…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: To install it, run…" +msgstr "" + +#: ../source/contribute.rst:251 +msgid "**State assumptions**" +msgstr "" + +#: ../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 " +"you're going to make assumptions, then say what assumptions that you're " +"going to make." +msgstr "" + +#: ../source/contribute.rst:256 +msgid "**Cross-reference generously**" +msgstr "" + +#: ../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:266 +msgid "**Respect naming practices**" +msgstr "" + +#: ../source/contribute.rst:259 +msgid "" +"When naming tools, sites, people, and other proper nouns, use their " +"preferred capitalization." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: Pip uses…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: pip uses…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: …hosted on github." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: …hosted on GitHub." +msgstr "" + +#: ../source/contribute.rst:275 +msgid "**Use a gender-neutral style**" +msgstr "" + +#: ../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 " +"avoid pronouns entirely." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: A maintainer uploads the file. Then he…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: A maintainer uploads the file. Then they…" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: A maintainer uploads the file. Then the maintainer…" +msgstr "" + +#: ../source/contribute.rst:287 +msgid "**Headings**" +msgstr "" + +#: ../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 " +"reader might want to know *How do I install MyLibrary?* so a good heading " +"might be *Install MyLibrary*." +msgstr "" + +#: ../source/contribute.rst:283 +msgid "" +"In section headings, use sentence case. In other words, write headings as " +"you would write a typical sentence." +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Wrong: Things You Should Know About Python" +msgstr "" + +#: ../source/contribute.rst:0 +msgid "Right: Things you should know about Python" +msgstr "" + +#: ../source/contribute.rst:290 +msgid "**Numbers**" +msgstr "" + +#: ../source/contribute.rst:290 +msgid "" +"In body text, write numbers one through nine as words. For other numbers or " +"numbers in tables, use numerals." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:4 +msgid "Deploying Python applications" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:0 +#: ../source/discussions/downstream-packaging.rst:0 +#: ../source/discussions/single-source-version.rst:0 +#: ../source/guides/distributing-packages-using-setuptools.rst:0 +#: ../source/guides/index-mirrors-and-caches.rst:0 +#: ../source/guides/installing-using-linux-tools.rst:0 +#: ../source/guides/migrating-to-pypi-org.rst:0 +#: ../source/guides/multi-version-installs.rst:0 +#: ../source/guides/packaging-binary-extensions.rst:0 +#: ../source/guides/supporting-multiple-python-versions.rst:0 +#: ../source/guides/supporting-windows-using-appveyor.rst:0 +msgid "Page Status" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:6 +#: ../source/guides/index-mirrors-and-caches.rst:7 +#: ../source/guides/installing-using-linux-tools.rst:7 +#: ../source/guides/packaging-binary-extensions.rst:7 +msgid "Incomplete" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:0 +#: ../source/discussions/downstream-packaging.rst:0 +#: ../source/discussions/single-source-version.rst:0 +#: ../source/guides/distributing-packages-using-setuptools.rst:0 +#: ../source/guides/index-mirrors-and-caches.rst:0 +#: ../source/guides/installing-using-linux-tools.rst:0 +#: ../source/guides/packaging-binary-extensions.rst:0 +#: ../source/guides/supporting-multiple-python-versions.rst:0 +#: ../source/guides/supporting-windows-using-appveyor.rst:0 +msgid "Last Reviewed" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:7 +msgid "2021-8-24" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:11 +#: ../source/specifications/externally-managed-environments.rst:130 +#: ../source/specifications/platform-compatibility-tags.rst:14 +msgid "Overview" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:15 +msgid "Supporting multiple hardware platforms" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:37 +msgid "OS packaging & installers" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:49 +#: ../source/discussions/deploying-python-applications.rst:86 +msgid "Windows" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:58 +msgid "Pynsist" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:60 +msgid "" +"`Pynsist `__ is a tool that bundles Python " +"programs together with the Python-interpreter into a single installer based " +"on NSIS. In most cases, packaging only requires the user to choose a version " +"of the Python-interpreter and declare the dependencies of the program. The " +"tool downloads the specified Python-interpreter for Windows and packages it " +"with all the dependencies in a single Windows-executable installer." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:67 +msgid "" +"The installed program can be started from a shortcut that the installer adds " +"to the start-menu. It uses a Python interpreter installed within its " +"application directory, independent of any other Python installation on the " +"computer." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:71 +msgid "" +"A big advantage of Pynsist is that the Windows packages can be built on " +"Linux. There are several examples for different kinds of programs (console, " +"GUI) in the :any:`documentation `. The tool is released under " +"the MIT-licence." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:77 +msgid "Application bundles" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:89 +msgid "py2exe" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:91 +msgid "" +"`py2exe `__ is a distutils extension which " +"allows to build standalone Windows executable programs (32-bit and 64-bit) " +"from Python scripts. Python versions included in the official development " +"cycle are supported (refers to `Status of Python branches`__). py2exe can " +"build console executables and windows (GUI) executables. Building windows " +"services, and DLL/EXE COM servers might work but it is not actively " +"supported. The distutils extension is released under the MIT-licence and " +"Mozilla Public License 2.0." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:103 +#: ../source/specifications/platform-compatibility-tags.rst:200 +msgid "macOS" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:106 +msgid "py2app" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:108 +msgid "" +"`py2app `__ is a Python setuptools command " +"which will allow you to make standalone macOS application bundles and " +"plugins from Python scripts. Note that py2app MUST be used on macOS to build " +"applications, it cannot create Mac applications on other platforms. py2app " +"is released under the MIT-license." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:115 +msgid "Unix (including Linux and macOS)" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:118 +#: ../source/key_projects.rst:576 +msgid "pex" +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:120 +msgid "" +"`pex `__ is a library for generating .pex " +"(Python EXecutable) files which are executable Python environments in the " +"spirit of virtualenvs. pex is an expansion upon the ideas outlined " +"in :pep:`441` and makes the deployment of Python applications as simple as " +"cp. pex files may even include multiple platform-specific Python " +"distributions, meaning that a single pex file can be portable across Linux " +"and macOS. pex is released under the Apache License 2.0." +msgstr "" + +#: ../source/discussions/deploying-python-applications.rst:129 +msgid "Configuration management" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:5 +msgid "Distribution package vs. import package" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:7 +msgid "" +"A number of different concepts are commonly referred to by the word " +"\"package\". This page clarifies the differences between two distinct but " +"related meanings in Python packaging, \"distribution package\" and \"import " +"package\"." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:13 +msgid "What's a distribution package?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:15 +msgid "" +"A distribution package is a piece of software that you can install. Most of " +"the time, this is synonymous with \"project\". When you type ``pip install " +"pkg``, or when you write ``dependencies = [\"pkg\"]`` in your " +"``pyproject.toml``, ``pkg`` is the name of a distribution package. When you " +"search or browse the PyPI_, the most widely known centralized source for " +"installing Python libraries and tools, what you see is a list of " +"distribution packages. Alternatively, the term \"distribution package\" can " +"be used to refer to a specific file that contains a certain version of a " +"project." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:24 +msgid "" +"Note that in the Linux world, a \"distribution package\", most commonly " +"abbreviated as \"distro package\" or just \"package\", is something provided " +"by the system package manager of the `Linux distribution `_, which " +"is a different meaning." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:31 +msgid "What's an import package?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:33 +msgid "" +"An import package is a Python module. Thus, when you write ``import pkg`` or " +"``from pkg import func`` in your Python code, ``pkg`` is the name of an " +"import package. More precisely, import packages are special Python modules " +"that can contain submodules. For example, the ``numpy`` package contains " +"modules like ``numpy.linalg`` and ``numpy.fft``. Usually, an import package " +"is a directory on the file system, containing modules as ``.py`` files and " +"subpackages as subdirectories." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:42 +msgid "" +"You can use an import package as soon as you have installed a distribution " +"package that provides it." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:47 +msgid "What are the links between distribution packages and import packages?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:49 +msgid "" +"Most of the time, a distribution package provides one single import package " +"(or non-package module), with a matching name. For example, ``pip install " +"numpy`` lets you ``import numpy``." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:53 +msgid "" +"However, this is only a convention. PyPI and other package indices *do not " +"enforce any relationship* between the name of a distribution package and the " +"import packages it provides. (A consequence of this is that you cannot " +"blindly install the PyPI package ``foo`` if you see ``import foo``; this may " +"install an unintended, and potentially even malicious package.)" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:59 +msgid "" +"A distribution package could provide an import package with a different " +"name. An example of this is the popular Pillow_ library for image " +"processing. Its distribution package name is ``Pillow``, but it provides the " +"import package ``PIL``. This is for historical reasons: Pillow started as a " +"fork of the PIL library, thus it kept the import name ``PIL`` so that " +"existing PIL users could switch to Pillow with little effort. More " +"generally, a fork of an existing library is a common reason for differing " +"names between the distribution package and the import package." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:69 +msgid "" +"On a given package index (like PyPI), distribution package names must be " +"unique. On the other hand, import packages have no such requirement. Import " +"packages with the same name can be provided by several distribution " +"packages. Again, forks are a common reason for this." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:74 +msgid "" +"Conversely, a distribution package can provide several import packages, " +"although this is less common. An example is the attrs_ distribution package, " +"which provides both an ``attrs`` import package with a newer API, and an " +"``attr`` import package with an older but supported API." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:81 +msgid "How do distribution package names and import package names compare?" +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:83 +msgid "" +"Import packages should have valid Python identifiers as their name " +"(the :ref:`exact rules ` are found in the Python " +"documentation) [#non-identifier-mod-name]_. In particular, they use " +"underscores ``_`` as word separator and they are case-sensitive." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:88 +msgid "" +"On the other hand, distribution packages can use hyphens ``-`` or " +"underscores ``_``. They can also contain dots ``.``, which is sometimes used " +"for packaging a subpackage of a :ref:`namespace package `. For most purposes, they are insensitive to case and to ``-`` " +"vs. ``_`` differences, e.g., ``pip install Awesome_Package`` is the same as " +"``pip install awesome-package`` (the precise rules are given in " +"the :ref:`name normalization specification `)." +msgstr "" + +#: ../source/discussions/distribution-package-vs-import-package.rst:101 +msgid "" +"Although it is technically possible to import packages/modules that do not " +"have a valid Python identifier as their name, using :doc:`importlib " +"`, this is vanishingly rare and strongly " +"discouraged." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:5 +msgid "Supporting downstream packaging" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:7 +msgid "Draft" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:8 +msgid "2025-?" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:10 +msgid "" +"While PyPI and the Python packaging tools such as :ref:`pip` are the primary " +"means of distributing Python packages, they are also often made available as " +"part of other packaging ecosystems. These repackaging efforts are " +"collectively called *downstream* packaging (your own efforts are called " +"*upstream* packaging), and include such projects as Linux distributions, " +"Conda, Homebrew and MacPorts. They generally aim to provide improved support " +"for use cases that cannot be handled via Python packaging tools alone, such " +"as native integration with a specific operating system, or assured " +"compatibility with specific versions of non-Python software." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:19 +msgid "" +"This discussion attempts to explain how downstream packaging is usually " +"done, and what additional challenges downstream packagers typically face. It " +"aims to provide some optional guidelines that project maintainers may choose " +"to follow which help make downstream packaging *significantly* easier " +"(without imposing any major maintenance hassles on the upstream project). " +"Note that this is not an all-or-nothing proposal — anything that upstream " +"maintainers can do is useful, even if it's only a small part. Downstream " +"maintainers are also willing to prepare patches to resolve these issues. " +"Having these patches merged can be very helpful, since it removes the need " +"for different downstreams to carry and keep rebasing the same patches, and " +"the risk of applying inconsistent solutions to the same problem." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:31 +msgid "" +"Establishing a good relationship between software maintainers and downstream " +"packagers can bring mutual benefits. Downstreams are often willing to share " +"their experience, time and hardware to improve your package. They are " +"sometimes in a better position to see how your package is used in practice, " +"and to provide information about its relationships with other packages that " +"would otherwise require significant effort to obtain. Packagers can often " +"find bugs before your users hit them in production, provide bug reports of " +"good quality, and supply patches whenever they can. For example, they are " +"regularly active in ensuring the packages they redistribute are updated for " +"any compatibility issues that arise when a new Python version is released." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:43 +msgid "" +"Please note that downstream builds include not only binary redistribution, " +"but also source builds done on user systems (in source-first distributions " +"such as Gentoo Linux, for example)." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:51 +msgid "Provide complete source distributions" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:54 +#: ../source/discussions/downstream-packaging.rst:150 +#: ../source/discussions/downstream-packaging.rst:213 +#: ../source/discussions/downstream-packaging.rst:303 +#: ../source/discussions/downstream-packaging.rst:412 +msgid "Why?" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:56 +msgid "" +"The vast majority of downstream packagers prefer to build packages from " +"source, rather than use the upstream-provided binary packages. In some " +"cases, using sources is actually required for the package to be included in " +"the distribution. This is also true of pure Python packages that provide " +"universal wheels. The reasons for using source distributions may include:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:62 +msgid "Being able to audit the source code of all packages." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:64 +msgid "Being able to run the test suite and build documentation." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:66 +msgid "" +"Being able to easily apply patches, including backporting commits from the " +"project's repository and sending patches back to the project." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:69 +msgid "" +"Being able to build on a specific platform that is not covered by upstream " +"builds." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:72 +msgid "Being able to build against specific versions of system libraries." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:74 +msgid "Having a consistent build process across all Python packages." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:76 +msgid "" +"While it is usually possible to build packages from a Git repository, there " +"are a few important reasons to provide a static archive file instead:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:79 +msgid "" +"Fetching a single file is often more efficient, more reliable and better " +"supported than e.g. using a Git clone. This can help users with poor " +"Internet connectivity." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:83 +msgid "" +"Downstreams often use hashes to verify the authenticity of source files on " +"subsequent builds, which require that they remain bitwise identical over " +"time. For example, automatically generated Git archives do not guarantee " +"this, as the compressed data may change if gzip is upgraded on the server." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:88 +msgid "" +"Archive files can be mirrored, reducing both upstream and downstream " +"bandwidth use. The actual builds can afterwards be performed in firewalled " +"or offline environments, that can only access source files provided by the " +"local mirror or redistributed earlier." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:93 +msgid "" +"Explicitly publishing archive files can ensure that any dependencies on " +"version control system metadata are resolved when creating the source " +"archive. For example, automatically generated Git archives omit all of the " +"commit tag information, potentially resulting in incorrect version details " +"in the resulting builds." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:99 +#: ../source/discussions/downstream-packaging.rst:179 +#: ../source/discussions/downstream-packaging.rst:277 +#: ../source/discussions/downstream-packaging.rst:337 +#: ../source/discussions/downstream-packaging.rst:441 +msgid "How?" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:101 +msgid "" +"Ideally, **a source distribution archive published on PyPI should include " +"all the files from the package's Git repository** that are necessary to " +"build the package itself, run its test suite, build and install its " +"documentation, and any other files that may be useful to end users, such as " +"shell completions, editor support files, and so on." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:107 +msgid "" +"This point applies only to the files belonging to the package itself. The " +"downstream packaging process, much like Python package managers, will " +"provision the necessary Python dependencies, system tools and external " +"libraries that are needed by your package and its build scripts. However, " +"the files listing these dependencies (for example, ``requirements*.txt`` " +"files) should also be included, to help downstreams determine the needed " +"dependencies, and check for changes in them." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:115 +msgid "" +"Some projects have concerns related to Python package managers using source " +"distributions from PyPI. They do not wish to increase their size with files " +"that are not used by these tools, or they do not wish to publish source " +"distributions at all, as they enable a problematic or outright nonfunctional " +"fallback to building the particular project from source. In these cases, a " +"good compromise may be to publish a separate source archive for downstream " +"use elsewhere, for example by attaching it to a GitHub release. " +"Alternatively, large files, such as test data, can be split into separate " +"archives." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:124 +msgid "" +"On the other hand, some projects (NumPy_, for instance) decide to include " +"tests in their installed packages. This has the added advantage of " +"permitting users to run tests after installing them, for example to check " +"for regressions after upgrading a dependency. Yet another approach is to " +"split tests or test data into a separate Python package. Such an approach " +"was taken by the cryptography_ project, with the large test vectors being " +"split to cryptography-vectors_ package." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:132 +msgid "" +"A good idea is to use your source distribution in the release workflow. For " +"example, the :ref:`build` tool does exactly that — it first builds a source " +"distribution, and then uses it to build a wheel. This ensures that the " +"source distribution actually works, and that it won't accidentally install " +"fewer files than the official wheels." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:138 +msgid "" +"Ideally, also use the source distribution to run tests, build documentation, " +"and so on, or add specific tests to make sure that all necessary files were " +"actually included. Understandably, this requires more effort, so it's fine " +"not do that — downstream packagers will report any missing files promptly." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:147 +msgid "Do not use the Internet during the build process" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:152 +msgid "" +"Downstream builds are frequently done in sandboxed environments that cannot " +"access the Internet. The package sources are unpacked into this environment, " +"and all the necessary dependencies are installed." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:156 +msgid "" +"Even if this is not the case, and assuming that you took sufficient care to " +"properly authenticate downloads, using the Internet is discouraged for a " +"number of reasons:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:160 +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 "" + +#: ../source/discussions/downstream-packaging.rst:164 +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 "" + +#: ../source/discussions/downstream-packaging.rst:168 +msgid "The remote resources may change, making the build not reproducible." +msgstr "" + +#: ../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 "" + +#: ../source/discussions/downstream-packaging.rst:174 +msgid "" +"The user may be using a service with a limited data plan, in which " +"uncontrolled Internet access may result in additional charges or other " +"inconveniences." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:181 +msgid "" +"If the package is implementing any custom build *backend* actions that use " +"the Internet, for example by automatically downloading vendored dependencies " +"or fetching Git submodules, its source distribution should either include " +"all of these files or allow provisioning them externally, and the Internet " +"must not be used if the files are already present." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:187 +msgid "" +"Note that this point does not apply to Python dependencies that are " +"specified in the package metadata, and are fetched during the build and " +"installation process by *frontends* (such as :ref:`build` or :ref:`pip`). " +"Downstreams use frontends that use local provisioning for Python " +"dependencies." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:192 +msgid "" +"Ideally, custom build scripts should not even attempt to access the Internet " +"at all, unless explicitly requested to. If any resources are missing and " +"need to be fetched, they should ask the user for permission first. If that " +"is not feasible, the next best thing is to provide an opt-out switch to " +"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 "" + +#: ../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 "" + +#: ../source/discussions/downstream-packaging.rst:202 +msgid "" +"Please also remember that if you are fetching remote resources, you " +"absolutely must *verify their authenticity* (usually against a hash), to " +"protect against the file being substituted by a malicious party." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:210 +msgid "Support building against system dependencies" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:215 +msgid "" +"Some Python projects have non-Python dependencies, such as libraries written " +"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 "" + +#: ../source/discussions/downstream-packaging.rst:219 +msgid "" +"The published wheels require a binary-compatible version of the used library " +"to be present on the user's system. If the library is missing or an " +"incompatible version is installed, the Python package may fail with errors " +"that are not clear to inexperienced users, or even misbehave at runtime." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:224 +msgid "" +"Building from a source distribution requires a source-compatible version of " +"the dependency to be present, along with its development headers and other " +"auxiliary files that some systems package separately from the library itself." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:229 +msgid "" +"Even for an experienced user, installing a compatible dependency version may " +"be very hard. For example, the used Linux distribution may not provide the " +"required version, or some other package may require an incompatible version." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:234 +msgid "" +"The linkage between the Python package and its system dependency is not " +"recorded by the packaging system. The next system update may upgrade the " +"library to a newer version that breaks binary compatibility with the Python " +"package, and requires user intervention to fix." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:239 +msgid "" +"For these reasons, you may reasonably decide to either statically link your " +"dependencies, or to provide local copies in the installed package. You may " +"also vendor the dependency in your source distribution. Sometimes these " +"dependencies are also repackaged on PyPI, and can be declared as project " +"dependencies like any other Python package." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:245 +msgid "" +"However, none of these issues apply to downstream packaging, and downstreams " +"have good reasons to prefer dynamically linking to system dependencies. In " +"particular:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:249 +msgid "" +"In many cases, reliably sharing dynamic dependencies between components is a " +"large part of the *purpose* of a downstream packaging ecosystem. Helping to " +"support that makes it easier for users of those systems to access upstream " +"projects in their preferred format." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:253 +msgid "" +"Static linking and vendoring obscures the use of external dependencies, " +"making source auditing harder." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:256 +msgid "" +"Dynamic linking makes it possible to quickly and systematically replace the " +"used libraries across an entire downstream packaging ecosystem, which can be " +"particularly important when they turn out to contain a security " +"vulnerability or critical bug." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:260 +msgid "" +"Using system dependencies makes the package benefit from downstream " +"customization that can improve the user experience on a particular platform, " +"without the downstream maintainers having to consistently patch the " +"dependencies vendored in different packages. This can include compatibility " +"improvements and security hardening." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:266 +msgid "" +"Static linking and vendoring can result in multiple different versions of " +"the same library being loaded in the same process (for example, attempting " +"to import two Python packages that link to different versions of the same " +"library). This sometimes works without incident, but it can also lead to " +"anything from library loading errors, to subtle runtime bugs, to " +"catastrophic failures (like suddenly crashing and losing data)." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:273 +msgid "" +"Last but not least, static linking and vendoring results in duplication, and " +"may increase the use of both disk space and memory." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:279 +msgid "" +"A good compromise between the needs of both parties is to provide a switch " +"between using vendored and system dependencies. Ideally, if the package has " +"multiple vendored dependencies, it should provide both individual switches " +"for each dependency, and a general switch to control the default for them, " +"e.g. via a ``USE_SYSTEM_DEPS`` environment variable." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:285 +msgid "" +"If the user requests using system dependencies, and a particular dependency " +"is either missing or incompatible, the build should fail with an explanatory " +"message rather than fall back to a vendored version. This gives the packager " +"the opportunity to notice their mistake and a chance to consciously decide " +"how to solve it." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:291 +msgid "" +"It is reasonable for upstream projects to leave *testing* of building with " +"system dependencies to their downstream repackagers. The goal of these " +"guidelines is to facilitate more effective collaboration between upstream " +"projects and downstream repackagers, not to suggest upstream projects take " +"on tasks that downstream repackagers are better equipped to handle." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:300 +msgid "Support downstream testing" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:305 +msgid "" +"A variety of downstream projects run some degree of testing on the packaged " +"Python projects. Depending on the particular case, this can range from " +"minimal smoke testing to comprehensive runs of the complete test suite. " +"There can be various reasons for doing this, for example:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:310 +msgid "Verifying that the downstream packaging did not introduce any bugs." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:312 +msgid "" +"Testing on additional platforms that are not covered by upstream testing." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:314 +msgid "" +"Finding subtle bugs that can only be reproduced with particular hardware, " +"system package versions, and so on." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:317 +msgid "" +"Testing the released package against newer (or older) dependency versions " +"than the ones present during upstream release testing." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:320 +msgid "" +"Testing the package in an environment closely resembling the production " +"setup. This can detect issues caused by non-trivial interactions between " +"different installed packages, including packages that are not dependencies " +"of your package, but nevertheless can cause issues." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:325 +msgid "" +"Testing the released package against newer Python versions (including newer " +"point releases), or less tested Python implementations such as PyPy." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:328 +msgid "" +"Admittedly, sometimes downstream testing may yield false positives or bug " +"reports about scenarios the upstream project is not interested in " +"supporting. However, perhaps even more often it does provide early notice of " +"problems, or find non-trivial bugs that would otherwise cause issues for the " +"upstream project's users. While mistakes do happen, the majority of " +"downstream packagers are doing their best to double-check their results, and " +"help upstream maintainers triage and fix the bugs that they reported." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:339 +msgid "" +"There are a number of things that upstream projects can do to help " +"downstream repackagers test their packages efficiently and effectively, " +"including some of the suggestions already mentioned above. These are " +"typically improvements that make the test suite more reliable and easier to " +"use for everyone, not just downstream packagers. Some specific suggestions " +"are:" +msgstr "" + +#: ../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 "" + +#: ../source/discussions/downstream-packaging.rst:348 +msgid "" +"Do not write to the package directories during testing. Downstream test " +"setups sometimes run tests on top of the installed package, and " +"modifications performed during testing and temporary test files may end up " +"being part of the installed package!" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:353 +msgid "" +"Make the test suite work offline. Mock network interactions, using packages " +"such as responses_ or vcrpy_. If that is not possible, make it possible to " +"easily disable the tests using Internet access, e.g. via a pytest_ marker. " +"Use pytest-socket_ to verify that your tests work offline. This often makes " +"your own test workflows faster and more reliable as well." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:359 +msgid "" +"Make your tests work without a specialized setup, or perform the necessary " +"setup as part of test fixtures. Do not ever assume that you can connect to " +"system services such as databases — in an extreme case, you could crash a " +"production service!" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:364 +msgid "" +"If your package has optional dependencies, make their tests optional as " +"well. Either skip them if the needed packages are not installed, or add " +"markers to make deselecting easy." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:368 +msgid "" +"More generally, add markers to tests with special requirements. These can " +"include e.g. significant space usage, significant memory usage, long " +"runtime, incompatibility with parallel testing." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:372 +msgid "" +"Do not assume that the test suite will be run with ``-Werror``. Downstreams " +"often need to disable that, as it causes false positives, e.g. due to newer " +"dependency versions. Assert for warnings using ``pytest.warns()`` rather " +"than ``pytest.raises()``!" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:377 +msgid "" +"Aim to make your test suite reliable and reproducible. Avoid flaky tests. " +"Avoid depending on specific platform details, don't rely on exact results of " +"floating-point computation, or timing of operations, and so on. Fuzzing has " +"its advantages, but you want to have static test cases for completeness as " +"well." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:383 +msgid "" +"Split tests by their purpose, and make it easy to skip categories that are " +"irrelevant or problematic. Since the primary purpose of downstream testing " +"is to ensure that the package itself works, downstreams are not generally " +"interested in tasks such as checking code coverage, code formatting, " +"typechecking or running benchmarks. These tests can fail as dependencies are " +"upgraded or the system is under load, without actually affecting the package " +"itself." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:390 +msgid "" +"If your test suite takes significant time to run, support testing in " +"parallel. Downstreams often maintain a large number of packages, and testing " +"them all takes a lot of time. Using pytest-xdist_ can help them avoid " +"bottlenecks." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:395 +msgid "" +"Ideally, support running your test suite via ``pytest``. pytest_ has many " +"command-line arguments that are truly helpful to downstreams, such as the " +"ability to conveniently deselect tests, rerun flaky tests (via pytest-" +"rerunfailures_), add a timeout to prevent tests from hanging (via pytest-" +"timeout_) or run tests in parallel (via pytest-xdist_). Note that test " +"suites don't need to be *written* with ``pytest`` to be *executed* with " +"``pytest``: ``pytest`` is able to find and execute almost all test cases " +"that are compatible with the standard library's ``unittest`` test discovery." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:409 +msgid "Aim for stable releases" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:414 +msgid "" +"Many downstreams provide stable release channels in addition to the main " +"package streams. The goal of these channels is to provide more conservative " +"upgrades to users with higher stability needs. These users often prefer to " +"trade having the newest features available for lower risk of issues." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:419 +msgid "" +"While the exact policies differ, an important criterion for including a new " +"package version in a stable release channel is for it to be available in " +"testing for some time already, and have no known major regressions. For " +"example, in Gentoo Linux a package is usually marked stable after being " +"available in testing for a month, and being tested against the versions of " +"its dependencies that are marked stable at the time." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:426 +msgid "" +"However, there are circumstances which demand more prompt action. For " +"example, if a security vulnerability or a major bug is found in the version " +"that is currently available in the stable channel, the downstream is facing " +"a need to resolve it. In this case, they need to consider various options, " +"such as:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:431 +msgid "putting a new version in the stable channel early," +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:433 +msgid "adding patches to the version currently published," +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:435 +msgid "or even downgrading the stable channel to an earlier release." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:437 +msgid "" +"Each of these options involves certain risks and a certain amount of work, " +"and packagers needs to weigh them to determine the course of action." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:443 +msgid "" +"There are some things that upstreams can do to tailor their workflow to " +"stable release channels. These actions often are beneficial to the package's " +"users as well. Some specific suggestions are:" +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:447 +msgid "" +"Adjust the release frequency to the rate of code changes. Packages that are " +"released rarely often bring significant changes with every release, and a " +"higher risk of accidental regressions." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:451 +msgid "" +"Avoid mixing bug fixes and new features, if possible. In particular, if " +"there are known bug fixes merged already, consider making a new release " +"before merging feature branches." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:455 +msgid "" +"Consider making prereleases after major changes, to provide more testing " +"opportunities for users and downstreams willing to opt-in." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:458 +msgid "" +"If your project is subject to very intense development, consider splitting " +"one or more branches that include a more conservative subset of commits, and " +"are released separately. For example, Django_ currently maintains three " +"release branches in addition to main." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:463 +msgid "" +"Even if you don't wish to maintain additional branches permanently, consider " +"making additional patch releases with minimal changes to the previous " +"version, especially when a security vulnerability is discovered." +msgstr "" + +#: ../source/discussions/downstream-packaging.rst:467 +msgid "" +"Split your changes into focused commits that address one problem at a time, " +"to make it easier to cherry-pick changes to earlier releases when necessary." +msgstr "" + +#: ../source/discussions/index.rst:4 +msgid "" +"**Discussions** are focused on providing comprehensive information about a " +"specific topic. If you're just trying to get stuff done, see :doc:`/guides/" +"index`." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:5 +msgid "install_requires vs requirements files" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:9 +msgid "install_requires" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:11 +msgid "" +"``install_requires`` is a :ref:`setuptools` :file:`setup.py` keyword that " +"should be used to specify what a project **minimally** needs to run " +"correctly. When the project is installed by :ref:`pip`, this is the " +"specification that is used to install its dependencies." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:16 +msgid "" +"For example, if the project requires A and B, your ``install_requires`` " +"would be like so:" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:26 +msgid "" +"Additionally, it's best practice to indicate any known lower or upper bounds." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:28 +msgid "" +"For example, it may be known, that your project requires at least v1 of 'A', " +"and v2 of 'B', so it would be like so:" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:38 +msgid "" +"It may also be known that project 'A' introduced a change in its v2 that " +"breaks the compatibility of your project with v2 of 'A' and later, so it " +"makes sense to not allow v2:" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:49 +msgid "" +"It is not considered best practice to use ``install_requires`` to pin " +"dependencies to specific versions, or to specify sub-dependencies (i.e. " +"dependencies of your dependencies). This is overly-restrictive, and " +"prevents the user from gaining the benefit of dependency upgrades." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:54 +msgid "" +"Lastly, it's important to understand that ``install_requires`` is a listing " +"of \"Abstract\" requirements, i.e just names and version restrictions that " +"don't determine where the dependencies will be fulfilled from (i.e. from " +"what index or source). The where (i.e. how they are to be made " +"\"Concrete\") is to be determined at install time using :ref:`pip` options. " +"[1]_" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:62 +#: ../source/tutorials/installing-packages.rst:463 +msgid "Requirements files" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:64 +msgid "" +":ref:`Requirements Files ` described most simply, " +"are just a list of :ref:`pip:pip install` arguments placed into a file." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:67 +msgid "" +"Whereas ``install_requires`` defines the dependencies for a single " +"project, :ref:`Requirements Files ` are often used " +"to define the requirements for a complete Python environment." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:71 +msgid "" +"Whereas ``install_requires`` requirements are minimal, requirements files " +"often contain an exhaustive listing of pinned versions for the purpose of " +"achieving :ref:`repeatable installations ` of a complete " +"environment." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:76 +msgid "" +"Whereas ``install_requires`` requirements are \"Abstract\", i.e. not " +"associated with any particular index, requirements files often contain pip " +"options like ``--index-url`` or ``--find-links`` to make requirements " +"\"Concrete\", i.e. associated with a particular index or directory of " +"packages. [1]_" +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:82 +msgid "" +"Whereas ``install_requires`` metadata is automatically analyzed by pip " +"during an install, requirements files are not, and only are used when a user " +"specifically installs them using ``python -m pip install -r``." +msgstr "" + +#: ../source/discussions/install-requires-vs-requirements.rst:88 +msgid "" +"For more on \"Abstract\" vs \"Concrete\" requirements, see https://" +"caremad.io/posts/2013/07/setup-vs-requirement/." +msgstr "" + +#: ../source/discussions/package-formats.rst:5 +msgid "Package Formats" +msgstr "" + +#: ../source/discussions/package-formats.rst:7 +msgid "" +"This page discusses the file formats that are used to distribute Python " +"packages and the differences between them." +msgstr "" + +#: ../source/discussions/package-formats.rst:10 +msgid "" +"You will find files in two formats on package indices such as PyPI_: " +"**source distributions**, or **sdists** for short, and **binary " +"distributions**, commonly called **wheels**. For example, the `PyPI page " +"for pip 23.3.1 `_ lets you download two files, " +"``pip-23.3.1.tar.gz`` and ``pip-23.3.1-py3-none-any.whl``. The former is an " +"sdist, the latter is a wheel. As explained below, these serve different " +"purposes. When publishing a package on PyPI (or elsewhere), you should " +"always upload both an sdist and one or more wheel." +msgstr "" + +#: ../source/discussions/package-formats.rst:21 +msgid "What is a source distribution?" +msgstr "" + +#: ../source/discussions/package-formats.rst:23 +msgid "" +"Conceptually, a source distribution is an archive of the source code in raw " +"form. Concretely, an sdist is a ``.tar.gz`` archive containing the source " +"code plus an additional special file called ``PKG-INFO``, which holds the " +"project metadata. The presence of this file helps packaging tools to be more " +"efficient by not needing to compute the metadata themselves. The ``PKG-" +"INFO`` file follows the format specified in :ref:`core-metadata` and is not " +"intended to be written by hand [#core-metadata-format]_." +msgstr "" + +#: ../source/discussions/package-formats.rst:31 +msgid "" +"You can thus inspect the contents of an sdist by unpacking it using standard " +"tools to work with tar archives, such as ``tar -xvf`` on UNIX platforms " +"(like Linux and macOS), or :ref:`the command line interface of Python's " +"tarfile module ` on any platform." +msgstr "" + +#: ../source/discussions/package-formats.rst:36 +msgid "" +"Sdists serve several purposes in the packaging ecosystem. When :ref:`pip`, " +"the standard Python package installer, cannot find a wheel to install, it " +"will fall back on downloading a source distribution, compiling a wheel from " +"it, and installing the wheel. Furthermore, sdists are often used as the " +"package source by downstream packagers (such as Linux distributions, Conda, " +"Homebrew and MacPorts on macOS, ...), who, for various reasons, may prefer " +"them over, e.g., pulling from a Git repository." +msgstr "" + +#: ../source/discussions/package-formats.rst:44 +msgid "" +"A source distribution is recognized by its file name, which has the " +"form :samp:`{package_name}-{version}.tar.gz`, e.g., ``pip-23.3.1.tar.gz``." +msgstr "" + +#: ../source/discussions/package-formats.rst:50 +msgid "" +"If you want technical details on the sdist format, read the :ref:`sdist " +"specification `." +msgstr "" + +#: ../source/discussions/package-formats.rst:55 +msgid "What is a wheel?" +msgstr "" + +#: ../source/discussions/package-formats.rst:57 +msgid "" +"Conceptually, a wheel contains exactly the files that need to be copied when " +"installing the package." +msgstr "" + +#: ../source/discussions/package-formats.rst:60 +msgid "" +"There is a big difference between sdists and wheels for packages " +"with :term:`extension modules `, written in compiled " +"languages like C, C++ and Rust, which need to be compiled into platform-" +"dependent machine code. With these packages, wheels do not contain source " +"code (like C source files) but compiled, executable code (like ``.so`` files " +"on Linux or DLLs on Windows)." +msgstr "" + +#: ../source/discussions/package-formats.rst:66 +msgid "" +"Furthermore, while there is only one sdist per version of a project, there " +"may be many wheels. Again, this is most relevant in the context of extension " +"modules. The compiled code of an extension module is tied to an operating " +"system and processor architecture, and often also to the version of the " +"Python interpreter (unless the :ref:`Python stable ABI ` " +"is used)." +msgstr "" + +#: ../source/discussions/package-formats.rst:72 +msgid "" +"For pure-Python packages, the difference between sdists and wheels is less " +"marked. There is normally one single wheel, for all platforms and Python " +"versions. Python is an interpreted language, which does not need ahead-of-" +"time compilation, so wheels contain ``.py`` files just like sdists." +msgstr "" + +#: ../source/discussions/package-formats.rst:77 +msgid "" +"If you are wondering about ``.pyc`` bytecode files: they are not included in " +"wheels, since they are cheap to generate, and including them would " +"unnecessarily force a huge number of packages to distribute one wheel per " +"Python version instead of one single wheel. Instead, installers " +"like :ref:`pip` generate them while installing the package." +msgstr "" + +#: ../source/discussions/package-formats.rst:83 +msgid "" +"With that being said, there are still important differences between sdists " +"and wheels, even for pure Python projects. Wheels are meant to contain " +"exactly what is to be installed, and nothing more. In particular, wheels " +"should never include tests and documentation, while sdists commonly do. " +"Also, the wheel format is more complex than sdist. For example, it includes " +"a special file -- called ``RECORD`` -- that lists all files in the wheel " +"along with a hash of their content, as a safety check of the download's " +"integrity." +msgstr "" + +#: ../source/discussions/package-formats.rst:91 +msgid "" +"At a glance, you might wonder if wheels are really needed for \"plain and " +"basic\" pure Python projects. Keep in mind that due to the flexibility of " +"sdists, installers like pip cannot install from sdists directly -- they need " +"to first build a wheel, by invoking the :term:`build backend` that the sdist " +"specifies (the build backend may do all sorts of transformations while " +"building the wheel, such as compiling C extensions). For this reason, even " +"for a pure Python project, you should always upload *both* an sdist and a " +"wheel to PyPI or other package indices. This makes installation much faster " +"for your users, since a wheel is directly installable. By only including " +"files that must be installed, wheels also make for smaller downloads." +msgstr "" + +#: ../source/discussions/package-formats.rst:102 +msgid "" +"On the technical level, a wheel is a ZIP archive (unlike sdists which are " +"TAR archives). You can inspect its contents by unpacking it as a normal ZIP " +"archive, e.g., using ``unzip`` on UNIX platforms like Linux and macOS, " +"``Expand-Archive`` in Powershell on Windows, or :ref:`the command line " +"interface of Python's zipfile module `. This can " +"be very useful to check that the wheel includes all the files you need it to." +msgstr "" + +#: ../source/discussions/package-formats.rst:109 +msgid "" +"Inside a wheel, you will find the package's files, plus an additional " +"directory called :samp:`{package_name}-{version}.dist-info`. This directory " +"contains various files, including a ``METADATA`` file which is the " +"equivalent of ``PKG-INFO`` in sdists, as well as ``RECORD``. This can be " +"useful to ensure no files are missing from your wheels." +msgstr "" + +#: ../source/discussions/package-formats.rst:115 +msgid "" +"The file name of a wheel (ignoring some rarely used features) looks like " +"this: :samp:`{package_name}-{version}-{python_tag}-{abi_tag}-" +"{platform_tag}.whl`. This naming convention identifies which platforms and " +"Python versions the wheel is compatible with. For example, the name " +"``pip-23.3.1-py3-none-any.whl`` means that:" +msgstr "" + +#: ../source/discussions/package-formats.rst:121 +msgid "" +"(``py3``) This wheel can be installed on any implementation of Python 3, " +"whether CPython, the most widely used Python implementation, or an " +"alternative implementation like PyPy_;" +msgstr "" + +#: ../source/discussions/package-formats.rst:124 +msgid "(``none``) It does not depend on the Python version;" +msgstr "" + +#: ../source/discussions/package-formats.rst:125 +msgid "(``any``) It does not depend on the platform." +msgstr "" + +#: ../source/discussions/package-formats.rst:127 +msgid "" +"The pattern ``py3-none-any`` is common for pure Python projects. Packages " +"with extension modules typically ship multiple wheels with more complex tags." +msgstr "" + +#: ../source/discussions/package-formats.rst:130 +msgid "" +"All technical details on the wheel format can be found in the :ref:`wheel " +"specification `." +msgstr "" + +#: ../source/discussions/package-formats.rst:138 +msgid "What about eggs?" +msgstr "" + +#: ../source/discussions/package-formats.rst:140 +msgid "" +"\"Egg\" is an old package format that has been replaced with the wheel " +"format. It should not be used anymore. Since August 2023, PyPI `rejects egg " +"uploads `_." +msgstr "" + +#: ../source/discussions/package-formats.rst:144 +msgid "Here's a breakdown of the important differences between wheel and egg." +msgstr "" + +#: ../source/discussions/package-formats.rst:146 +msgid "" +"The egg format was introduced by :ref:`setuptools` in 2004, whereas the " +"wheel format was introduced by :pep:`427` in 2012." +msgstr "" + +#: ../source/discussions/package-formats.rst:149 +msgid "" +"Wheel has an :doc:`official standard specification `. Egg did not." +msgstr "" + +#: ../source/discussions/package-formats.rst:152 +msgid "" +"Wheel is a :term:`distribution ` format, i.e a " +"packaging format. [#wheel-importable]_ Egg was both a distribution format " +"and a runtime installation format (if left zipped), and was designed to be " +"importable." +msgstr "" + +#: ../source/discussions/package-formats.rst:156 +msgid "" +"Wheel archives do not include ``.pyc`` files. Therefore, when the " +"distribution only contains Python files (i.e. no compiled extensions), and " +"is compatible with Python 2 and 3, it's possible for a wheel to be " +"\"universal\", similar to an :term:`sdist `." +msgstr "" + +#: ../source/discussions/package-formats.rst:161 +msgid "" +"Wheel uses standard :ref:`.dist-info directories `. Egg used ``.egg-info``." +msgstr "" + +#: ../source/discussions/package-formats.rst:164 +msgid "" +"Wheel has a :ref:`richer file naming convention `. A " +"single wheel archive can indicate its compatibility with a number of Python " +"language versions and implementations, ABIs, and system architectures." +msgstr "" + +#: ../source/discussions/package-formats.rst:168 +msgid "" +"Wheel is versioned. Every wheel file contains the version of the wheel " +"specification and the implementation that packaged it." +msgstr "" + +#: ../source/discussions/package-formats.rst:171 +msgid "" +"Wheel is internally organized by `sysconfig path type `_, therefore " +"making it easier to convert to other formats." +msgstr "" + +#: ../source/discussions/package-formats.rst:177 +msgid "" +"This format is email-based. Although this would be unlikely to be chosen " +"today, backwards compatibility considerations lead to it being kept as the " +"canonical format. From the user point of view, this is mostly invisible, " +"since the metadata is specified by the user in a way understood by the build " +"backend, typically ``[project]`` in ``pyproject.toml``, and translated by " +"the build backend into ``PKG-INFO``." +msgstr "" + +#: ../source/discussions/package-formats.rst:184 +msgid "" +"Circumstantially, in some cases, wheels can be used as an importable runtime " +"format, although :ref:`this is not officially supported at this time `." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:6 +msgid "pip vs easy_install" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:9 +msgid "" +":ref:`easy_install `, now `deprecated`_, was released in 2004 " +"as part of :ref:`setuptools`. It was notable at the time for " +"installing :term:`packages ` from :term:`PyPI ` using requirement specifiers, and automatically " +"installing dependencies." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:14 +msgid "" +":ref:`pip` came later in 2008, as an alternative to :ref:`easy_install " +"`, although still largely built on top of :ref:`setuptools` " +"components. It was notable at the time for *not* installing packages " +"as :term:`Eggs ` or from :term:`Eggs ` (but rather simply as " +"'flat' packages from :term:`sdists `), " +"and introducing the idea of :ref:`Requirements Files `, which gave users the power to easily replicate environments." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:22 +msgid "" +"Here's a breakdown of the important differences between pip and the " +"deprecated easy_install:" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:25 +msgid "**pip**" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:25 +msgid "**easy_install**" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:27 +msgid "Installs from :term:`Wheels `" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:27 +#: ../source/discussions/pip-vs-easy-install.rst:38 +#: ../source/discussions/pip-vs-easy-install.rst:44 +#: ../source/discussions/pip-vs-easy-install.rst:48 +#: ../source/discussions/pip-vs-easy-install.rst:54 +#: ../source/discussions/pip-vs-easy-install.rst:57 +msgid "Yes" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:27 +#: ../source/discussions/pip-vs-easy-install.rst:30 +#: ../source/discussions/pip-vs-easy-install.rst:32 +#: ../source/discussions/pip-vs-easy-install.rst:35 +#: ../source/discussions/pip-vs-easy-install.rst:38 +#: ../source/discussions/pip-vs-easy-install.rst:44 +#: ../source/discussions/pip-vs-easy-install.rst:48 +#: ../source/discussions/pip-vs-easy-install.rst:51 +#: ../source/discussions/pip-vs-easy-install.rst:54 +#: ../source/discussions/pip-vs-easy-install.rst:57 +msgid "No" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:30 +msgid "Uninstall Packages" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:30 +msgid "Yes (``python -m pip uninstall``)" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:32 +msgid "Dependency Overrides" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:32 +msgid "Yes (:ref:`Requirements Files `)" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:35 +msgid "List Installed Packages" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:35 +msgid "Yes (``python -m pip list`` and ``python -m pip freeze``)" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:38 +msgid ":pep:`438` Support" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:41 +msgid "Installation format" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:41 +msgid "'Flat' packages with :file:`egg-info` metadata." +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:41 +msgid "Encapsulated Egg format" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:44 +msgid "sys.path modification" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:48 +msgid "Installs from :term:`Eggs `" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:51 +msgid "`pylauncher support`_" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:51 +msgid "Yes [1]_" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:54 +msgid ":ref:`Multi-version Installs`" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:57 +msgid "Exclude scripts during install" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:60 +msgid "per project index" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:60 +msgid "Only in virtualenv" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:60 +msgid "Yes, via setup.cfg" +msgstr "" + +#: ../source/discussions/pip-vs-easy-install.rst:68 +msgid "" +"https://setuptools.readthedocs.io/en/latest/deprecated/" +"easy_install.html#natural-script-launcher" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:6 +msgid "Is ``setup.py`` deprecated?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:8 +msgid "No, :term:`setup.py` and :ref:`setuptools` are not deprecated." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:10 +msgid "" +"Setuptools is perfectly usable as a :term:`build backend` for packaging " +"Python projects. And :file:`setup.py` is a valid configuration file " +"for :ref:`setuptools` that happens to be written in Python, instead of in " +"*TOML* for example (a similar practice is used by other tools like *nox* and " +"its :file:`noxfile.py` configuration file, or *pytest* " +"and :file:`conftest.py`)." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:18 +msgid "" +"However, ``python setup.py`` and the use of :file:`setup.py` as a command " +"line tool are deprecated." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:21 +msgid "" +"This means that commands such as the following **MUST NOT** be run anymore:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:23 +#: ../source/discussions/setup-py-deprecated.rst:35 +#: ../source/guides/modernize-setup-py-project.rst:32 +msgid "``python setup.py install``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:24 +#: ../source/discussions/setup-py-deprecated.rst:37 +#: ../source/guides/modernize-setup-py-project.rst:34 +msgid "``python setup.py develop``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:25 +#: ../source/discussions/setup-py-deprecated.rst:39 +#: ../source/guides/modernize-setup-py-project.rst:36 +msgid "``python setup.py sdist``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:26 +#: ../source/discussions/setup-py-deprecated.rst:41 +#: ../source/guides/modernize-setup-py-project.rst:38 +msgid "``python setup.py bdist_wheel``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:30 +msgid "What commands should be used instead?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:33 +#: ../source/guides/modernize-setup-py-project.rst:30 +msgid "Deprecated" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:33 +#: ../source/guides/modernize-setup-py-project.rst:30 +msgid "Recommendation" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:35 +#: ../source/guides/modernize-setup-py-project.rst:32 +msgid "``python -m pip install .``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:37 +#: ../source/guides/modernize-setup-py-project.rst:34 +msgid "``python -m pip install --editable .``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:39 +msgid "``python -m build`` [#needs-build]_" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:45 +msgid "" +"This requires the :ref:`build` dependency. It is recommended to always build " +"and publish both the source distribution and wheel of a project, which is " +"what ``python -m build`` does. If necessary the ``--sdist`` and ``--wheel`` " +"options can be used to generate only one or the other." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:52 +msgid "" +"In order to install a setuptools based project, it was common to " +"run :file:`setup.py`'s ``install`` command such as: ``python setup.py " +"install``. Nowadays, the recommended method is to use :ref:`pip` directly " +"with a command like this one: ``python -m pip install .``. Where the dot " +"``.`` is actually a file system path, it is the path notation for the " +"current directory. Indeed, *pip* accepts a path to a project's source tree " +"directory on the local filesystem as argument to its ``install`` sub-" +"command. So this would also be a valid command: ``python -m pip install path/" +"to/project``." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:65 +msgid "" +"As for the installation in *develop* mode aka *editable* mode, instead of " +"``python setup.py develop`` one can use the ``--editable`` option of pip's " +"*install* sub-command: ``python -m pip install --editable .``." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:70 +msgid "" +"One recommended, simple, and straightforward method of " +"building :term:`source distributions ` " +"and :term:`wheels ` is to use the :ref:`build` tool with a command " +"like ``python -m build`` which triggers the generation of both distribution " +"formats. If necessary the ``--sdist`` and ``--wheel`` options can be used to " +"generate only one or the other. Note that the build tool needs to be " +"installed separately." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:80 +msgid "" +"The command ``python setup.py install`` was deprecated in setuptools version " +"*58.3.0*." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:85 +msgid "What about other commands?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:87 +msgid "What are some replacements for the other ``python setup.py`` commands?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:91 +msgid "``python setup.py test``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:93 +msgid "The recommendation is to use a test runner such as pytest_." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:99 +msgid "" +"``python setup.py check``, ``python setup.py register``, and ``python " +"setup.py upload``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:101 +msgid "A trusted replacement is :ref:`twine`:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:103 +msgid "``python -m twine check --strict dist/*``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:104 +msgid "``python -m twine register dist/*.whl`` [#not-pypi]_" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:105 +msgid "``python -m twine upload dist/*``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:107 +msgid "" +"Not necessary, nor supported on :term:`PyPI `. " +"But might be necessary on other :term:`package indexes ` (for " +"example :ref:`devpi`)." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:112 +msgid "``python setup.py --version``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:114 +msgid "" +"A possible replacement solution (among others) is to rely on setuptools-scm_:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:116 +msgid "``python -m setuptools_scm``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:122 +msgid "Remaining commands" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:124 +msgid "" +"This guide does not make suggestions of replacement solutions for those " +"commands:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:129 +msgid "``alias``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:130 +msgid "``bdist``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:131 +msgid "``bdist_dumb``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:132 +msgid "``bdist_egg``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:133 +msgid "``bdist_rpm``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:134 +msgid "``build``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:135 +msgid "``build_clib``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:136 +msgid "``build_ext``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:137 +msgid "``build_py``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:138 +msgid "``build_scripts``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:139 +msgid "``clean``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:140 +msgid "``dist_info``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:141 +msgid "``easy_install``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:142 +msgid "``editable_wheel``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:143 +msgid "``egg_info``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:144 +msgid "``install_data``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:145 +msgid "``install_egg_info``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:146 +msgid "``install_headers``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:147 +msgid "``install_lib``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:148 +msgid "``install_scripts``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:149 +msgid "``rotate``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:150 +msgid "``saveopts``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:151 +msgid "``setopt``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:152 +msgid "``upload_docs``" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:156 +msgid "What about custom commands?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:158 +msgid "" +"Likewise, custom :file:`setup.py` commands are deprecated. The " +"recommendation is to migrate those custom commands to a task runner tool or " +"any other similar tool. Some examples of such tools are: chuy, make, nox or " +"tox, pydoit, pyinvoke, taskipy, and thx." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:166 +msgid "What about custom build steps?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:168 +msgid "" +"Custom build steps that for example either overwrite existing steps such as " +"``build_py``, ``build_ext``, and ``bdist_wheel`` or add new build steps are " +"not deprecated. Those will be automatically called as expected." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:175 +#: ../source/guides/modernize-setup-py-project.rst:21 +msgid "Should ``setup.py`` be deleted?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:177 +msgid "" +"Although the usage of :file:`setup.py` as an executable script is " +"deprecated, its usage as a configuration file for setuptools is absolutely " +"fine. There is likely no modification needed in :file:`setup.py`." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:183 +msgid "Is ``pyproject.toml`` mandatory?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:185 +msgid "" +"While it is not technically necessary yet, it is **STRONGLY RECOMMENDED** " +"for a project to have a :file:`pyproject.toml` file at the root of its " +"source tree with a content like this:" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:196 +msgid "" +"The guide :ref:`modernize-setup-py-project` has more details about this." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:198 +msgid "" +"The standard fallback behavior for a :term:`build frontend ` " +"in the absence of a :file:`pyproject.toml` file and its ``[build-system]`` " +"table is to assume that the :term:`build backend ` is " +"setuptools." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:204 +msgid "Why? What does it all mean?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:206 +msgid "" +"One way to look at it is that the scope of setuptools has now been reduced " +"to the role of a build backend." +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:211 +#: ../source/guides/modernize-setup-py-project.rst:244 +msgid "Where to read more about this?" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:213 +msgid "" +"`Why you shouldn't invoke setup.py directly `__ by Paul Ganssle" +msgstr "" + +#: ../source/discussions/setup-py-deprecated.rst:215 +msgid ":doc:`setuptools:deprecated/commands`" +msgstr "" + +#: ../source/discussions/single-source-version.rst:5 +msgid "Single-sourcing the Project Version" +msgstr "" + +#: ../source/discussions/single-source-version.rst:7 +msgid "Complete" +msgstr "" + +#: ../source/discussions/single-source-version.rst:8 +msgid "2024-10-07" +msgstr "" + +#: ../source/discussions/single-source-version.rst:10 +msgid "" +"Many Python :term:`distribution packages ` publish a " +"single Python :term:`import package ` where it is desired " +"that the runtime ``__version__`` attribute on the import package report the " +"same version specifier as :func:`importlib.metadata.version` reports for the " +"distribution package (as described in :ref:`runtime-version-access`)." +msgstr "" + +#: ../source/discussions/single-source-version.rst:16 +msgid "" +"It is also frequently desired that this version information be derived from " +"a version control system *tag* (such as ``v1.2.3``) rather than being " +"manually updated in the source code." +msgstr "" + +#: ../source/discussions/single-source-version.rst:20 +msgid "" +"Some projects may choose to simply live with the data entry duplication, and " +"rely on automated testing to ensure the different values do not diverge." +msgstr "" + +#: ../source/discussions/single-source-version.rst:23 +msgid "" +"Alternatively, a project's chosen build system may offer a way to define a " +"single source of truth for the version number." +msgstr "" + +#: ../source/discussions/single-source-version.rst:26 +msgid "In general, the options are:" +msgstr "" + +#: ../source/discussions/single-source-version.rst:28 +msgid "" +"If the code is in a version control system (VCS), such as Git, then the " +"version can be extracted from the VCS." +msgstr "" + +#: ../source/discussions/single-source-version.rst:30 +msgid "" +"The version can be hard-coded into the :file:`pyproject.toml` file -- and " +"the build system can copy it into other locations it may be required." +msgstr "" + +#: ../source/discussions/single-source-version.rst:33 +msgid "" +"The version string can be hard-coded into the source code -- either in a " +"special purpose file, such as :file:`_version.txt` (which must then be " +"shipped as part of the project's source distribution package), or as an " +"attribute in a particular module, such as :file:`__init__.py`. The build " +"system can then extract it from the runtime location at build time." +msgstr "" + +#: ../source/discussions/single-source-version.rst:38 +msgid "Consult your build system's documentation for their recommended method." +msgstr "" + +#: ../source/discussions/single-source-version.rst:40 +msgid "" +"When the intention is that a distribution package and its associated import " +"package share the same version, it is recommended that the project include " +"an automated test case that ensures ``import_name.__version__`` and " +"``importlib.metadata.version(\"dist-name\")`` report the same value (note: " +"for many projects, ``import_name`` and ``dist-name`` will be the same name)." +msgstr "" + +#: ../source/discussions/single-source-version.rst:50 +msgid "Build System Version Handling" +msgstr "" + +#: ../source/discussions/single-source-version.rst:52 +msgid "" +"The following are links to some build system's documentation for handling " +"version strings." +msgstr "" + +#: ../source/discussions/single-source-version.rst:54 +msgid "`Flit `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:56 +msgid "`Hatchling `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:58 +msgid "" +"`PDM `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:60 +msgid "" +"`Setuptools `_" +msgstr "" + +#: ../source/discussions/single-source-version.rst:62 +msgid "`setuptools_scm `_" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:5 +msgid "src layout vs flat layout" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:7 +msgid "" +"The \"flat layout\" refers to organising a project's files in a folder or " +"repository, such that the various configuration files and :term:`import " +"packages ` are all in the top-level directory." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:25 +msgid "" +"The \"src layout\" deviates from the flat layout by moving the code that is " +"intended to be importable (i.e. ``import awesome_package``, also known " +"as :term:`import packages `) into a subdirectory. This " +"subdirectory is typically named ``src/``, hence \"src layout\"." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:45 +msgid "" +"Here's a breakdown of the important behaviour differences between the src " +"layout and the flat layout:" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:48 +msgid "" +"The src layout requires installation of the project to be able to run its " +"code, and the flat layout does not." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:51 +msgid "" +"This means that the src layout involves an additional step in the " +"development workflow of a project (typically, an :doc:`editable installation " +"` is used for development and a " +"regular installation is used for testing)." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:56 +msgid "" +"The src layout helps prevent accidental usage of the in-development copy of " +"the code." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:59 +msgid "" +"This is relevant since the Python interpreter includes the current working " +"directory as the first item on the import path. This means that if an import " +"package exists in the current working directory with the same name as an " +"installed import package, the variant from the current working directory " +"will be used. This can lead to subtle misconfiguration of the project's " +"packaging tooling, which could result in files not being included in a " +"distribution." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:66 +msgid "" +"The src layout helps avoid this by keeping import packages in a directory " +"separate from the root directory of the project, ensuring that the installed " +"copy is used." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:70 +msgid "" +"The src layout helps enforce that an :doc:`editable installation " +"` is only able to import files that " +"were meant to be importable." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:74 +msgid "" +"This is especially relevant when the editable installation is implemented " +"using a `path configuration file `_ that adds the directory to the import path." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:78 +msgid "" +"The flat layout would add the other project files (eg: ``README.md``, " +"``tox.ini``) and packaging/tooling configuration files (eg: ``setup.py``, " +"``noxfile.py``) on the import path. This would make certain imports work in " +"editable installations but not regular installations." +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:86 +msgid "Running a command-line interface from source with src-layout" +msgstr "" + +#: ../source/discussions/src-layout-vs-flat-layout.rst:88 +msgid "" +"Due to the firstly mentioned specialty of the src layout, a command-line " +"interface can not be run directly from the :term:`source tree `, but requires installation of the package in :doc:`Development " +"Mode ` for testing purposes. Since " +"this can be unpractical in some situations, a workaround could be to prepend " +"the package folder to Python's :py:data:`sys.path` when called via " +"its :file:`__main__.py` file:" +msgstr "" + +#: ../source/discussions/versioning.rst:6 +#: ../source/specifications/simple-repository-api.rst:349 +msgid "Versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:8 +msgid "This discussion covers all aspects of versioning Python packages." +msgstr "" + +#: ../source/discussions/versioning.rst:12 +msgid "Valid version numbers" +msgstr "" + +#: ../source/discussions/versioning.rst:14 +msgid "" +"Different Python projects may use different versioning schemes based on the " +"needs of that particular project, but in order to be compatible with tools " +"like :ref:`pip`, all of them are required to comply with a flexible format " +"for version identifiers, for which the authoritative reference is " +"the :ref:`specification of version specifiers `. Here " +"are some examples of version numbers [#version-examples]_:" +msgstr "" + +#: ../source/discussions/versioning.rst:21 +msgid "A simple version (final release): ``1.2.0``" +msgstr "" + +#: ../source/discussions/versioning.rst:22 +msgid "A development release: ``1.2.0.dev1``" +msgstr "" + +#: ../source/discussions/versioning.rst:23 +msgid "An alpha release: ``1.2.0a1``" +msgstr "" + +#: ../source/discussions/versioning.rst:24 +msgid "A beta release: ``1.2.0b1``" +msgstr "" + +#: ../source/discussions/versioning.rst:25 +msgid "A release candidate: ``1.2.0rc1``" +msgstr "" + +#: ../source/discussions/versioning.rst:26 +msgid "A post-release: ``1.2.0.post1``" +msgstr "" + +#: ../source/discussions/versioning.rst:27 +msgid "" +"A post-release of an alpha release (possible, but discouraged): " +"``1.2.0a1.post1``" +msgstr "" + +#: ../source/discussions/versioning.rst:28 +msgid "A simple version with only two components: ``23.12``" +msgstr "" + +#: ../source/discussions/versioning.rst:29 +msgid "A simple version with just one component: ``42``" +msgstr "" + +#: ../source/discussions/versioning.rst:30 +msgid "A version with an epoch (discouraged): ``1!1.0``" +msgstr "" + +#: ../source/discussions/versioning.rst:32 +msgid "" +"Projects can use a cycle of pre-releases to support testing by their users " +"before a final release. In order, the steps are: alpha releases, beta " +"releases, release candidates, final release. Pip and other modern Python " +"package installers ignore pre-releases by default when deciding which " +"versions of dependencies to install, unless explicitly requested (e.g., with " +"``pip install pkg==1.1a3`` or ``pip install --pre pkg``)." +msgstr "" + +#: ../source/discussions/versioning.rst:39 +msgid "" +"The purpose of development releases is to support releases made early during " +"a development cycle, for example, a nightly build, or a build from the " +"latest source in a Linux distribution." +msgstr "" + +#: ../source/discussions/versioning.rst:43 +msgid "" +"Post-releases are used to address minor errors in a final release that do " +"not affect the distributed software, such as correcting an error in the " +"release notes. They should not be used for bug fixes; these should be done " +"with a new final release (e.g., incrementing the third component when using " +"semantic versioning)." +msgstr "" + +#: ../source/discussions/versioning.rst:49 +msgid "" +"Finally, epochs were intended to fix the sorting order when changing the " +"versioning scheme. For example, if a project was using calendar versioning, " +"with versions like ``23.12``, and switched to semantic versioning, with " +"versions like ``1.0``, the comparison between ``1.0`` and ``23.12`` would go " +"the wrong way. To correct this, the new version numbers would have an " +"explicit epoch, as in ``1!1.0``, in order to be treated as more recent than " +"the old version numbers. However, this is discouraged, and it is preferable " +"to use a higher version number that is unlikely to cause user confusion, " +"such as ``100.0``." +msgstr "" + +#: ../source/discussions/versioning.rst:60 +msgid "Semantic versioning vs. calendar versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:62 +msgid "" +"A versioning scheme is a formalized way to interpret the segments of a " +"version number, and to decide which should be the next version number for a " +"new release of a package. Two versioning schemes are commonly used for " +"Python packages, semantic versioning and calendar versioning." +msgstr "" + +#: ../source/discussions/versioning.rst:69 +msgid "" +"The decision which version number to choose is up to a project's maintainer. " +"This effectively means that version bumps reflect the maintainer's view. " +"That view may differ from the end-users' perception of what said formalized " +"versioning scheme promises them." +msgstr "" + +#: ../source/discussions/versioning.rst:75 +msgid "" +"There are known exceptions for selecting the next version number. The " +"maintainers may consciously choose to break the assumption that the last " +"version segment only contains backwards-compatible changes. One such case is " +"when a security vulnerability needs to be addressed. Security releases often " +"come in patch versions but contain breaking changes inevitably." +msgstr "" + +#: ../source/discussions/versioning.rst:85 +#: ../source/specifications/version-specifiers.rst:741 +msgid "Semantic versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:87 +msgid "" +"The idea of *semantic versioning* (or SemVer) is to use 3-part version " +"numbers, *major.minor.patch*, where the project author increments:" +msgstr "" + +#: ../source/discussions/versioning.rst:90 +msgid "*major* when they make incompatible API changes," +msgstr "" + +#: ../source/discussions/versioning.rst:91 +msgid "" +"*minor* when they add functionality in a backwards-compatible manner, and" +msgstr "" + +#: ../source/discussions/versioning.rst:92 +msgid "*patch*, when they make backwards-compatible bug fixes." +msgstr "" + +#: ../source/discussions/versioning.rst:94 +msgid "" +"A majority of Python projects use a scheme that resembles semantic " +"versioning. However, most projects, especially larger ones, do not strictly " +"adhere to semantic versioning, since many changes are technically breaking " +"changes but affect only a small fraction of users. Such projects tend to " +"increment the major number when the incompatibility is high, or to signal a " +"shift in the project, rather than for any tiny incompatibility [#semver-" +"strictness]_. Conversely, a bump of the major version number is sometimes " +"used to signal significant but backwards-compatible new features." +msgstr "" + +#: ../source/discussions/versioning.rst:104 +msgid "" +"For those projects that do use strict semantic versioning, this approach " +"allows users to make use of :ref:`compatible release version specifiers " +"`, with the ``~=`` operator. For " +"example, ``name ~= X.Y`` is roughly equivalent to ``name >= X.Y, == X.*``, " +"i.e., it requires at least release X.Y, and allows any later release with " +"greater Y as long as X is the same. Likewise, ``name ~= X.Y.Z`` is roughly " +"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 "" + +#: ../source/discussions/versioning.rst:113 +msgid "" +"Python projects adopting semantic versioning should abide by clauses 1-8 of " +"the `Semantic Versioning 2.0.0 specification `_." +msgstr "" + +#: ../source/discussions/versioning.rst:116 +msgid "" +"The popular :doc:`Sphinx ` documentation generator is an " +"example project that uses strict semantic versioning (:doc:`Sphinx " +"versioning policy `). The " +"famous :doc:`NumPy ` scientific computing package explicitly " +"uses \"loose\" semantic versioning, where releases incrementing the minor " +"version can contain backwards-incompatible API changes (:doc:`NumPy " +"versioning policy `)." +msgstr "" + +#: ../source/discussions/versioning.rst:125 +msgid "Calendar versioning" +msgstr "" + +#: ../source/discussions/versioning.rst:127 +msgid "" +"Semantic versioning is not a suitable choice for all projects, such as those " +"with a regular time-based release cadence and a deprecation process that " +"provides warnings for a number of releases prior to removal of a feature." +msgstr "" + +#: ../source/discussions/versioning.rst:131 +msgid "" +"A key advantage of date-based versioning, or `calendar versioning " +"`_ (CalVer), is that it is straightforward to tell how old the base " +"feature set of a particular release is given just the version number." +msgstr "" + +#: ../source/discussions/versioning.rst:135 +msgid "" +"Calendar version numbers typically take the form *year.month* (for example, " +"23.12 for December 2023)." +msgstr "" + +#: ../source/discussions/versioning.rst:138 +msgid "" +":doc:`Pip `, the standard Python package installer, uses calendar " +"versioning." +msgstr "" + +#: ../source/discussions/versioning.rst:143 +msgid "Other schemes" +msgstr "" + +#: ../source/discussions/versioning.rst:145 +msgid "" +"Serial versioning refers to the simplest possible versioning scheme, which " +"consists of a single number incremented every release. While serial " +"versioning is very easy to manage as a developer, it is the hardest to track " +"as an end user, as serial version numbers convey little or no information " +"regarding API backwards compatibility." +msgstr "" + +#: ../source/discussions/versioning.rst:151 +msgid "" +"Combinations of the above schemes are possible. For example, a project may " +"combine date-based versioning with serial versioning to create a " +"*year.serial* numbering scheme that readily conveys the approximate age of a " +"release, but doesn't otherwise commit to a particular release cadence within " +"the year." +msgstr "" + +#: ../source/discussions/versioning.rst:158 +#: ../source/specifications/version-specifiers.rst:114 +msgid "Local version identifiers" +msgstr "" + +#: ../source/discussions/versioning.rst:160 +msgid "" +"Public version identifiers are designed to support distribution " +"via :term:`PyPI `. Python packaging tools also " +"support the notion of a :ref:`local version identifier `, which can be used to identify local development builds not " +"intended for publication, or modified variants of a release maintained by a " +"redistributor." +msgstr "" + +#: ../source/discussions/versioning.rst:166 +msgid "" +"A local version identifier takes the form of a public version identifier, " +"followed by \"+\" and a local version label. For example, a package with " +"Fedora-specific patches applied could have the version \"1.2.1+fedora.4\". " +"Another example is versions computed by setuptools-scm_, a setuptools plugin " +"that reads the version from Git data. In a Git repository with some commits " +"since the latest release, setuptools-scm generates a version like " +"\"0.5.dev1+gd00980f\", or if the repository has untracked changes, like " +"\"0.5.dev1+gd00980f.d20231217\"." +msgstr "" + +#: ../source/discussions/versioning.rst:178 +msgid "Accessing version information at runtime" +msgstr "" + +#: ../source/discussions/versioning.rst:180 +msgid "" +"Version information for all :term:`distribution packages ` that are locally available in the current environment can be " +"obtained at runtime using the standard " +"library's :func:`importlib.metadata.version` function::" +msgstr "" + +#: ../source/discussions/versioning.rst:187 +msgid "" +"Many projects also choose to version their top level :term:`import packages " +"` by providing a package level ``__version__`` attribute::" +msgstr "" + +#: ../source/discussions/versioning.rst:195 +msgid "" +"This technique can be particularly valuable for CLI applications which want " +"to ensure that version query invocations (such as ``pip -V``) run as quickly " +"as possible." +msgstr "" + +#: ../source/discussions/versioning.rst:199 +msgid "" +"Package publishers wishing to ensure their reported distribution package and " +"import package versions are consistent with each other can review " +"the :ref:`single-source-version` discussion for potential approaches to " +"doing so." +msgstr "" + +#: ../source/discussions/versioning.rst:203 +msgid "" +"As import packages and modules are not *required* to publish runtime version " +"information in this way (see the withdrawn proposal in :pep:`PEP 396 " +"<396>`), the ``__version__`` attribute should either only be queried with " +"interfaces that are known to provide it (such as a project querying its own " +"version or the version of one of its direct dependencies), or else the " +"querying code should be designed to handle the case where the attribute is " +"missing [#fallback-to-dist-version]_." +msgstr "" + +#: ../source/discussions/versioning.rst:211 +msgid "" +"Some projects may need to publish version information for external APIs that " +"aren't the version of the module itself. Such projects should define their " +"own project-specific ways of obtaining the relevant information at runtime. " +"For example, the standard library's :mod:`ssl` module offers multiple ways " +"to access the underlying OpenSSL library version::" +msgstr "" + +#: ../source/discussions/versioning.rst:226 +msgid "" +"Some more examples of unusual version numbers are given in a `blog post " +"`_ by Seth Larson." +msgstr "" + +#: ../source/discussions/versioning.rst:229 +msgid "" +"For some personal viewpoints on this issue, see these blog posts: `by Hynek " +"Schlawak `_, `by Donald Stufft `_, `by Bernát Gábor `_, `by Brett Cannon " +"`_. For a humoristic take, read about ZeroVer_." +msgstr "" + +#: ../source/discussions/versioning.rst:235 +msgid "" +"A full list mapping the top level names available for import to the " +"distribution packages that provide those import packages and modules may be " +"obtained through the standard " +"library's :func:`importlib.metadata.packages_distributions` function. This " +"means that even code that is attempting to infer a version to report for all " +"importable top-level names has a means to fall back to reporting the " +"distribution version information if no ``__version__`` attribute is defined. " +"Only standard library modules, and modules added via means other than Python " +"package installation would fail to have version information reported in that " +"case." +msgstr "" + +#: ../source/flow.rst:3 +msgid "The Packaging Flow" +msgstr "" + +#: ../source/flow.rst:5 +msgid "" +"The document aims to outline the flow involved in publishing/distributing " +"a :term:`distribution package `, usually to the " +"`Python Package Index (PyPI)`_. It is written for package publishers, who " +"are assumed to be the package author." +msgstr "" + +#: ../source/flow.rst:12 +msgid "" +"While the :doc:`tutorial ` walks through the " +"process of preparing a simple package for release, it does not fully " +"enumerate what steps and files are required, and for what purpose." +msgstr "" + +#: ../source/flow.rst:16 +msgid "" +"Publishing a package requires a flow from the author's source code to an end " +"user's Python environment. The steps to achieve this are:" +msgstr "" + +#: ../source/flow.rst:19 +msgid "" +"Have a source tree containing the package. This is typically a checkout from " +"a version control system (VCS)." +msgstr "" + +#: ../source/flow.rst:22 +msgid "" +"Prepare a configuration file describing the package metadata (name, version " +"and so forth) and how to create the build artifacts. For most packages, this " +"will be a :file:`pyproject.toml` file, maintained manually in the source " +"tree." +msgstr "" + +#: ../source/flow.rst:27 +msgid "" +"Create build artifacts to be sent to the package distribution service " +"(usually PyPI); these will normally be a :term:`source distribution " +"(\"sdist\") ` and one or " +"more :term:`built distributions (\"wheels\") `. These " +"are made by a build tool using the configuration file from the previous " +"step. Often there is just one generic wheel for a pure Python package." +msgstr "" + +#: ../source/flow.rst:35 +msgid "Upload the build artifacts to the package distribution service." +msgstr "" + +#: ../source/flow.rst:37 +msgid "" +"At that point, the package is present on the package distribution service. " +"To use the package, end users must:" +msgstr "" + +#: ../source/flow.rst:40 +msgid "" +"Download one of the package's build artifacts from the package distribution " +"service." +msgstr "" + +#: ../source/flow.rst:43 +msgid "" +"Install it in their Python environment, usually in its ``site-packages`` " +"directory. This step may involve a build/compile step which, if needed, must " +"be described by the package metadata." +msgstr "" + +#: ../source/flow.rst:47 +msgid "" +"These last 2 steps are typically performed by :ref:`pip` when an end user " +"runs ``pip install``." +msgstr "" + +#: ../source/flow.rst:50 +msgid "The steps above are described in more detail below." +msgstr "" + +#: ../source/flow.rst:53 +msgid "The source tree" +msgstr "" + +#: ../source/flow.rst:55 +msgid "" +"The source tree contains the package source code, usually a checkout from a " +"VCS. The particular version of the code used to create the build artifacts " +"will typically be a checkout based on a tag associated with the version." +msgstr "" + +#: ../source/flow.rst:60 +msgid "The configuration file" +msgstr "" + +#: ../source/flow.rst:62 +msgid "" +"The configuration file depends on the tool used to create the build " +"artifacts. The standard practice is to use a :file:`pyproject.toml` file in " +"the `TOML format`_." +msgstr "" + +#: ../source/flow.rst:68 +msgid "" +"At a minimum, the :file:`pyproject.toml` file needs a ``[build-system]`` " +"table specifying your build tool. There are many build tools available, " +"including but not limited " +"to :ref:`flit`, :ref:`hatch`, :ref:`pdm`, :ref:`poetry`, :ref:`setuptools`, " +"`trampolim`_, and `whey`_. Each tool's documentation will show what to put " +"in the ``[build-system]`` table." +msgstr "" + +#: ../source/flow.rst:77 +msgid "For example, here is a table for using :ref:`hatch`:" +msgstr "" + +#: ../source/flow.rst:85 +msgid "" +"With such a table in the :file:`pyproject.toml` file, a \":term:`frontend " +"`\" tool like :ref:`build` can run your chosen build tool's " +"\":term:`backend `\" to create the build artifacts. Your " +"build tool may also provide its own frontend. An install tool " +"like :ref:`pip` also acts as a frontend when it runs your build tool's " +"backend to install from a source distribution." +msgstr "" + +#: ../source/flow.rst:94 +msgid "" +"The particular build tool you choose dictates what additional information is " +"required in the :file:`pyproject.toml` file. For example, you might specify:" +msgstr "" + +#: ../source/flow.rst:97 +msgid "" +"a ``[project]`` table containing project :doc:`Core Metadata ` (name, version, author and so forth)," +msgstr "" + +#: ../source/flow.rst:101 +msgid "a ``[tool]`` table containing tool-specific configuration options." +msgstr "" + +#: ../source/flow.rst:103 +msgid "" +"Refer to the :ref:`pyproject.toml guide ` for a " +"complete guide to ``pyproject.toml`` configuration." +msgstr "" + +#: ../source/flow.rst:108 +msgid "Build artifacts" +msgstr "" + +#: ../source/flow.rst:111 +msgid "The source distribution (sdist)" +msgstr "" + +#: ../source/flow.rst:113 +msgid "" +"A source distribution contains enough to install the package from source in " +"an end user's Python environment. As such, it needs the package source, and " +"may also include tests and documentation. These are useful for end users " +"wanting to develop your sources, and for end user systems where some local " +"compilation step is required (such as a C extension)." +msgstr "" + +#: ../source/flow.rst:119 ../source/flow.rst:143 +msgid "" +"The :ref:`build` package knows how to invoke your build tool to create one " +"of these:" +msgstr "" + +#: ../source/flow.rst:126 +msgid "" +"Or, your build tool may provide its own interface for creating an sdist." +msgstr "" + +#: ../source/flow.rst:130 +msgid "The built distributions (wheels)" +msgstr "" + +#: ../source/flow.rst:132 +msgid "" +"A built distribution contains only the files needed for an end user's Python " +"environment. No compilation steps are required during the install, and the " +"wheel file can simply be unpacked into the ``site-packages`` directory. This " +"makes the install faster and more convenient for end users." +msgstr "" + +#: ../source/flow.rst:137 +msgid "" +"A pure Python package typically needs only one \"generic\" wheel. A package " +"with compiled binary extensions needs a wheel for each supported combination " +"of Python interpreter, operating system, and CPU architecture that it " +"supports. If a suitable wheel file is not available, tools like :ref:`pip` " +"will fall back to installing the source distribution." +msgstr "" + +#: ../source/flow.rst:150 +msgid "Or, your build tool may provide its own interface for creating a wheel." +msgstr "" + +#: ../source/flow.rst:154 +msgid "" +"The default behaviour of :ref:`build` is to make both an sdist and a wheel " +"from the source in the current directory; the above examples are " +"deliberately specific." +msgstr "" + +#: ../source/flow.rst:159 +msgid "Upload to the package distribution service" +msgstr "" + +#: ../source/flow.rst:161 +msgid "" +"The :ref:`twine` tool can upload build artifacts to PyPI for distribution, " +"using a command like:" +msgstr "" + +#: ../source/flow.rst:168 +msgid "Or, your build tool may provide its own interface for uploading." +msgstr "" + +#: ../source/flow.rst:171 +msgid "Download and install" +msgstr "" + +#: ../source/flow.rst:173 +msgid "" +"Now that the package is published, end users can download and install the " +"package into their Python environment. Typically this is done " +"with :ref:`pip`, using a command like:" +msgstr "" + +#: ../source/flow.rst:181 +msgid "" +"End users may also use other tools like :ref:`pipenv`, :ref:`poetry`, " +"or :ref:`pdm`." +msgstr "" + +#: ../source/glossary.rst:3 +msgid "Glossary" +msgstr "" + +#: ../source/glossary.rst:8 +msgid "Binary Distribution" +msgstr "" + +#: ../source/glossary.rst:11 +msgid "" +"A specific kind of :term:`Built Distribution` that contains compiled " +"extensions." +msgstr "" + +#: ../source/glossary.rst:14 +msgid "Build Backend" +msgstr "" + +#: ../source/glossary.rst:17 +msgid "" +"A library that takes a :term:`source tree ` and builds " +"a :term:`source distribution ` " +"or :term:`built distribution ` from it. The build is " +"delegated to the backend by a :term:`frontend `. All " +"backends offer a standardized interface." +msgstr "" + +#: ../source/glossary.rst:24 +msgid "" +"Examples of build backends are :ref:`flit's flit-core `, :ref:`hatch's " +"hatchling `, :ref:`maturin`, :ref:`meson-python`, :ref:`scikit-build-" +"core`, and :ref:`setuptools`." +msgstr "" + +#: ../source/glossary.rst:32 +msgid "Build Frontend" +msgstr "" + +#: ../source/glossary.rst:35 +msgid "" +"A tool that users might run that takes arbitrary source trees " +"or :term:`source distributions ` and " +"builds source distributions or :term:`wheels ` from them. The actual " +"building is delegated to each source tree's :term:`build backend `." +msgstr "" + +#: ../source/glossary.rst:42 +msgid "Examples of build frontends are :ref:`pip` and :ref:`build`." +msgstr "" + +#: ../source/glossary.rst:44 +msgid "Built Distribution" +msgstr "" + +#: ../source/glossary.rst:47 +msgid "" +"A :term:`Distribution ` format containing files and " +"metadata that only need to be moved to the correct location on the target " +"system, to be installed. :term:`Wheel` is such a format, " +"whereas :term:`Source Distribution ` is " +"not, in that it requires a build step before it can be installed. This " +"format does not imply that Python files have to be precompiled " +"(:term:`Wheel` intentionally does not include compiled Python files). " +"See :ref:`package-formats` for more information." +msgstr "" + +#: ../source/glossary.rst:56 +msgid "Built Metadata" +msgstr "" + +#: ../source/glossary.rst:59 +msgid "" +"The concrete form :term:`Core Metadata` takes when included inside an " +"installed :term:`Project` (``METADATA`` file) or a :term:`Distribution " +"Archive` (``PKG-INFO`` in a :term:`Sdist ` and ``METADATA`` in a :term:`Wheel`)." +msgstr "" + +#: ../source/glossary.rst:66 +msgid "Core Metadata" +msgstr "" + +#: ../source/glossary.rst:69 +msgid "" +"The :ref:`specification ` and the set of :term:`Core Metadata " +"Field`\\s it defines that describe key static attributes of " +"a :term:`Distribution Package` or :term:`Installed Project`." +msgstr "" + +#: ../source/glossary.rst:74 +msgid "Core Metadata Field" +msgstr "" + +#: ../source/glossary.rst:77 +msgid "" +"A single key-value pair (or sequence of such with the same name, for " +"multiple-use fields) defined in the :term:`Core Metadata` spec and stored in " +"the :term:`Built Metadata`. Notably, distinct from a :term:`Pyproject " +"Metadata Key`." +msgstr "" + +#: ../source/glossary.rst:83 +msgid "Distribution Archive" +msgstr "" + +#: ../source/glossary.rst:86 +msgid "" +"The physical distribution artifact (i.e. a file on disk) for " +"a :term:`Distribution Package`." +msgstr "" + +#: ../source/glossary.rst:89 +msgid "Distribution Package" +msgstr "" + +#: ../source/glossary.rst:92 +msgid "" +"A versioned archive file that contains Python :term:`packages `, :term:`modules `, and other resource files that are used " +"to distribute a :term:`Release`. The archive file is what an end-user will " +"download from the internet and install." +msgstr "" + +#: ../source/glossary.rst:97 +msgid "" +"A distribution package is more commonly referred to with the single words " +"\"package\" or \"distribution\", but this guide may use the expanded term " +"when more clarity is needed to prevent confusion with an :term:`Import " +"Package` (which is also commonly called a \"package\") or another kind of " +"distribution (e.g. a Linux distribution or the Python language " +"distribution), which are often referred to with the single term " +"\"distribution\". See :ref:`distribution-package-vs-import-package` for a " +"breakdown of the differences." +msgstr "" + +#: ../source/glossary.rst:105 +msgid "Egg" +msgstr "" + +#: ../source/glossary.rst:108 +msgid "" +"A :term:`Built Distribution` format introduced by :ref:`setuptools`, which " +"has been replaced by :term:`Wheel`. For details, see :ref:`egg-format`." +msgstr "" + +#: ../source/glossary.rst:111 +msgid "Extension Module" +msgstr "" + +#: ../source/glossary.rst:114 +msgid "" +"A :term:`Module` written in the low-level language of the Python " +"implementation: C/C++ for Python, Java for Jython. Typically contained in a " +"single dynamically loadable pre-compiled file, e.g. a shared object (.so) " +"file for Python extensions on Unix, a DLL (given the .pyd extension) for " +"Python extensions on Windows, or a Java class file for Jython extensions." +msgstr "" + +#: ../source/glossary.rst:121 +msgid "Import Package" +msgstr "" + +#: ../source/glossary.rst:124 +msgid "" +"A Python module which can contain other modules or recursively, other " +"packages." +msgstr "" + +#: ../source/glossary.rst:127 +msgid "" +"An import package is more commonly referred to with the single word " +"\"package\", but this guide will use the expanded term when more clarity is " +"needed to prevent confusion with a :term:`Distribution Package` which is " +"also commonly called a \"package\". See :ref:`distribution-package-vs-import-" +"package` for a breakdown of the differences." +msgstr "" + +#: ../source/glossary.rst:133 +msgid "Installed Project" +msgstr "" + +#: ../source/glossary.rst:136 +msgid "" +"A :term:`Project` that is installed for use with a Python interpreter " +"or :term:`Virtual Environment`, as described in the " +"specification :ref:`recording-installed-packages`." +msgstr "" + +#: ../source/glossary.rst:140 +msgid "Known Good Set (KGS)" +msgstr "" + +#: ../source/glossary.rst:143 +msgid "" +"A set of distributions at specified versions which are compatible with each " +"other. Typically a test suite will be run which passes all tests before a " +"specific set of packages is declared a known good set. This term is commonly " +"used by frameworks and toolkits which are comprised of multiple individual " +"distributions." +msgstr "" + +#: ../source/glossary.rst:149 +msgid "License Classifier" +msgstr "" + +#: ../source/glossary.rst:152 +msgid "" +"A PyPI Trove classifier (as :ref:`described ` in " +"the :term:`Core Metadata` specification) which begins with ``License ::``." +msgstr "" + +#: ../source/glossary.rst:157 ../source/specifications/license-expression.rst:3 +msgid "License Expression" +msgstr "" + +#: ../source/glossary.rst:158 +msgid "SPDX Expression" +msgstr "" + +#: ../source/glossary.rst:161 +msgid "" +"A string with valid SPDX license expression syntax, including one or more " +"SPDX :term:`License Identifier`\\(s), which describes a :term:`Distribution " +"Archive`'s license(s) and how they inter-relate. Examples: ``GPL-3.0-or-" +"later``, ``MIT AND (Apache-2.0 OR BSD-2-Clause)``" +msgstr "" + +#: ../source/glossary.rst:169 +msgid "License Identifier" +msgstr "" + +#: ../source/glossary.rst:170 +msgid "SPDX Identifier" +msgstr "" + +#: ../source/glossary.rst:173 +msgid "" +"A valid SPDX short-form license identifier, originally specified " +"in :pep:`639`. This includes all valid SPDX identifiers and the custom " +"``LicenseRef-[idstring]`` strings conforming to the SPDX specification. " +"Examples: ``MIT``, ``GPL-3.0-only``, ``LicenseRef-My-Custom-License``" +msgstr "" + +#: ../source/glossary.rst:183 +msgid "Module" +msgstr "" + +#: ../source/glossary.rst:186 +msgid "" +"The basic unit of code reusability in Python, existing in one of two " +"types: :term:`Pure Module`, or :term:`Extension Module`." +msgstr "" + +#: ../source/glossary.rst:189 +msgid "Package Index" +msgstr "" + +#: ../source/glossary.rst:192 +msgid "" +"A repository of distributions with a web interface to " +"automate :term:`package ` discovery and consumption." +msgstr "" + +#: ../source/glossary.rst:195 +msgid "Per Project Index" +msgstr "" + +#: ../source/glossary.rst:198 +msgid "" +"A private or other non-canonical :term:`Package Index` indicated by a " +"specific :term:`Project` as the index preferred or required to resolve " +"dependencies of that project." +msgstr "" + +#: ../source/glossary.rst:202 ../source/guides/hosting-your-own-index.rst:62 +#: ../source/guides/index-mirrors-and-caches.rst:52 +msgid "Project" +msgstr "" + +#: ../source/glossary.rst:205 +msgid "" +"A library, framework, script, plugin, application, or collection of data or " +"other resources, or some combination thereof that is intended to be packaged " +"into a :term:`Distribution `." +msgstr "" + +#: ../source/glossary.rst:209 +msgid "" +"Since most projects create :term:`Distributions ` " +"using either :pep:`518` ``build-system``, :ref:`distutils` " +"or :ref:`setuptools`, another practical way to define projects currently is " +"something that contains a :term:`pyproject.toml`, :term:`setup.py`, " +"or :term:`setup.cfg` file at the root of the project source directory." +msgstr "" + +#: ../source/glossary.rst:215 +msgid "" +"Python projects must have unique names, which are registered on :term:`PyPI " +"`. Each project will then contain one or " +"more :term:`Releases `, and each release may comprise one or " +"more :term:`distributions `." +msgstr "" + +#: ../source/glossary.rst:220 +msgid "" +"Note that there is a strong convention to name a project after the name of " +"the package that is imported to run that project. However, this doesn't have " +"to hold true. It's possible to install a distribution from the project 'foo' " +"and have it provide a package importable only as 'bar'." +msgstr "" + +#: ../source/glossary.rst:226 +msgid "Project Root Directory" +msgstr "" + +#: ../source/glossary.rst:229 +msgid "" +"The filesystem directory in which a :term:`Project`'s :term:`source tree " +"` is located." +msgstr "" + +#: ../source/glossary.rst:232 +msgid "Project Source Tree" +msgstr "" + +#: ../source/glossary.rst:235 +msgid "" +"The on-disk format of a :term:`Project` used for development, containing its " +"raw source code before being packaged into a :term:`Source Distribution " +"` or :term:`Built Distribution`." +msgstr "" + +#: ../source/glossary.rst:241 +msgid "Project Source Metadata" +msgstr "" + +#: ../source/glossary.rst:244 +msgid "" +"Metadata defined by the package author in a :term:`Project`'s :term:`source " +"tree `, to be transformed into :term:`Core Metadata " +"field`\\s in the :term:`Built Metadata` by the project's :term:`build " +"backend `. Can be written as :term:`Pyproject Metadata`, or " +"in a tool-specific format (under the ``[tool]`` table in ``pyproject.toml``, " +"or in a tool's own configuration file)." +msgstr "" + +#: ../source/glossary.rst:254 +msgid "Pure Module" +msgstr "" + +#: ../source/glossary.rst:257 +msgid "" +"A :term:`Module` written in Python and contained in a single ``.py`` file " +"(and possibly associated ``.pyc`` and/or ``.pyo`` files)." +msgstr "" + +#: ../source/glossary.rst:260 +msgid "Pyproject Metadata" +msgstr "" + +#: ../source/glossary.rst:263 +msgid "" +"The :term:`Project Source Metadata` format defined by the :ref:`declaring-" +"project-metadata` specification and originally introduced in :pep:`621`, " +"stored as :term:`Pyproject Metadata Key`\\s under the ``[project]`` table of " +"a :term:`pyproject.toml` file. Notably, *not* a tool-specific source " +"metadata format under the ``[tool]`` table in ``pyproject.toml``." +msgstr "" + +#: ../source/glossary.rst:271 +msgid "Pyproject Metadata Key" +msgstr "" + +#: ../source/glossary.rst:274 +msgid "" +"A top-level TOML key in the ``[project]`` table in ``pyproject.toml``; part " +"of the :term:`Pyproject Metadata`. Notably, distinct from a :term:`Core " +"Metadata Field`." +msgstr "" + +#: ../source/glossary.rst:278 +msgid "Pyproject Metadata Subkey" +msgstr "" + +#: ../source/glossary.rst:281 +msgid "" +"A second-level TOML key under a table-valued :term:`Pyproject Metadata Key`." +msgstr "" + +#: ../source/glossary.rst:284 +msgid "Python Packaging Authority (PyPA)" +msgstr "" + +#: ../source/glossary.rst:287 +msgid "" +"PyPA is a working group that maintains many of the relevant projects in " +"Python packaging. They maintain a site at :doc:`pypa.io `, host " +"projects on `GitHub `_, and discuss issues on the " +"`distutils-sig mailing list `_ and `the Python Discourse forum `__." +msgstr "" + +#: ../source/glossary.rst:295 +msgid "Python Package Index (PyPI)" +msgstr "" + +#: ../source/glossary.rst:298 +msgid "" +"`PyPI `_ is the default :term:`Package Index` for the " +"Python community. It is open to all Python developers to consume and " +"distribute their distributions." +msgstr "" + +#: ../source/glossary.rst:301 +msgid "pypi.org" +msgstr "" + +#: ../source/glossary.rst:304 +msgid "" +"`pypi.org `_ is the domain name for the :term:`Python " +"Package Index (PyPI)`. It replaced the legacy index domain name, " +"``pypi.python.org``, in 2017. It is powered by :ref:`warehouse`." +msgstr "" + +#: ../source/glossary.rst:308 +msgid "pyproject.toml" +msgstr "" + +#: ../source/glossary.rst:311 +msgid "" +"The tool-agnostic :term:`Project` specification file. Defined in :pep:`518`." +msgstr "" + +#: ../source/glossary.rst:313 +msgid "Release" +msgstr "" + +#: ../source/glossary.rst:316 +msgid "" +"A snapshot of a :term:`Project` at a particular point in time, denoted by a " +"version identifier." +msgstr "" + +#: ../source/glossary.rst:319 +msgid "" +"Making a release may entail the publishing of multiple :term:`Distributions " +"`. For example, if version 1.0 of a project was " +"released, it could be available in both a source distribution format and a " +"Windows installer distribution format." +msgstr "" + +#: ../source/glossary.rst:324 +msgid "Requirement" +msgstr "" + +#: ../source/glossary.rst:327 +msgid "" +"A specification for a :term:`package ` to be " +"installed. :ref:`pip`, the :term:`PYPA ` " +"recommended installer, allows various forms of specification that can all be " +"considered a \"requirement\". For more information, see the :ref:`pip:pip " +"install` reference." +msgstr "" + +#: ../source/glossary.rst:333 +msgid "Requirement Specifier" +msgstr "" + +#: ../source/glossary.rst:336 +msgid "" +"A format used by :ref:`pip` to install packages from a :term:`Package " +"Index`. For an EBNF diagram of the format, see :ref:`dependency-specifiers`. " +"For example, \"foo>=1.3\" is a requirement specifier, where \"foo\" is the " +"project name, and the \">=1.3\" portion is the :term:`Version Specifier`" +msgstr "" + +#: ../source/glossary.rst:341 +msgid "Requirements File" +msgstr "" + +#: ../source/glossary.rst:344 +msgid "" +"A file containing a list of :term:`Requirements ` that can be " +"installed using :ref:`pip`. For more information, see the :ref:`pip` docs " +"on :ref:`pip:Requirements Files`." +msgstr "" + +#: ../source/glossary.rst:348 +msgid "Root License Directory" +msgstr "" + +#: ../source/glossary.rst:349 +msgid "License Directory" +msgstr "" + +#: ../source/glossary.rst:352 +msgid "" +"The directory under which license files are stored in a :term:`Project " +"Source Tree`, :term:`Distribution Archive` or :term:`Installed Project`. For " +"a :term:`Project Source Tree` or :term:`Source Distribution (or \"sdist\")`, " +"this is the :term:`Project Root Directory`. For a :term:`Built Distribution` " +"or :term:`Installed Project`, this is the :file:`.dist-info/licenses/` " +"directory of the wheel archive or project folder respectively. Also, the " +"root directory that paths recorded in the ``License-File`` :term:`Core " +"Metadata Field` are relative to." +msgstr "" + +#: ../source/glossary.rst:365 +#: ../source/guides/distributing-packages-using-setuptools.rst:59 +msgid "setup.py" +msgstr "" + +#: ../source/glossary.rst:366 +#: ../source/guides/distributing-packages-using-setuptools.rst:80 +msgid "setup.cfg" +msgstr "" + +#: ../source/glossary.rst:369 +msgid "" +"The project specification files for :ref:`distutils` and :ref:`setuptools`. " +"See also :term:`pyproject.toml`." +msgstr "" + +#: ../source/glossary.rst:372 +msgid "Source Archive" +msgstr "" + +#: ../source/glossary.rst:375 +msgid "" +"An archive containing the raw source code for a :term:`Release`, prior to " +"creation of a :term:`Source Distribution ` or :term:`Built Distribution`." +msgstr "" + +#: ../source/glossary.rst:379 +msgid "Source Distribution (or \"sdist\")" +msgstr "" + +#: ../source/glossary.rst:382 +msgid "" +"A :term:`distribution ` format (usually generated " +"using ``python -m build --sdist``) that provides metadata and the essential " +"source files needed for installing by a tool like :ref:`pip`, or for " +"generating a :term:`Built Distribution`. See :ref:`package-formats` for more " +"information." +msgstr "" + +#: ../source/glossary.rst:388 +msgid "System Package" +msgstr "" + +#: ../source/glossary.rst:391 +msgid "" +"A package provided in a format native to the operating system, e.g. an rpm " +"or dpkg file." +msgstr "" + +#: ../source/glossary.rst:394 +msgid "Version Specifier" +msgstr "" + +#: ../source/glossary.rst:397 +msgid "" +"The version component of a :term:`Requirement Specifier`. For example, the " +"\">=1.3\" portion of \"foo>=1.3\". Read the :ref:`Version specifier " +"specification ` for a full description of the specifiers " +"that Python packaging currently supports. Support for this specification " +"was implemented in :ref:`setuptools` v8.0 and :ref:`pip` v6.0." +msgstr "" + +#: ../source/glossary.rst:402 +msgid "Virtual Environment" +msgstr "" + +#: ../source/glossary.rst:405 +msgid "" +"An isolated Python environment that allows packages to be installed for use " +"by a particular application, rather than being installed system wide. For " +"more information, see the section on :ref:`Creating and using Virtual " +"Environments`." +msgstr "" + +#: ../source/glossary.rst:410 +msgid "Wheel Format" +msgstr "" + +#: ../source/glossary.rst:411 +msgid "Wheel" +msgstr "" + +#: ../source/glossary.rst:414 +msgid "" +"The standard :term:`Built Distribution` format originally introduced " +"in :pep:`427` and defined by the :ref:`binary-distribution-format` " +"specification. See :ref:`package-formats` for more information. Not to be " +"confused with its reference implementation, the :term:`Wheel Project`." +msgstr "" + +#: ../source/glossary.rst:421 +msgid "Wheel Project" +msgstr "" + +#: ../source/glossary.rst:424 +msgid "" +"The PyPA reference implementation of the :term:`Wheel Format`; " +"see :ref:`wheel`." +msgstr "" + +#: ../source/glossary.rst:426 +msgid "Working Set" +msgstr "" + +#: ../source/glossary.rst:429 +msgid "" +"A collection of :term:`distributions ` available for " +"importing. These are the distributions that are on the `sys.path` variable. " +"At most, one :term:`Distribution ` for a project is " +"possible in a working set." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:5 +msgid "Analyzing PyPI package downloads" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:7 +msgid "" +"This section covers how to use the public PyPI download statistics dataset " +"to learn more about downloads of a package (or packages) hosted on PyPI. For " +"example, you can use it to discover the distribution of Python versions used " +"to download a package." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:14 +#: ../source/guides/supporting-windows-using-appveyor.rst:17 +msgid "Background" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:16 +msgid "PyPI does not display download statistics for a number of reasons: [#]_" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:18 +msgid "" +"**Inefficient to make work with a Content Distribution Network (CDN):** " +"Download statistics change constantly. Including them in project pages, " +"which are heavily cached, would require invalidating the cache more often, " +"and reduce the overall effectiveness of the cache." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:23 +msgid "" +"**Highly inaccurate:** A number of things prevent the download counts from " +"being accurate, some of which include:" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:26 +msgid "``pip``'s download cache (lowers download counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:27 +msgid "" +"Internal or unofficial mirrors (can both raise or lower download counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:28 +msgid "Packages not hosted on PyPI (for comparisons sake)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:29 +msgid "" +"Unofficial scripts or attempts at download count inflation (raises download " +"counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:31 +msgid "Known historical data quality issues (lowers download counts)" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:33 +msgid "" +"**Not particularly useful:** Just because a project has been downloaded a " +"lot doesn't mean it's good; Similarly just because a project hasn't been " +"downloaded a lot doesn't mean it's bad!" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:37 +msgid "" +"In short, because its value is low for various reasons, and the tradeoffs " +"required to make it work are high, it has been not an effective use of " +"limited resources." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:42 +msgid "Public dataset" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:44 +msgid "" +"As an alternative, the `Linehaul project `__ streams download logs from PyPI to `Google BigQuery`_ " +"[#]_, where they are stored as a public dataset." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:49 +msgid "Getting set up" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:51 +msgid "" +"In order to use `Google BigQuery`_ to query the `public PyPI download " +"statistics dataset`_, you'll need a Google account and to enable the " +"BigQuery API on a Google Cloud Platform project. You can run up to 1TB of " +"queries per month `using the BigQuery free tier without a credit card " +"`__" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:57 +msgid "Navigate to the `BigQuery web UI`_." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:58 +msgid "Create a new project." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:59 +msgid "" +"Enable the `BigQuery API `__." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:62 +msgid "" +"For more detailed instructions on how to get started with BigQuery, check " +"out the `BigQuery quickstart guide `__." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:68 +msgid "Data schema" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:70 +msgid "" +"Linehaul writes an entry in a ``bigquery-public-data.pypi.file_downloads`` " +"table for each download. The table contains information about what file was " +"downloaded and how it was downloaded. Some useful columns from the `table " +"schema `__ include:" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:77 +msgid "Column" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:77 +#: ../source/specifications/core-metadata.rst:206 +#: ../source/specifications/well-known-project-urls.rst:106 +msgid "Description" +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:242 +#: ../source/specifications/version-specifiers.rst:1088 +msgid "Examples" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:79 +msgid "timestamp" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:79 +msgid "Date and time" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:79 +msgid "``2020-03-09 00:33:03 UTC``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:81 +msgid "file.project" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:81 +msgid "Project name" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:81 +msgid "``pipenv``, ``nose``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:83 +msgid "file.version" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:83 +msgid "Package version" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:83 +msgid "``0.1.6``, ``1.4.2``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:85 +msgid "details.installer.name" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:85 +msgid "Installer" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:85 +msgid "pip, :ref:`bandersnatch`" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:87 +msgid "details.python" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:87 +msgid "Python version" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:87 +msgid "``2.7.12``, ``3.6.4``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:92 +msgid "Useful queries" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:94 +msgid "" +"Run queries in the `BigQuery web UI`_ by clicking the \"Compose query\" " +"button." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:96 +msgid "" +"Note that the rows are stored in a partitioned table, which helps limit the " +"cost of queries. These example queries analyze downloads from recent history " +"by filtering on the ``timestamp`` column." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:101 +msgid "Counting package downloads" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:103 +msgid "" +"The following query counts the total number of downloads for the project " +"\"pytest\"." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:118 +#: ../source/guides/analyzing-pypi-package-downloads.rst:139 +#: ../source/guides/analyzing-pypi-package-downloads.rst:167 +#: ../source/guides/analyzing-pypi-package-downloads.rst:204 +msgid "num_downloads" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:120 +msgid "26190085" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:123 +msgid "" +"To count downloads from pip only, filter on the ``details.installer.name`` " +"column." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:141 +msgid "24334215" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:145 +msgid "Package downloads over time" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:147 +msgid "" +"To group by monthly downloads, use the ``TIMESTAMP_TRUNC`` function. Also " +"filtering by this column reduces corresponding costs." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:167 +msgid "month" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:169 +msgid "1956741" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:169 +msgid "2018-01-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:171 +msgid "2344692" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:171 +msgid "2017-12-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:173 +msgid "1730398" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:173 +msgid "2017-11-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:175 +msgid "2047310" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:175 +msgid "2017-10-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:177 +msgid "1744443" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:177 +msgid "2017-09-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:179 +msgid "1916952" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:179 +msgid "2017-08-01" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:183 +msgid "Python versions over time" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:185 +msgid "" +"Extract the Python version from the ``details.python`` column. Warning: This " +"query processes over 500 GB of data." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:204 +msgid "python" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:206 +msgid "3.7" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:206 +msgid "18051328726" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:208 +msgid "3.6" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:208 +msgid "9635067203" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:210 +msgid "3.8" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:210 +msgid "7781904681" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:212 +msgid "2.7" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:212 +msgid "6381252241" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:214 +msgid "null" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:214 +msgid "2026630299" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:216 +msgid "3.5" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:216 +msgid "1894153540" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:221 +msgid "Getting absolute links to artifacts" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:223 +msgid "" +"It's sometimes helpful to be able to get the absolute links to download " +"artifacts from PyPI based on their hashes, e.g. if a particular project or " +"release has been deleted from PyPI. The metadata table includes the ``path`` " +"column, which includes the hash and artifact filename." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:229 +msgid "" +"The URL generated here is not guaranteed to be stable, but currently aligns " +"with the URL where PyPI artifacts are hosted." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:242 +msgid "url" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:244 +msgid "" +"https://files.pythonhosted.org/packages/eb/" +"45/79be82bdeafcecb9dca474cad4003e32ef8e4a0dec6abbd4145ccb02abe1/" +"sampleproject-1.2.0.tar.gz" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:246 +msgid "" +"https://files.pythonhosted.org/packages/56/0a/" +"178e8bbb585ec5b13af42dae48b1d7425d6575b3ff9b02e5ec475e38e1d6/" +"sampleproject_nomura-1.2.0-py2.py3-none-any.whl" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:248 +msgid "" +"https://files.pythonhosted.org/packages/" +"63/88/3200eeaf22571f18d2c41e288862502e33365ccbdc12b892db23f51f8e70/" +"sampleproject_nomura-1.2.0.tar.gz" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:250 +msgid "" +"https://files.pythonhosted.org/packages/21/" +"e9/2743311822e71c0756394b6c5ab15cb64ca66c78c6c6a5cd872c9ed33154/" +"sampleproject_doubleyoung18-1.3.0-py2.py3-none-any.whl" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:252 +msgid "" +"https://files.pythonhosted.org/packages/6f/5b/" +"2f3fe94e1c02816fe23c7ceee5292fb186912929e1972eee7fb729fa27af/" +"sampleproject-1.3.1.tar.gz" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:257 +msgid "Caveats" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:259 +msgid "" +"In addition to the caveats listed in the background above, Linehaul suffered " +"from a bug which caused it to significantly under-report download statistics " +"prior to July 26, 2018. Downloads before this date are proportionally " +"accurate (e.g. the percentage of Python 2 vs. Python 3 downloads) but total " +"numbers are lower than actual by an order of magnitude." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:267 +msgid "Additional tools" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:269 +msgid "" +"Besides using the BigQuery console, there are some additional tools which " +"may be useful when analyzing download statistics." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:273 +msgid "``google-cloud-bigquery``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:275 +msgid "" +"You can also access the public PyPI download statistics dataset " +"programmatically via the BigQuery API and the `google-cloud-bigquery`_ " +"project, the official Python client library for BigQuery." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:303 +msgid "``pypinfo``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:305 +msgid "" +"`pypinfo`_ is a command-line tool which provides access to the dataset and " +"can generate several useful queries. For example, you can query the total " +"number of download for a package with the command ``pypinfo package_name``." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:309 +msgid "Install `pypinfo`_ using pip." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:315 +msgid "Usage:" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:331 +msgid "``pandas-gbq``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:333 +msgid "" +"The `pandas-gbq`_ project allows for accessing query results via `Pandas`_." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:337 +msgid "``ClickPy``" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:339 +msgid "" +"The `ClickPy`_ project provides a public application to visualize download " +"statistics, with free direct SQL access to the underlying open-source " +"`ClickHouse`_ database, updated daily." +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:345 +#: ../source/specifications/dependency-specifiers.rst:537 +msgid "References" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:347 +msgid "" +"`PyPI Download Counts deprecation email `__" +msgstr "" + +#: ../source/guides/analyzing-pypi-package-downloads.rst:348 +msgid "" +"`PyPI BigQuery dataset announcement email `__" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:3 +msgid "Creating and discovering plugins" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:5 +msgid "" +"Often when creating a Python application or library you'll want the ability " +"to provide customizations or extra features via **plugins**. Because Python " +"packages can be separately distributed, your application or library may want " +"to automatically **discover** all of the plugins available." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:10 +msgid "There are three major approaches to doing automatic plugin discovery:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:12 +msgid "`Using naming convention`_." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:13 +msgid "`Using namespace packages`_." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:14 +msgid "`Using package metadata`_." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:18 +msgid "Using naming convention" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:20 +msgid "" +"If all of the plugins for your application follow the same naming " +"convention, you can use :func:`pkgutil.iter_modules` to discover all of the " +"top-level modules that match the naming convention. For example, `Flask`_ " +"uses the naming convention ``flask_{plugin_name}``. If you wanted to " +"automatically discover all of the Flask plugins installed:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:38 +msgid "" +"If you had both the `Flask-SQLAlchemy`_ and `Flask-Talisman`_ plugins " +"installed then ``discovered_plugins`` would be:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:48 +msgid "" +"Using naming convention for plugins also allows you to query the Python " +"Package Index's :ref:`simple repository API ` for all " +"packages that conform to your naming convention." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:58 +msgid "Using namespace packages" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:60 +msgid "" +":doc:`Namespace packages ` can be used to " +"provide a convention for where to place plugins and also provides a way to " +"perform discovery. For example, if you make the sub-package " +"``myapp.plugins`` a namespace package then other :term:`distributions " +"` can provide modules and packages to that namespace. " +"Once installed, you can use :func:`pkgutil.iter_modules` to discover all " +"modules and packages installed under that namespace:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:88 +msgid "" +"Specifying ``myapp.plugins.__path__`` to :func:`~pkgutil.iter_modules` " +"causes it to only look for the modules directly under that namespace. For " +"example, if you have installed distributions that provide the modules " +"``myapp.plugins.a`` and ``myapp.plugins.b`` then ``discovered_plugins`` in " +"this case would be:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:100 +msgid "" +"This sample uses a sub-package as the namespace package (``myapp.plugins``), " +"but it's also possible to use a top-level package for this purpose (such as " +"``myapp_plugins``). How to pick the namespace to use is a matter of " +"preference, but it's not recommended to make your project's main top-level " +"package (``myapp`` in this case) a namespace package for the purpose of " +"plugins, as one bad plugin could cause the entire namespace to break which " +"would in turn make your project unimportable. For the \"namespace sub-" +"package\" approach to work, the plugin packages must omit " +"the :file:`__init__.py` for your top-level package directory (``myapp`` in " +"this case) and include the namespace-package style :file:`__init__.py` in " +"the namespace sub-package directory (``myapp/plugins``). This also means " +"that plugins will need to explicitly pass a list of packages " +"to :func:`setup`'s ``packages`` argument instead of " +"using :func:`setuptools.find_packages`." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:114 +msgid "" +"Namespace packages are a complex feature and there are several different " +"ways to create them. It's highly recommended to read the :doc:`packaging-" +"namespace-packages` documentation and clearly document which approach is " +"preferred for plugins to your project." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:122 +msgid "Using package metadata" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:124 +msgid "" +"Packages can have metadata for plugins described in the :ref:`entry-points`. " +"By specifying them, a package announces that it contains a specific kind of " +"plugin. Another package supporting this kind of plugin can use the metadata " +"to discover that plugin." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:128 +msgid "" +"For example if you have a package named ``myapp-plugin-a`` and it includes " +"the following in its ``pyproject.toml``:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:136 +msgid "" +"Then you can discover and load all of the registered entry points by " +"using :func:`importlib.metadata.entry_points` (or the backport_ " +"``importlib_metadata >= 3.6`` for Python 3.6-3.9):" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:151 +msgid "" +"In this example, ``discovered_plugins`` would be a collection of " +"type :class:`importlib.metadata.EntryPoint`:" +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:160 +msgid "" +"Now the module of your choice can be imported by executing " +"``discovered_plugins['a'].load()``." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:163 +msgid "" +"The ``entry_point`` specification in :file:`setup.py` is fairly flexible and " +"has a lot of options. It's recommended to read over the entire section " +"on :doc:`entry points ` ." +msgstr "" + +#: ../source/guides/creating-and-discovering-plugins.rst:167 +msgid "" +"Since this specification is part of the :doc:`standard library " +"`, most packaging tools other than " +"setuptools provide support for defining entry points." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:5 +msgid "Creating and packaging command-line tools" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:7 +msgid "" +"This guide will walk you through creating and packaging a standalone command-" +"line application that can be installed with :ref:`pipx`, a tool for creating " +"and managing :term:`Python Virtual Environments ` and " +"exposing the executable scripts of packages (and available manual pages) for " +"use on the command-line." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:12 +msgid "Creating the package" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:14 +msgid "" +"First of all, create a source tree for the :term:`project `. For " +"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 "" + +#: ../source/guides/creating-command-line-tools.rst:17 +#: ../source/guides/tool-recommendations.rst:45 +msgid "Todo" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:17 +msgid "" +"Advise on the optimal structure of a Python package in another guide or " +"discussion and link to it here." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:19 +msgid "" +"This project will adhere to :ref:`src-layout ` " +"and in the end be alike this file tree, with the top-level folder and " +"package name ``greetings``:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:33 +msgid "" +"The actual code responsible for the tool's functionality will be stored in " +"the file :file:`greet.py`, named after the main module:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:62 +msgid "" +"The above function receives several keyword arguments that determine how the " +"greeting to output is constructed. Now, construct the command-line interface " +"to provision it with the same, which is done in :file:`cli.py`:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:80 +msgid "" +"The command-line interface is built with typer_, an easy-to-use CLI parser " +"based on Python type hints. It provides auto-completion and nicely styled " +"command-line help out of the box. Another option would " +"be :py:mod:`argparse`, a command-line parser which is included in Python's " +"standard library. It is sufficient for most needs, but requires a lot of " +"code, usually in ``cli.py``, to function properly. Alternatively, docopt_ " +"makes it possible to create CLI interfaces based solely on docstrings; " +"advanced users are encouraged to make use of click_ (on which ``typer`` is " +"based)." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:86 +msgid "" +"Now, add an empty :file:`__init__.py` file, to define the project as a " +"regular :term:`import package `." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:88 +msgid "" +"The file :file:`__main__.py` marks the main entry point for the application " +"when running it via :mod:`runpy` (i.e. ``python -m greetings``, which works " +"immediately with flat layout, but requires installation of the package with " +"src layout), so initialize the command-line interface here:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:100 +msgid "" +"In order to enable calling the command-line interface directly from " +"the :term:`source tree `, i.e. as ``python src/" +"greetings``, a certain hack could be placed in this file; read more " +"at :ref:`running-cli-from-source-src-layout`." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:106 +msgid "``pyproject.toml``" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:108 +msgid "" +"The project's :term:`metadata ` is placed " +"in :term:`pyproject.toml`. The :term:`pyproject metadata keys ` and the ``[build-system]`` table may be filled in as " +"described in :ref:`writing-pyproject-toml`, adding a dependency on ``typer`` " +"(this tutorial uses version *0.12.3*)." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:111 +msgid "" +"For the project to be recognised as a command-line tool, additionally a " +"``console_scripts`` :ref:`entry point ` " +"(see :ref:`console_scripts`) needs to be added as a :term:`subkey `:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:118 +msgid "" +"Now, the project's source tree is ready to be transformed into " +"a :term:`distribution package `, which makes it " +"installable." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:123 +msgid "Installing the package with ``pipx``" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:125 +msgid "" +"After installing ``pipx`` as described in :ref:`installing-stand-alone-" +"command-line-tools`, install your project:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:132 +msgid "" +"This will expose the executable script we defined as an entry point and make " +"the command ``greet`` available. Let's test it:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:146 +msgid "" +"Since this example uses ``typer``, you could now also get an overview of the " +"program's usage by calling it with the ``--help`` option, or configure " +"completions via the ``--install-completion`` option." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:149 +msgid "" +"To just run the program without installing it permanently, use ``pipx run``, " +"which will create a temporary (but cached) virtual environment for it:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:156 +msgid "" +"This syntax is a bit impractical, however; as the name of the entry point we " +"defined above does not match the package name, we need to state explicitly " +"which executable script to run (even though there is only one in existence)." +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:159 +msgid "" +"There is, however, a more practical solution to this problem, in the form of " +"an entry point specific to ``pipx run``. The same can be defined as follows " +"in :file:`pyproject.toml`:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:168 +msgid "" +"Thanks to this entry point (which *must* match the package name), ``pipx`` " +"will pick up the executable script as the default one and run it, which " +"makes this command possible:" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:176 +msgid "Conclusion" +msgstr "" + +#: ../source/guides/creating-command-line-tools.rst:178 +msgid "" +"You know by now how to package a command-line application written in Python. " +"A further step could be to distribute your package, meaning uploading it to " +"a :term:`package index `, most commonly :term:`PyPI `. To do that, follow the instructions " +"at :ref:`Packaging your project`. And once you're done, don't forget " +"to :ref:`do some research ` on how your " +"package is received!" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:5 +msgid "Packaging and distributing projects" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:7 +msgid "Outdated" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:8 +msgid "2023-12-14" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:10 +msgid "" +"This section covers some additional details on configuring, packaging and " +"distributing Python projects with ``setuptools`` that aren't covered by the " +"introductory tutorial in :doc:`/tutorials/packaging-projects`. It still " +"assumes that you are already familiar with the contents of the :doc:`/" +"tutorials/installing-packages` page." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:16 +msgid "" +"The section does *not* aim to cover best practices for Python project " +"development as a whole. For example, it does not provide guidance or tool " +"recommendations for version control, documentation, or testing." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:20 +msgid "" +"For more reference material, see :std:doc:`Building and Distributing " +"Packages ` in the :ref:`setuptools` docs, but " +"note that some advisory content there may be outdated. In the event of " +"conflicts, prefer the advice in the Python Packaging User Guide." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:28 +msgid "Requirements for packaging and distributing" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:29 +msgid "" +"First, make sure you have already fulfilled the :ref:`requirements for " +"installing packages `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:32 +msgid "Install \"twine\" [1]_:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:46 +msgid "" +"You'll need this to upload your project :term:`distributions ` to :term:`PyPI ` (see :ref:`below " +"`)." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:52 +msgid "Configuring your project" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:56 +msgid "Initial files" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:61 +msgid "" +"The most important file is :file:`setup.py` which exists at the root of your " +"project directory. For an example, see the `setup.py `_ " +"in the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:66 +msgid ":file:`setup.py` serves two primary functions:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:68 +msgid "" +"It's the file where various aspects of your project are configured. The " +"primary feature of :file:`setup.py` is that it contains a global ``setup()`` " +"function. The keyword arguments to this function are how specific details " +"of your project are defined. The most relevant arguments are explained " +"in :ref:`the section below `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:74 +msgid "" +"It's the command line interface for running various commands that relate to " +"packaging tasks. To get a listing of available commands, run ``python3 " +"setup.py --help-commands``." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:82 +msgid "" +":file:`setup.cfg` is an ini file that contains option defaults " +"for :file:`setup.py` commands. For an example, see the `setup.cfg `_ in the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:89 +msgid "README.rst / README.md" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:91 +msgid "" +"All projects should contain a readme file that covers the goal of the " +"project. The most common format is `reStructuredText `_ with an \"rst\" extension, although this " +"is not a requirement; multiple variants of `Markdown `_ are supported as well (look at " +"``setup()``'s :ref:`long_description_content_type ` argument)." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:98 +msgid "" +"For an example, see `README.md `_ from the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:102 +msgid "" +"Projects using :ref:`setuptools` 0.6.27+ have standard readme files " +"(:file:`README.rst`, :file:`README.txt`, or :file:`README`) included in " +"source distributions by default. The built-in :ref:`distutils` library " +"adopts this behavior beginning in Python 3.7. " +"Additionally, :ref:`setuptools` 36.4.0+ will include a :file:`README.md` if " +"found. If you are using setuptools, you don't need to list your readme file " +"in :file:`MANIFEST.in`. Otherwise, include it to be explicit." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:111 +msgid "MANIFEST.in" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:113 +msgid "" +"A :file:`MANIFEST.in` is needed when you need to package additional files " +"that are not automatically included in a source distribution. For details " +"on writing a :file:`MANIFEST.in` file, including a list of what's included " +"by default, see \":ref:`Using MANIFEST.in`\"." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:118 +msgid "" +"However, you may not have to use a :file:`MANIFEST.in`. For an example, the " +"`PyPA sample project `_ has removed " +"its manifest file, since all the necessary files have been included " +"by :ref:`setuptools` 43.0.0 and newer." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:123 +msgid "" +":file:`MANIFEST.in` does not affect binary distributions such as wheels." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:126 +msgid "LICENSE.txt" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:128 +msgid "" +"Every package should include a license file detailing the terms of " +"distribution. In many jurisdictions, packages without an explicit license " +"can not be legally used or distributed by anyone other than the copyright " +"holder. If you're unsure which license to choose, you can use resources such " +"as `GitHub's Choose a License `_ or consult a " +"lawyer." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:134 +msgid "" +"For an example, see the `LICENSE.txt `_ from the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:139 +msgid "" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:141 +msgid "" +"Although it's not required, the most common practice is to include your " +"Python modules and packages under a single top-level package that has the " +"same :ref:`name ` as your project, or something very close." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:145 +msgid "" +"For an example, see the `sample `_ package that's included in the `PyPA sample project " +"`_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:153 +msgid "setup() args" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:155 +msgid "" +"As mentioned above, the primary feature of :file:`setup.py` is that it " +"contains a global ``setup()`` function. The keyword arguments to this " +"function are how specific details of your project are defined." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:159 +msgid "" +"Some are temporarily explained below until their information is moved " +"elsewhere. The full list can be found :doc:`in the setuptools documentation " +"`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:163 +msgid "" +"Most of the snippets given are taken from the `setup.py `_ " +"contained in the `PyPA sample project `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:170 +msgid "" +"See :ref:`Choosing a versioning scheme` for more information on ways to use " +"versions to convey compatibility information to your users." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:177 +msgid "``packages``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:183 +msgid "" +"Set ``packages`` to a list of all :term:`packages ` in your " +"project, including their subpackages, sub-subpackages, etc. Although the " +"packages can be listed manually, ``setuptools.find_packages()`` finds them " +"automatically. Use the ``include`` keyword argument to find only the given " +"packages. Use the ``exclude`` keyword argument to omit packages that are " +"not intended to be released and installed." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:192 +msgid "``py_modules``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:198 +msgid "" +"If your project contains any single-file Python modules that aren't part of " +"a package, set ``py_modules`` to a list of the names of the modules (minus " +"the ``.py`` extension) in order to make :ref:`setuptools` aware of them." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:204 +msgid "``install_requires``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:210 +msgid "" +"\"install_requires\" should be used to specify what dependencies a project " +"minimally needs to run. When the project is installed by :ref:`pip`, this is " +"the specification that is used to install its dependencies." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:214 +msgid "" +"For more on using \"install_requires\" see :ref:`install_requires vs " +"Requirements files`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:221 +msgid "``package_data``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:230 +msgid "" +"Often, additional files need to be installed into a :term:`package `. These files are often data that’s closely related to the " +"package’s implementation, or text files containing documentation that might " +"be of interest to programmers using the package. These files are called " +"\"package data\"." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:235 +msgid "" +"The value must be a mapping from package name to a list of relative path " +"names that should be copied into the package. The paths are interpreted as " +"relative to the directory containing the package." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:239 +msgid "" +"For more information, see :std:doc:`Including Data Files " +"` from the :std:doc:`setuptools docs " +"`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:247 +msgid "``data_files``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:253 +msgid "" +"Although configuring :ref:`Package Data` is sufficient for most needs, in " +"some cases you may need to place data files *outside* of " +"your :term:`packages `. The ``data_files`` directive allows " +"you to do that. It is mostly useful if you need to install files which are " +"used by other programs, which may be unaware of Python packages." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:259 +msgid "" +"Each ``(directory, files)`` pair in the sequence specifies the installation " +"directory and the files to install there. The ``directory`` must be a " +"relative path (although this may change in the future, see `wheel Issue #92 " +"`_), and it is interpreted relative " +"to the installation prefix (Python’s ``sys.prefix`` for a default " +"installation; ``site.USER_BASE`` for a user installation). Each file name in " +"``files`` is interpreted relative to the :file:`setup.py` script at the top " +"of the project source distribution." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:269 +msgid "" +"For more information see the distutils section on :ref:`Installing " +"Additional Files `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:274 +msgid "" +"When installing packages as egg, ``data_files`` is not supported. So, if " +"your project uses :ref:`setuptools`, you must use ``pip`` to install it. " +"Alternatively, if you must use ``python setup.py``, then you need to pass " +"the ``--old-and-unmanageable`` option." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:281 +#: ../source/specifications/pyproject-toml.rst:151 +msgid "``scripts``" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:283 +msgid "" +"Although ``setup()`` supports a :ref:`scripts ` keyword for pointing to pre-made scripts to install, " +"the recommended approach to achieve cross-platform compatibility is to " +"use :ref:`console_scripts` entry points (see below)." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:291 +msgid "Choosing a versioning scheme" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:293 +msgid "" +"See :ref:`versioning` for information on common version schemes and how to " +"choose between them." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:298 +msgid "Working in \"development mode\"" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:300 +msgid "" +"You can install a project in \"editable\" or \"develop\" mode while you're " +"working on it. When installed as editable, a project can be edited in-place " +"without reinstallation: changes to Python source files in projects installed " +"as editable will be reflected the next time an interpreter process is " +"started." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:306 +msgid "" +"To install a Python package in \"editable\"/\"development\" mode Change " +"directory to the root of the project directory and run:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:314 +msgid "" +"The pip command-line flag ``-e`` is short for ``--editable``, and ``.`` " +"refers to the current working directory, so together, it means to install " +"the current directory (i.e. your project) in editable mode. This will also " +"install any dependencies declared with ``install_requires`` and any scripts " +"declared with ``console_scripts``. Dependencies will be installed in the " +"usual, non-editable mode." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:321 +msgid "" +"You may want to install some of your dependencies in editable mode as well. " +"For example, supposing your project requires \"foo\" and \"bar\", but you " +"want \"bar\" installed from VCS in editable mode, then you could construct a " +"requirements file like so::" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:329 +msgid "" +"The first line says to install your project and any dependencies. The second " +"line overrides the \"bar\" dependency, such that it's fulfilled from VCS, " +"not PyPI." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:333 +msgid "" +"If, however, you want \"bar\" installed from a local directory in editable " +"mode, the requirements file should look like this, with the local paths at " +"the top of the file::" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:338 +msgid "" +"Otherwise, the dependency will be fulfilled from PyPI, due to the " +"installation order of the requirements file. For more on requirements " +"files, see the :ref:`Requirements File ` section in " +"the pip docs. For more on VCS installs, see the :ref:`VCS Support ` section of the pip docs." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:342 +msgid "" +"Lastly, if you don't want to install any dependencies at all, you can run:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:349 +msgid "" +"For more information, see the :doc:`Development Mode ` section of the :ref:`setuptools` docs." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:356 +msgid "Packaging your project" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:358 +msgid "" +"To have your project installable from a :term:`Package Index` " +"like :term:`PyPI `, you'll need to create " +"a :term:`Distribution ` (aka \":term:`Package " +"`\") for your project." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:363 +msgid "" +"Before you can build wheels and sdists for your project, you'll need to " +"install the ``build`` package:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:380 +msgid "Source distributions" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:382 +msgid "" +"Minimally, you should create a :term:`Source Distribution `:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:398 +msgid "" +"A \"source distribution\" is unbuilt (i.e. it's not a :term:`Built " +"Distribution`), and requires a build step when installed by pip. Even if " +"the distribution is pure Python (i.e. contains no extensions), it still " +"involves a build step to build out the installation metadata " +"from :file:`setup.py` and/or :file:`setup.cfg`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:406 +msgid "Wheels" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:408 +msgid "" +"You should also create a wheel for your project. A wheel is a :term:`built " +"package ` that can be installed without needing to go " +"through the \"build\" process. Installing wheels is substantially faster for " +"the end user than installing from a source distribution." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:413 +msgid "" +"If your project is pure Python then you'll be creating a :ref:`\"Pure Python " +"Wheel\" (see section below) `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:416 +msgid "" +"If your project contains compiled extensions, then you'll be creating what's " +"called a :ref:`*Platform Wheel* (see section below) `." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:419 +msgid "" +"If your project also supports Python 2 *and* contains no C extensions, then " +"you should create what's called a *Universal Wheel* by adding the following " +"to your :file:`setup.cfg` file:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:428 +msgid "" +"Only use this setting if your project does not have any C extensions *and* " +"supports Python 2 and 3." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:435 +msgid "Pure Python Wheels" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:437 +msgid "" +"*Pure Python Wheels* contain no compiled extensions, and therefore only " +"require a single Python wheel." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:440 +#: ../source/guides/distributing-packages-using-setuptools.rst:469 +msgid "To build the wheel:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:454 +msgid "" +"The ``wheel`` package will detect that the code is pure Python, and build a " +"wheel that's named such that it's usable on any Python 3 installation. For " +"details on the naming of wheel files, see :pep:`425`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:458 +msgid "" +"If you run ``build`` without ``--wheel`` or ``--sdist``, it will build both " +"files for you; this is useful when you don't need multiple wheels." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:464 +msgid "Platform Wheels" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:466 +msgid "" +"*Platform Wheels* are wheels that are specific to a certain platform like " +"Linux, macOS, or Windows, usually due to containing compiled extensions." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:484 +msgid "" +"The ``wheel`` package will detect that the code is not pure Python, and " +"build a wheel that's named such that it's only usable on the platform that " +"it was built on. For details on the naming of wheel files, see :pep:`425`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:490 +msgid "" +":term:`PyPI ` currently supports uploads of " +"platform wheels for Windows, macOS, and the multi-distro ``manylinux*`` ABI. " +"Details of the latter are defined in :pep:`513`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:498 +msgid "Uploading your Project to PyPI" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:500 +msgid "" +"When you ran the command to create your distribution, a new directory ``dist/" +"`` was created under your project's root directory. That's where you'll find " +"your distribution file(s) to upload." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:504 +msgid "" +"These files are only created when you run the command to create your " +"distribution. This means that any time you change the source of your project " +"or the configuration in your :file:`setup.py` file, you will need to rebuild " +"these files again before you can distribute the changes to PyPI." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:509 +msgid "" +"Before releasing on main PyPI repo, you might prefer training with the `PyPI " +"test site `_ which is cleaned on a semi regular " +"basis. See :ref:`using-test-pypi` on how to setup your configuration in " +"order to use it." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:514 +msgid "" +"In other resources you may encounter references to using ``python setup.py " +"register`` and ``python setup.py upload``. These methods of registering and " +"uploading a package are **strongly discouraged** as it may use a plaintext " +"HTTP or unverified HTTPS connection on some Python versions, allowing your " +"username and password to be intercepted during transmission." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:520 +msgid "" +"The reStructuredText parser used on PyPI is **not** Sphinx! Furthermore, to " +"ensure safety of all users, certain kinds of URLs and directives are " +"forbidden or stripped out (e.g., the ``.. raw::`` directive). **Before** " +"trying to upload your distribution, you should check to see if your brief / " +"long descriptions provided in :file:`setup.py` are valid. You can do this " +"by running :std:doc:`twine check ` on your package files:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:533 +msgid "Create an account" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:535 +msgid "" +"First, you need a :term:`PyPI ` user account. " +"You can create an account `using the form on the PyPI website `_." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:539 +msgid "" +"Now you'll create a PyPI `API token`_ so you will be able to securely upload " +"your project." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:542 +msgid "" +"Go to https://pypi.org/manage/account/#api-tokens and create a new `API " +"token`_; don't limit its scope to a particular project, since you are " +"creating a new project." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:546 +msgid "" +"**Don't close the page until you have copied and saved the token — you won't " +"see that token again.**" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:549 +msgid "" +"To avoid having to copy and paste the token every time you upload, you can " +"create a :file:`$HOME/.pypirc` file:" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:558 +msgid "**Be aware that this stores your token in plaintext.**" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:560 +#: ../source/guides/migrating-to-pypi-org.rst:74 +#: ../source/guides/migrating-to-pypi-org.rst:113 +#: ../source/guides/using-testpypi.rst:84 +msgid "" +"For more details, see the :ref:`specification ` for :file:`.pypirc`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:566 +msgid "Upload your distributions" +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:568 +msgid "" +"Once you have an account you can upload your distributions to :term:`PyPI " +"` using :ref:`twine`." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:571 +msgid "" +"The process for uploading a release is the same regardless of whether or not " +"the project already exists on PyPI - if it doesn't exist yet, it will be " +"automatically created when the first release is uploaded." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:575 +msgid "" +"For the second and subsequent releases, PyPI only requires that the version " +"number of the new release differ from any previous releases." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:582 +msgid "" +"You can see if your package has successfully uploaded by navigating to the " +"URL ``https://pypi.org/project/`` where ``sampleproject`` is " +"the name of your project that you uploaded. It may take a minute or two for " +"your project to appear on the site." +msgstr "" + +#: ../source/guides/distributing-packages-using-setuptools.rst:589 +#: ../source/tutorials/installing-packages.rst:669 +msgid "" +"Depending on your platform, this may require root or Administrator " +"access. :ref:`pip` is currently considering changing this by `making user " +"installs the default behavior `_." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:5 +msgid "Dropping support for older Python versions" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:7 +msgid "" +"The ability to drop support for older Python versions is enabled by the " +"standard :ref:`core-metadata` 1.2 specification via the :ref:`\"Requires-" +"Python\" ` attribute." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:9 +msgid "" +"Metadata 1.2+ installers, such as Pip, will adhere to this specification by " +"matching the current Python runtime and comparing it with the required " +"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 "" + +#: ../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 "" + +#: ../source/guides/dropping-older-python-versions.rst:15 +msgid "Requirements" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:17 +msgid "" +"This workflow requires that the user installing the package uses Pip [#]_, " +"or another installer that supports the Metadata 1.2 specification." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:20 +msgid "Dealing with the universal wheels" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:22 +msgid "" +"Traditionally, :ref:`setuptools` projects providing Python code that is " +"semantically compatible with both Python 2 and Python 3, " +"produce :term:`wheels ` that have a ``py2.py3`` tag in their names. " +"When dropping support for Python 2, it is important not to forget to change " +"this tag to just ``py3``. It is often configured within :file:`setup.cfg` " +"under the ``[bdist_wheel]`` section by setting ``universal = 1``." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:29 +msgid "" +"If you use this method, either remove this option or section, or explicitly " +"set ``universal`` to ``0``:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:41 +msgid "" +"Regarding :ref:`deprecated ` direct ``setup.py`` " +"invocations, passing the ``--universal`` flag on the command line could " +"override this setting." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:45 +msgid "Defining the Python version required" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:48 +msgid "1. Install twine" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:50 +msgid "Ensure that you have twine available at its latest version. Steps:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:66 +msgid "2. Specify the version ranges for supported Python distributions" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:68 +msgid "" +"Set the version ranges declaring which Python distributions are supported " +"within your project's :file:`pyproject.toml`. The :ref:`requires-python` " +"configuration field corresponds to the :ref:`Requires-Python ` core metadata field:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:80 +msgid "" +"You can specify version ranges and exclusion rules (complying with " +"the :ref:`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 "" + +#: ../source/guides/dropping-older-python-versions.rst:89 +msgid "" +"If using the :ref:`setuptools` build backend, consult the `dependency-" +"management`_ documentation for more options." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:92 +msgid "" +"Avoid adding upper bounds to the version ranges, e. g. ``\">= 3.8, < " +"3.10\"``. Doing so can cause different errors and version conflicts. See the " +"`discourse-discussion`_ for more information." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:96 +msgid "3. Validating the Metadata before publishing" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:98 +msgid "" +"Within a Python source package (the zip or the tar-gz file you download) is " +"a text file called PKG-INFO." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:100 +msgid "" +"This file is generated by the :term:`build backend ` when it " +"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 "" + +#: ../source/guides/dropping-older-python-versions.rst:103 +msgid "You can see the contents of the generated file like this:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:109 +msgid "Validate that the following is in place, before publishing the package:" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:111 +msgid "" +"If you have upgraded correctly, the ``Metadata-Version`` value should be 1.2 " +"or higher." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:112 +msgid "" +"The ``Requires-Python`` field is set and matches your specification in the " +"configuration file." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:115 +msgid "4. Publishing the package" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:117 +msgid "Proceed as suggested in :ref:`Uploading your Project to PyPI`." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:120 +msgid "Dropping a Python version" +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:122 +msgid "" +"In principle, at least metadata support for Python versions should be kept " +"as long as possible, because once that has been dropped, people still " +"depending on a version will be forced to downgrade. If however supporting a " +"specific version becomes a blocker for a new feature or other issues occur, " +"the metadata ``Requires-Python`` should be amended. Of course this also " +"depends on whether the project needs to be stable and well-covered for a " +"wider range of users." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:128 +msgid "Each version compatibility change should have its own release." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:132 +msgid "" +"When dropping a Python version, it might also be rewarding to upgrade the " +"project's code syntax generally, apart from updating the versions used in " +"visible places (like the testing environment). Tools like pyupgrade_ or " +"`ruff `_ can automate some of this work." +msgstr "" + +#: ../source/guides/dropping-older-python-versions.rst:138 +msgid "Support for the Metadata 1.2 specification has been added in Pip 9.0." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:5 +msgid "Hosting your own simple repository" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:8 +msgid "" +"If you wish to host your own simple repository [1]_, you can either use a " +"software package like :doc:`devpi ` or you can simply create " +"the proper directory structure and use any web server that can serve static " +"files and generate an autoindex." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:13 +msgid "" +"In either case, since you'll be hosting a repository that is likely not in " +"your user's default repositories, you should instruct them in your project's " +"description to configure their installer appropriately. For example with pip:" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:29 +msgid "" +"In addition, it is **highly** recommended that you serve your repository " +"with valid HTTPS. At this time, the security of your user's installations " +"depends on all repositories using a valid HTTPS setup." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:35 +msgid "\"Manual\" repository" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:37 +msgid "" +"The directory layout is fairly simple, within a root directory you need to " +"create a directory for each project. This directory should be " +"the :ref:`normalized name ` of the project. Within each " +"of these directories simply place each of the downloadable files. If you " +"have the projects \"Foo\" (with the versions 1.0 and 2.0) and \"bar\" (with " +"the version 0.1) You should end up with a structure that looks like::" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:50 +msgid "" +"Once you have this layout, simply configure your webserver to serve the root " +"directory with autoindex enabled. For an example using the built in Web " +"server in `Twisted`_, you would simply run ``twistd -n web --path .`` and " +"then instruct users to add the URL to their installer's configuration." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:57 +#: ../source/guides/index-mirrors-and-caches.rst:47 +msgid "Existing projects" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:63 +msgid "Package upload" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:64 +msgid "PyPI fall-through [2]_" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:65 +#: ../source/guides/index-mirrors-and-caches.rst:56 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 +msgid "Additional notes" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:67 +#: ../source/guides/index-mirrors-and-caches.rst:58 +msgid ":ref:`devpi`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:68 +#: ../source/guides/hosting-your-own-index.rst:69 +#: ../source/guides/hosting-your-own-index.rst:75 +#: ../source/guides/hosting-your-own-index.rst:79 +#: ../source/guides/hosting-your-own-index.rst:99 +#: ../source/guides/hosting-your-own-index.rst:120 +#: ../source/guides/index-mirrors-and-caches.rst:59 +#: ../source/guides/index-mirrors-and-caches.rst:60 +#: ../source/guides/index-mirrors-and-caches.rst:66 +#: ../source/guides/index-mirrors-and-caches.rst:67 +#: ../source/guides/index-mirrors-and-caches.rst:74 +#: ../source/guides/index-mirrors-and-caches.rst:78 +#: ../source/guides/index-mirrors-and-caches.rst:80 +#: ../source/guides/index-mirrors-and-caches.rst:85 +#: ../source/guides/index-mirrors-and-caches.rst:86 +#: ../source/guides/index-mirrors-and-caches.rst:90 +#: ../source/guides/index-mirrors-and-caches.rst:92 +#: ../source/guides/index-mirrors-and-caches.rst:96 +#: ../source/guides/index-mirrors-and-caches.rst:98 +#: ../source/guides/index-mirrors-and-caches.rst:102 +#: ../source/guides/index-mirrors-and-caches.rst:104 +#: ../source/guides/index-mirrors-and-caches.rst:108 +#: ../source/guides/index-mirrors-and-caches.rst:110 +msgid "✔" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:70 +msgid "" +"multiple indexes with inheritance, with syncing, replication, fail-over; " +"mirroring" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:73 +#: ../source/guides/index-mirrors-and-caches.rst:71 +msgid ":ref:`simpleindex`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:78 +msgid ":ref:`pypiserver`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:83 +msgid ":ref:`pypiprivate`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:88 +#: ../source/guides/index-mirrors-and-caches.rst:77 +msgid ":ref:`pypicloud`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:91 +msgid "unmaintained; also cached proxying; authentication, authorisation" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:93 +msgid ":ref:`pywharf`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:96 +msgid "unmaintained; serve files in GitHub" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:98 +#: ../source/guides/index-mirrors-and-caches.rst:83 +msgid ":ref:`pulppython`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:101 +msgid "also mirroring, proxying; plugin for Pulp" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:103 +msgid ":ref:`pip2pi`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:106 +msgid "also mirroring; manual synchronisation" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:108 +msgid ":ref:`dumb-pypi`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:111 +msgid "not a server, but a static file site generator" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:113 +msgid ":ref:`httpserver`" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:116 +msgid "standard-library" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:118 +#: ../source/guides/index-mirrors-and-caches.rst:107 +msgid "`Apache `_" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:121 +#: ../source/guides/index-mirrors-and-caches.rst:111 +msgid "" +"using `mod_rewrite `_ and `mod_cache_disk `_, you can cache requests to package " +"indexes through an Apache server" +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:131 +msgid "" +"For complete documentation of the simple repository protocol, " +"see :ref:`simple repository API `." +msgstr "" + +#: ../source/guides/hosting-your-own-index.rst:134 +msgid "" +"Can be configured to fall back to PyPI (or another package index) if a " +"requested package is missing." +msgstr "" + +#: ../source/guides/index.rst:4 +msgid "" +"**Guides** are focused on accomplishing a specific task and assume that you " +"are already familiar with the basics of Python packaging. If you're looking " +"for an introduction to packaging, see :doc:`/tutorials/index`." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:5 +msgid "Package index mirrors and caches" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:8 +msgid "2023-11-08" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:10 +msgid "" +"Mirroring or caching of PyPI (and other :term:`package indexes `) can be used to speed up local package installation, allow offline " +"work, handle corporate firewalls or just plain Internet flakiness." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:15 +msgid "There are multiple classes of options in this area:" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:17 +msgid "local/hosted caching of package indexes." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:19 +msgid "" +"local/hosted mirroring of a package index. A mirror is a (whole or partial) " +"copy of a package index, which can be used in place of the original index." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:23 +msgid "" +"private package index with fall-through to public package indexes (for " +"example, to mitigate dependency confusion attacks), also known as a proxy." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:29 +msgid "Caching with pip" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:31 +msgid "" +"pip provides a number of facilities for speeding up installation by using " +"local cached copies of :term:`packages `:" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:34 +msgid "" +":ref:`Fast & local installs ` by " +"downloading all the requirements for a project and then pointing pip at " +"those downloaded files instead of going to PyPI." +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:37 +msgid "" +"A variation on the above which pre-builds the installation files for the " +"requirements using :ref:`python3 -m pip wheel `:" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:53 +msgid "Cache" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:54 +msgid "Mirror" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:55 +msgid "Proxy" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:62 +msgid "" +"multiple indexes with inheritance; syncing, replication, fail-over; package " +"upload" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:65 +msgid ":ref:`bandersnatch`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:75 +msgid "custom plugin enables caching; re-routing to other package indexes" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:81 +msgid "unmaintained; authentication, authorisation" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:87 +msgid "plugin for Pulp; multiple proxied indexes; package upload" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:89 +msgid ":ref:`proxpi`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:93 +#: ../source/guides/index-mirrors-and-caches.rst:99 +msgid "multiple proxied indexes" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:95 +msgid ":ref:`nginx_pypi_cache`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:101 +msgid ":ref:`flaskpypiproxy`" +msgstr "" + +#: ../source/guides/index-mirrors-and-caches.rst:105 +msgid "unmaintained" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:5 +msgid "Installing scientific packages" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:8 +msgid "" +"Scientific software tends to have more complex dependencies than most, and " +"it will often have multiple build options to take advantage of different " +"kinds of hardware, or to interoperate with different pieces of external " +"software." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:13 +msgid "" +"In particular, `NumPy `__, which provides the basis for " +"most of the software in the `scientific Python stack `_ can be configured to interoperate with different FORTRAN " +"libraries, and can take advantage of different levels of vectorized " +"instructions available in modern CPUs." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:19 +msgid "" +"Starting with version 1.10.4 of NumPy and version 1.0.0 of SciPy, pre-built " +"32-bit and 64-bit binaries in the ``wheel`` format are available for all " +"major operating systems (Windows, macOS, and Linux) on PyPI. Note, however, " +"that on Windows, NumPy binaries are linked against the `ATLAS `__ BLAS/LAPACK library, restricted to SSE2 " +"instructions, so they may not provide optimal linear algebra performance." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:26 +msgid "" +"There are a number of alternative options for obtaining scientific Python " +"libraries (or any other Python libraries that require a compilation " +"environment to install from source and don't provide pre-built wheel files " +"on PyPI)." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:32 +msgid "Building from source" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:34 +msgid "" +"The same complexity which makes it difficult to distribute NumPy (and many " +"of the projects that depend on it) as wheel files also make them difficult " +"to build from source yourself. However, for intrepid folks that are willing " +"to spend the time wrangling compilers and linkers for both C and FORTRAN, " +"building from source is always an option." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:42 +msgid "Linux distribution packages" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:44 +msgid "" +"For Linux users, the system package manager will often have pre-compiled " +"versions of various pieces of scientific software, including NumPy and other " +"parts of the scientific Python stack." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:48 +msgid "" +"If using versions which may be several months old is acceptable, then this " +"is likely to be a good option (just make sure to allow access to " +"distributions installed into the system Python when using virtual " +"environments)." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:54 +msgid "Windows installers" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:56 +msgid "" +"Many Python projects that don't (or can't) currently publish wheel files at " +"least publish Windows installers, either on PyPI or on their project " +"download page. Using these installers allows users to avoid the need to set " +"up a suitable environment to build extensions locally." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:61 +msgid "" +"The extensions provided in these installers are typically compatible with " +"the CPython Windows installers published on python.org." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:64 +msgid "" +"As with Linux system packages, the Windows installers will only install into " +"a system Python installation - they do not support installation in virtual " +"environments. Allowing access to distributions installed into the system " +"Python when using virtual environments is a common approach to working " +"around this limitation." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:70 +msgid "" +"The :term:`Wheel` project also provides a :command:`wheel convert` " +"subcommand that can convert a Windows :command:`bdist_wininst` installer to " +"a wheel." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:77 +msgid "macOS installers and package managers" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:79 +msgid "" +"Similar to the situation on Windows, many projects (including NumPy) publish " +"macOS installers that are compatible with the macOS CPython binaries " +"published on python.org." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:83 +msgid "" +"macOS users also have access to Linux distribution style package managers " +"such as ``Homebrew``. The SciPy site has more details on using Homebrew to " +"`install SciPy on macOS `_." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:89 +msgid "SciPy distributions" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:91 +msgid "" +"The SciPy site lists `several distributions `_ " +"that provide the full SciPy stack to end users in an easy to use and update " +"format." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:96 +msgid "" +"Some of these distributions may not be compatible with the standard ``pip`` " +"and ``virtualenv`` based toolchain." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:100 +#: ../source/key_projects.rst:812 +msgid "Spack" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:101 +msgid "" +"`Spack `_ is a flexible package manager " +"designed to support multiple versions, configurations, platforms, and " +"compilers. It was built to support the needs of large supercomputing centers " +"and scientific application teams, who must often build software many " +"different ways. Spack is not limited to Python; it can install packages for " +"``C``, ``C++``, ``Fortran``, ``R``, and other languages. It is non-" +"destructive; installing a new version of one package does not break existing " +"installations, so many configurations can coexist on the same system." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:110 +msgid "" +"Spack offers a simple but powerful syntax that allows users to specify " +"versions and configuration options concisely. Package files are written in " +"pure Python, and they are templated so that it is easy to swap compilers, " +"dependency implementations (like MPI), versions, and build options with a " +"single package file. Spack also generates *module* files so that packages " +"can be loaded and unloaded from the user's environment." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:119 +msgid "The conda cross-platform package manager" +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:121 +msgid "" +"``conda`` is an open source (BSD licensed) package management system and " +"environment management system that allows users to install multiple versions " +"of binary software packages and their dependencies, and easily switch " +"between them. It is a cross-platform tool working on Windows, MacOS, and " +"Linux. Conda can be used to package up and distribute all kinds of packages, " +"it is not limited to just Python packages. It has full support for native " +"virtual environments. Conda makes environments first-class citizens, making " +"it easy to create independent environments even for C libraries. It is " +"written in Python, but is Python-agnostic. Conda manages Python itself as a " +"package, so that :command:`conda update python` is possible, in contrast to " +"pip, which only manages Python packages." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:133 +msgid "" +"Anaconda `Anaconda `_ is a Python " +"distribution published by Anaconda, Inc. It is a stable collection of Open " +"Source packages for big data and scientific use, and a collection of " +"Graphical Interface utilities for managing conda environments." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:135 +msgid "" +"In addition to the full distribution provided by Anaconda, the conda package " +"manager itself is available in `miniconda `_, `miniforge `_, and " +"`pixi `_." +msgstr "" + +#: ../source/guides/installing-scientific-packages.rst:138 +msgid "" +"Conda packages are available on multiple channels on Anaconda.org, including " +"the default channel supported by Anaconda, Inc, the community supported " +"conda-forge channel, which provides a wide variety of pre-built packages, " +"and some domain-specific package collections." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:4 +msgid "Installing stand alone command line tools" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:6 +msgid "" +"Many packages provide command line applications. Examples of such packages " +"are `mypy `_, `flake8 `_, `black `_, and :ref:`pipenv`." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:12 +msgid "" +"Usually you want to be able to access these applications from anywhere on " +"your system, but installing packages and their dependencies to the same " +"global environment can cause version conflicts and break dependencies the " +"operating system has on Python packages." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:17 +msgid "" +":ref:`pipx` solves this by creating a virtual environment for each package, " +"while also ensuring that its applications are accessible through a directory " +"that is on your ``$PATH``. This allows each package to be upgraded or " +"uninstalled without causing conflicts with other packages, and allows you to " +"safely run the applications from anywhere." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:23 +msgid "pipx only works with Python 3.6+." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:25 +msgid "pipx is installed with pip:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:43 +msgid "" +"``ensurepath`` ensures that the application directory is on your ``$PATH``. " +"You may need to restart your terminal for this update to take effect." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:46 +msgid "" +"Now you can install packages with ``pipx install`` and run the package's " +"applications(s) from anywhere." +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:54 +#: ../source/specifications/entry-points.rst:114 +msgid "For example:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:76 +msgid "" +"To see a list of packages installed with pipx and which applications are " +"available, use ``pipx list``:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:100 +msgid "To upgrade or uninstall a package:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:107 +msgid "pipx can be upgraded or uninstalled with pip:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:123 +msgid "" +"pipx also allows you to install and run the latest version of an application " +"in a temporary, ephemeral environment. For example:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:130 +msgid "To see the full list of commands pipx offers, run:" +msgstr "" + +#: ../source/guides/installing-stand-alone-command-line-tools.rst:136 +msgid "You can learn more about pipx at https://pipx.pypa.io/." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:5 +msgid "Installing pip/setuptools/wheel with Linux Package Managers" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:8 +msgid "2021-07-26" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:10 +msgid "" +"This section covers how to install :ref:`pip`, :ref:`setuptools`, " +"and :ref:`wheel` using Linux package managers." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:13 +msgid "" +"If you're using a Python that was downloaded from `python.org `_, then this section does not apply. See " +"the :ref:`installing_requirements` section instead." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:17 +msgid "" +"Note that it's common for the versions of :ref:`pip`, :ref:`setuptools`, " +"and :ref:`wheel` supported by a specific Linux Distribution to be outdated " +"by the time it's released to the public, and updates generally only occur " +"for security reasons, not for feature updates. For certain Distributions, " +"there are additional repositories that can be enabled to provide newer " +"versions. The repositories we know about are explained below." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:24 +msgid "" +"Also note that it's somewhat common for Distributions to apply patches for " +"the sake of security and normalization to their own standards. In some " +"cases, this can lead to bugs or unexpected behaviors that vary from the " +"original unpatched versions. When this is known, we will make note of it " +"below." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:31 +msgid "Fedora" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:37 +msgid "" +"To learn more about Python in Fedora, please visit the `official Fedora " +"docs`_, `Python Classroom`_ or `Fedora Loves Python`_." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:45 +msgid "CentOS/RHEL" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:47 +msgid "" +"CentOS and RHEL don't offer :ref:`pip` or :ref:`wheel` in their core " +"repositories, although :ref:`setuptools` is installed by default." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:50 +msgid "To install pip and wheel for the system Python, there are two options:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:52 +msgid "" +"Enable the `EPEL repository `_ using " +"`these instructions `__. On EPEL 7, you can install pip and wheel like so:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:61 +msgid "" +"Since EPEL only offers extra, non-conflicting packages, EPEL does not offer " +"setuptools, since it's in the core repository." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:65 +msgid "" +"Enable the `PyPA Copr Repo `_ using `these instructions `__ [1]_. You can install pip and " +"wheel like so:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:74 +msgid "To additionally upgrade setuptools, run:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:81 +msgid "" +"To install pip, wheel, and setuptools, in a parallel, non-system environment " +"(using yum) then there are two options:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:85 +msgid "" +"Use the \"Software Collections\" feature to enable a parallel collection " +"that includes pip, setuptools, and wheel." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:88 +msgid "" +"For Redhat, see here: https://developers.redhat.com/products/" +"softwarecollections/overview" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:90 +msgid "For CentOS, see here: https://github.com/sclorg" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:92 +msgid "Be aware that collections may not contain the most recent versions." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:94 +msgid "" +"Enable the `IUS repository `_ and install one of the " +"`parallel-installable `_ " +"Pythons, along with pip, setuptools, and wheel, which are kept fairly up to " +"date." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:100 +msgid "For example, for Python 3.4 on CentOS7/RHEL7:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:108 +msgid "openSUSE" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:118 +msgid "Debian/Ubuntu and derivatives" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:120 +msgid "Firstly, update and refresh repository lists by running this command:" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:129 +msgid "" +"Recent Debian/Ubuntu versions have modified pip to use the `\"User Scheme\" " +"`_ by default, " +"which is a significant behavior change that can be surprising to some users." +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:135 +msgid "Arch Linux" +msgstr "" + +#: ../source/guides/installing-using-linux-tools.rst:143 +msgid "" +"Currently, there is no \"copr\" yum plugin available for CentOS/RHEL, so the " +"only option is to manually place the repo files as described." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:2 +msgid "Install packages in a virtual environment using pip and venv" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:4 +msgid "" +"This guide discusses how to create and activate a virtual environment using " +"the standard library's virtual environment tool :ref:`venv` and install " +"packages. The guide covers how to:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:8 +msgid "Create and activate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:9 +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:153 +msgid "Prepare pip" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:10 +msgid "Install packages into a virtual environment using the ``pip`` command" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:11 +msgid "Use and create a requirements file" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:14 +msgid "" +"This guide applies to supported versions of Python, currently 3.8 and higher." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:18 +msgid "" +"This guide uses the term **package** to refer to a :term:`Distribution " +"Package`, which commonly is installed from an external host. This differs " +"from the term :term:`Import Package` which refers to import modules in your " +"Python source code." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:25 +msgid "" +"This guide has the prerequisite that you are using an official Python " +"version obtained from . If you are using " +"your operating system's package manager to install Python, please ensure " +"that Python is installed before proceeding with these steps." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:32 +msgid "Create and Use Virtual Environments" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:35 +msgid "Create a new virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:37 +msgid "" +":ref:`venv` (for Python 3) allows you to manage separate package " +"installations for different projects. It creates a \"virtual\" isolated " +"Python installation. When you switch projects, you can create a new virtual " +"environment which is isolated from other virtual environments. You benefit " +"from the virtual environment since packages can be installed confidently and " +"will not interfere with another project's environment." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:45 +msgid "" +"It is recommended to use a virtual environment when working with third party " +"packages." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:48 +msgid "" +"To create a virtual environment, go to your project's directory and run the " +"following command. This will create a new virtual environment in a local " +"folder named ``.venv``:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:64 +msgid "" +"The second argument is the location to create the virtual environment. " +"Generally, you can just create this in your project and call it ``.venv``." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:67 +msgid "" +"``venv`` will create a virtual Python installation in the ``.venv`` folder." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:69 +msgid "" +"You should exclude your virtual environment directory from your version " +"control system using ``.gitignore`` or similar." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:74 +msgid "Activate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:76 +msgid "" +"Before you can start installing or using packages in your virtual " +"environment you'll need to ``activate`` it. Activating a virtual environment " +"will put the virtual environment-specific ``python`` and ``pip`` executables " +"into your shell's ``PATH``." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:93 +msgid "" +"To confirm the virtual environment is activated, check the location of your " +"Python interpreter:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:108 +msgid "" +"While the virtual environment is active, the above command will output a " +"filepath that includes the ``.venv`` directory, by ending with the following:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:124 +msgid "" +"While a virtual environment is activated, pip will install packages into " +"that specific environment. This enables you to import and use packages in " +"your Python application." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:130 +msgid "Deactivate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:132 +msgid "" +"If you want to switch projects or leave your virtual environment, " +"``deactivate`` the environment:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:140 +msgid "" +"Closing your shell will deactivate the virtual environment. If you open a " +"new shell window and want to use the virtual environment, reactivate it." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:145 +msgid "Reactivate a virtual environment" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:147 +msgid "" +"If you want to reactivate an existing virtual environment, follow the same " +"instructions about activating a virtual environment. There's no need to " +"create a new virtual environment." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:155 +msgid "" +":ref:`pip` is the reference Python package manager. It's used to install and " +"update packages into a virtual environment." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:161 +msgid "" +"The Python installers for macOS include pip. On Linux, you may have to " +"install an additional package such as ``python3-pip``. You can make sure " +"that pip is up-to-date by running:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:170 +msgid "" +"Afterwards, you should have the latest version of pip installed in your user " +"site:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:179 +msgid "" +"The Python installers for Windows include pip. You can make sure that pip is " +"up-to-date by running:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:187 +msgid "Afterwards, you should have the latest version of pip:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:195 +msgid "Install packages using pip" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:197 +msgid "" +"When your virtual environment is activated, you can install packages. Use " +"the ``pip install`` command to install packages." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:201 +msgid "Install a package" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:203 +msgid "" +"For example, let's install the `Requests`_ library from the :term:`Python " +"Package Index (PyPI)`:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:218 +msgid "" +"pip should download requests and all of its dependencies and install them:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:239 +msgid "Install a specific package version" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:241 +msgid "" +"pip allows you to specify which version of a package to install " +"using :term:`version specifiers `. For example, to " +"install a specific version of ``requests``:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:257 +msgid "To install the latest ``2.x`` release of requests:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:271 +msgid "To install pre-release versions of packages, use the ``--pre`` flag:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:287 +msgid "Install extras" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:289 +msgid "" +"Some packages have optional `extras`_. You can tell pip to install these by " +"specifying the extra in brackets:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:309 +msgid "Install a package from source" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:311 +msgid "" +"pip can install a package directly from its source code. For example, to " +"install the source code in the ``google-auth`` directory:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:328 +msgid "" +"Additionally, pip can install packages from source in :doc:`development mode " +"`, meaning that changes to the source " +"directory will immediately affect the installed package without needing to " +"re-install:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:347 +msgid "Install from version control systems" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:349 +msgid "" +"pip can install packages directly from their version control system. For " +"example, you can install directly from a git repository:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:356 +msgid "" +"For more information on supported version control systems and syntax, see " +"pip's documentation on :ref:`VCS Support `." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:361 +msgid "Install from local archives" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:363 +msgid "" +"If you have a local copy of a :term:`Distribution Package`'s archive (a zip, " +"wheel, or tar file) you can install it directly with pip:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:378 +msgid "" +"If you have a directory containing archives of multiple packages, you can " +"tell pip to look for packages there and not to use the :term:`Python Package " +"Index (PyPI)` at all:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:394 +msgid "" +"This is useful if you are installing packages on a system with limited " +"connectivity or if you want to strictly control the origin of distribution " +"packages." +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:400 +msgid "Install from other package indexes" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:402 +msgid "" +"If you want to download packages from a different index than " +"the :term:`Python Package Index (PyPI)`, you can use the ``--index-url`` " +"flag:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:417 +msgid "" +"If you want to allow packages from both the :term:`Python Package Index " +"(PyPI)` and a separate index, you can use the ``--extra-index-url`` flag " +"instead:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 +#: ../source/tutorials/installing-packages.rst:392 +msgid "Upgrading packages" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:436 +msgid "" +"pip can upgrade packages in-place using the ``--upgrade`` flag. For example, " +"to install the latest version of ``requests`` and all of its dependencies:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:452 +msgid "Using a requirements file" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:454 +msgid "" +"Instead of installing packages individually, pip allows you to declare all " +"dependencies in a :ref:`Requirements File `. For " +"example you could create a :file:`requirements.txt` file containing:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:463 +msgid "" +"And tell pip to install all of the packages in this file using the ``-r`` " +"flag:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:478 +msgid "Freezing dependencies" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:480 +msgid "" +"Pip can export a list of all installed packages and their versions using the " +"``freeze`` command:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:495 +msgid "Which will output a list of package specifiers such as:" +msgstr "" + +#: ../source/guides/installing-using-pip-and-virtual-environments.rst:511 +msgid "" +"The ``pip freeze`` command is useful for creating :ref:`pip:Requirements " +"Files` that can re-create the exact versions of all packages installed in an " +"environment." +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:2 +msgid "Installing packages using virtualenv" +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:4 +msgid "" +"This guide discusses how to install packages using :ref:`pip` " +"and :ref:`virtualenv`, a tool to create isolated Python environments." +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:8 +msgid "" +"This \"how to\" guide on installing packages and using :ref:`virtualenv` is " +"under development. Please refer to the :ref:`virtualenv` documentation for " +"details on installation and usage." +msgstr "" + +#: ../source/guides/installing-using-virtualenv.rst:13 +msgid "" +"This doc uses the term **package** to refer to a :term:`Distribution " +"Package` which is different from an :term:`Import Package` that which is " +"used to import modules in your Python source code." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:6 +msgid "Licensing examples and user scenarios" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:9 +msgid "" +":pep:`639` has specified the way to declare a :term:`Distribution Archive`'s " +"license and paths to license files and other legally required information. " +"This document aims to provide clear guidance how to migrate from the legacy " +"to the standardized way of declaring licenses. Make sure your preferred " +"build backend supports :pep:`639` before trying to apply the newer " +"guidelines." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:18 +msgid "Licensing Examples" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:23 +msgid "Basic example" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:25 +msgid "" +"The Setuptools project itself, as of `version 75.6.0 `__, " +"does not use the ``License`` field in its own project source metadata. " +"Further, it no longer explicitly specifies ``license_file``/" +"``license_files`` as it did previously, since Setuptools relies on its own " +"automatic inclusion of license-related files matching common patterns, such " +"as the :file:`LICENSE` file it uses." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:32 +msgid "" +"It includes the following license-related metadata in " +"its :file:`pyproject.toml`:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:42 +msgid "The simplest migration to PEP 639 would consist of using this instead:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:49 +msgid "Or, if the project used :file:`setup.cfg`, in its ``[metadata]`` table:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:56 +msgid "" +"The output Core Metadata for the :term:`Distribution Package` would then be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:63 +msgid "" +"The :file:`LICENSE` file would be stored at :file:`/setuptools-{VERSION}/" +"LICENSE` in the sdist and :file:`/setuptools-{VERSION}.dist-info/licenses/" +"LICENSE` in the wheel, and unpacked from there into the site directory " +"(e.g. :file:`site-packages/`) on installation; :file:`/` is the root of the " +"respective archive and ``{VERSION}`` the version of the Setuptools release " +"in the Core Metadata." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:74 +msgid "Advanced example" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:76 +msgid "" +"Suppose Setuptools were to include the licenses of the third-party projects " +"that are vendored in the :file:`setuptools/_vendor/` " +"and :file:`pkg_resources/_vendor/` directories; specifically:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:87 +msgid "The appropriate license expressions are:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:96 +msgid "" +"A comprehensive license expression covering both Setuptools proper and its " +"vendored dependencies would contain these metadata, combining all the " +"license expressions into one. Such an expression might be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:104 +msgid "" +"In addition, per the requirements of the licenses, the relevant license " +"files must be included in the package. Suppose the :file:`LICENSE` file " +"contains the text of the MIT license and the copyrights used by Setuptools, " +"``pyparsing``, ``more_itertools`` and ``ordered-set``; and " +"the :file:`LICENSE*` files in the :file:`setuptools/_vendor/packaging/` " +"directory contain the Apache 2.0 and 2-clause BSD license text, and the " +"Packaging copyright statement and `license choice notice " +"`__." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:112 +msgid "" +"Specifically, we assume the license files are located at the following paths " +"in the project source tree (relative to the project root " +"and :file:`pyproject.toml`):" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:123 +msgid "Putting it all together, our :file:`pyproject.toml` would be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:134 +msgid "" +"Or alternatively, the license files can be specified explicitly (paths will " +"be interpreted as glob patterns):" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:148 +msgid "If our project used :file:`setup.cfg`, we could define this in :" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:160 +msgid "" +"With either approach, the output Core Metadata in the distribution would be:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:171 +msgid "" +"In the resulting sdist, with :file:`/` as the root of the archive and " +"``{VERSION}`` the version of the Setuptools release specified in the Core " +"Metadata, the license files would be located at the paths:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:182 +msgid "" +"In the built wheel, with :file:`/` being the root of the archive and " +"``{VERSION}`` as the previous, the license files would be stored at:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:192 +msgid "" +"Finally, in the installed project, with :file:`site-packages/` being the " +"site dir and ``{VERSION}`` as the previous, the license files would be " +"installed to:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:204 +msgid "Expression examples" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:206 +msgid "Some additional examples of valid ``License-Expression`` values:" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:221 +msgid "User Scenarios" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:223 +msgid "" +"The following covers the range of common use cases from a user perspective, " +"providing guidance for each. Do note that the following should **not** be " +"considered legal advice, and readers should consult a licensed legal " +"practitioner in their jurisdiction if they are unsure about the specifics " +"for their situation." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:231 +msgid "I have a private package that won't be distributed" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:233 +msgid "" +"If your package isn't shared publicly, i.e. outside your company, " +"organization or household, it *usually* isn't strictly necessary to include " +"a formal license, so you wouldn't necessarily have to do anything extra here." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:237 +msgid "" +"However, it is still a good idea to include ``LicenseRef-Proprietary`` as a " +"license expression in your package configuration, and/or a copyright " +"statement and any legal notices in a :file:`LICENSE.txt` file in the root of " +"your project directory, which will be automatically included by packaging " +"tools." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:245 +msgid "I just want to share my own work without legal restrictions" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:247 +msgid "" +"While you aren't required to include a license, if you don't, no one has " +"`any permission to download, use or improve your work " +"`__, so that's probably the *opposite* of what you " +"actually want. The `MIT license `__ is a great choice " +"instead, as it's simple, widely used and allows anyone to do whatever they " +"want with your work (other than sue you, which you probably also don't want)." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:254 +msgid "" +"To apply it, just paste `the text `__ into a file " +"named :file:`LICENSE.txt` at the root of your repo, and add the year and " +"your name to the copyright line. Then, just add ``license = \"MIT\"`` under " +"``[project]`` in your :file:`pyproject.toml` if your packaging tool supports " +"it, or in its config file/section. You're done!" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:262 +msgid "I want to distribute my project under a specific license" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:264 +msgid "" +"To use a particular license, simply paste its text into " +"a :file:`LICENSE.txt` file at the root of your repo, if you don't have it in " +"a file starting with :file:`LICENSE` or :file:`COPYING` already, and add " +"``license = \"LICENSE-ID\"`` under ``[project]`` in " +"your :file:`pyproject.toml` if your packaging tool supports it, or else in " +"its config file. You can find the ``LICENSE-ID`` and copyable license text " +"on sites like `ChooseALicense `__ or `SPDX " +"`__." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:273 +msgid "" +"Many popular code hosts, project templates and packaging tools can add the " +"license file for you, and may support the expression as well in the future." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:278 +msgid "I maintain an existing package that's already licensed" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:280 +msgid "" +"If you already have license files and metadata in your project, you should " +"only need to make a couple of tweaks to take advantage of the new " +"functionality." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:284 +msgid "" +"In your project config file, enter your license expression under ``license`` " +"(``[project]`` table in :file:`pyproject.toml`), or the equivalent for your " +"packaging tool, and make sure to remove any legacy ``license`` table subkeys " +"or ``License ::`` classifiers. Your existing ``license`` value may already " +"be valid as one (e.g. ``MIT``, ``Apache-2.0 OR BSD-2-Clause``, etc); " +"otherwise, check the `SPDX license list `__ for the identifier " +"that matches the license used." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:293 +msgid "" +"Make sure to list your license files under ``license-files`` under " +"``[project]`` in :file:`pyproject.toml` or else in your tool's configuration " +"file." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:297 +msgid "" +"See the :ref:`licensing-example-basic` for a simple but complete real-world " +"demo of how this works in practice. See also the best-effort guidance on how " +"to translate license classifiers into license expression provided by " +"the :pep:`639` authors: `Mapping License Classifiers to SPDX Identifiers " +"`__. Packaging tools may support automatically " +"converting legacy licensing metadata; check your tool's documentation for " +"more information." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:307 +msgid "My package includes other code under different licenses" +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:309 +msgid "" +"If your project includes code from others covered by different licenses, " +"such as vendored dependencies or files copied from other open source " +"software, you can construct a license expression to describe the licenses " +"involved and the relationship between them." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:315 +msgid "" +"In short, ``License-1 AND License-2`` mean that *both* licenses apply (for " +"example, you included a file under another license), and ``License-1 OR " +"License-2`` means that *either* of the licenses can be used, at the user's " +"option (for example, you want to allow users a choice of multiple licenses). " +"You can use parenthesis (``()``) for grouping to form expressions that cover " +"even the most complex situations." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:322 +msgid "" +"In your project config file, enter your license expression under ``license`` " +"(``[project]`` table of :file:`pyproject.toml`), or the equivalent for your " +"packaging tool, and make sure to remove any legacy ``license`` table subkeys " +"or ``License ::`` classifiers." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:328 +msgid "" +"Also, make sure you add the full license text of all the licenses as files " +"somewhere in your project repository. List the relative path or glob " +"patterns to each of them under ``license-files`` under ``[project]`` " +"in :file:`pyproject.toml` (if your tool supports it), or else in your tool's " +"configuration file." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:334 +msgid "" +"As an example, if your project was licensed MIT but incorporated a vendored " +"dependency (say, ``packaging``) that was licensed under either Apache 2.0 or " +"the 2-clause BSD, your license expression would be ``MIT AND (Apache-2.0 OR " +"BSD-2-Clause)``. You might have a :file:`LICENSE.txt` in your repo root, and " +"a :file:`LICENSE-APACHE.txt` and :file:`LICENSE-BSD.txt` in " +"the :file:`_vendor/` subdirectory, so to include all of them, you'd specify " +"``[\"LICENSE.txt\", \"_vendor/packaging/LICENSE*\"]`` as glob patterns, or " +"``[\"LICENSE.txt\", \"_vendor/LICENSE-APACHE.txt\", \"_vendor/LICENSE-" +"BSD.txt\"]`` as literal file paths." +msgstr "" + +#: ../source/guides/licensing-examples-and-user-scenarios.rst:345 +msgid "" +"See a fully worked out :ref:`licensing-example-advanced` for an end-to-end " +"application of this to a real-world complex project, with many technical " +"details, and consult a `tutorial `__ for more help and " +"examples using SPDX identifiers and expressions." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:2 +msgid "Making a PyPI-friendly README" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:4 +msgid "" +"README files can help your users understand your project and can be used to " +"set your project's description on PyPI. This guide helps you create a README " +"in a PyPI-friendly format and include your README in your package so it " +"appears on PyPI." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:9 +msgid "Creating a README file" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:11 +msgid "" +"README files for Python projects are often named ``README``, ``README.txt``, " +"``README.rst``, or ``README.md``." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:13 +msgid "" +"For your README to display properly on PyPI, choose a markup language " +"supported by PyPI. Formats supported by `PyPI's README renderer `_ are:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:16 +msgid "plain text" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:17 +msgid "" +"`reStructuredText `_ (without " +"Sphinx extensions)" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:18 +msgid "" +"Markdown (`GitHub Flavored Markdown `_ by " +"default, or `CommonMark `_)" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:21 +msgid "" +"It's customary to save your README file in the root of your project, in the " +"same directory as your :file:`setup.py` file." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:25 +msgid "Including your README in your package's metadata" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:27 +msgid "" +"To include your README's contents as your package description, set your " +"project's ``Description`` and ``Description-Content-Type`` metadata, " +"typically in your project's :file:`setup.py` file." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:33 +msgid ":ref:`description-optional`" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:34 +msgid ":ref:`description-content-type-optional`" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:36 +msgid "" +"For example, to set these values in a package's :file:`setup.py` file, use " +"``setup()``'s ``long_description`` and ``long_description_content_type``." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:39 +msgid "" +"Set the value of ``long_description`` to the contents (not the path) of the " +"README file itself. Set the ``long_description_content_type`` to an accepted " +"``Content-Type``-style value for your README file's markup, such as ``text/" +"plain``, ``text/x-rst`` (for reStructuredText), or ``text/markdown``." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:45 +msgid "" +"If you're using GitHub-flavored Markdown to write a project's description, " +"ensure you upgrade the following tools:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:60 +msgid "The minimum required versions of the respective tools are:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:62 +msgid "``setuptools >= 38.6.0``" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:63 +msgid "``wheel >= 0.31.0``" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:64 +msgid "``twine >= 1.11.0``" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:66 +msgid "" +"It's recommended that you use ``twine`` to upload the project's distribution " +"packages:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:72 +msgid "" +"For example, see this :file:`setup.py` file, which reads the contents " +"of :file:`README.md` as ``long_description`` and identifies the markup as " +"GitHub-flavored Markdown:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:94 +msgid "Validating reStructuredText markup" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:96 +msgid "" +"If your README is written in reStructuredText, any invalid markup will " +"prevent it from rendering, causing PyPI to instead just show the README's " +"raw source." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:99 +msgid "" +"Note that Sphinx extensions used in docstrings, such as :doc:`directives " +"` and :doc:`roles ` (e.g., \"``:py:func:`getattr```\" or \"``:ref:`my-" +"reference-label```\"), are not allowed here and will result in error " +"messages like \"``Error: Unknown interpreted text role \"py:func\".``\"." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:104 +msgid "" +"You can check your README for markup errors before uploading as follows:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:106 +msgid "" +"Install the latest version of `twine `_; " +"version 1.12.0 or higher is required:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:121 +msgid "" +"Build the sdist and wheel for your project as described " +"under :ref:`Packaging Your Project`." +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:124 +msgid "Run ``twine check`` on the sdist and wheel:" +msgstr "" + +#: ../source/guides/making-a-pypi-friendly-readme.rst:130 +msgid "" +"This command will report any problems rendering your README. If your markup " +"renders fine, the command will output ``Checking distribution FILENAME: " +"Passed``." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:6 +msgid "Migrating to PyPI.org" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:8 +#: ../source/guides/multi-version-installs.rst:8 +#: ../source/guides/supporting-multiple-python-versions.rst:9 +#: ../source/guides/supporting-windows-using-appveyor.rst:7 +msgid "Obsolete" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:10 +msgid "" +":term:`pypi.org` is the new, rewritten version of PyPI that has replaced the " +"legacy PyPI code base. It is the default version of PyPI that people are " +"expected to use. These are the tools and processes that people will need to " +"interact with ``PyPI.org``." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:16 +msgid "Publishing releases" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:18 +msgid "``pypi.org`` is the default upload platform as of September 2016." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:20 +msgid "" +"Uploads through ``pypi.python.org`` were *switched off* on **July 3, 2017**. " +"As of April 13th, 2018, ``pypi.org`` is the URL for PyPI." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:23 +msgid "" +"The recommended way to migrate to PyPI.org for uploading is to ensure that " +"you are using a new enough version of your upload tool." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:26 +msgid "" +"The default upload settings switched to ``pypi.org`` in the following " +"versions:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:28 +msgid "``twine`` 1.8.0" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:29 +msgid "``setuptools`` 27.0.0" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:30 +msgid "Python 2.7.13 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:31 +msgid "Python 3.4.6 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:32 +msgid "Python 3.5.3 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:33 +msgid "Python 3.6.0 (``distutils`` update)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:35 +msgid "" +"In addition to ensuring you're on a new enough version of the tool for the " +"tool's default to have switched, you must also make sure that you have not " +"configured the tool to override its default upload URL. Typically this is " +"configured in a file located at :file:`$HOME/.pypirc`. If you see a file " +"like:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:52 +msgid "" +"Then simply delete the line starting with ``repository`` and you will use " +"your upload tool's default URL." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:55 +msgid "" +"If for some reason you're unable to upgrade the version of your tool to a " +"version that defaults to using PyPI.org, then you may " +"edit :file:`$HOME/.pypirc` and include the ``repository:`` line, but use the " +"value ``https://upload.pypi.org/legacy/`` instead:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:71 +msgid "" +"(``legacy`` in this URL refers to the fact that this is the new server " +"implementation's emulation of the legacy server implementation's upload API.)" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:77 +msgid "Registering package names & metadata" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:79 +msgid "" +"Explicit pre-registration of package names with the ``setup.py register`` " +"command prior to the first upload is no longer required, and is not " +"currently supported by the legacy upload API emulation on PyPI.org." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:83 +msgid "" +"As a result, attempting explicit registration after switching to using " +"PyPI.org for uploads will give the following error message::" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:88 +msgid "" +"The solution is to skip the registration step, and proceed directly to " +"uploading artifacts." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:93 +#: ../source/guides/using-testpypi.rst:5 +msgid "Using TestPyPI" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:95 +msgid "" +"Legacy TestPyPI (testpypi.python.org) is no longer available; use " +"`test.pypi.org `_ instead. If you use TestPyPI, you " +"must update your :file:`$HOME/.pypirc` to handle TestPyPI's new location, by " +"replacing ``https://testpypi.python.org/pypi`` with ``https://test.pypi.org/" +"legacy/``, for example:" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:117 +msgid "Registering new user accounts" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:119 +msgid "" +"In order to help mitigate spam attacks against PyPI, new user registration " +"through ``pypi.python.org`` was *switched off* on **February 20, 2018**. New " +"user registrations at ``pypi.org`` are open." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:125 +msgid "Browsing packages" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:127 +msgid "" +"While ``pypi.python.org`` is may still be used in links from other PyPA " +"documentation, etc, the default interface for browsing packages is " +"``pypi.org``. The domain pypi.python.org now redirects to pypi.org, and may " +"be disabled sometime in the future." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:134 +msgid "Downloading packages" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:136 +msgid "``pypi.org`` is the default host for downloading packages." +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:139 +msgid "Managing published packages and releases" +msgstr "" + +#: ../source/guides/migrating-to-pypi-org.rst:141 +msgid "" +"``pypi.org`` provides a fully functional interface for logged in users to " +"manage their published packages and releases." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:6 +msgid "How to modernize a ``setup.py`` based project?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:10 +msgid "Should ``pyproject.toml`` be added?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:12 +msgid "" +"A :term:`pyproject.toml` file is strongly recommended. The presence of " +"a :file:`pyproject.toml` file itself does not bring much. [#]_ What is " +"actually strongly recommended is the ``[build-system]`` table " +"in :file:`pyproject.toml`." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:16 +msgid "" +"Note that it has influence on the build isolation feature of pip, see below." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:23 +msgid "" +"No, :file:`setup.py` can exist in a modern :ref:`setuptools` based project. " +"The :term:`setup.py` file is a valid configuration file for setuptools that " +"happens to be written in Python. However, the following commands are " +"deprecated and **MUST NOT** be run anymore, and their recommended " +"replacement commands should be used instead:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:36 +msgid "``python -m build``" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:42 +#: ../source/guides/modernize-setup-py-project.rst:66 +#: ../source/guides/modernize-setup-py-project.rst:111 +#: ../source/guides/modernize-setup-py-project.rst:129 +#: ../source/guides/modernize-setup-py-project.rst:221 +msgid "For more details:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:44 +msgid ":ref:`setup-py-deprecated`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:48 +msgid "Where to start?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:50 +msgid "" +"The :term:`project` must contain a :file:`pyproject.toml` file at the root " +"of its source tree that contains a ``[build-system]`` table like so:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:60 +msgid "" +"This is the standardized method of letting :term:`build frontends ` know that :ref:`setuptools` is the :term:`build backend ` for this project." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:63 +msgid "" +"Note that the presence of a :file:`pyproject.toml` file (even if empty) " +"triggers :ref:`pip` to change its default behavior to use *build isolation*." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:68 +msgid ":ref:`distributing-packages`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:69 +#: ../source/guides/modernize-setup-py-project.rst:113 +msgid ":ref:`pyproject-build-system-table`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:70 +#: ../source/guides/modernize-setup-py-project.rst:131 +#: ../source/guides/modernize-setup-py-project.rst:247 +msgid ":doc:`pip:reference/build-system`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:74 +msgid "How to handle additional build-time dependencies?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:76 +msgid "" +"On top of setuptools itself, if :file:`setup.py` depends on other third-" +"party libraries (outside of Python's standard library), those must be listed " +"in the ``requires`` list of the ``[build-system]`` table, so that the build " +"frontend knows to install them when building the :term:`distributions " +"`." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:82 +#: ../source/guides/modernize-setup-py-project.rst:139 +#: ../source/guides/modernize-setup-py-project.rst:174 +msgid "For example, a :file:`setup.py` file such as this:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:99 +msgid "" +"requires a :file:`pyproject.toml` file like this (:file:`setup.py` stays " +"unchanged):" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:117 +msgid "What is the build isolation feature?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:119 +msgid "" +"Build frontends typically create an ephemeral virtual environment where they " +"install only the build dependencies (and their dependencies) that are listed " +"under ``build-system.requires`` and trigger the build in that environment." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:124 +msgid "" +"For some projects this isolation is unwanted and it can be deactivated as " +"follows:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:126 +msgid "``python -m build --no-isolation``" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:127 +msgid "``python -m pip install --no-build-isolation``" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:135 +msgid "How to handle packaging metadata?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:137 +msgid "" +"All static metadata can optionally be moved to a ``[project]`` table " +"in :file:`pyproject.toml`." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:151 +msgid "can be entirely replaced by a :file:`pyproject.toml` file like this:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:164 +msgid "" +"Read :ref:`pyproject-project-table` for the full specification of the " +"content allowed in the ``[project]`` table." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:169 +msgid "How to handle dynamic metadata?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:171 +msgid "" +"If some packaging metadata fields are not static they need to be listed as " +"``dynamic`` in this ``[project]`` table." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:191 +msgid "can be modernized as follows:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:223 +msgid ":ref:`declaring-project-metadata-dynamic`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:227 +msgid "What if something that can not be changed expects a ``setup.py`` file?" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:229 +msgid "" +"For example, a process exists that can not be changed easily and it needs to " +"execute a command such as ``python setup.py --name``." +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:232 +msgid "" +"It is perfectly fine to leave a :file:`setup.py` file in the project source " +"tree even after all its content has been moved to :file:`pyproject.toml`. " +"This file can be as minimalistic as this:" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:246 +msgid ":ref:`pyproject-toml-spec`" +msgstr "" + +#: ../source/guides/modernize-setup-py-project.rst:248 +msgid ":doc:`setuptools:build_meta`" +msgstr "" + +#: ../source/guides/multi-version-installs.rst:6 +msgid "Multi-version installs" +msgstr "" + +#: ../source/guides/multi-version-installs.rst:11 +msgid "" +"easy_install allows simultaneous installation of different versions of the " +"same project into a single environment shared by multiple programs which " +"must ``require`` the appropriate version of the project at run time (using " +"``pkg_resources``)." +msgstr "" + +#: ../source/guides/multi-version-installs.rst:16 +msgid "" +"For many use cases, virtual environments address this need without the " +"complication of the ``require`` directive. However, the advantage of " +"parallel installations within the same environment is that it works for an " +"environment shared by multiple applications, such as the system Python in a " +"Linux distribution." +msgstr "" + +#: ../source/guides/multi-version-installs.rst:22 +msgid "" +"The major limitation of ``pkg_resources`` based parallel installation is " +"that as soon as you import ``pkg_resources`` it locks in the *default* " +"version of everything which is already available on sys.path. This can cause " +"problems, since ``setuptools`` created command line scripts use " +"``pkg_resources`` to find the entry point to execute. This means that, for " +"example, you can't use ``require`` tests invoked through ``nose`` or a WSGI " +"application invoked through ``gunicorn`` if your application needs a non-" +"default version of anything that is available on the standard ``sys.path`` - " +"the script wrapper for the main application will lock in the version that is " +"available by default, so the subsequent ``require`` call in your own code " +"fails with a spurious version conflict." +msgstr "" + +#: ../source/guides/multi-version-installs.rst:34 +msgid "" +"This can be worked around by setting all dependencies in " +"``__main__.__requires__`` before importing ``pkg_resources`` for the first " +"time, but that approach does mean that standard command line invocations of " +"the affected tools can't be used - it's necessary to write a custom wrapper " +"script or use ``python3 -c ''`` to invoke the application's main " +"entry point directly." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:5 +msgid "Packaging binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:8 +msgid "2013-12-08" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:10 +msgid "" +"One of the features of the CPython reference interpreter is that, in " +"addition to allowing the execution of Python code, it also exposes a rich C " +"API for use by other software. One of the most common uses of this C API is " +"to create importable C extensions that allow things which aren't always easy " +"to achieve in pure Python code." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:18 +msgid "An overview of binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:21 +msgid "Use cases" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:23 +msgid "" +"The typical use cases for binary extensions break down into just three " +"conventional categories:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:26 +msgid "" +"**accelerator modules**: these modules are completely self-contained, and " +"are created solely to run faster than the equivalent pure Python code runs " +"in CPython. Ideally, accelerator modules will always have a pure Python " +"equivalent to use as a fallback if the accelerated version isn't available " +"on a given system. The CPython standard library makes extensive use of " +"accelerator modules. *Example*: When importing ``datetime``, Python falls " +"back to the `datetime.py `_ module if the C implementation ( `_datetimemodule.c `_) is not " +"available." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:37 +msgid "" +"**wrapper modules**: these modules are created to expose existing C " +"interfaces to Python code. They may either expose the underlying C interface " +"directly, or else expose a more \"Pythonic\" API that makes use of Python " +"language features to make the API easier to use. The CPython standard " +"library makes extensive use of wrapper modules. *Example*: `functools.py " +"`_ is a Python " +"module wrapper for `_functoolsmodule.c `_." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:45 +msgid "" +"**low-level system access**: these modules are created to access lower level " +"features of the CPython runtime, the operating system, or the underlying " +"hardware. Through platform specific code, extension modules may achieve " +"things that aren't possible in pure Python code. A number of CPython " +"standard library modules are written in C in order to access interpreter " +"internals that aren't exposed at the language level. *Example*: ``sys``, " +"which comes from `sysmodule.c `_." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:54 +msgid "" +"One particularly notable feature of C extensions is that, when they don't " +"need to call back into the interpreter runtime, they can release CPython's " +"global interpreter lock around long-running operations (regardless of " +"whether those operations are CPU or IO bound)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:59 +msgid "" +"Not all extension modules will fit neatly into the above categories. The " +"extension modules included with NumPy, for example, span all three use cases " +"- they move inner loops to C for speed reasons, wrap external libraries " +"written in C, FORTRAN and other languages, and use low level system " +"interfaces for both CPython and the underlying operation system to support " +"concurrent execution of vectorised operations and to tightly control the " +"exact memory layout of created objects." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:69 +msgid "Disadvantages" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:71 +msgid "" +"The main disadvantage of using binary extensions is the fact that it makes " +"subsequent distribution of the software more difficult. One of the " +"advantages of using Python is that it is largely cross platform, and the " +"languages used to write extension modules (typically C or C++, but really " +"any language that can bind to the CPython C API) typically require that " +"custom binaries be created for different platforms." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:78 +msgid "This means that binary extensions:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:80 +msgid "" +"require that end users be able to either build them from source, or else " +"that someone publish pre-built binaries for common platforms" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:83 +msgid "" +"may not be compatible with different builds of the CPython reference " +"interpreter" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:86 +msgid "" +"often will not work correctly with alternative interpreters such as PyPy, " +"IronPython or Jython" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:89 +msgid "" +"if handcoded, make maintenance more difficult by requiring that maintainers " +"be familiar not only with Python, but also with the language used to create " +"the binary extension, as well as with the details of the CPython C API." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:94 +msgid "" +"if a pure Python fallback implementation is provided, make maintenance more " +"difficult by requiring that changes be implemented in two places, and " +"introducing additional complexity in the test suite to ensure both versions " +"are always executed." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:99 +msgid "" +"Another disadvantage of relying on binary extensions is that alternative " +"import mechanisms (such as the ability to import modules directly from " +"zipfiles) often won't work for extension modules (as the dynamic loading " +"mechanisms on most platforms can only load libraries from disk)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:106 +msgid "Alternatives to handcoded accelerator modules" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:108 +msgid "" +"When extension modules are just being used to make code run faster (after " +"profiling has identified the code where the speed increase is worth " +"additional maintenance effort), a number of other alternatives should also " +"be considered:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:113 +msgid "" +"look for existing optimised alternatives. The CPython standard library " +"includes a number of optimised data structures and algorithms (especially in " +"the builtins and the ``collections`` and ``itertools`` modules). The Python " +"Package Index also offers additional alternatives. Sometimes, the " +"appropriate choice of standard library or third party module can avoid the " +"need to create your own accelerator module." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:120 +msgid "" +"for long running applications, the JIT compiled `PyPy interpreter `__ may offer a suitable alternative to the standard CPython " +"runtime. The main barrier to adopting PyPy is typically reliance on other " +"binary extension modules - while PyPy does emulate the CPython C API, " +"modules that rely on that cause problems for the PyPy JIT, and the emulation " +"layer can often expose latent defects in extension modules that CPython " +"currently tolerates (frequently around reference counting errors - an object " +"having one live reference instead of two often won't break anything, but no " +"references instead of one is a major problem)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:130 +msgid "" +"`Cython `__ is a mature static compiler that can " +"compile most Python code to C extension modules. The initial compilation " +"provides some speed increases (by bypassing the CPython interpreter layer), " +"and Cython's optional static typing features can offer additional " +"opportunities for speed increases. Using Cython still carries the " +"`disadvantages`_ associated with using binary extensions, but has the " +"benefit of having a reduced barrier to entry for Python programmers " +"(relative to other languages like C or C++)." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:139 +msgid "" +"`Numba `__ is a newer tool, created by members of " +"the scientific Python community, that aims to leverage LLVM to allow " +"selective compilation of pieces of a Python application to native machine " +"code at runtime. It requires that LLVM be available on the system where the " +"code is running, but can provide significant speed increases, especially for " +"operations that are amenable to vectorisation." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:148 +msgid "Alternatives to handcoded wrapper modules" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:150 +msgid "" +"The C ABI (Application Binary Interface) is a common standard for sharing " +"functionality between multiple applications. One of the strengths of the " +"CPython C API (Application Programming Interface) is allowing Python users " +"to tap into that functionality. However, wrapping modules by hand is quite " +"tedious, so a number of other alternative approaches should be considered." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:156 +msgid "" +"The approaches described below don't simplify the distribution case at all, " +"but they *can* significantly reduce the maintenance burden of keeping " +"wrapper modules up to date." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:160 +msgid "" +"In addition to being useful for the creation of accelerator modules, `Cython " +"`__ is also widely used for creating wrapper modules " +"for C or C++ APIs. It involves wrapping the interfaces by hand, which gives " +"a wide range of freedom in designing and optimising the wrapper code, but " +"may not be a good choice for wrapping very large APIs quickly. See the `list " +"of third-party tools `_ for " +"automatic wrapping with Cython. It also supports performance-oriented Python " +"implementations that provide a CPython-like C-API, such as PyPy and Pyston." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:171 +msgid "" +":doc:`pybind11 ` is a pure C++11 library that provides a " +"clean C++ interface to the CPython (and PyPy) C API. It does not require a " +"pre-processing step; it is written entirely in templated C++. Helpers are " +"included for Setuptools or CMake builds. It was based on `Boost.Python " +"`__, " +"but doesn't require the Boost libraries or BJam." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:178 +msgid "" +":doc:`cffi ` is a project created by some of the PyPy developers " +"to make it straightforward for developers that already know both Python and " +"C to expose their C modules to Python applications. It also makes it " +"relatively straightforward to wrap a C module based on its header files, " +"even if you don't know C yourself." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:184 +msgid "" +"One of the key advantages of ``cffi`` is that it is compatible with the PyPy " +"JIT, allowing CFFI wrapper modules to participate fully in PyPy's tracing " +"JIT optimisations." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:188 +msgid "" +"`SWIG `__ is a wrapper interface generator that allows " +"a variety of programming languages, including Python, to interface with C " +"and C++ code." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:192 +msgid "" +"The standard library's ``ctypes`` module, while useful for getting access to " +"C level interfaces when header information isn't available, suffers from the " +"fact that it operates solely at the C ABI level, and thus has no automatic " +"consistency checking between the interface actually being exported by the " +"library and the one declared in the Python code. By contrast, the above " +"alternatives are all able to operate at the C *API* level, using C header " +"files to ensure consistency between the interface exported by the library " +"being wrapped and the one expected by the Python wrapper module. While " +"``cffi`` *can* operate directly at the C ABI level, it suffers from the same " +"interface inconsistency problems as ``ctypes`` when it is used that way." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:206 +msgid "Alternatives for low level system access" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:208 +msgid "" +"For applications that need low level system access (regardless of the " +"reason), a binary extension module often *is* the best way to go about it. " +"This is particularly true for low level access to the CPython runtime " +"itself, since some operations (like releasing the Global Interpreter Lock) " +"are simply invalid when the interpreter is running code, even if a module " +"like ``ctypes`` or ``cffi`` is used to obtain access to the relevant C API " +"interfaces." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:216 +msgid "" +"For cases where the extension module is manipulating the underlying " +"operating system or hardware (rather than the CPython runtime), it may " +"sometimes be better to just write an ordinary C library (or a library in " +"another systems programming language like C++ or Rust that can export a C " +"compatible ABI), and then use one of the wrapping techniques described above " +"to make the interface available as an importable Python module." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:225 +msgid "Implementing binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:227 +msgid "" +"The CPython :doc:`Extending and Embedding ` guide " +"includes an introduction to writing a :doc:`custom extension module in C " +"`." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:231 +msgid "" +"FIXME: Elaborate that all this is one of the reasons why you probably " +"*don't* want to handcode your extension modules :)" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:236 +msgid "Extension module lifecycle" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:238 +#: ../source/guides/packaging-binary-extensions.rst:244 +#: ../source/guides/packaging-binary-extensions.rst:250 +#: ../source/guides/packaging-binary-extensions.rst:256 +#: ../source/guides/packaging-binary-extensions.rst:376 +msgid "FIXME: This section needs to be fleshed out." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:242 +msgid "Implications of shared static state and subinterpreters" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:248 +msgid "Implications of the GIL" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:254 +msgid "Memory allocation APIs" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:262 +msgid "ABI Compatibility" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:264 +msgid "" +"The CPython C API does not guarantee ABI stability between minor releases " +"(3.2, 3.3, 3.4, etc.). This means that, typically, if you build an extension " +"module against one version of Python, it is only guaranteed to work with the " +"same minor version of Python and not with any other minor versions." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:270 +msgid "" +"Python 3.2 introduced the Limited API, with is a well-defined subset of " +"Python's C API. The symbols needed for the Limited API form the \"Stable " +"ABI\" which is guaranteed to be compatible across all Python 3.x versions. " +"Wheels containing extensions built against the stable ABI use the ``abi3`` " +"ABI tag, to reflect that they're compatible with all Python 3.x versions." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:277 +msgid "" +"CPython's :doc:`C API stability` page provides detailed " +"information about the API / ABI stability guarantees, how to use the Limited " +"API and the exact contents of the \"Limited API\"." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:283 +msgid "Building binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:285 +msgid "FIXME: Cover the build-backends available for building extensions." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:288 +msgid "Building extensions for multiple platforms" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:290 +msgid "" +"If you plan to distribute your extension, you should provide :term:`wheels " +"` for all the platforms you intend to support. These are usually " +"built on continuous integration (CI) systems. There are tools to help you " +"build highly redistributable binaries from CI; these " +"include :ref:`cibuildwheel` and :ref:`multibuild`." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:296 +msgid "" +"For most extensions, you will need to build wheels for all the platforms you " +"intend to support. This means that the number of wheels you need to build is " +"the product of::" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:302 +msgid "" +"Using CPython's :ref:`Stable ABI ` can help " +"significantly reduce the number of wheels you need to provide, since a " +"single wheel on a platform can be used with all Python minor versions; " +"eliminating one dimension of the matrix. It also removes the need to " +"generate new wheels for each new minor version of Python." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:309 +msgid "Binary extensions for Windows" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:311 +msgid "" +"Before it is possible to build a binary extension, it is necessary to ensure " +"that you have a suitable compiler available. On Windows, Visual C is used to " +"build the official CPython interpreter, and should be used to build " +"compatible binary extensions. To set up a build environment for binary " +"extensions, install `Visual Studio Community Edition `__ - any recent version is fine." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:318 +msgid "" +"One caveat: if you use Visual Studio 2019 or later, your extension will " +"depend on an \"extra\" file, ``VCRUNTIME140_1.dll``, in addition to the " +"``VCRUNTIME140.dll`` that all previous versions back to 2015 depend on. This " +"will add an extra requirement to using your extension on versions of CPython " +"that do not include this extra file. To avoid this, you can add the compile-" +"time argument ``/d2FH4-``. Recent versions of Python may include this file." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:326 +msgid "" +"Building for Python prior to 3.5 is discouraged, because older versions of " +"Visual Studio are no longer available from Microsoft. If you do need to " +"build for older versions, you can set ``DISTUTILS_USE_SDK=1`` and " +"``MSSdk=1`` to force a the currently activated version of MSVC to be found, " +"and you should exercise care when designing your extension not to malloc/" +"free memory across different libraries, avoid relying on changed data " +"structures, and so on. Tools for generating extension modules usually avoid " +"these things for you." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:337 +msgid "Binary extensions for Linux" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:339 +msgid "" +"Linux binaries must use a sufficiently old glibc to be compatible with older " +"distributions. The `manylinux `_ Docker " +"images provide a build environment with a glibc old enough to support most " +"current Linux distributions on common architectures." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:345 +msgid "Binary extensions for macOS" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:347 +msgid "" +"Binary compatibility on macOS is determined by the target minimum deployment " +"system, e.g. *10.9*, which is often specified with the " +"``MACOSX_DEPLOYMENT_TARGET`` environmental variable when building binaries " +"on macOS. When building with setuptools / distutils, the deployment target " +"is specified with the flag ``--plat-name``, e.g. ``macosx-10.9-x86_64``. For " +"common deployment targets for macOS Python distributions, see the `MacPython " +"Spinning Wheels wiki `_." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:357 +msgid "Publishing binary extensions" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:359 +msgid "" +"Publishing binary extensions through PyPI uses the same upload mechanisms as " +"publishing pure Python packages. You build a wheel file for your extension " +"using the build-backend and upload it to PyPI using :doc:`twine " +"`." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:365 +msgid "Avoid binary-only releases" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:367 +msgid "" +"It is strongly recommended that you publish your binary extensions as well " +"as the source code that was used to build them. This allows users to build " +"the extension from source if they need to. Notably, this is required for " +"certain Linux distributions that build from source within their own build " +"systems for the distro package repositories." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:374 +msgid "Weak linking" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:379 +msgid "Additional resources" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:381 +msgid "" +"Cross-platform development and distribution of extension modules is a " +"complex topic, so this guide focuses primarily on providing pointers to " +"various tools that automate dealing with the underlying technical " +"challenges. The additional resources in this section are instead intended " +"for developers looking to understand more about the underlying binary " +"interfaces that those systems rely on at runtime." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:388 +msgid "Cross-platform wheel generation with scikit-build" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:390 +msgid "" +"The `scikit-build `_ package " +"helps abstract cross-platform build operations and provides additional " +"capabilities when creating binary extension packages. Additional " +"documentation is also available on the `C runtime, compiler, and build " +"system generator `_ for Python binary extension modules." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:398 +msgid "Introduction to C/C++ extension modules" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:400 +msgid "" +"For a more in depth explanation of how extension modules are used by CPython " +"on a Debian system, see the following articles:" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:403 +msgid "" +"`What are (c)python extension modules? `_" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:404 +msgid "`Releasing the gil `_" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:405 +msgid "" +"`Writing cpython extension modules using C++ `_" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:408 +msgid "Additional considerations for binary wheels" +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:410 +msgid "" +"The `pypackaging-native `_ website " +"has additional coverage of packaging Python packages with native code. It " +"aims to provide an overview of the most important packaging issues for such " +"projects, with in-depth explanations and references." +msgstr "" + +#: ../source/guides/packaging-binary-extensions.rst:415 +msgid "" +"Examples of topics covered are non-Python compiled dependencies (\"native " +"dependencies\"), the importance of the ABI (Application Binary Interface) of " +"native code, dependency on SIMD code and cross compilation." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:5 +msgid "Packaging namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:7 +msgid "" +"Namespace packages allow you to split the sub-packages and modules within a " +"single :term:`package ` across multiple, " +"separate :term:`distribution packages ` (referred to " +"as **distributions** in this document to avoid ambiguity). For example, if " +"you have the following package structure:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:26 +msgid "And you use this package in your code like so::" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:31 +msgid "Then you can break these sub-packages into two separate distributions:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:50 +msgid "Each sub-package can now be separately installed, used, and versioned." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:52 +msgid "" +"Namespace packages can be useful for a large collection of loosely-related " +"packages (such as a large corpus of client libraries for multiple products " +"from a single company). However, namespace packages come with several " +"caveats and are not appropriate in all cases. A simple alternative is to use " +"a prefix on all of your distributions such as ``import " +"mynamespace_subpackage_a`` (you could even use ``import " +"mynamespace_subpackage_a as subpackage_a`` to keep the import object short)." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:62 +msgid "Creating a namespace package" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:64 +msgid "" +"There are currently two different approaches to creating namespace packages, " +"from which the latter is discouraged:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:67 +msgid "" +"Use `native namespace packages`_. This type of namespace package is defined " +"in :pep:`420` and is available in Python 3.3 and later. This is recommended " +"if packages in your namespace only ever need to support Python 3 and " +"installation via ``pip``." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:71 +msgid "" +"Use `legacy namespace packages`_. This comprises `pkgutil-style namespace " +"packages`_ and `pkg_resources-style namespace packages`_." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:75 +msgid "Native namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:77 +msgid "" +"Python 3.3 added **implicit** namespace packages from :pep:`420`. All that " +"is required to create a native namespace package is that you just " +"omit :file:`__init__.py` from the namespace package directory. An example " +"file structure (following :ref:`src-layout `):" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:94 +msgid "" +"It is extremely important that every distribution that uses the namespace " +"package omits the :file:`__init__.py` or uses a pkgutil-" +"style :file:`__init__.py`. If any distribution does not, it will cause the " +"namespace logic to fail and the other sub-packages will not be importable." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:99 +msgid "" +"The ``src-layout`` directory structure allows automatic discovery of " +"packages by most :term:`build backends `. See :ref:`src-" +"layout-vs-flat-layout` for more information. If however you want to manage " +"exclusions or inclusions of packages yourself, this is possible to be " +"configured in the top-level :file:`pyproject.toml`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:117 +msgid "The same can be accomplished with a :file:`setup.cfg`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:129 +msgid "Or :file:`setup.py`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:142 +msgid "" +":ref:`setuptools` will search the directory structure for implicit namespace " +"packages by default." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:145 +msgid "" +"A complete working example of two native namespace packages can be found in " +"the `native namespace package example project`_." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:151 +msgid "" +"Because native and pkgutil-style namespace packages are largely compatible, " +"you can use native namespace packages in the distributions that only support " +"Python 3 and pkgutil-style namespace packages in the distributions that need " +"to support Python 2 and 3." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:158 +msgid "Legacy namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:160 +msgid "" +"These two methods, that were used to create namespace packages prior " +"to :pep:`420`, are now considered to be obsolete and should not be used " +"unless you need compatibility with packages already using one of these " +"methods." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:164 +msgid "" +"To migrate an existing package, all packages sharing the namespace must be " +"migrated simultaneously." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:166 +msgid "" +"While native namespace packages and pkgutil-style namespace packages are " +"largely compatible, pkg_resources-style namespace packages are not " +"compatible with the other methods. It's inadvisable to use different methods " +"in different distributions that provide packages to the same namespace." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:173 +msgid "pkgutil-style namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:175 +msgid "" +"Python 2.3 introduced the :doc:`pkgutil ` module and " +"the :py:func:`python:pkgutil.extend_path` function. This can be used to " +"declare namespace packages that need to be compatible with both Python 2.3+ " +"and Python 3. This was the recommended approach for the highest level of " +"compatibility." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:180 +msgid "" +"To create a pkgutil-style namespace package, you need to provide " +"an :file:`__init__.py` file for the namespace package:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:194 +#: ../source/guides/packaging-namespace-packages.rst:249 +msgid "" +"The :file:`__init__.py` file for the namespace package needs to contain the " +"following:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:201 +#: ../source/guides/packaging-namespace-packages.rst:256 +msgid "" +"**Every** distribution that uses the namespace package must include such " +"an :file:`__init__.py`. If any distribution does not, it will cause the " +"namespace logic to fail and the other sub-packages will not be importable. " +"Any additional code in :file:`__init__.py` will be inaccessible." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:206 +msgid "" +"A complete working example of two pkgutil-style namespace packages can be " +"found in the `pkgutil namespace example project`_." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:216 +msgid "pkg_resources-style namespace packages" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:220 +msgid "" +"The information in this section is obsolete and is no longer functional (as " +"of Setuptools 82.0.0). It is only retained for historical reference." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:223 +msgid "" +"``pkg_resources`` has been deprecated and was fully removed in Setuptools " +"82.0.0." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:225 +msgid "" +":doc:`Setuptools ` previously provided the " +"``pkg_resources.declare_namespace`` function and the ``namespace_packages`` " +"argument to :func:`~setuptools.setup`. Together these could be used to " +"declare namespace packages. While this approach is no longer supported, it " +"may still be encountered in environments using older ``setuptools`` " +"versions. If you are creating a new distribution within an existing " +"namespace package that uses this method then it's recommended to continue " +"using this as the different methods are not cross-compatible and it's not " +"advisable to try to migrate an existing package." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:235 +msgid "" +"To create a pkg_resources-style namespace package, you need to provide " +"an :file:`__init__.py` file for the namespace package:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:261 +msgid "" +"Some older recommendations advise the following in the namespace " +"package :file:`__init__.py`:" +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:271 +msgid "" +"The idea behind this was that in the rare case that setuptools isn't " +"available packages would fall-back to the pkgutil-style packages. This isn't " +"advisable because pkgutil and pkg_resources-style namespace packages are not " +"cross-compatible. If the presence of setuptools is a concern then the " +"package should just explicitly depend on setuptools via ``install_requires``." +msgstr "" + +#: ../source/guides/packaging-namespace-packages.rst:278 +msgid "" +"Finally, every distribution must provide the ``namespace_packages`` argument " +"to :func:`~setuptools.setup` in :file:`setup.py`. For example:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:5 +msgid "" +"Publishing package distribution releases using GitHub Actions CI/CD workflows" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:7 +msgid "" +"`GitHub Actions CI/CD`_ allows you to run a series of commands whenever an " +"event occurs on the GitHub platform. One popular choice is having a workflow " +"that's triggered by a ``push`` event. This guide shows you how to publish a " +"Python distribution whenever a tagged commit is pushed. It will use the " +"`pypa/gh-action-pypi-publish GitHub Action`_ for publishing. It also uses " +"GitHub's `upload-artifact`_ and `download-artifact`_ actions for temporarily " +"storing and downloading the source packages." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:19 +msgid "" +"This guide *assumes* that you already have a project that you know how to " +"build distributions for and *it lives on GitHub*. This guide also avoids " +"details of building platform specific projects. If you have binary " +"components, check out :ref:`cibuildwheel`'s GitHub Action examples." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:25 +msgid "Configuring Trusted Publishing" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:27 +msgid "" +"This guide relies on PyPI's `Trusted Publishing`_ implementation to connect " +"to `GitHub Actions CI/CD`_. This is recommended for security reasons, since " +"the generated tokens are created for each of your projects individually and " +"expire automatically. Otherwise, you'll need to generate an `API token`_ for " +"both PyPI and TestPyPI. In case of publishing to third-party indexes " +"like :doc:`devpi `, you may need to provide a username/password " +"combination." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:35 +msgid "" +"Since this guide will demonstrate uploading to both PyPI and TestPyPI, we'll " +"need two trusted publishers configured. The following steps will lead you " +"through creating the \"pending\" publishers for your new :term:`PyPI project " +"`. However it is also possible to add `Trusted Publishing`_ to any " +"pre-existing project, if you are its owner." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:44 +msgid "" +"If you followed earlier versions of this guide, you have created the secrets " +"``PYPI_API_TOKEN`` and ``TEST_PYPI_API_TOKEN`` for direct PyPI and TestPyPI " +"access. These are obsolete now and you should remove them from your GitHub " +"repository and revoke them in your PyPI and TestPyPI account settings in " +"case you are replacing your old setup with the new one." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:51 +msgid "Let's begin! 🚀" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:53 +msgid "Go to https://pypi.org/manage/account/publishing/." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:54 +msgid "" +"Fill in the name you wish to publish your new :term:`PyPI project ` " +"under (the ``name`` value in your ``setup.cfg`` or ``pyproject.toml``), the " +"GitHub repository owner's name (org or user), and repository name, and the " +"name of the release workflow file under the ``.github/`` folder, " +"see :ref:`workflow-definition`. Finally, add the name of the GitHub " +"Environment (``pypi``) we're going set up under your repository. Register " +"the trusted publisher." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:63 +msgid "" +"Now, go to https://test.pypi.org/manage/account/publishing/ and repeat the " +"second step, but this time, enter ``testpypi`` as the name of the GitHub " +"Environment." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:66 +msgid "" +"Your \"pending\" publishers are now ready for their first use and will " +"create your projects automatically once you use them for the first time." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:72 +msgid "" +"If you don't have a TestPyPI account, you'll need to create it. It's not the " +"same as a regular PyPI account." +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." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:85 +msgid "Creating a workflow definition" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:87 +msgid "" +"GitHub CI/CD workflows are declared in YAML files stored in the ``.github/" +"workflows/`` directory of your repository." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:90 +msgid "Let's create a ``.github/workflows/publish-to-pypi.yml`` file." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:93 +msgid "" +"Start it with a meaningful name and define the event that should make GitHub " +"run this workflow:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:101 +msgid "Checking out the project and building distributions" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:103 +msgid "" +"We will have to define two jobs to publish to PyPI and TestPyPI " +"respectively, and an additional job to build the distribution packages." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:107 +msgid "" +"First, we'll define the job for building the dist packages of your project " +"and storing them for later use:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 +msgid "" +"This will download your repository into the CI runner and then install and " +"activate the newest available Python 3 release." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 +msgid "" +"And now we can build the dists from source and store them. In this example, " +"we'll use the ``build`` package. So add this to the steps list:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 +msgid "Defining a workflow job environment" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 +msgid "" +"Now, let's add initial setup for our job that will publish to PyPI. It's a " +"process that will execute commands that we'll define later. In this guide, " +"we'll use the latest stable Ubuntu LTS version provided by GitHub Actions. " +"This also defines a GitHub Environment for the job to run in its context and " +"a URL to be displayed in GitHub's UI nicely. Additionally, it allows " +"acquiring an OpenID Connect token that the ``pypi-publish`` actions needs to " +"implement secretless Trusted Publishing to PyPI." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 +msgid "" +"This will also ensure that the PyPI publishing workflow is only triggered if " +"the current commit is tagged." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 +msgid "Publishing the distribution to PyPI" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +msgid "Finally, add the following steps at the end:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +msgid "" +"This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " +"stored distribution package has been downloaded by the `download-artifact`_ " +"action, it uploads the contents of the ``dist/`` folder into PyPI " +"unconditionally." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 +msgid "" +"Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " +"and uploads :pep:`740`-compatible attestations for each distribution by " +"default. No additional manual signing steps are required." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 +msgid "Separate workflow for publishing to TestPyPI" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 +msgid "" +"Now, repeat these steps and create another job for publishing to the " +"TestPyPI package index under the ``jobs`` section:" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 +msgid "" +"Requiring manual approvals in the ``testpypi`` GitHub Environment is " +"typically unnecessary as it's designed to run on each commit to the main " +"branch and is often used to indicate a healthy release publishing pipeline." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 +msgid "The whole CI/CD workflow" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 +msgid "" +"This paragraph showcases the whole workflow after following the above guide." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 +msgid "That's all, folks!" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 +msgid "" +"Now, whenever you push a tagged commit to your Git repository remote on " +"GitHub, this workflow will publish it to PyPI. And it'll publish any push to " +"TestPyPI which is useful for providing test builds to your alpha users as " +"well as making sure that your release pipeline remains healthy!" +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 +msgid "" +"If your repository has frequent commit activity and every push is uploaded " +"to TestPyPI as described, the project might exceed the `PyPI project size " +"limit `_. The limit could be " +"increased, but a better solution may constitute to use a PyPI-compatible " +"server like :ref:`pypiserver` in the CI for testing purposes." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 +msgid "" +"It is recommended to keep the integrated GitHub Actions at their latest " +"versions, updating them frequently." +msgstr "" + +#: ../source/guides/section-build-and-publish.rst:3 +msgid "Building and Publishing" +msgstr "" + +#: ../source/guides/section-hosting.rst:3 +msgid "Hosting" +msgstr "" + +#: ../source/guides/section-install.rst:3 +#: ../source/specifications/pylock-toml.rst:744 +msgid "Installation" +msgstr "" + +#: ../source/guides/single-sourcing-package-version.rst:-1 +msgid "0; url=../../discussions/single-source-version/" +msgstr "" + +#: ../source/guides/single-sourcing-package-version.rst:6 +msgid "Redirecting stale single-source package version link..." +msgstr "" + +#: ../source/guides/single-sourcing-package-version.rst:8 +msgid "" +"If the page doesn't automatically refresh, see :ref:`single-source-version`." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:7 +msgid "Supporting multiple Python versions" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:10 +msgid "2014-12-24" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:36 +msgid "" +"In addition to the work required to create a Python package, it is often " +"necessary that the package must be made available on different versions of " +"Python. Different Python versions may contain different (or renamed) " +"standard library packages, and the changes between Python versions 2.x and " +"3.x include changes in the language syntax." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:42 +msgid "" +"Performed manually, all the testing required to ensure that the package " +"works correctly on all the target Python versions (and OSs!) could be very " +"time-consuming. Fortunately, several tools are available for dealing with " +"this, and these will briefly be discussed here." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:48 +msgid "Automated testing and continuous integration" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:50 +msgid "" +"Several hosted services for automated testing are available. These services " +"will typically monitor your source code repository (e.g. at `GitHub `_ or `Bitbucket `_) and run your " +"project's test suite every time a new commit is made." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:55 +msgid "" +"These services also offer facilities to run your project's test suite on " +"*multiple versions of Python*, giving rapid feedback about whether the code " +"will work, without the developer having to perform such tests themselves." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:59 +msgid "" +"Wikipedia has an extensive `comparison `_ of many continuous-" +"integration systems. There are two hosted services which when used in " +"conjunction provide automated testing across Linux, Mac and Windows:" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:65 +msgid "" +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:67 +msgid "" +"`Appveyor `_ provides a Windows environment " +"(Windows Server 2012)." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:78 +msgid "" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" +"formatted file as specification for the instructions for testing. If any " +"tests fail, the output log for that specific configuration can be inspected." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:83 +msgid "" +"For Python projects that are intended to be deployed on both Python 2 and 3 " +"with a single-source strategy, there are a number of options." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:87 +msgid "Tools for single-source Python packages" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:89 +msgid "" +"`six `_ is a tool developed by Benjamin " +"Peterson for wrapping over the differences between Python 2 and Python 3. " +"The six_ package has enjoyed widespread use and may be regarded as a " +"reliable way to write a single-source Python module that can be use in both " +"Python 2 and 3. The six_ module can be used from as early as Python 2.5. A " +"tool called `modernize `_, developed by " +"Armin Ronacher, can be used to automatically apply the code modifications " +"provided by six_." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:98 +msgid "" +"Similar to six_, `python-future `_ " +"is a package that provides a compatibility layer between Python 2 and Python " +"3 source code; however, unlike six_, this package aims to provide " +"interoperability between Python 2 and Python 3 with a language syntax that " +"matches one of the two Python versions: one may use" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:105 +msgid "a Python 2 (by syntax) module in a Python 3 project." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:106 +msgid "a Python 3 (by syntax) module in a *Python 2* project." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:108 +msgid "" +"Because of the bi-directionality, python-future_ offers a pathway to " +"converting a Python 2 package to Python 3 syntax module-by-module. However, " +"in contrast to six_, python-future_ is supported only from Python 2.6. " +"Similar to modernize_ for six_, python-future_ comes with two scripts called " +"``futurize`` and ``pasteurize`` that can be applied to either a Python 2 " +"module or a Python 3 module respectively." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:115 +msgid "" +"Use of six_ or python-future_ adds an additional runtime dependency to your " +"package: with python-future_, the ``futurize`` script can be called with the " +"``--stage1`` option to apply only the changes that Python 2.6+ already " +"provides for forward-compatibility to Python 3. Any remaining compatibility " +"problems would require manual changes." +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:122 +msgid "What's in which Python?" +msgstr "" + +#: ../source/guides/supporting-multiple-python-versions.rst:124 +msgid "" +"Ned Batchelder provides a list of changes in each Python release for `Python " +"2 `__, " +"`Python 3.0-3.3 `__ and `Python 3.4-3.6 `__. These " +"lists may be used to check whether any changes between Python versions may " +"affect your package." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:5 +msgid "Supporting Windows using Appveyor" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:8 +msgid "2015-12-03" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:10 +msgid "" +"This section covers how to use the free `Appveyor`_ continuous integration " +"service to provide Windows support for your project. This includes testing " +"the code on Windows, and building Windows-targeted binaries for projects " +"that use C extensions." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:19 +msgid "" +"Many projects are developed on Unix by default, and providing Windows " +"support can be a challenge, because setting up a suitable Windows test " +"environment is non-trivial, and may require buying software licenses." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:23 +msgid "" +"Windows users typically do not have access to a C compiler, and therefore " +"are reliant on projects that use C extensions distributing binary wheels on " +"PyPI in order for the distribution to be installable via ``python -m pip " +"install ``. By using Appveyor as a build service (even if not using it " +"for testing) it is possible for projects without a dedicated Windows " +"environment to provide Windows-targeted binaries." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:31 +msgid "Setting up" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:33 +msgid "" +"In order to use Appveyor to build Windows wheels for your project, you must " +"have an account on the service. Instructions on setting up an account are " +"given in `the Appveyor documentation `__. " +"The free tier of account is perfectly adequate for open source projects." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:38 +msgid "" +"Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " +"your project is hosted on one of those two services, setting up Appveyor " +"integration is straightforward." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:42 +msgid "" +"Once you have set up your Appveyor account and added your project, Appveyor " +"will automatically build your project each time a commit occurs." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:46 +msgid "Adding Appveyor support to your project" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:48 +msgid "" +"In order to define how Appveyor should build your project, you need to add " +"an :file:`appveyor.yml` file to your project. The full details of what can " +"be included in the file are covered in the Appveyor documentation. This " +"guide will provide the details necessary to set up wheel builds." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:53 +msgid "" +"Appveyor includes by default all of the compiler toolchains needed to build " +"extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " +"3.4, the tools work out of the box. But for 64-bit versions of Python 3.3 " +"and 3.4, there is a small amount of additional configuration needed to let " +"distutils know where to find the 64-bit compilers. (From 3.5 onwards, the " +"version of Visual Studio used includes 64-bit compilers with no additional " +"setup)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:61 +msgid "appveyor.yml" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:67 +msgid "" +"This file can be downloaded from `here `__." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:69 +msgid "" +"The :file:`appveyor.yml` file must be located in the root directory of your " +"project. It is in ``YAML`` format, and consists of a number of sections." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:72 +msgid "" +"The ``environment`` section is the key to defining the Python versions for " +"which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " +"3.4 and 3.5 installed, in both 32-bit and 64-bit builds. The example file " +"builds for all of these environments except Python 2.6. Installing for " +"Python 2.6 is more complex, as it does not come with pip included. We don't " +"support 2.6 in this document (as Windows users still using Python 2 are " +"generally able to move to Python 2.7 without too much difficulty)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:80 +msgid "" +"The ``install`` section uses pip to install any additional software that the " +"project may require. The only requirement for building wheels is the " +"``wheel`` project, but projects may wish to customise this code in certain " +"circumstances (for example, to install additional build packages such as " +"``Cython``, or test tools such as ``tox``)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:86 +msgid "" +"The ``build`` section simply switches off builds - there is no build step " +"needed for Python, unlike languages like ``C#``." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:89 +msgid "" +"The main sections that will need to be tailored to your project are " +"``test_script`` and ``after_test``." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:92 +msgid "" +"The ``test_script`` section is where you will run your project's tests. The " +"supplied file runs your test suite using ``setup.py test``. If you are only " +"interested in building wheels, and not in running your tests on Windows, you " +"can replace this section with a dummy command such as ``echo Skipped " +"Tests``. You may wish to use another test tool, such as ``nose`` " +"or :file:`py.test`. Or you may wish to use a test driver like ``tox`` - " +"however if you are using ``tox`` there are some additional configuration " +"changes you will need to consider, which are described below." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:101 +msgid "" +"The ``after_test`` runs once your tests have completed, and so is where the " +"wheels should be built. Assuming your project uses the recommended tools " +"(specifically, ``setuptools``) then the ``setup.py bdist_wheel`` command " +"will build your wheels." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:106 +msgid "" +"Note that wheels will only be built if your tests succeed. If you expect " +"your tests to fail on Windows, you can skip them as described above." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:111 +msgid "Support script" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:113 +msgid "" +"The :file:`appveyor.yml` file relies on a single support script, which sets " +"up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " +"and 3.4. For projects which do not need a compiler, or which don't support " +"3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:118 +msgid "" +"`build.cmd `__ is a Windows batch " +"script that runs a single command in an environment with the appropriate " +"compiler for the selected Python version. All you need to do is to set the " +"single environment variable ``DISTUTILS_USE_SDK`` to a value of ``1`` and " +"the script does the rest. It sets up the SDK needed for 64-bit builds of " +"Python 3.3 or 3.4, so don't set the environment variable for any other " +"builds." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:125 +msgid "" +"You can simply download the batch file and include it in your project " +"unchanged." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:129 +msgid "Access to the built wheels" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:131 +msgid "" +"When your build completes, the built wheels will be available from the " +"Appveyor control panel for your project. They can be found by going to the " +"build status page for each build in turn. At the top of the build output " +"there is a series of links, one of which is \"Artifacts\". That page will " +"include a list of links to the wheels for that Python version / " +"architecture. You can download those wheels and upload them to PyPI as part " +"of your release process." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:142 +msgid "Testing with tox" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:144 +msgid "" +"Many projects use the :doc:`Tox ` tool to run their tests. It " +"ensures that tests are run in an isolated environment using the exact files " +"that will be distributed by the project." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:148 +msgid "" +"In order to use ``tox`` on Appveyor there are a couple of additional " +"considerations (in actual fact, these issues are not specific to Appveyor, " +"and may well affect other CI systems)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:152 +msgid "" +"By default, ``tox`` only passes a chosen subset of environment variables to " +"the test processes. Because ``distutils`` uses environment variables to " +"control the compiler, this \"test isolation\" feature will cause the tests " +"to use the wrong compiler by default." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:157 +msgid "" +"To force ``tox`` to pass the necessary environment variables to the " +"subprocess, you need to set the ``tox`` configuration option ``passenv`` to " +"list the additional environment variables to be passed to the subprocess. " +"For the SDK compilers, you need" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:162 +msgid "``DISTUTILS_USE_SDK``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:163 +msgid "``MSSdk``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:164 +msgid "``INCLUDE``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:165 +msgid "``LIB``" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:167 +msgid "" +"The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " +"to avoid adding Windows-specific settings to your general project files, it " +"can be set by setting the ``TOX_TESTENV_PASSENV`` environment variable. The " +"supplied :file:`build.cmd` script does this by default whenever " +"``DISTUTILS_USE_SDK`` is set." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:173 +msgid "" +"When used interactively, ``tox`` allows you to run your tests against " +"multiple environments (often, this means multiple Python versions). This " +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:180 +msgid "" +"However, this does *not* work well with a Windows CI system like Appveyor, " +"where there are (for example) two installations of Python 3.4 (32-bit and 64-" +"bit) available, but only one ``py34`` environment in ``tox``." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:184 +msgid "" +"In order to run tests using ``tox``, therefore, projects should probably use " +"the default ``py`` environment in ``tox``, which uses the Python interpreter " +"that was used to run ``tox``. This will ensure that when Appveyor runs the " +"tests, they will be run with the configured interpreter." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:189 +msgid "" +"In order to support running under the ``py`` environment, it is possible " +"that projects with complex ``tox`` configurations might need to modify " +"their :file:`tox.ini` file. Doing so is, however, outside the scope of this " +"document." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:195 +msgid "Automatically uploading wheels" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:197 +msgid "" +"It is possible to request Appveyor to automatically upload wheels. There is " +"a ``deployment`` step available in :file:`appveyor.yml` that can be used to " +"(for example) copy the built artifacts to a FTP site, or an Amazon S3 " +"instance. Documentation on how to do this is included in the Appveyor guides." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:202 +msgid "" +"Alternatively, it would be possible to add a ``twine upload`` step to the " +"build. The supplied :file:`appveyor.yml` does not do this, as it is not " +"clear that uploading new wheels after every commit is desirable (although " +"some projects may wish to do this)." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:208 +msgid "External dependencies" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:210 +msgid "" +"The supplied scripts will successfully build any distribution that does not " +"rely on 3rd party external libraries for the build." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:213 +msgid "" +"It is possible to add steps to the :file:`appveyor.yml` configuration " +"(typically in the \"install\" section) to download and/or build external " +"libraries needed by the distribution. And if needed, it is possible to add " +"extra configuration for the build to supply the location of these libraries " +"to the compiler. However, this level of configuration is beyond the scope of " +"this document." +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:222 +msgid "Support scripts" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:224 +msgid "For reference, the SDK setup support script is listed here:" +msgstr "" + +#: ../source/guides/supporting-windows-using-appveyor.rst:226 +msgid "``appveyor-sample/build.cmd``" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:5 +msgid "Tool recommendations" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:7 +msgid "" +"The Python packaging landscape consists of many different tools. For many " +"tasks, the :term:`Python Packaging Authority ` (PyPA, the working group which encompasses many packaging tools and " +"maintains this guide) purposefully does not make a blanket recommendation; " +"for example, the reason there are many build backends is that the landscape " +"was opened up in order to enable the development of new backends serving " +"certain users' needs better than the previously unique backend, setuptools. " +"This guide does point to some tools that are widely recognized, and also " +"makes some recommendations of tools that you should *not* use because they " +"are deprecated or insecure." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:20 +msgid "Virtual environments" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:22 +msgid "" +"The standard tools to create and use virtual environments manually " +"are :ref:`virtualenv` (PyPA project) and :doc:`venv ` " +"(part of the Python standard library, though missing some features of " +"virtualenv)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:28 +msgid "Installing packages" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:30 +msgid "" +":ref:`Pip` is the standard tool to install packages from :term:`PyPI `. You may want to read pip's recommendations " +"for :doc:`secure installs `. Pip is available by " +"default in most Python installations through the standard library " +"package :doc:`ensurepip `." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:36 +msgid "" +"Alternatively, consider :ref:`pipx` for the specific use case of installing " +"Python applications that are distributed through PyPI and run from the " +"command line. Pipx is a wrapper around pip and venv that installs each " +"application into a dedicated virtual environment. This avoids conflicts " +"between the dependencies of different applications, and also with system-" +"wide applications making use of the same Python interpreter (especially on " +"Linux)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:43 +msgid "" +"For scientific software specifically, consider :ref:`Conda` or :ref:`Spack`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:45 +msgid "Write a \"pip vs. Conda\" comparison, here or in a new discussion." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:47 +msgid "" +"Do **not** use ``easy_install`` (part of :ref:`setuptools`), which is " +"deprecated in favor of pip (see :ref:`pip vs easy_install` for details). " +"Likewise, do **not** use ``python setup.py install`` or ``python setup.py " +"develop``, which are also deprecated (see :ref:`setup-py-deprecated` for " +"background and :ref:`modernize-setup-py-project` for migration advice)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:55 +msgid "Lock files" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:57 +msgid "" +":ref:`pip-tools` and :ref:`Pipenv` are two recognized tools to create lock " +"files, which contain the exact versions of all packages installed into an " +"environment, for reproducibility purposes." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:63 +msgid "Build backends" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:67 +msgid "" +"Please, remember: this document does not seek to steer the reader towards a " +"particular tool, only to enumerate common tools. Different use cases often " +"need specialized workflows." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:71 +msgid "" +"Popular :term:`build backends ` for pure-Python packages " +"include, in alphabetical order:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:74 +msgid "" +":doc:`Flit-core ` -- developed with but separate " +"from :ref:`Flit`. A minimal and opinionated build backend. It does not " +"support plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:77 +msgid "" +"Hatchling_ -- developed with but separate from :ref:`Hatch`. Supports " +"plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:79 +msgid "" +"PDM-backend_ -- developed with but separate from :ref:`PDM`. Supports " +"plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:81 +msgid "" +"Poetry-core_ -- developed with but separate from :ref:`Poetry`. Supports " +"plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:84 +msgid "" +"Unlike other backends on this list, Poetry-core does not support the " +"standard :ref:`[project] table ` (it uses a " +"different format, in the ``[tool.poetry]`` table)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:88 +msgid "" +":ref:`setuptools`, which used to be the only build backend. Supports plugins." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:92 +msgid "" +"If you use setuptools, please be aware that some features that predate " +"standardisation efforts are now deprecated and only *temporarily kept* for " +"compatibility." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:96 +msgid "" +"In particular, do **not** use direct ``python setup.py`` invocations. On the " +"other hand, configuring setuptools with a :file:`setup.py` file is still " +"fully supported, although it is recommended to use the " +"modern :ref:`[project] table in pyproject.toml ` " +"(or :file:`setup.cfg`) whenever possible and keep :file:`setup.py` only if " +"programmatic configuration is needed. See :ref:`setup-py-deprecated`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:103 +msgid "" +"Other examples of deprecated features you should **not** use include the " +"``setup_requires`` argument to ``setup()`` (use the :ref:`[build-system] " +"table ` in :file:`pyproject.toml` " +"instead), and the ``easy_install`` command (cf. :ref:`pip vs easy_install`)." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:108 +msgid "" +"Do **not** use :ref:`distutils`, which is deprecated, and has been removed " +"from the standard library in Python 3.12, although it still remains " +"available from setuptools." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:115 +msgid "Build backends for extension modules" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:117 +msgid "" +"For packages with :term:`extension modules `, it is best " +"to use a build system with dedicated support for the language the extension " +"is written in, for example:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:121 +msgid "" +":ref:`setuptools` -- natively supports C and C++ (with third-party plugins " +"for Go and Rust)," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:122 +msgid "" +":ref:`meson-python` -- C, C++, Fortran, Rust, and other languages supported " +"by Meson," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:123 +msgid "" +":ref:`scikit-build-core` -- C, C++, Fortran, and other languages supported " +"by CMake," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:124 +msgid ":ref:`maturin` -- Rust, via Cargo." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:128 +msgid "Building distributions" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:130 +msgid "" +"The standard tool to build :term:`source distributions ` and :term:`wheels ` for uploading to PyPI " +"is :ref:`build`. It will invoke whichever build backend you :ref:`declared " +"` in :file:`pyproject.toml`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:135 +msgid "" +"Do **not** use ``python setup.py sdist`` and ``python setup.py bdist_wheel`` " +"for this task. All direct invocations of :file:`setup.py` " +"are :ref:`deprecated `." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:139 +msgid "" +"If you have :term:`extension modules ` and want to " +"distribute wheels for multiple platforms, use :ref:`cibuildwheel` as part of " +"your CI setup to build distributable wheels." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:145 +msgid "Uploading to PyPI" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:147 +msgid "" +"For projects hosted on or published via supported CI/CD platforms, it is " +"recommended to use the :ref:`Trusted Publishing `, which " +"allows the package to be securely uploaded to PyPI from a CI/CD workflow " +"without a manually configured API token." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:152 +msgid "" +"As of November 2024, PyPI supports the following platforms as Trusted " +"Publishing providers:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:155 +msgid "GitHub Actions (on ``https://github.com``)" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:156 +msgid "GitLab CI/CD (on ``https://gitlab.com``)" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:157 +msgid "ActiveState" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:158 +msgid "Google Cloud" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:160 +msgid "" +"The other available method is to upload the package manually " +"using :ref:`twine`." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:164 +msgid "" +"**Never** use ``python setup.py upload`` for this task. In addition to " +"being :ref:`deprecated `, it is insecure." +msgstr "" + +#: ../source/guides/tool-recommendations.rst:169 +msgid "Workflow tools" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:171 +msgid "" +"These tools are environment managers that automatically manage virtual " +"environments for a project. They also act as \"task runners\", allowing you " +"to define and invoke tasks such as running tests, compiling documentation, " +"regenerating some files, etc. Some of them provide shortcuts for building " +"distributions and uploading to PyPI, and some support lock files for " +"applications. They often call the tools mentioned above under the hood. In " +"alphabetical order:" +msgstr "" + +#: ../source/guides/tool-recommendations.rst:179 +msgid ":ref:`Flit`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:180 +msgid ":ref:`Hatch`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:181 +msgid ":doc:`nox `," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:182 +msgid ":ref:`PDM`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:183 +msgid ":ref:`Pipenv`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:184 +msgid ":ref:`Poetry`," +msgstr "" + +#: ../source/guides/tool-recommendations.rst:185 +msgid ":doc:`tox `." +msgstr "" + +#: ../source/guides/using-manifest-in.rst:5 +msgid "Including files in source distributions with ``MANIFEST.in``" +msgstr "" + +#: ../source/guides/using-manifest-in.rst:7 +msgid "" +"The information on this page has moved to :doc:`setuptools:userguide/" +"miscellaneous` in the setuptools documentation." +msgstr "" + +#: ../source/guides/using-testpypi.rst:7 +msgid "" +"``TestPyPI`` is a separate instance of the :term:`Python Package Index " +"(PyPI)` that allows you to try out the distribution tools and process " +"without worrying about affecting the real index. TestPyPI is hosted at " +"`test.pypi.org `_" +msgstr "" + +#: ../source/guides/using-testpypi.rst:13 +msgid "Registering your account" +msgstr "" + +#: ../source/guides/using-testpypi.rst:15 +msgid "" +"Because TestPyPI has a separate database from the live PyPI, you'll need a " +"separate user account specifically for TestPyPI. Go to https://test.pypi.org/" +"account/register/ to register your account." +msgstr "" + +#: ../source/guides/using-testpypi.rst:19 +msgid "" +"The database for TestPyPI may be periodically pruned, so it is not unusual " +"for user accounts to be deleted." +msgstr "" + +#: ../source/guides/using-testpypi.rst:24 +msgid "Using TestPyPI with Twine" +msgstr "" + +#: ../source/guides/using-testpypi.rst:26 +msgid "" +"You can upload your distributions to TestPyPI using :ref:`twine` by " +"specifying the ``--repository`` flag:" +msgstr "" + +#: ../source/guides/using-testpypi.rst:33 +msgid "" +"You can see if your package has successfully uploaded by navigating to the " +"URL ``https://test.pypi.org/project/`` where " +"``sampleproject`` is the name of your project that you uploaded. It may take " +"a minute or two for your project to appear on the site." +msgstr "" + +#: ../source/guides/using-testpypi.rst:39 +msgid "Using TestPyPI with pip" +msgstr "" + +#: ../source/guides/using-testpypi.rst:41 +msgid "" +"You can tell :ref:`pip` to download packages from TestPyPI instead of PyPI " +"by specifying the ``--index-url`` flag:" +msgstr "" + +#: ../source/guides/using-testpypi.rst:56 +msgid "" +"If you want to allow pip to also download packages from PyPI, you can " +"specify ``--extra-index-url`` to point to PyPI. This is useful when the " +"package you're testing has dependencies:" +msgstr "" + +#: ../source/guides/using-testpypi.rst:73 +msgid "Setting up TestPyPI in :file:`.pypirc`" +msgstr "" + +#: ../source/guides/using-testpypi.rst:75 +msgid "" +"If you want to avoid being prompted for your username and password every " +"time, you can configure TestPyPI in your :file:`$HOME/.pypirc`:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:5 +msgid "Writing your ``pyproject.toml``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:7 +msgid "" +"``pyproject.toml`` is a configuration file used by packaging tools, as well " +"as other tools such as linters, type checkers, etc. There are three possible " +"TOML tables in this file." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:11 +msgid "" +"The ``[build-system]`` table is **strongly recommended**. It allows you to " +"declare which :term:`build backend` you use and which other dependencies are " +"needed to build your project." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:15 +msgid "" +"The ``[project]`` table is the format that most build backends use to " +"specify your project's basic metadata, such as the dependencies, your name, " +"etc." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:18 +msgid "" +"The ``[tool]`` table has tool-specific subtables, e.g., ``[tool.hatch]``, " +"``[tool.black]``, ``[tool.mypy]``. We only touch upon this table here " +"because its contents are defined by each tool. Consult the particular tool's " +"documentation to know what it can contain." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:25 +msgid "" +"The ``[build-system]`` table should always be present, regardless of which " +"build backend you use (``[build-system]`` *defines* the build tool you use)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:29 +msgid "" +"On the other hand, the ``[project]`` table is understood by *most* build " +"backends, but some build backends use a different format." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:32 +msgid "" +"A notable exception is Poetry_, which before version 2.0 (released January " +"5, 2025) did not use the ``[project]`` table, it used the ``[tool.poetry]`` " +"table instead. With version 2.0, it supports both. Also, the setuptools_ " +"build backend supports both the ``[project]`` table, and the older format in " +"``setup.cfg`` or ``setup.py``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:38 +msgid "" +"For new projects, use the ``[project]`` table, and keep ``setup.py`` only if " +"some programmatic configuration is needed (such as building C extensions), " +"but the ``setup.cfg`` and ``setup.py`` formats are still valid. " +"See :ref:`setup-py-deprecated`." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:47 +msgid "Declaring the build backend" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:49 +msgid "" +"The ``[build-system]`` table contains a ``build-backend`` key, which " +"specifies the build backend to be used. It also contains a ``requires`` key, " +"which is a list of dependencies needed to build the project -- this is " +"typically just the build backend package, but it may also contain additional " +"dependencies. You can also constrain the versions, e.g., ``requires = " +"[\"setuptools >= 61.0\"]``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:55 +msgid "" +"Usually, you'll just copy what your build backend's documentation suggests " +"(after :ref:`choosing your build backend `). Here " +"are the values for some common build backends:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:63 +msgid "Static vs. dynamic metadata" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:65 +msgid "The rest of this guide is devoted to the ``[project]`` table." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:67 +msgid "" +"Most of the time, you will directly write the value of a ``[project]`` " +"field. For example: ``requires-python = \">= 3.8\"``, or ``version = " +"\"1.0\"``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:71 +msgid "" +"However, in some cases, it is useful to let your build backend compute the " +"metadata for you. For example: many build backends can read the version from " +"a ``__version__`` attribute in your code, a Git tag, or similar. In such " +"cases, you should mark the field as dynamic using, e.g.," +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:82 +msgid "" +"When a field is dynamic, it is the build backend's responsibility to fill " +"it. Consult your build backend's documentation to learn how it does it." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:88 +msgid "Basic information" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:93 +#: ../source/specifications/pyproject-toml.rst:122 +#: ../source/specifications/pyproject-toml.rst:147 +#: ../source/specifications/pyproject-toml.rst:159 +msgid "``name``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:95 +msgid "" +"Put the name of your project on PyPI. This field is required and is the only " +"field that cannot be marked as dynamic." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:103 +msgid "" +"The project name must consist of ASCII letters, digits, underscores " +"\"``_``\", hyphens \"``-``\" and periods \"``.``\". It must not start or end " +"with an underscore, hyphen or period." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:107 +msgid "" +"Comparison of project names is case insensitive and treats arbitrarily long " +"runs of underscores, hyphens, and/or periods as equal. For example, if you " +"register a project named ``cool-stuff``, users will be able to download it " +"or declare a dependency on it using any of the following spellings: ``Cool-" +"Stuff``, ``cool.stuff``, ``COOL_STUFF``, ``CoOl__-.-__sTuFF``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:115 +#: ../source/specifications/pyproject-toml.rst:127 +#: ../source/specifications/pyproject-toml.rst:153 +#: ../source/specifications/pyproject-toml.rst:174 +msgid "``version``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:117 +msgid "Put the version of your project." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:124 +msgid "" +"Some more complicated version specifiers like ``2020.0.0a1`` (for an alpha " +"release) are possible; see the :ref:`specification ` for " +"full details." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:128 +msgid "This field is required, although it is often marked as dynamic using" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:135 +msgid "" +"This allows use cases such as filling the version from a ``__version__`` " +"attribute or a Git tag. Consult the :ref:`single-source-version` discussion " +"for more details." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:141 +msgid "Dependencies and requirements" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:144 +#: ../source/specifications/pyproject-toml.rst:453 +msgid "``dependencies``/``optional-dependencies``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:146 +msgid "If your project has dependencies, list them like this:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:158 +msgid "" +"See :ref:`Dependency specifiers ` for the full syntax " +"you can use to constrain versions." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:161 +msgid "" +"You may want to make some of your dependencies optional, if they are only " +"needed for a specific feature of your package. In that case, put them in " +"``optional-dependencies``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:174 +msgid "" +"Each of the keys defines a \"packaging extra\". In the example above, one " +"could use, e.g., ``pip install your-project-name[gui]`` to install your " +"project with GUI support, adding the PyQt5 dependency." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:183 +#: ../source/specifications/pylock-toml.rst:95 +#: ../source/specifications/pyproject-toml.rst:150 +#: ../source/specifications/pyproject-toml.rst:243 +msgid "``requires-python``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:185 +msgid "" +"This lets you declare the minimum version of Python that you support " +"[#requires-python-upper-bounds]_." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:197 +msgid "Creating executable scripts" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:199 +msgid "" +"To install a command as part of your package, declare it in the " +"``[project.scripts]`` table." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:207 +msgid "" +"In this example, after installing your project, a ``spam-cli`` command will " +"be available. Executing this command will do the equivalent of ``import sys; " +"from spam import main_cli; sys.exit(main_cli())``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:211 +msgid "" +"On Windows, scripts packaged this way need a terminal, so if you launch them " +"from within a graphical application, they will make a terminal pop up. To " +"prevent this from happening, use the ``[project.gui-scripts]`` table instead " +"of ``[project.scripts]``." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:221 +msgid "" +"In that case, launching your script from the command line will give back " +"control immediately, leaving the script to run in the background." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:224 +msgid "" +"The difference between ``[project.scripts]`` and ``[project.gui-scripts]`` " +"is only relevant on Windows." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:230 +msgid "About your project" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:233 +#: ../source/specifications/pyproject-toml.rst:330 +msgid "``authors``/``maintainers``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:235 +msgid "" +"Both of these fields contain lists of people identified by a name and/or an " +"email address." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:255 +#: ../source/specifications/pyproject-toml.rst:137 +#: ../source/specifications/pyproject-toml.rst:189 +msgid "``description``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:257 +msgid "" +"This should be a one-line description of your project, to show as the " +"\"headline\" of your project page on PyPI (`example `_), and " +"other places such as lists of search results (`example `_)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:268 +#: ../source/specifications/pyproject-toml.rst:149 +#: ../source/specifications/pyproject-toml.rst:202 +msgid "``readme``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:270 +msgid "" +"This is a longer description of your project, to display on your project " +"page on PyPI. Typically, your project will have a ``README.md`` or " +"``README.rst`` file and you just put its file name here." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:279 +msgid "The README's format is auto-detected from the extension:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:281 +msgid "``README.md`` → `GitHub-flavored Markdown `_," +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:282 +msgid "" +"``README.rst`` → `reStructuredText `_ (without Sphinx extensions)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:284 +msgid "You can also specify the format explicitly, like this:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:297 +msgid "``license`` and ``license-files``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:299 +msgid "As per :pep:`639`, licenses should be declared with two fields:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:301 +msgid "" +"``license`` is an :term:`SPDX license expression ` " +"consisting of one or more :term:`license identifiers `." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:303 +msgid "``license-files`` is a list of license file glob patterns." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:305 +msgid "" +"A previous PEP had specified ``license`` to be a table with a ``file`` or a " +"``text`` key, this format is now deprecated. Most :term:`build " +"backends` now support the new format as shown in the " +"following table." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:309 +msgid "build backend versions that introduced :pep:`639` support" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:312 +msgid "hatchling" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:313 +msgid "setuptools" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:314 +msgid "flit-core [#flit-core-pep639]_" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:315 +msgid "pdm-backend" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:316 +msgid "poetry-core" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:317 +msgid "uv-build" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:318 +msgid "1.27.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:319 +msgid "77.0.3" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:320 +msgid "3.12" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:321 +msgid "2.4.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:322 +msgid "2.2.0" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:323 +msgid "0.7.19" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:329 +#: ../source/specifications/pyproject-toml.rst:144 +#: ../source/specifications/pyproject-toml.rst:255 +msgid "``license``" +msgstr "" + +#: ../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 " +"`. The full license list is available at the `SPDX " +"license list page `_. The supported list version is 3.17 " +"or any later compatible one." +msgstr "" + +#: ../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 `_ for more context. The now deprecated format is " +"`described in PEP 621 `__." +msgstr "" + +#: ../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:353 +msgid "" +"If your :term:`Distribution Archive` is licensed with a license that doesn't " +"have an existing SPDX identifier, you can create a custom one in format " +"``LicenseRef-[idstring]``. The custom identifiers must follow the SPDX " +"specification, `clause 10.1 `_ of the version 2.2 or any " +"later compatible one." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:368 +#: ../source/specifications/pyproject-toml.rst:145 +#: ../source/specifications/pyproject-toml.rst:291 +msgid "``license-files``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:370 +msgid "" +"This is a list of license files and files containing other legal information " +"you want to distribute with your package." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:378 +msgid "The glob patterns must follow the specification:" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:380 +msgid "" +"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " +"(``.``) will be matched verbatim." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:382 +msgid "" +"Special characters: ``*``, ``?``, ``**`` and character ranges: [] are " +"supported." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:383 +msgid "Path delimiters must be the forward slash character (``/``)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:384 +msgid "" +"Patterns are relative to the directory containing :file:`pyproject.toml`, " +"and thus may not start with a slash character." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:386 +msgid "Parent directory indicators (``..``) must not be used." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:387 +msgid "Each glob must match at least one file." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:389 +msgid "" +"Literal paths are valid globs. Any characters or character sequences not " +"covered by this specification are invalid." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:395 +#: ../source/specifications/pyproject-toml.rst:143 +#: ../source/specifications/pyproject-toml.rst:374 +msgid "``keywords``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:397 +msgid "" +"This will help PyPI's search box to suggest your project when people search " +"for these keywords." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:409 +#: ../source/specifications/pyproject-toml.rst:135 +#: ../source/specifications/pyproject-toml.rst:386 +msgid "``classifiers``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:411 +msgid "" +"A list of PyPI classifiers that apply to your project. Check the `full list " +"of possibilities `_." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:436 +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 " +"browsing projects on PyPI, not for installing projects. To actually restrict " +"what Python versions a project can be installed on, use the :ref:`requires-" +"python` argument." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:441 +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:448 +#: ../source/specifications/pyproject-toml.rst:152 +#: ../source/specifications/pyproject-toml.rst:404 +msgid "``urls``" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:450 +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:455 +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 " +"`_ for PyPI-specific " +"URL processing." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:469 +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:473 +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:477 +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:487 +msgid "" +"Whereas in this metadata ``HomePage`` and ``DOWNLOAD`` both have well-known " +"equivalents (``homepage`` and ``download``), and can be presented with those " +"semantics in mind (the project's home page and its external download " +"location, respectively)." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:499 +msgid "Advanced plugins" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:501 +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:510 +msgid "See the :ref:`Plugin guide ` for more information." +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:515 +msgid "A full example" +msgstr "" + +#: ../source/guides/writing-pyproject-toml.rst:578 +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:582 +msgid "" +"flit-core `does not yet `_ support WITH in SPDX license " +"expressions." +msgstr "" + +#: ../source/index.rst:-1 +msgid "" +"The Python Packaging User Guide (PyPUG) is a collection of tutorials and " +"guides for packaging Python software." +msgstr "" + +#: ../source/index.rst:-1 +msgid "python, packaging, guide, tutorial" +msgstr "" + +#: ../source/index.rst:3 ../source/key_projects.rst:247 +msgid "Python Packaging User Guide" +msgstr "" + +#: ../source/index.rst:25 +msgid "" +"Welcome to the *Python Packaging User Guide*, a collection of tutorials and " +"references to help you distribute and install Python packages with modern " +"tools." +msgstr "" + +#: ../source/index.rst:29 +msgid "" +"This guide is maintained on `GitHub`_ by the :doc:`Python Packaging " +"Authority `. We happily accept :doc:`contributions and feedback " +"`. 😊" +msgstr "" + +#: ../source/index.rst:36 +msgid "Overview and Flow" +msgstr "" + +#: ../source/index.rst:40 +msgid "" +"Building your understanding of Python packaging is a journey. Patience and " +"continuous improvement are key to success. The overview and flow sections " +"provide a starting point for understanding the Python packaging ecosystem." +msgstr "" + +#: ../source/index.rst:44 +msgid "" +"The :doc:`overview` explains Python packaging and its use when preparing and " +"distributing projects. This section helps you build understanding about " +"selecting the tools and processes that are most suitable for your use case. " +"It includes what packaging is, the problems that it solves, and key " +"considerations." +msgstr "" + +#: ../source/index.rst:51 +msgid "" +"To get an overview of the workflow used to publish your code, " +"see :doc:`packaging flow `." +msgstr "" + +#: ../source/index.rst:57 +msgid "" +"Tutorials walk through the steps needed to complete a project for the first " +"time. Tutorials aim to help you succeed and provide a starting point for " +"future exploration. The :doc:`tutorials/index` section includes:" +msgstr "" + +#: ../source/index.rst:62 +msgid "" +"A :doc:`tutorial on installing packages `" +msgstr "" + +#: ../source/index.rst:63 +msgid "" +"A :doc:`tutorial on managing application dependencies ` in a version controlled project" +msgstr "" + +#: ../source/index.rst:65 +msgid "" +"A :doc:`tutorial on packaging and distributing ` your project" +msgstr "" + +#: ../source/index.rst:71 +msgid "" +"Guides provide steps to perform a specific task. Guides are more focused on " +"users who are already familiar with Python packaging and are looking for " +"specific information." +msgstr "" + +#: ../source/index.rst:75 +msgid "" +"The :doc:`guides/index` section provides \"how to\" instructions in three " +"major areas: package installation; building and distributing packages; " +"miscellaneous topics." +msgstr "" + +#: ../source/index.rst:80 +msgid "Explanations and Discussions" +msgstr "" + +#: ../source/index.rst:82 +msgid "" +"The :doc:`discussions/index` section provides in-depth explanations and " +"discussion about topics, such as:" +msgstr "" + +#: ../source/index.rst:85 +msgid ":doc:`discussions/deploying-python-applications`" +msgstr "" + +#: ../source/index.rst:86 +msgid ":doc:`discussions/pip-vs-easy-install`" +msgstr "" + +#: ../source/index.rst:89 +msgid "Reference" +msgstr "" + +#: ../source/index.rst:91 +msgid "" +"The :doc:`specifications/index` section for packaging interoperability " +"specifications." +msgstr "" + +#: ../source/index.rst:92 +msgid "" +"The list of :doc:`other projects ` maintained by members of " +"the Python Packaging Authority." +msgstr "" + +#: ../source/index.rst:93 +msgid "The :doc:`glossary` for definitions of terms used in Python packaging." +msgstr "" + +#: ../source/key_projects.rst:6 +msgid "Project Summaries" +msgstr "" + +#: ../source/key_projects.rst:8 +msgid "" +"Summaries and links for the most relevant projects in the space of Python " +"installation and packaging." +msgstr "" + +#: ../source/key_projects.rst:14 +msgid "PyPA Projects" +msgstr "" + +#: ../source/key_projects.rst:19 +msgid "bandersnatch" +msgstr "" + +#: ../source/key_projects.rst:21 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:26 +msgid "" +"``bandersnatch`` is a PyPI mirroring client designed to efficiently create a " +"complete mirror of the contents of PyPI. Organizations thus save bandwidth " +"and latency on package downloads (especially in the context of automated " +"tests) and to prevent heavily loading PyPI's Content Delivery Network (CDN). " +"Files can be served from a local directory or `AWS S3`_." +msgstr "" + +#: ../source/key_projects.rst:37 +msgid "build" +msgstr "" + +#: ../source/key_projects.rst:39 +msgid "" +":any:`Docs ` | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:44 +msgid "" +"``build`` is a :pep:`517` compatible Python package builder. It provides a " +"CLI to build packages, as well as a Python API." +msgstr "" + +#: ../source/key_projects.rst:51 +msgid "cibuildwheel" +msgstr "" + +#: ../source/key_projects.rst:53 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__ | " +"`Discussions `__ | " +"`Discord #cibuildwheel `__" +msgstr "" + +#: ../source/key_projects.rst:60 +msgid "" +"``cibuildwheel`` is a Python package that builds :term:`wheels ` for " +"all common platforms and Python versions on most CI systems. Also " +"see :ref:`multibuild`." +msgstr "" + +#: ../source/key_projects.rst:66 +msgid "distlib" +msgstr "" + +#: ../source/key_projects.rst:68 +msgid "" +":doc:`Docs ` | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:73 +msgid "" +"``distlib`` is a library which implements low-level functions that relate to " +"packaging and distribution of Python software. ``distlib`` implements " +"several relevant PEPs (Python Enhancement Proposal standards) and is useful " +"for developers of third-party packaging tools to make and upload binary and " +"source :term:`distributions `, achieve " +"interoperability, resolve dependencies, manage package resources, and do " +"other similar functions." +msgstr "" + +#: ../source/key_projects.rst:82 +msgid "" +"Unlike the stricter :ref:`packaging` project (below), which specifically " +"implements modern Python packaging interoperability standards, ``distlib`` " +"also attempts to provide reasonable fallback behaviours when asked to handle " +"legacy packages and metadata that predate the modern interoperability " +"standards and fall into the subset of packages that are incompatible with " +"those standards." +msgstr "" + +#: ../source/key_projects.rst:93 +msgid "distutils" +msgstr "" + +#: ../source/key_projects.rst:95 +msgid "" +"The original Python packaging system, added to the standard library in " +"Python 2.0 and removed in 3.12." +msgstr "" + +#: ../source/key_projects.rst:98 +msgid "" +"Due to the challenges of maintaining a packaging system where feature " +"updates are tightly coupled to language runtime updates, direct usage " +"of :ref:`distutils` has been actively discouraged, with :ref:`Setuptools` " +"being the preferred replacement. :ref:`Setuptools` not only provides " +"features that plain :ref:`distutils` doesn't offer (such as dependency " +"declarations and entry point declarations), it also provides a consistent " +"build interface and feature set across all supported Python versions." +msgstr "" + +#: ../source/key_projects.rst:107 +msgid "" +"Consequently, :ref:`distutils` was deprecated in Python 3.10 by :pep:`632` " +"and has been :doc:`removed ` from the standard library " +"in Python 3.12. Setuptools bundles the standalone copy of distutils, and it " +"is injected even on Python < 3.12 if you import setuptools first or use pip." +msgstr "" + +#: ../source/key_projects.rst:116 +msgid "flit" +msgstr "" + +#: ../source/key_projects.rst:118 +msgid "" +"`Docs `__ | `Issues `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:122 +msgid "" +"Flit provides a simple way to create and upload pure Python packages and " +"modules to PyPI. It focuses on `making the easy things easy `_ for packaging. Flit can generate a configuration file to " +"quickly set up a simple project, build source distributions and wheels, and " +"upload them to PyPI." +msgstr "" + +#: ../source/key_projects.rst:127 +msgid "" +"Flit uses ``pyproject.toml`` to configure a project. Flit does not rely on " +"tools such as :ref:`setuptools` to build distributions, or :ref:`twine` to " +"upload them to PyPI. Flit requires Python 3, but you can use it to " +"distribute modules for Python 2, so long as they can be imported on Python 3." +msgstr "" + +#: ../source/key_projects.rst:132 +msgid "" +"The flit package is lifted by `Matthias Bussonnier `__ since October 2023 on the `tidelift platform `__, and funds sent to the PSF and " +"earmarked for PyPA usage." +msgstr "" + +#: ../source/key_projects.rst:142 +msgid "hatch" +msgstr "" + +#: ../source/key_projects.rst:144 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:148 +msgid "" +"Hatch is a unified command-line tool meant to conveniently manage " +"dependencies and environment isolation for Python developers. Python package " +"developers use Hatch and its :term:`build backend ` Hatchling " +"to configure, version, specify dependencies for, and publish packages to " +"PyPI. Its plugin system allows for easily extending functionality." +msgstr "" + +#: ../source/key_projects.rst:157 +msgid "packaging" +msgstr "" + +#: ../source/key_projects.rst:159 +msgid "" +":doc:`Docs ` | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:164 +msgid "" +"Core utilities for Python packaging used by :ref:`pip` and :ref:`setuptools`." +msgstr "" + +#: ../source/key_projects.rst:166 +msgid "" +"The core utilities in the packaging library handle version handling, " +"specifiers, markers, requirements, tags, and similar attributes and tasks " +"for Python packages. Most Python users rely on this library without needing " +"to explicitly call it; developers of the other Python packaging, " +"distribution, and installation tools listed here often use its functionality " +"to parse, discover, and otherwise handle dependency attributes." +msgstr "" + +#: ../source/key_projects.rst:174 +msgid "" +"This project specifically focuses on implementing the modern Python " +"packaging interoperability standards defined at :ref:`packaging-" +"specifications`, and will report errors for sufficiently old legacy packages " +"that are incompatible with those standards. In contrast, the :ref:`distlib` " +"project is a more permissive library that attempts to provide a plausible " +"reading of ambiguous metadata in cases where :ref:`packaging` will instead " +"report on error." +msgstr "" + +#: ../source/key_projects.rst:186 +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "pip" +msgstr "" + +#: ../source/key_projects.rst:188 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:193 +msgid "" +"The most popular tool for installing Python packages, and the one included " +"with modern versions of Python." +msgstr "" + +#: ../source/key_projects.rst:196 +msgid "" +"It provides the essential core features for finding, downloading, and " +"installing packages from PyPI and other Python package indexes, and can be " +"incorporated into a wide range of development workflows via its command-line " +"interface (CLI)." +msgstr "" + +#: ../source/key_projects.rst:204 +msgid "Pipenv" +msgstr "" + +#: ../source/key_projects.rst:206 +msgid "" +":doc:`Docs ` | `Source `__ | " +"`Issues `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:211 +msgid "" +"Pipenv is a project that aims to bring the best of all packaging worlds to " +"the Python world. It harnesses :ref:`Pipfile`, :ref:`pip`, " +"and :ref:`virtualenv` into one single toolchain. It can autoimport " +"``requirements.txt`` and also check for CVEs in `Pipfile`_ using `safety " +"`_." +msgstr "" + +#: ../source/key_projects.rst:216 +msgid "" +"Pipenv aims to help users manage environments, dependencies, and imported " +"packages on the command line. It also works well on Windows (which other " +"tools often underserve), makes and checks file hashes, to ensure compliance " +"with hash-locked dependency specifiers, and eases uninstallation of packages " +"and dependencies." +msgstr "" + +#: ../source/key_projects.rst:225 +msgid "Pipfile" +msgstr "" + +#: ../source/key_projects.rst:227 +msgid "`Source `__" +msgstr "" + +#: ../source/key_projects.rst:229 +msgid "" +":file:`Pipfile` and its sister :file:`Pipfile.lock` are a higher-level " +"application-centric alternative to :ref:`pip`'s lower-" +"level :file:`requirements.txt` file." +msgstr "" + +#: ../source/key_projects.rst:236 +msgid "pipx" +msgstr "" + +#: ../source/key_projects.rst:238 +msgid "" +"`Docs `__ | `GitHub `__ " +"| `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:242 +msgid "" +"pipx is a tool to install and run Python command-line applications without " +"causing dependency conflicts with other packages installed on the system." +msgstr "" + +#: ../source/key_projects.rst:249 +msgid "" +":doc:`Docs ` | `Issues `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:253 +msgid "This guide!" +msgstr "" + +#: ../source/key_projects.rst:258 +msgid "readme_renderer" +msgstr "" + +#: ../source/key_projects.rst:260 +msgid "" +"`GitHub and docs `__ | `PyPI " +"`__" +msgstr "" + +#: ../source/key_projects.rst:263 +msgid "" +"``readme_renderer`` is a library that package developers use to render their " +"user documentation (README) files into HTML from markup languages such as " +"Markdown or reStructuredText. Developers call it on its own or " +"via :ref:`twine`, as part of their release management process, to check that " +"their package descriptions will properly display on PyPI." +msgstr "" + +#: ../source/key_projects.rst:274 +msgid "Setuptools" +msgstr "" + +#: ../source/key_projects.rst:276 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:281 +msgid "" +"Setuptools (which includes ``easy_install``) is a collection of enhancements " +"to the Python distutils that allow you to more easily build and distribute " +"Python :term:`distributions `, especially ones that " +"have dependencies on other packages." +msgstr "" + +#: ../source/key_projects.rst:289 +msgid "trove-classifiers" +msgstr "" + +#: ../source/key_projects.rst:291 +msgid "" +"`Issues `__ | `GitHub " +"`__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:295 +msgid "" +"trove-classifiers is the canonical source for `classifiers on PyPI `_, which project maintainers use " +"to :ref:`systematically describe their projects ` " +"so that users can better find projects that match their needs on the PyPI." +msgstr "" + +#: ../source/key_projects.rst:300 +msgid "" +"The trove-classifiers package contains a list of valid classifiers and " +"deprecated classifiers (which are paired with the classifiers that replace " +"them). Use this package to validate classifiers used in packages intended " +"for uploading to PyPI. As this list of classifiers is published as code, you " +"can install and import it, giving you a more convenient workflow compared to " +"referring to the `list published on PyPI `_. " +"The `issue tracker `_ for " +"the project hosts discussions on proposed classifiers and requests for new " +"classifiers." +msgstr "" + +#: ../source/key_projects.rst:314 +msgid "twine" +msgstr "" + +#: ../source/key_projects.rst:316 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:321 +msgid "" +"Twine is the primary tool developers use to upload packages to the Python " +"Package Index or other Python package indexes. It is a command-line program " +"that passes program files and metadata to a web API. Developers use it " +"because it's the official PyPI upload tool, it's fast and secure, it's " +"maintained, and it reliably works." +msgstr "" + +#: ../source/key_projects.rst:331 ../source/overview.rst:405 +msgid "virtualenv" +msgstr "" + +#: ../source/key_projects.rst:333 +msgid "" +"`Docs `__ | `Issues " +"`__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:338 +msgid "" +"virtualenv is a tool for creating isolated Python :term:`Virtual " +"Environments `, like :ref:`venv`. Unlike :ref:`venv`, " +"virtualenv can create virtual environments for other versions of Python, " +"which it locates using the PATH environment variable. It also provides " +"convenient features for configuring, maintaining, duplicating, and " +"troubleshooting virtual environments. For more information, see the section " +"on :ref:`Creating and using Virtual Environments`." +msgstr "" + +#: ../source/key_projects.rst:350 +msgid "Warehouse" +msgstr "" + +#: ../source/key_projects.rst:352 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:356 +msgid "" +"The current codebase powering the :term:`Python Package Index (PyPI)`. It is " +"hosted at `pypi.org `_. The default source for :ref:`pip` " +"downloads." +msgstr "" + +#: ../source/key_projects.rst:364 +msgid "wheel" +msgstr "" + +#: ../source/key_projects.rst:366 +msgid "" +"`Docs `__ | `Issues `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:371 +msgid "" +"Primarily, the wheel project offers the ``bdist_wheel`` :ref:`setuptools` " +"extension for creating :term:`wheel distributions `. Additionally, " +"it offers its own command line utility for creating and installing wheels." +msgstr "" + +#: ../source/key_projects.rst:375 +msgid "" +"See also `auditwheel `__, a tool that " +"package developers use to check and fix Python packages they are making in " +"the binary wheel format. It provides functionality to discover dependencies, " +"check metadata for compliance, and repair the wheel and metadata to properly " +"link and include external shared libraries in a package." +msgstr "" + +#: ../source/key_projects.rst:384 +msgid "Non-PyPA Projects" +msgstr "" + +#: ../source/key_projects.rst:389 +msgid "buildout" +msgstr "" + +#: ../source/key_projects.rst:391 +msgid "" +"`Docs `__ | `Issues `__ | `PyPI `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:396 +msgid "" +"Buildout is a Python-based build system for creating, assembling and " +"deploying applications from multiple parts, some of which may be non-Python-" +"based. It lets you create a buildout configuration and reproduce the same " +"software later." +msgstr "" + +#: ../source/key_projects.rst:403 +msgid "conda" +msgstr "" + +#: ../source/key_projects.rst:405 +msgid ":doc:`Docs `" +msgstr "" + +#: ../source/key_projects.rst:407 +msgid "" +"Conda is a package, dependency, and environment management system for any " +"language — Python, R, Ruby, C/C++, Fortran, and more. It is written in " +"Python and widely used in the Python scientific computing community, due to " +"its support for non-Python compiled libraries and extensions. It is used as " +"the basis of the `Anaconda `__ Python " +"distribution from Anaconda, Inc. It was originally aimed at the scientific " +"community, but can also be used on its own, or with the :doc:`miniconda " +"`, `miniforge `_ " +"or `pixi `_ systems. It is available for Windows, Mac and " +"Linux systems." +msgstr "" + +#: ../source/key_projects.rst:416 +msgid "" +"Conda is a completely separate tool from :ref:`pip`, virtualenv and wheel, " +"but provides many of their combined features, such as package management, " +"virtual environment management and deployment of binary extensions and other " +"binary code." +msgstr "" + +#: ../source/key_projects.rst:420 +msgid "" +"Conda does not install packages from PyPI -- it can only manage packages " +"built specifically for conda, which can be made available on a \"conda " +"channel\", such as those hosted on `anaconda.org `__, " +"or a local (e.g. intranet) package server. In addition to the \"default\" " +"channels managed by `Anaconda, Inc. `__, there " +"are a wide variety of packages from the community supported `conda-forge " +"project `__" +msgstr "" + +#: ../source/key_projects.rst:426 +msgid "" +"Note that :ref:`pip` can be installed into, and work side-by-side with conda " +"for managing :term:`distributions ` from PyPI. It is " +"also possible to build conda packages from Python source packages using " +"tools such as `conda skeleton `__: a tool to " +"automatically make conda packages from Python packages available on PyPI." +msgstr "" + +#: ../source/key_projects.rst:435 +msgid "devpi" +msgstr "" + +#: ../source/key_projects.rst:437 +msgid "" +"`Docs `__ | :gh:`Issues ` " +"| `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:441 +msgid "" +"devpi features a powerful PyPI-compatible server and PyPI proxy cache with a " +"complementary command line tool to drive packaging, testing and release " +"activities with Python. devpi also provides a browsable and searchable web " +"interface. devpi supports mirroring PyPI, multiple :term:`package indexes " +"` with inheritance, syncing between these indexes, index " +"replication and fail-over, and package upload." +msgstr "" + +#: ../source/key_projects.rst:452 +msgid "dumb-pypi" +msgstr "" + +#: ../source/key_projects.rst:454 +msgid "" +"`GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:457 +msgid "" +"dumb-pypi is a simple :term:`package index ` static file site " +"generator, which then must be hosted by a static file webserver to become " +"the package index. It supports serving the hash, core-metadata, and yank-" +"status." +msgstr "" + +#: ../source/key_projects.rst:464 +msgid "enscons" +msgstr "" + +#: ../source/key_projects.rst:466 +msgid "" +":gh:`Source ` | :gh:`Issues ` | `PyPI " +"`__" +msgstr "" + +#: ../source/key_projects.rst:470 +msgid "" +"Enscons is a Python packaging tool based on `SCons`_. It builds :ref:`pip`-" +"compatible source distributions and wheels without using distutils or " +"setuptools, including distributions with C extensions. Enscons has a " +"different architecture and philosophy than :ref:`distutils`. Rather than " +"adding build features to a Python packaging system, enscons adds Python " +"packaging to a general purpose build system. Enscons helps you to build " +"sdists that can be automatically built by :ref:`pip`, and wheels that are " +"independent of enscons." +msgstr "" + +#: ../source/key_projects.rst:485 +msgid "Flask-Pypi-Proxy" +msgstr "" + +#: ../source/key_projects.rst:487 +msgid "" +"`Docs `__ | :gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:491 ../source/key_projects.rst:685 +#: ../source/key_projects.rst:744 +msgid "Not maintained, project archived" +msgstr "" + +#: ../source/key_projects.rst:493 +msgid "" +"Flask-Pypi-Proxy is a :term:`package index ` as a cached " +"proxy for PyPI." +msgstr "" + +#: ../source/key_projects.rst:499 +msgid "Hashdist" +msgstr "" + +#: ../source/key_projects.rst:501 +msgid "" +"`Docs `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:504 +msgid "" +"Hashdist is a library for building non-root software distributions. Hashdist " +"is trying to be “the Debian of choice for cases where Debian technology " +"doesn’t work”. The best way for Pythonistas to think about Hashdist may be a " +"more powerful hybrid of :ref:`virtualenv` and :ref:`buildout`. It is aimed " +"at solving the problem of installing scientific software, and making package " +"distribution stateless, cached, and branchable. It is used by some " +"researchers but has been lacking in maintenance since 2016." +msgstr "" + +#: ../source/key_projects.rst:516 +msgid "Maturin" +msgstr "" + +#: ../source/key_projects.rst:518 +msgid "" +"`Docs `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:521 +msgid "" +"Maturin is a build backend for Rust extension modules, also written in Rust. " +"It supports building wheels for python 3.7+ on Windows, Linux, macOS and " +"FreeBSD, can upload them to PyPI and has basic PyPy and GraalPy support." +msgstr "" + +#: ../source/key_projects.rst:529 +msgid "meson-python" +msgstr "" + +#: ../source/key_projects.rst:531 +msgid "" +"`Docs `__ | `GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:534 +msgid "" +"``meson-python`` is a build backend that uses the Meson_ build system. It " +"enables Python package authors to use Meson_ as the build system for their " +"package. It supports a wide variety of languages, including C, and is able " +"to fill the needs of most complex build configurations." +msgstr "" + +#: ../source/key_projects.rst:544 +msgid "multibuild" +msgstr "" + +#: ../source/key_projects.rst:546 +msgid "`GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:548 +msgid "" +"Multibuild is a set of CI scripts for building and testing " +"Python :term:`wheels ` for Linux, macOS, and (less flexibly) Windows. " +"Also see :ref:`cibuildwheel`." +msgstr "" + +#: ../source/key_projects.rst:554 +msgid "nginx_pypi_cache" +msgstr "" + +#: ../source/key_projects.rst:556 +msgid ":gh:`GitHub `" +msgstr "" + +#: ../source/key_projects.rst:558 +msgid "" +"nginx_pypi_cache is a :term:`package index ` caching proxy " +"using `nginx `_." +msgstr "" + +#: ../source/key_projects.rst:564 +msgid "pdm" +msgstr "" + +#: ../source/key_projects.rst:566 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:570 +msgid "" +"PDM is a modern Python package manager. It uses :term:`pyproject.toml` to " +"store project metadata as defined in :pep:`621`." +msgstr "" + +#: ../source/key_projects.rst:578 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:582 +msgid "" +"Pex is a tool for generating :file:`.pex` (Python EXecutable) files, " +"standalone Python environments in the spirit of :ref:`virtualenv`. PEX files " +"are :doc:`zipapps ` that make deployment of Python " +"applications as simple as ``cp``. A single PEX file can support multiple " +"target platforms and can be created from standard :ref:`pip`-resolvable " +"requirements, a lockfile generated with ``pex3 lock ...`` or even another " +"PEX. PEX files can optionally have tools embedded that support turning the " +"PEX file into a standard venv, graphing dependencies and more." +msgstr "" + +#: ../source/key_projects.rst:594 +msgid "pip-tools" +msgstr "" + +#: ../source/key_projects.rst:596 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:600 +msgid "" +"pip-tools is a suite of tools meant for Python system administrators and " +"release managers who particularly want to keep their builds deterministic " +"yet stay up to date with new versions of their dependencies. Users can " +"specify particular release of their dependencies via hash, conveniently make " +"a properly formatted list of requirements from information in other parts of " +"their program, update all dependencies (a feature :ref:`pip` currently does " +"not provide), and create layers of constraints for the program to obey." +msgstr "" + +#: ../source/key_projects.rst:612 +msgid "pip2pi" +msgstr "" + +#: ../source/key_projects.rst:614 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:617 +msgid "" +"pip2pi is a :term:`package index ` server where specific " +"packages are manually synchronised." +msgstr "" + +#: ../source/key_projects.rst:623 +msgid "piwheels" +msgstr "" + +#: ../source/key_projects.rst:625 +msgid "" +"`Website `__ | :doc:`Docs ` | " +"`GitHub `__" +msgstr "" + +#: ../source/key_projects.rst:629 +msgid "" +"piwheels is a website, and software underpinning it, that fetches source " +"code distribution packages from PyPI and compiles them into binary wheels " +"that are optimized for installation onto Raspberry Pi computers. Raspberry " +"Pi OS pre-configures pip to use piwheels.org as an additional index to PyPI." +msgstr "" + +#: ../source/key_projects.rst:638 +msgid "poetry" +msgstr "" + +#: ../source/key_projects.rst:640 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:644 +msgid "" +"poetry is a command-line tool to handle dependency installation and " +"isolation as well as building and packaging of Python packages. It uses " +"``pyproject.toml`` and, instead of depending on the resolver functionality " +"within :ref:`pip`, provides its own dependency resolver. It attempts to " +"speed users' experience of installation and dependency resolution by locally " +"caching metadata about dependencies." +msgstr "" + +#: ../source/key_projects.rst:654 +msgid "proxpi" +msgstr "" + +#: ../source/key_projects.rst:656 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:659 +msgid "" +"proxpi is a simple :term:`package index ` which proxies PyPI " +"and other indexes with caching." +msgstr "" + +#: ../source/key_projects.rst:665 +msgid "Pulp-python" +msgstr "" + +#: ../source/key_projects.rst:667 +msgid "" +"`Docs `__ | :gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:671 +msgid "" +"Pulp-python is the Python :term:`package index ` plugin for " +"`Pulp `_. Pulp-python supports mirrors backed by " +"local or `AWS S3`_, package upload, and proxying to multiple package indexes." +msgstr "" + +#: ../source/key_projects.rst:679 +msgid "PyPI Cloud" +msgstr "" + +#: ../source/key_projects.rst:681 +msgid "" +"`Docs `__ | :gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:687 +msgid "" +"PyPI Cloud is a :term:`package index ` server, backed by `AWS " +"S3`_ or another cloud storage service, or local files. PyPI Cloud supports " +"redirect/cached proxying for PyPI, as well as authentication and " +"authorisation." +msgstr "" + +#: ../source/key_projects.rst:695 +msgid "pypiprivate" +msgstr "" + +#: ../source/key_projects.rst:697 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:700 +msgid "" +"pypiprivate serves a local (or `AWS S3`_-hosted) directory of packages as " +"a :term:`package index `." +msgstr "" + +#: ../source/key_projects.rst:706 +msgid "pypiserver" +msgstr "" + +#: ../source/key_projects.rst:708 +msgid "" +"`GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:711 +msgid "" +"pypiserver is a minimalist application that serves as a private " +"Python :term:`package index ` (from a local directory) within " +"organizations, implementing a simple API and browser interface. You can " +"upload private packages using standard upload tools, and users can download " +"and install them with :ref:`pip`, without publishing them publicly. " +"Organizations who use pypiserver usually download packages both from " +"pypiserver and from PyPI." +msgstr "" + +#: ../source/key_projects.rst:722 +msgid "PyScaffold" +msgstr "" + +#: ../source/key_projects.rst:724 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:728 +msgid "" +"PyScaffold is a project generator for bootstrapping Python packages, ready " +"to be shared on PyPI and installable via :ref:`pip`. It relies on a set of " +"sane default configurations for established tools (such " +"as :ref:`setuptools`, pytest_ and Sphinx_) to provide a productive " +"environment so developers can start coding right away. PyScaffold can also " +"be used with existing projects to make packaging easier." +msgstr "" + +#: ../source/key_projects.rst:739 +msgid "pywharf" +msgstr "" + +#: ../source/key_projects.rst:741 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:746 +msgid "" +"pywharf is a :term:`package index ` server, serving files " +"locally or from `GitHub `_." +msgstr "" + +#: ../source/key_projects.rst:752 +msgid "scikit-build" +msgstr "" + +#: ../source/key_projects.rst:754 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:758 +msgid "" +"Scikit-build is a :ref:`setuptools` wrapper for CPython that builds C/C++/" +"Fortran/Cython extensions It uses `cmake `__ " +"(available on PyPI) to provide better support for additional compilers, " +"build systems, cross compilation, and locating dependencies and their " +"associated build requirements. To speed up and parallelize the build of " +"large projects, the user can install `ninja `__ (also available on PyPI)." +msgstr "" + +#: ../source/key_projects.rst:769 +msgid "scikit-build-core" +msgstr "" + +#: ../source/key_projects.rst:771 +msgid "" +"`Docs `__ | `GitHub " +"`__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:775 +msgid "" +"Scikit-build-core is a build backend for CPython C/C++/Fortran/Cython " +"extensions. It enables users to write extensions with `cmake `__ (available on PyPI) to provide better support for " +"additional compilers, build systems, cross compilation, and locating " +"dependencies and their associated build requirements. CMake/Ninja are " +"automatically downloaded from PyPI if not available on the system." +msgstr "" + +#: ../source/key_projects.rst:785 +msgid "shiv" +msgstr "" + +#: ../source/key_projects.rst:787 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:791 +msgid "" +"shiv is a command line utility for building fully self contained Python " +"zipapps as outlined in :pep:`441`, but with all their dependencies included. " +"Its primary goal is making distributing Python applications and command line " +"tools fast & easy." +msgstr "" + +#: ../source/key_projects.rst:799 +msgid "simpleindex" +msgstr "" + +#: ../source/key_projects.rst:801 +msgid "" +":gh:`GitHub ` | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:804 +msgid "" +"simpleindex is a :term:`package index ` which routes URLs to " +"multiple package indexes (including PyPI), serves local (or cloud-hosted, " +"for example `AWS S3`_, with a custom plugin) directories of packages, and " +"supports custom plugins." +msgstr "" + +#: ../source/key_projects.rst:814 +msgid "" +":doc:`Docs ` | `GitHub `__ | " +"`Paper `__ | `Slides `__" +msgstr "" + +#: ../source/key_projects.rst:819 +msgid "" +"A flexible package manager designed to support multiple versions, " +"configurations, platforms, and compilers. Spack is like Homebrew, but " +"packages are written in Python and parameterized to allow easy swapping of " +"compilers, library versions, build options, etc. Arbitrarily many versions " +"of packages can coexist on the same system. Spack was designed for rapidly " +"building high performance scientific applications on clusters and " +"supercomputers." +msgstr "" + +#: ../source/key_projects.rst:827 +msgid "" +"Spack is not in PyPI (yet), but it requires no installation and can be used " +"immediately after cloning from GitHub." +msgstr "" + +#: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:852 +msgid "" +"``zest.releaser`` is a Python package release tool providing an abstraction " +"layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " +"automate incrementing package version numbers, updating changelogs, tagging " +"releases in source control, and uploading new packages to PyPI." +msgstr "" + +#: ../source/key_projects.rst:859 +msgid "Standard Library Projects" +msgstr "" + +#: ../source/key_projects.rst:864 +msgid "ensurepip" +msgstr "" + +#: ../source/key_projects.rst:866 +msgid "" +"`Docs `__ | `Issues " +"`__" +msgstr "" + +#: ../source/key_projects.rst:869 +msgid "" +"A package in the Python Standard Library that provides support for " +"bootstrapping :ref:`pip` into an existing Python installation or virtual " +"environment. In most cases, end users won't use this module, but rather it " +"will be used during the build of the Python distribution." +msgstr "" + +#: ../source/key_projects.rst:877 +msgid "http.server" +msgstr "" + +#: ../source/key_projects.rst:879 +msgid "" +":doc:`Docs ` | :gh:`Issues `" +msgstr "" + +#: ../source/key_projects.rst:882 +msgid "" +"A package and command-line interface which can host a directory as a " +"website, for example as a :term:`package index ` " +"(see :ref:`Hosting your Own Simple Repository`)." +msgstr "" + +#: ../source/key_projects.rst:889 +msgid "venv" +msgstr "" + +#: ../source/key_projects.rst:891 +msgid "" +"`Docs `__ | `Issues `__" +msgstr "" + +#: ../source/key_projects.rst:894 +msgid "" +"A package in the Python Standard Library (starting with Python 3.3) for " +"creating :term:`Virtual Environments `. For more " +"information, see the section on :ref:`Creating and using Virtual " +"Environments`." +msgstr "" + +#: ../source/news.rst:2 +msgid "News" +msgstr "" + +#: ../source/news.rst:4 +msgid "" +"This document is not currently updated. Previously, the document highlighted " +"changes in Python packaging." +msgstr "" + +#: ../source/news.rst:9 +msgid "September 2019" +msgstr "" + +#: ../source/news.rst:10 +msgid "Added a guide about publishing dists via GitHub Actions. (:pr:`647`)" +msgstr "" + +#: ../source/news.rst:13 +msgid "August 2019" +msgstr "" + +#: ../source/news.rst:14 +msgid "Updated to use :file:`python3 -m` when installing pipx. (:pr:`631`)" +msgstr "" + +#: ../source/news.rst:17 +msgid "July 2019" +msgstr "" + +#: ../source/news.rst:18 +msgid "Marked all PEP numbers with the :pep: role. (:pr:`629`)" +msgstr "" + +#: ../source/news.rst:19 +msgid "Upgraded Sphinx version and removed pypa.io intersphinx. (:pr:`625`)" +msgstr "" + +#: ../source/news.rst:20 +msgid "Mentioned :file:`find_namespace_packages`. (:pr:`622`)" +msgstr "" + +#: ../source/news.rst:21 +msgid "Updated directory layout examples for consistency. (:pr:`611`)" +msgstr "" + +#: ../source/news.rst:22 +msgid "Updated Bandersnatch link to GitHub. (:pr:`623`)" +msgstr "" + +#: ../source/news.rst:25 +msgid "June 2019" +msgstr "" + +#: ../source/news.rst:26 +msgid "Fixed some typos. (:pr:`620`)" +msgstr "" + +#: ../source/news.rst:29 +msgid "May 2019" +msgstr "" + +#: ../source/news.rst:30 +msgid "Added :file:`python_requires` usage to packaging tutorial. (:pr:`613`)" +msgstr "" + +#: ../source/news.rst:31 +msgid "Added a MANIFEST.in guide page. (:pr:`609`)" +msgstr "" + +#: ../source/news.rst:34 +msgid "April 2019" +msgstr "" + +#: ../source/news.rst:35 +msgid "" +"Added a mention for :file:`shiv` in the key projects section. (:pr:`608`)" +msgstr "" + +#: ../source/news.rst:36 +msgid "Reduced emphasis on virtualenv. (:pr:`606`)" +msgstr "" + +#: ../source/news.rst:39 +msgid "March 2019" +msgstr "" + +#: ../source/news.rst:40 +msgid "Moved single-sourcing guide version option to Python 3. (:pr:`605`)" +msgstr "" + +#: ../source/news.rst:41 +msgid "Covered RTD details for contributing. (:pr:`600`)" +msgstr "" + +#: ../source/news.rst:44 +msgid "February 2019" +msgstr "" + +#: ../source/news.rst:45 +msgid "" +"Elaborate upon the differences between the tutorial and the real packaging " +"process. (:pr:`602`)" +msgstr "" + +#: ../source/news.rst:46 +msgid "Added instructions to install Python CLI applications. (:pr:`594`)" +msgstr "" + +#: ../source/news.rst:49 +msgid "January 2019" +msgstr "" + +#: ../source/news.rst:50 +msgid "Added :file:`--no-deps` to the packaging tutorial. (:pr:`593`)" +msgstr "" + +#: ../source/news.rst:51 +msgid "Updated Sphinx and Nox. (:pr:`591`)" +msgstr "" + +#: ../source/news.rst:52 +msgid "Referenced Twine from Python3. (:pr:`581`)" +msgstr "" + +#: ../source/news.rst:55 +msgid "December 2018" +msgstr "" + +#: ../source/news.rst:56 +msgid "No programmers in the office!" +msgstr "" + +#: ../source/news.rst:59 +msgid "November 2018" +msgstr "" + +#: ../source/news.rst:60 +msgid "Removed landing page link to PyPI migration guide. (:pr:`575`)" +msgstr "" + +#: ../source/news.rst:61 +msgid "Changed bumpversion to bump2version. (:pr:`572`)" +msgstr "" + +#: ../source/news.rst:62 +msgid "Added single-sourcing package version example. (:pr:`573`)" +msgstr "" + +#: ../source/news.rst:63 +msgid "Added a guide for creating documentation. (:pr:`568`)" +msgstr "" + +#: ../source/news.rst:66 +msgid "October 2018" +msgstr "" + +#: ../source/news.rst:67 +msgid "Updated Nox package name. (:pr:`566`)" +msgstr "" + +#: ../source/news.rst:68 +msgid "Mentioned Sphinx extensions in guides. (:pr:`562`)" +msgstr "" + +#: ../source/news.rst:71 +msgid "September 2018" +msgstr "" + +#: ../source/news.rst:72 +msgid "Added a section on checking RST markup. (:pr:`554`)" +msgstr "" + +#: ../source/news.rst:73 +msgid "Updated user installs page. (:pr:`558`)" +msgstr "" + +#: ../source/news.rst:74 +msgid "Updated Google BigQuery urls. (:pr:`556`)" +msgstr "" + +#: ../source/news.rst:75 +msgid "Replaced tar command with working command. (:pr:`552`)" +msgstr "" + +#: ../source/news.rst:76 +msgid "" +"Changed to double quotes in the pip install SomeProject==1.4. (:pr:`550`)" +msgstr "" + +#: ../source/news.rst:79 +msgid "August 2018" +msgstr "" + +#: ../source/news.rst:80 +msgid "Removed the recommendation to store passwords in cleartext. (:pr:`546`)" +msgstr "" + +#: ../source/news.rst:81 +msgid "" +"Moved the Overview to a task based lead in along with the others. (:pr:`540`)" +msgstr "" + +#: ../source/news.rst:82 +msgid "Updated Python version supported by virtualenv. (:pr:`538`)" +msgstr "" + +#: ../source/news.rst:83 +msgid "Added outline/rough draft of new Overview page. (:pr:`519`)" +msgstr "" + +#: ../source/news.rst:86 +msgid "July 2018" +msgstr "" + +#: ../source/news.rst:88 +msgid "Improved binary extension docs. (:pr:`531`)" +msgstr "" + +#: ../source/news.rst:89 +msgid "Added scikit-build to key projects. (:pr:`530`)" +msgstr "" + +#: ../source/news.rst:92 +msgid "June 2018" +msgstr "" + +#: ../source/news.rst:94 +msgid "Fixed categories of interop PEP for pypa.io. (:pr:`527`)" +msgstr "" + +#: ../source/news.rst:95 +msgid "Updated Markdown descriptions explanation. (:pr:`522`)" +msgstr "" + +#: ../source/news.rst:98 +msgid "May 2018" +msgstr "" + +#: ../source/news.rst:100 +msgid "Noted issues with Provides-Dist and Obsoletes-Dist. (:pr:`513`)" +msgstr "" + +#: ../source/news.rst:101 +msgid "" +"Removed outdated warning about Python version mixing with Pipenv. (:pr:`501`)" +msgstr "" + +#: ../source/news.rst:102 +msgid "Simplified packaging tutorial. (:pr:`498`)" +msgstr "" + +#: ../source/news.rst:103 +msgid "Updated Windows users instructions for clarity. (:pr:`493`)" +msgstr "" + +#: ../source/news.rst:104 +msgid "Updated the license section description for completeness. (:pr:`492`)" +msgstr "" + +#: ../source/news.rst:105 +msgid "Added specification-style document to contributing section. (:pr:`489`)" +msgstr "" + +#: ../source/news.rst:106 +msgid "Added documentation types to contributing guide. (:pr:`485`)" +msgstr "" + +#: ../source/news.rst:109 +msgid "April 2018" +msgstr "" + +#: ../source/news.rst:111 +msgid "Added README guide. (:pr:`461`)" +msgstr "" + +#: ../source/news.rst:112 +msgid "Updated instructions and status for PyPI launch. (:pr:`475`)" +msgstr "" + +#: ../source/news.rst:113 +msgid "Added instructions for Warehouse. (:pr:`471`)" +msgstr "" + +#: ../source/news.rst:114 +msgid "Removed GPG references from publishing tutorial. (:pr:`466`)" +msgstr "" + +#: ../source/news.rst:115 +msgid "Added 'What’s in which Python 3.4–3.6?'. (:pr:`468`)" +msgstr "" + +#: ../source/news.rst:116 +msgid "Added a guide for phasing out Python versions. (:pr:`459`)" +msgstr "" + +#: ../source/news.rst:117 +msgid "Made default Description-Content-Type variant GFM. (:pr:`462`)" +msgstr "" + +#: ../source/news.rst:120 +msgid "March 2018" +msgstr "" + +#: ../source/news.rst:122 +msgid "Updated \"installing scientific packages\". (:pr:`455`)" +msgstr "" + +#: ../source/news.rst:123 +msgid "" +"Added :file:`long_description_content_type` to follow PEP 556. (:pr:`457`)" +msgstr "" + +#: ../source/news.rst:124 +msgid "Clarified a long description classifier on pypi.org. (:pr:`456`)" +msgstr "" + +#: ../source/news.rst:125 +msgid "Updated Core Metadata spec to follow PEP 556. (:pr:`412`)" +msgstr "" + +#: ../source/news.rst:128 +msgid "February 2018" +msgstr "" + +#: ../source/news.rst:130 +msgid "" +"Added python3-venv and python3-pip to Debian installation instructions. " +"(:pr:`445`)" +msgstr "" + +#: ../source/news.rst:131 +msgid "Updated PyPI migration info. (:pr:`439`)" +msgstr "" + +#: ../source/news.rst:132 +msgid "" +"Added a warning about managing multiple versions with pipenv. (:pr:`430`)" +msgstr "" + +#: ../source/news.rst:133 +msgid "Added example of multiple emails to Core Metadata. (:pr:`429`)" +msgstr "" + +#: ../source/news.rst:134 +msgid "Added explanation of \"legacy\" in test.pypi.org/legacy. (:pr:`426`)" +msgstr "" + +#: ../source/news.rst:137 +msgid "January 2018" +msgstr "" + +#: ../source/news.rst:139 +msgid "Added a link to PyPI's list of classifiers. (:pr:`425`)" +msgstr "" + +#: ../source/news.rst:140 +msgid "Updated README.rst explanation. (:pr:`419`)" +msgstr "" + +#: ../source/news.rst:143 +msgid "December 2017" +msgstr "" + +#: ../source/news.rst:145 +msgid "" +"Replaced :file:`~` with :file:`$HOME` in guides and tutorials. (:pr:`418`)" +msgstr "" + +#: ../source/news.rst:146 +msgid "Noted which fields can be used with environment markers. (:pr:`416`)" +msgstr "" + +#: ../source/news.rst:147 +msgid "Updated Requires-Python section. (:pr:`414`)" +msgstr "" + +#: ../source/news.rst:148 +msgid "Added news page. (:pr:`404`)" +msgstr "" + +#: ../source/news.rst:151 +msgid "November 2017" +msgstr "" + +#: ../source/news.rst:153 +msgid "" +"Introduced a new dependency management tutorial based on Pipenv. (:pr:`402`)" +msgstr "" + +#: ../source/news.rst:154 +msgid "" +"Updated the *Single Sourcing Package Version* tutorial to reflect pip's " +"current strategy. (:pr:`400`)" +msgstr "" + +#: ../source/news.rst:156 +msgid "" +"Added documentation about the ``py_modules`` argument to ``setup``. " +"(:pr:`398`)" +msgstr "" + +#: ../source/news.rst:157 +msgid "Simplified the wording for the :file:`manifest.in` section. (:pr:`395`)" +msgstr "" + +#: ../source/news.rst:160 +msgid "October 2017" +msgstr "" + +#: ../source/news.rst:162 +msgid "" +"Added a specification for the :file:`entry_points.txt` file. (:pr:`398`)" +msgstr "" + +#: ../source/news.rst:163 +msgid "" +"Created a new guide for managing packages using ``pip`` and ``virtualenv``. " +"(:pr:`385`)" +msgstr "" + +#: ../source/news.rst:164 +msgid "Split the specifications page into multiple pages. (:pr:`386`)" +msgstr "" + +#: ../source/news.rst:167 +msgid "September 2017" +msgstr "" + +#: ../source/news.rst:169 +msgid "" +"Encouraged using ``readme_renderer`` to validate :file:`README.rst`. " +"(:pr:`379`)" +msgstr "" + +#: ../source/news.rst:171 +msgid "Recommended using the ``--user-base`` option. (:pr:`374`)" +msgstr "" + +#: ../source/news.rst:174 +msgid "August 2017" +msgstr "" + +#: ../source/news.rst:176 +msgid "" +"Added a new, experimental tutorial on installing packages using ``Pipenv``. " +"(:pr:`369`)" +msgstr "" + +#: ../source/news.rst:177 +msgid "Added a new guide on how to use ``TestPyPI``. (:pr:`366`)" +msgstr "" + +#: ../source/news.rst:178 +msgid "Added :file:`pypi.org` as a term. (:pr:`365`)" +msgstr "" + +#: ../source/news.rst:181 +msgid "July 2017" +msgstr "" + +#: ../source/news.rst:183 +msgid "Added ``flit`` to the key projects list. (:pr:`358`)" +msgstr "" + +#: ../source/news.rst:184 +msgid "Added ``enscons`` to the list of key projects. (:pr:`357`)" +msgstr "" + +#: ../source/news.rst:185 +msgid "" +"Updated this guide's ``readme`` with instructions on how to build the guide " +"locally. (:pr:`356`)" +msgstr "" + +#: ../source/news.rst:186 +msgid "" +"Made the new ``TestPyPI`` URL more visible, adding note to homepage about " +"pypi.org. (:pr:`354`)" +msgstr "" + +#: ../source/news.rst:187 +msgid "" +"Added a note about the removal of the explicit registration API. (:pr:`347`)" +msgstr "" + +#: ../source/news.rst:190 +msgid "June 2017" +msgstr "" + +#: ../source/news.rst:192 +msgid "Added a document on migrating uploads to :file:`PyPI.org`. (:pr:`339`)" +msgstr "" + +#: ../source/news.rst:193 +msgid "Added documentation for ``python_requires``. (:pr:`338`)" +msgstr "" + +#: ../source/news.rst:194 +msgid "" +"Added a note about PyPI migration in the *Tool Recommendations* tutorial. " +"(:pr:`335`)" +msgstr "" + +#: ../source/news.rst:195 +msgid "" +"Added a note that :file:`manifest.in` does not affect wheels. (:pr:`332`)" +msgstr "" + +#: ../source/news.rst:196 +msgid "Added a license section to the distributing guide. (:pr:`331`)" +msgstr "" + +#: ../source/news.rst:197 +msgid "Expanded the section on the ``name`` argument. (:pr:`329`)" +msgstr "" + +#: ../source/news.rst:198 +msgid "Adjusted the landing page. (:pr:`327`, :pr:`326`, :pr:`324`)" +msgstr "" + +#: ../source/news.rst:199 +msgid "Updated to Sphinx 1.6.2. (:pr:`323`)" +msgstr "" + +#: ../source/news.rst:200 +msgid "Switched to the PyPA theme. (:pr:`305`)" +msgstr "" + +#: ../source/news.rst:201 +msgid "Re-organized the documentation into the new structure. (:pr:`318`)" +msgstr "" + +#: ../source/news.rst:204 +msgid "May 2017" +msgstr "" + +#: ../source/news.rst:206 +msgid "" +"Added documentation for the ``Description-Content-Type`` field. (:pr:`258`)" +msgstr "" + +#: ../source/news.rst:207 +msgid "Added contributor and style guide. (:pr:`307`)" +msgstr "" + +#: ../source/news.rst:208 +msgid "" +"Documented ``pip`` and ``easy_install``'s differences for per-project " +"indexes. (:pr:`233`)" +msgstr "" + +#: ../source/news.rst:211 +msgid "April 2017" +msgstr "" + +#: ../source/news.rst:213 +msgid "Added travis configuration for testing pull requests. (:pr:`300`)" +msgstr "" + +#: ../source/news.rst:214 +msgid "" +"Mentioned the requirement of the ``wheel`` package for creating wheels " +"(:pr:`299`)" +msgstr "" + +#: ../source/news.rst:215 +msgid "" +"Removed the ``twine register`` reference in the *Distributing Packages* " +"tutorial. (:pr:`271`)" +msgstr "" + +#: ../source/news.rst:216 +msgid "Added a topic on plugin discovery. (:pr:`294`, :pr:`296`)" +msgstr "" + +#: ../source/news.rst:217 +msgid "Added a topic on namespace packages. (:pr:`290`)" +msgstr "" + +#: ../source/news.rst:218 +msgid "" +"Added documentation explaining prominently how to install ``pip`` in ``/usr/" +"local``. (:pr:`230`)" +msgstr "" + +#: ../source/news.rst:219 +msgid "" +"Updated development mode documentation to mention that order of local " +"packages matters. (:pr:`208`)" +msgstr "" + +#: ../source/news.rst:220 +msgid "" +"Convert readthedocs link for their ``.org`` -> ``.io`` migration for hosted " +"projects (:pr:`239`)" +msgstr "" + +#: ../source/news.rst:221 +msgid "" +"Swapped order of :file:`setup.py` arguments for the upload command, as order " +"is significant. (:pr:`260`)" +msgstr "" + +#: ../source/news.rst:223 +msgid "" +"Explained how to install from unsupported sources using a helper " +"application. (:pr:`289`)" +msgstr "" + +#: ../source/news.rst:227 +msgid "March 2017" +msgstr "" + +#: ../source/news.rst:229 +msgid "Covered ``manylinux1`` in *Platform Wheels*. (:pr:`283`)" +msgstr "" + +#: ../source/news.rst:232 +msgid "February 2017" +msgstr "" + +#: ../source/news.rst:234 +msgid "Added :pep:`518`. (:pr:`281`)" +msgstr "" + +#: ../source/overview.rst:3 +msgid "Overview of Python Packaging" +msgstr "" + +#: ../source/overview.rst:7 +msgid "" +"As a general-purpose programming language, Python is designed to be used in " +"many ways. You can build web sites or industrial robots or a game for your " +"friends to play, and much more, all using the same core technology." +msgstr "" + +#: ../source/overview.rst:12 +msgid "" +"Python's flexibility is why the first step in every Python project must be " +"to think about the project's audience and the corresponding environment " +"where the project will run. It might seem strange to think about packaging " +"before writing code, but this process does wonders for avoiding future " +"headaches." +msgstr "" + +#: ../source/overview.rst:18 +msgid "" +"This overview provides a general-purpose decision tree for reasoning about " +"Python's plethora of packaging options. Read on to choose the best " +"technology for your next project." +msgstr "" + +#: ../source/overview.rst:23 +msgid "Thinking about deployment" +msgstr "" + +#: ../source/overview.rst:25 +msgid "" +"Packages exist to be installed (or *deployed*), so before you package " +"anything, you'll want to have some answers to the deployment questions below:" +msgstr "" + +#: ../source/overview.rst:29 +msgid "" +"Who are your software's users? Will your software be installed by other " +"developers doing software development, operations people in a datacenter, or " +"a less software-savvy group?" +msgstr "" + +#: ../source/overview.rst:32 +msgid "" +"Is your software intended to run on servers, desktops, mobile clients " +"(phones, tablets, etc.), or embedded in dedicated devices?" +msgstr "" + +#: ../source/overview.rst:34 +msgid "" +"Is your software installed individually, or in large deployment batches?" +msgstr "" + +#: ../source/overview.rst:36 +msgid "" +"Packaging is all about target environment and deployment experience. There " +"are many answers to the questions above and each combination of " +"circumstances has its own solutions. With this information, the following " +"overview will guide you to the packaging technologies best suited to your " +"project." +msgstr "" + +#: ../source/overview.rst:43 +msgid "Packaging Python libraries and tools" +msgstr "" + +#: ../source/overview.rst:45 +msgid "" +"You may have heard about PyPI, ``setup.py``, and ``wheel`` files. These are " +"just a few of the tools Python's ecosystem provides for distributing Python " +"code to developers, which you can read about in :doc:`guides/distributing-" +"packages-using-setuptools`." +msgstr "" + +#: ../source/overview.rst:50 +msgid "" +"The following approaches to packaging are meant for libraries and tools used " +"by technical audience in a development setting. If you're looking for ways " +"to package Python for a non-technical audience and/or a production setting, " +"skip ahead to :ref:`packaging-applications`." +msgstr "" + +#: ../source/overview.rst:56 +msgid "Python modules" +msgstr "" + +#: ../source/overview.rst:58 +msgid "" +"A Python file, provided it only relies on the standard library, can be " +"redistributed and reused. You will also need to ensure it's written for the " +"right version of Python, and only relies on the standard library." +msgstr "" + +#: ../source/overview.rst:63 +msgid "" +"This is great for sharing simple scripts and snippets between people who " +"both have compatible Python versions (such as via email, StackOverflow, or " +"GitHub gists). There are even some entire Python libraries that offer this " +"as an option, such as :doc:`bottle.py` and :doc:`boltons " +"`." +msgstr "" + +#: ../source/overview.rst:70 +msgid "" +"However, this pattern won't scale for projects that consist of multiple " +"files, need additional libraries, or need a specific version of Python, " +"hence the options below." +msgstr "" + +#: ../source/overview.rst:75 +msgid "Python source distributions" +msgstr "" + +#: ../source/overview.rst:77 +msgid "" +"If your code consists of multiple Python files, it's usually organized into " +"a directory structure. Any directory containing Python files can comprise " +"an :term:`Import Package`." +msgstr "" + +#: ../source/overview.rst:81 +msgid "" +"Because packages consist of multiple files, they are harder to distribute. " +"Most protocols support transferring only one file at a time (when was the " +"last time you clicked a link and it downloaded multiple files?). It's easier " +"to get incomplete transfers, and harder to guarantee code integrity at the " +"destination." +msgstr "" + +#: ../source/overview.rst:87 +msgid "" +"So long as your code contains nothing but pure Python code, and you know " +"your deployment environment supports your version of Python, then you can " +"use Python's native packaging tools to create a *source* :term:`Distribution " +"Package`, or *sdist* for short." +msgstr "" + +#: ../source/overview.rst:92 +msgid "" +"Python's *sdists* are compressed archives (``.tar.gz`` files) containing one " +"or more packages or modules. If your code is pure-Python, and you only " +"depend on other Python packages, you can go to the :ref:`source-distribution-" +"format` specification to learn more." +msgstr "" + +#: ../source/overview.rst:97 +msgid "" +"If you rely on any non-Python code, or non-Python packages (such as `libxml2 " +"`_ in the case of `lxml `_, or BLAS libraries in the case of `numpy `_), you will need to use the format detailed in the " +"next section, which also has many advantages for pure-Python libraries." +msgstr "" + +#: ../source/overview.rst:104 +msgid "" +"Python and PyPI support multiple distributions providing different " +"implementations of the same package. For instance the unmaintained-but-" +"seminal `PIL distribution `_ provides the PIL " +"package, and so does `Pillow `_, an " +"actively-maintained fork of PIL!" +msgstr "" + +#: ../source/overview.rst:111 +msgid "" +"This Python packaging superpower makes it possible for Pillow to be a drop-" +"in replacement for PIL, just by changing your project's ``install_requires`` " +"or ``requirements.txt``." +msgstr "" + +#: ../source/overview.rst:116 +msgid "Python binary distributions" +msgstr "" + +#: ../source/overview.rst:118 +msgid "" +"So much of Python's practical power comes from its ability to integrate with " +"the software ecosystem, in particular libraries written in C, C++, Fortran, " +"Rust, and other languages." +msgstr "" + +#: ../source/overview.rst:122 +msgid "" +"Not all developers have the right tools or experiences to build these " +"components written in these compiled languages, so Python created " +"the :term:`Wheel`, a package format designed to ship libraries with compiled " +"artifacts. In fact, Python's package installer, ``pip``, always prefers " +"wheels because installation is always faster, so even pure-Python packages " +"work better with wheels." +msgstr "" + +#: ../source/overview.rst:129 +msgid "" +"Binary distributions are best when they come with source distributions to " +"match. Even if you don't upload wheels of your code for every operating " +"system, by uploading the sdist, you're enabling users of other platforms to " +"still build it for themselves. Default to publishing both sdist and wheel " +"archives together, *unless* you're creating artifacts for a very specific " +"use case where you know the recipient only needs one or the other." +msgstr "" + +#: ../source/overview.rst:137 +msgid "" +"Python and PyPI make it easy to upload both wheels and sdists together. Just " +"follow the :doc:`tutorials/packaging-projects` tutorial." +msgstr "" + +#: ../source/overview.rst:145 +msgid "A summary of Python's packaging capabilities for tools and libraries." +msgstr "" + +#: ../source/overview.rst:145 +msgid "" +"Python's recommended built-in library and tool packaging technologies. " +"Excerpted from `The Packaging Gradient (2017) `_." +msgstr "" + +#: ../source/overview.rst:152 +msgid "Packaging Python applications" +msgstr "" + +#: ../source/overview.rst:154 +msgid "" +"So far we've only discussed Python's native distribution tools. Based on our " +"introduction, you would be correct to infer these built-in approaches only " +"target environments which have Python, and an audience who knows how to " +"install Python packages." +msgstr "" + +#: ../source/overview.rst:159 +msgid "" +"With the variety of operating systems, configurations, and people out there, " +"this assumption is only safe when targeting a developer audience." +msgstr "" + +#: ../source/overview.rst:163 +msgid "" +"Python's native packaging is mostly built for distributing reusable code, " +"called libraries, between developers. You can piggyback **tools**, or basic " +"applications for developers, on top of Python's library packaging, using " +"technologies like :doc:`setuptools entry_points `." +msgstr "" + +#: ../source/overview.rst:169 +msgid "" +"Libraries are building blocks, not complete applications. For distributing " +"applications, there's a whole new world of technologies out there." +msgstr "" + +#: ../source/overview.rst:173 +msgid "" +"The next few sections organize these application packaging options according " +"to their dependencies on the target environment, so you can choose the right " +"one for your project." +msgstr "" + +#: ../source/overview.rst:178 +msgid "Depending on a framework" +msgstr "" + +#: ../source/overview.rst:180 +msgid "" +"Some types of Python applications, like web site backends and other network " +"services, are common enough that they have frameworks to enable their " +"development and packaging. Other types of applications, like dynamic web " +"frontends and mobile clients, are complex enough to target that a framework " +"becomes more than a convenience." +msgstr "" + +#: ../source/overview.rst:186 +msgid "" +"In all these cases, it makes sense to work backwards, from the framework's " +"packaging and deployment story. Some frameworks include a deployment system " +"which wraps the technologies outlined in the rest of the guide. In these " +"cases, you'll want to defer to your framework's packaging guide for the " +"easiest and most reliable production experience." +msgstr "" + +#: ../source/overview.rst:192 +msgid "" +"If you ever wonder how these platforms and frameworks work under the hood, " +"you can always read the sections beyond." +msgstr "" + +#: ../source/overview.rst:196 +msgid "Service platforms" +msgstr "" + +#: ../source/overview.rst:198 +msgid "" +"If you're developing for a \"`Platform-as-a-Service `_\" or \"PaaS\", you are going " +"to want to follow their respective packaging guides. These types of " +"platforms take care of packaging and deployment, as long as you follow their " +"patterns. Most software does not fit one of these templates, hence the " +"existence of all the other options below." +msgstr "" + +#: ../source/overview.rst:205 +msgid "" +"If you're developing software that will be deployed to machines you own, " +"users' personal computers, or any other arrangement, read on." +msgstr "" + +#: ../source/overview.rst:209 +msgid "Web browsers and mobile applications" +msgstr "" + +#: ../source/overview.rst:211 +msgid "" +"Python's steady advances are leading it into new spaces. These days you can " +"write a mobile app or web application frontend in Python. While the language " +"may be familiar, the packaging and deployment practices are brand new." +msgstr "" + +#: ../source/overview.rst:216 +msgid "" +"If you're planning on releasing to these new frontiers, you'll want to check " +"out the following frameworks, and refer to their packaging guides:" +msgstr "" + +#: ../source/overview.rst:220 +msgid "`Kivy `_" +msgstr "" + +#: ../source/overview.rst:221 +msgid "`Beeware `_" +msgstr "" + +#: ../source/overview.rst:222 +msgid "`Brython `_" +msgstr "" + +#: ../source/overview.rst:223 +msgid "`Flexx `_" +msgstr "" + +#: ../source/overview.rst:225 +msgid "" +"If you are *not* interested in using a framework or platform, or just wonder " +"about some of the technologies and techniques utilized by the frameworks " +"above, continue reading below." +msgstr "" + +#: ../source/overview.rst:230 +msgid "Depending on a pre-installed Python" +msgstr "" + +#: ../source/overview.rst:232 +msgid "" +"Pick an arbitrary computer, and depending on the context, there's a very " +"good chance Python is already installed. Included by default in most Linux " +"and Mac operating systems for many years now, you can reasonably depend on " +"Python preexisting in your data centers or on the personal machines of " +"developers and data scientists." +msgstr "" + +#: ../source/overview.rst:238 +msgid "Technologies which support this model:" +msgstr "" + +#: ../source/overview.rst:240 +msgid ":gh:`PEX ` (Python EXecutable)" +msgstr "" + +#: ../source/overview.rst:241 +msgid "" +":doc:`zipapp ` (does not help manage dependencies, " +"requires Python 3.5+)" +msgstr "" + +#: ../source/overview.rst:242 +msgid ":gh:`shiv ` (requires Python 3)" +msgstr "" + +#: ../source/overview.rst:244 +msgid "" +"Of all the approaches here, depending on a pre-installed Python relies the " +"most on the target environment. Of course, this also makes for the smallest " +"package, as small as single-digit megabytes, or even kilobytes." +msgstr "" + +#: ../source/overview.rst:249 +msgid "" +"In general, decreasing the dependency on the target system increases the " +"size of our package, so the solutions here are roughly arranged by " +"increasing size of output." +msgstr "" + +#: ../source/overview.rst:256 +msgid "Depending on a separate software distribution ecosystem" +msgstr "" + +#: ../source/overview.rst:258 +msgid "" +"For a long time many operating systems, including Mac and Windows, lacked " +"built-in package management. Only recently did these OSes gain so-called " +"\"app stores\", but even those focus on consumer applications and offer " +"little for developers." +msgstr "" + +#: ../source/overview.rst:263 +msgid "" +"Developers long sought remedies, and in this struggle, emerged with their " +"own package management solutions, such as `Homebrew `_. " +"The most relevant alternative for Python developers is a package ecosystem " +"called `Anaconda `_. Anaconda is built around Python and is " +"increasingly common in academic, analytical, and other data-oriented " +"environments, even making its way `into server-oriented environments " +"`_." +msgstr "" + +#: ../source/overview.rst:273 +msgid "Instructions on building and publishing for the Anaconda ecosystem:" +msgstr "" + +#: ../source/overview.rst:275 +msgid "" +"`Building libraries and applications with conda `_" +msgstr "" + +#: ../source/overview.rst:276 +msgid "" +"`Transitioning a native Python package to Anaconda `_" +msgstr "" + +#: ../source/overview.rst:278 +msgid "" +"A similar model involves installing an alternative Python distribution, but " +"does not support arbitrary operating system-level packages:" +msgstr "" + +#: ../source/overview.rst:282 +msgid "" +"`ActiveState ActivePython `_" +msgstr "" + +#: ../source/overview.rst:283 +msgid "`WinPython `_" +msgstr "" + +#: ../source/overview.rst:288 +msgid "Bringing your own Python executable" +msgstr "" + +#: ../source/overview.rst:290 +msgid "" +"Computing as we know it is defined by the ability to execute programs. Every " +"operating system natively supports one or more formats of programs they can " +"natively execute." +msgstr "" + +#: ../source/overview.rst:294 +msgid "" +"There are many techniques and technologies which turn your Python program " +"into one of these formats, most of which involve embedding the Python " +"interpreter and any other dependencies into a single executable file." +msgstr "" + +#: ../source/overview.rst:299 +msgid "" +"This approach, called *freezing*, offers wide compatibility and seamless " +"user experience, though often requires multiple technologies, and a good " +"amount of effort." +msgstr "" + +#: ../source/overview.rst:303 +msgid "A selection of Python freezers:" +msgstr "" + +#: ../source/overview.rst:305 +msgid "" +"`pyInstaller `_ - Cross-" +"platform" +msgstr "" + +#: ../source/overview.rst:306 +msgid "" +"`cx_Freeze `_ - Cross-platform" +msgstr "" + +#: ../source/overview.rst:307 +msgid "" +"`constructor `_ - For command-line " +"installers" +msgstr "" + +#: ../source/overview.rst:308 +msgid "`py2exe `_ - Windows only" +msgstr "" + +#: ../source/overview.rst:309 +msgid "`py2app `_ - Mac only" +msgstr "" + +#: ../source/overview.rst:310 +msgid "`osnap `_ - Windows and Mac" +msgstr "" + +#: ../source/overview.rst:311 +msgid "`pynsist `_ - Windows only" +msgstr "" + +#: ../source/overview.rst:313 +msgid "" +"Most of the above imply single-user deployments. For multi-component server " +"applications, see :gh:`Chef Omnibus `." +msgstr "" + +#: ../source/overview.rst:319 +msgid "Bringing your own userspace" +msgstr "" + +#: ../source/overview.rst:321 +msgid "" +"An increasing number of operating systems -- including Linux, Mac OS, and " +"Windows -- can be set up to run applications packaged as lightweight images, " +"using a relatively modern arrangement often referred to as `operating-system-" +"level virtualization `_, or *containerization*." +msgstr "" + +#: ../source/overview.rst:328 +msgid "" +"These techniques are mostly Python agnostic, because they package whole OS " +"filesystems, not just Python or Python packages." +msgstr "" + +#: ../source/overview.rst:331 +msgid "" +"Adoption is most extensive among Linux servers, where the technology " +"originated and where the technologies below work best:" +msgstr "" + +#: ../source/overview.rst:334 +msgid "`AppImage `_" +msgstr "" + +#: ../source/overview.rst:335 +msgid "`Docker `_" +msgstr "" + +#: ../source/overview.rst:336 +msgid "`Flatpak `_" +msgstr "" + +#: ../source/overview.rst:337 +msgid "`Snapcraft `_" +msgstr "" + +#: ../source/overview.rst:340 +msgid "Bringing your own kernel" +msgstr "" + +#: ../source/overview.rst:342 +msgid "" +"Most desktop operating systems support some form of classical " +"virtualization, running applications packaged as images containing a full " +"operating system of their own. Running these virtual machines, or VMs, is a " +"mature approach, widespread in data center environments." +msgstr "" + +#: ../source/overview.rst:347 +msgid "" +"These techniques are mostly reserved for larger scale deployments in data " +"centers, though certain complex applications can benefit from this " +"packaging. The technologies are Python agnostic, and include:" +msgstr "" + +#: ../source/overview.rst:351 +msgid "KVM on Linux" +msgstr "" + +#: ../source/overview.rst:352 +msgid "Hyper-V on Windows" +msgstr "" + +#: ../source/overview.rst:353 +msgid "" +"`VHD `_, `AMI `_, and :doc:`other formats " +"`" +msgstr "" + +#: ../source/overview.rst:356 +msgid "" +"`OpenStack `_ - A cloud " +"management system written in Python, with extensive VM support" +msgstr "" + +#: ../source/overview.rst:360 +msgid "Bringing your own hardware" +msgstr "" + +#: ../source/overview.rst:362 +msgid "" +"The most all-encompassing way to ship your software would be to ship it " +"already-installed on some hardware. This way, your software's user would " +"require only electricity." +msgstr "" + +#: ../source/overview.rst:366 +msgid "" +"Whereas the virtual machines described above are primarily reserved for the " +"tech-savvy, you can find hardware appliances being used by everyone from the " +"most advanced data centers to the youngest children." +msgstr "" + +#: ../source/overview.rst:370 +msgid "" +"Embed your code on an :gh:`Adafruit `, `MicroPython " +"`_, or more-powerful hardware running Python, then " +"ship it to the datacenter or your users' homes. They plug and play, and you " +"can call it a day." +msgstr "" + +#: ../source/overview.rst:379 +msgid "A summary of technologies used to package Python applications." +msgstr "" + +#: ../source/overview.rst:379 +msgid "" +"The simplified gamut of technologies used to package Python applications." +msgstr "" + +#: ../source/overview.rst:382 +msgid "What about..." +msgstr "" + +#: ../source/overview.rst:384 +msgid "" +"The sections above can only summarize so much, and you might be wondering " +"about some of the more conspicuous gaps." +msgstr "" + +#: ../source/overview.rst:388 +msgid "Operating system packages" +msgstr "" + +#: ../source/overview.rst:390 +msgid "" +"As mentioned in :ref:`depending-on-a-separate-ecosystem` above, some " +"operating systems have package managers of their own. If you're very sure of " +"the operating system you're targeting, you can depend directly on a format " +"like `deb `_ (for Debian, " +"Ubuntu, etc.) or `RPM `_ " +"(for Red Hat, Fedora, etc.), and use that built-in package manager to take " +"care of installation, and even deployment. You can even use `FPM `_ to generate " +"both deb and RPMs from the same source." +msgstr "" + +#: ../source/overview.rst:401 +msgid "" +"In most deployment pipelines, the OS package manager is just one piece of " +"the puzzle." +msgstr "" + +#: ../source/overview.rst:407 +msgid "" +":doc:`Virtualenvs ` have been an indispensable " +"tool for multiple generations of Python developer, but are slowly fading " +"from view, as they are being wrapped by higher-level tools. With packaging " +"in particular, virtualenvs are used as a primitive in :doc:`the dh-" +"virtualenv tool ` and `osnap `_, both of which wrap virtualenvs in a self-contained way." +msgstr "" + +#: ../source/overview.rst:416 +msgid "" +"For production deployments, do not rely on running ``python -m pip install`` " +"from the Internet into a virtualenv, as one might do in a development " +"environment. The overview above is full of much better solutions." +msgstr "" + +#: ../source/overview.rst:421 +msgid "Security" +msgstr "" + +#: ../source/overview.rst:423 +msgid "" +"The further down the gradient you come, the harder it gets to update " +"components of your package. Everything is more tightly bound together." +msgstr "" + +#: ../source/overview.rst:426 +msgid "" +"For example, if a kernel security issue emerges, and you're deploying " +"containers, the host system's kernel can be updated without requiring a new " +"build on behalf of the application. If you deploy VM images, you'll need a " +"new build. Whether or not this dynamic makes one option more secure is still " +"a bit of an old debate, going back to the still-unsettled matter of `static " +"versus dynamic linking `_." +msgstr "" + +#: ../source/overview.rst:435 +msgid "Wrap up" +msgstr "" + +#: ../source/overview.rst:437 +msgid "" +"Packaging in Python has a bit of a reputation for being a bumpy ride. This " +"impression is mostly a byproduct of Python's versatility. Once you " +"understand the natural boundaries between each packaging solution, you begin " +"to realize that the varied landscape is a small price Python programmers pay " +"for using one of the most balanced, flexible languages available." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:7 +msgid "Binary distribution format" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:9 +msgid "" +"This page specifies the binary distribution format for Python packages, also " +"called the wheel format." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:12 +msgid "" +"A wheel is a ZIP-format archive with a specially formatted file name and the " +"``.whl`` extension. It contains a single distribution nearly as it would be " +"installed according to PEP 376 with a particular installation scheme. " +"Although a specialized installer is recommended, a wheel file may be " +"installed by simply unpacking into site-packages with the standard 'unzip' " +"tool while preserving enough information to spread its contents out onto " +"their final paths at any later time." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:22 +msgid "Details" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:25 +msgid "Installing a wheel 'distribution-1.0-py32-none-any.whl'" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:27 +msgid "Wheel installation notionally consists of two phases:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:29 +msgid "Unpack." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:31 +msgid "Parse ``distribution-1.0.dist-info/WHEEL``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:32 +msgid "" +"Check that installer is compatible with Wheel-Version. Warn if minor " +"version is greater, abort if major version is greater." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:34 +msgid "" +"If Root-Is-Purelib == 'true', unpack archive into purelib (site-packages)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:36 +msgid "Else unpack archive into platlib (site-packages)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:38 +msgid "Spread." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:40 +msgid "" +"Unpacked archive includes ``distribution-1.0.dist-info/`` and (if there is " +"data) ``distribution-1.0.data/``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:42 +msgid "" +"Move each subtree of ``distribution-1.0.data/`` onto its destination path. " +"Each subdirectory of ``distribution-1.0.data/`` is a key into a dict of " +"destination directories, such as ``distribution-1.0.data/(purelib|platlib|" +"headers|scripts|data)``. These subdirectories are :ref:`installation paths " +"defined by sysconfig `." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:48 +msgid "" +"If applicable, update scripts starting with ``#!python`` to point to the " +"correct interpreter." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:50 +msgid "Update ``distribution-1.0.dist-info/RECORD`` with the installed paths." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:52 +msgid "Remove empty ``distribution-1.0.data`` directory." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:53 +msgid "" +"Compile any installed .py to .pyc. (Uninstallers should be smart enough to " +"remove .pyc even if it is not mentioned in RECORD.)" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:57 +msgid "Recommended installer features" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:67 +msgid "Rewrite ``#!python``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:60 +msgid "" +"In wheel, scripts are packaged in ``{distribution}-{version}.data/scripts/" +"``. If the first line of a file in ``scripts/`` starts with exactly ``b'#!" +"python'``, rewrite to point to the correct interpreter. Unix installers may " +"need to add the +x bit to these files if the archive was created on Windows." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:66 +msgid "" +"The ``b'#!pythonw'`` convention is allowed. ``b'#!pythonw'`` indicates a GUI " +"script instead of a console script." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:72 +msgid "Generate script wrappers." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:70 +msgid "" +"In wheel, scripts packaged on Unix systems will certainly not have " +"accompanying .exe wrappers. Windows installers may want to add them during " +"install." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:75 +msgid "Recommended archiver features" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:82 +msgid "Place ``.dist-info`` at the end of the archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:78 +msgid "" +"Archivers are encouraged to place the ``.dist-info`` files physically at the " +"end of the archive. This enables some potentially interesting ZIP tricks " +"including the ability to amend the metadata without rewriting the entire " +"archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:85 +#: ../source/specifications/pylock-toml.rst:51 +msgid "File Format" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:90 +msgid "File name convention" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:92 +msgid "" +"The wheel filename is ``{distribution}-{version}(-{build tag})?-{python tag}-" +"{abi tag}-{platform tag}.whl``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:96 +msgid "distribution" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:96 +msgid "Distribution name, e.g. 'django', 'pyramid'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:99 +msgid "version" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:99 +msgid "Distribution version, e.g. 1.0." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:124 +msgid "build tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:102 +msgid "" +"Optional build number. Must start with a digit. Acts as a tie-breaker if " +"two wheel file names are the same in all other respects (i.e. name, version, " +"and other tags). Sort as an empty tuple if unspecified, else sort as a two-" +"item tuple with the first item being the initial digits as an ``int``, and " +"the second item being the remainder of the tag as a ``str``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:109 +msgid "" +"A common use-case for build numbers is rebuilding a binary distribution due " +"to a change in the build environment, like when using the manylinux image to " +"build distributions using pre-release CPython versions." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:116 +msgid "" +"Build numbers are not a part of the distribution version and thus are " +"difficult to reference externally, especially so outside the Python " +"ecosystem of tools and standards. A common case where a distribution would " +"need to referenced externally is when resolving a security vulnerability." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:121 +msgid "" +"Due to this limitation, new distributions which need to be referenced " +"externally **should not** use build numbers when building the new " +"distribution. Instead a **new distribution version** should be created for " +"such cases." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:127 +msgid "language implementation and version tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:127 +msgid "E.g. 'py27', 'py2', 'py3'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:130 +#: ../source/specifications/platform-compatibility-tags.rst:20 +msgid "abi tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:130 +msgid "E.g. 'cp33m', 'abi3', 'none'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:133 +#: ../source/specifications/platform-compatibility-tags.rst:23 +msgid "platform tag" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:133 +msgid "E.g. 'linux_x86_64', 'any'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:135 +msgid "" +"For example, ``distribution-1.0-1-py27-none-any.whl`` is the first build of " +"a package called 'distribution', and is compatible with Python 2.7 (any " +"Python 2.7 implementation), with no ABI (pure Python), on any CPU " +"architecture." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:140 +msgid "" +"The last three components of the filename before the extension are called " +"\"compatibility tags.\" The compatibility tags express the package's basic " +"interpreter requirements and are detailed in PEP 425." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:145 +msgid "Escaping and Unicode" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:147 +msgid "" +"As the components of the filename are separated by a dash (``-``, HYPHEN-" +"MINUS), this character cannot appear within any component. This is handled " +"as follows:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:150 +msgid "" +"In distribution names, any run of ``-_.`` characters (HYPHEN-MINUS, LOW LINE " +"and FULL STOP) should be replaced with ``_`` (LOW LINE), and uppercase " +"characters should be replaced with corresponding lowercase ones. This is " +"equivalent to regular :ref:`name normalization ` " +"followed by replacing ``-`` with ``_``. Tools consuming wheels must be " +"prepared to accept ``.`` (FULL STOP) and uppercase letters, however, as " +"these were allowed by an earlier version of this specification." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:157 +msgid "" +"Version numbers should be normalised according to the :ref:`Version " +"specifier specification `. Normalised version numbers " +"cannot contain ``-``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:159 +msgid "" +"The remaining components may not contain ``-`` characters, so no escaping is " +"necessary." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:162 +msgid "" +"Tools producing wheels should verify that the filename components do not " +"contain ``-``, as the resulting file may not be processed correctly if they " +"do." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:165 +msgid "" +"The archive filename is Unicode. It will be some time before the tools are " +"updated to support non-ASCII filenames, but they are supported in this " +"specification." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:169 +msgid "" +"The filenames *inside* the archive are encoded as UTF-8. Although some ZIP " +"clients in common use do not properly display UTF-8 filenames, the encoding " +"is supported by both the ZIP specification and Python's ``zipfile``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:175 +msgid "File contents" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:177 +msgid "" +"The contents of a wheel file, where {distribution} is replaced with " +"the :ref:`normalized name ` of the package, e.g. " +"``beaglevote`` and {version} is replaced with its :ref:`normalized version " +"`, e.g. ``1.0.0``, (with dash/``-`` " +"characters replaced with underscore/``_`` characters in both fields) consist " +"of:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:184 +msgid "" +"``/``, the root of the archive, contains all files to be installed in " +"``purelib`` or ``platlib`` as specified in ``WHEEL``. ``purelib`` and " +"``platlib`` are usually both ``site-packages``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:187 +msgid "``{distribution}-{version}.dist-info/`` contains metadata." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:188 +msgid "" +":file:`{distribution}-{version}.dist-info/licenses/` contains license files." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:189 +msgid "" +"``{distribution}-{version}.data/`` contains one subdirectory for each non-" +"empty install scheme key not already covered, where the subdirectory name is " +"an index into a dictionary of install paths (e.g. ``data``, ``scripts``, " +"``headers``, ``purelib``, ``platlib``)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:193 +msgid "" +"Python scripts must appear in ``scripts`` and begin with exactly ``b'#!" +"python'`` in order to enjoy script wrapper generation and ``#!python`` " +"rewriting at install time. They may have any or no extension. The " +"``scripts`` directory may only contain regular files." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:197 +msgid "" +"``{distribution}-{version}.dist-info/METADATA`` is Metadata version 1.1 or " +"greater format metadata." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:199 +msgid "" +"``{distribution}-{version}.dist-info/WHEEL`` is metadata about the archive " +"itself in the same basic key: value format::" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:209 +msgid "``Wheel-Version`` is the version number of the Wheel specification." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:210 +msgid "" +"``Generator`` is the name and optionally the version of the software that " +"produced the archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:212 +msgid "" +"``Root-Is-Purelib`` is true if the top level directory of the archive should " +"be installed into purelib; otherwise the root should be installed into " +"platlib." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:215 +msgid "" +"``Tag`` is the wheel's expanded compatibility tags; in the example the " +"filename would contain ``py2.py3-none-any``." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:217 +msgid "" +"``Build`` is the build number and is omitted if there is no build number." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:218 +msgid "" +"A wheel installer should warn if Wheel-Version is greater than the version " +"it supports, and must fail if Wheel-Version has a greater major version than " +"the version it supports." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:221 +msgid "" +"Wheel, being an installation format that is intended to work across multiple " +"versions of Python, does not generally include .pyc files." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:223 +msgid "Wheel does not contain setup.py or setup.cfg." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:225 +msgid "" +"This version of the wheel specification is based on the distutils install " +"schemes and does not define how to install files to other locations. The " +"layout offers a superset of the functionality provided by the existing " +"wininst and egg binary formats." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:232 +#: ../source/specifications/recording-installed-packages.rst:23 +msgid "The .dist-info directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:234 +msgid "" +"Wheel .dist-info directories include at a minimum METADATA, WHEEL, and " +"RECORD." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:236 +msgid "" +"METADATA is the package metadata, the same format as PKG-INFO as found at " +"the root of sdists." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:238 +msgid "WHEEL is the wheel metadata specific to a build of the package." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:239 +msgid "" +"RECORD is a list of (almost) all the files in the wheel and their secure " +"hashes. Unlike PEP 376, every file except RECORD, which cannot contain a " +"hash of itself, must include its hash. The hash algorithm must be sha256 or " +"better; specifically, md5 and sha1 are not permitted." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:244 +msgid "PEP 376's INSTALLER and REQUESTED are not included in the archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:245 +msgid "" +"RECORD.jws and RECORD.p7s are deprecated. Where they are still used, " +"neither RECORD.jws nor RECORD.p7s are mentioned in RECORD. Build backends " +"and other tools must not add them to wheels anymore, installers should be " +"aware that these files may still be part of some wheels." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:250 +msgid "" +"During extraction, wheel installers verify all the hashes in RECORD against " +"the file contents. Apart from RECORD, RECORD.jws and RECORD.p7s, " +"installation will fail if any file in the archive is not both mentioned and " +"correctly hashed in RECORD." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:256 +msgid "Subdirectories in :file:`.dist-info/`" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:258 +msgid "" +"Subdirectories under :file:`.dist-info/` are reserved for future use. The " +"following subdirectory names under :file:`.dist-info/` are reserved for " +"specific usage:" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:262 +msgid "Subdirectory name" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:262 +msgid "PEP / Standard" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:264 +msgid "``licenses``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:264 +#: ../source/specifications/binary-distribution-format.rst:265 +msgid ":pep:`639`" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:265 +msgid "``license_files``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:266 +msgid "``LICENSES``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:266 +msgid "`REUSE licensing framework `__" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:267 +msgid "``sboms``" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:267 +msgid ":pep:`770`" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:271 +msgid "The :file:`.dist-info/licenses/` directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:273 +msgid "" +"If the metadata version is 2.4 or greater and one or more ``License-File`` " +"fields is specified, the :file:`.dist-info/` directory MUST contain " +"a :file:`licenses/` subdirectory, which MUST contain the files listed in the " +"``License-File`` fields in the :file:`METADATA` file at their respective " +"paths relative to the :file:`licenses/` directory." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:280 +msgid "The :file:`.dist-info/sboms/` directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:282 +msgid "" +"All files contained within the :file:`.dist-info/sboms/` directory MUST be " +"Software Bill-of-Materials (SBOM) files that describe software contained " +"within the distribution archive." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:287 +msgid "The .data directory" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:289 +msgid "" +"Any file that is not normally installed inside site-packages goes into " +"the .data directory, named as the .dist-info directory but with the .data/ " +"extension::" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:297 +msgid "" +"The .data directory contains subdirectories with the scripts, headers, " +"documentation and so forth from the distribution. During installation the " +"contents of these subdirectories are moved onto their destination paths." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:303 +#: ../source/specifications/platform-compatibility-tags.rst:376 +msgid "FAQ" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:307 +msgid "Wheel defines a .data directory. Should I put all my data there?" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:309 +msgid "" +"This specification does not have an opinion on how you should organize your " +"code. The .data directory is just a place for any files that are not " +"normally installed inside ``site-packages`` or on the PYTHONPATH. In other " +"words, you may continue to use ``pkgutil.get_data(package, resource)`` even " +"though *those* files will usually not be distributed in *wheel's* ``.data`` " +"directory." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:318 +msgid "What's the deal with \"purelib\" vs. \"platlib\"?" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:320 +msgid "" +"Wheel preserves the \"purelib\" vs. \"platlib\" distinction, which is " +"significant on some platforms. For example, Fedora installs pure Python " +"packages to '/usr/lib/pythonX.Y/site-packages' and platform dependent " +"packages to '/usr/lib64/pythonX.Y/site-packages'." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:325 +msgid "" +"A wheel with \"Root-Is-Purelib: false\" with all its files in ``{name}-" +"{version}.data/purelib`` is equivalent to a wheel with \"Root-Is-Purelib: " +"true\" with those same files in the root, and it is legal to have files in " +"both the \"purelib\" and \"platlib\" categories." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:330 +msgid "" +"In practice a wheel should have only one of \"purelib\" or \"platlib\" " +"depending on whether it is pure Python or not and those files should be at " +"the root with the appropriate setting given for \"Root-is-purelib\"." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:338 +msgid "Is it possible to import Python code directly from a wheel file?" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:340 +msgid "" +"Technically, due to the combination of supporting installation via simple " +"extraction and using an archive format that is compatible with " +"``zipimport``, a subset of wheel files *do* support being placed directly on " +"``sys.path``. However, while this behaviour is a natural consequence of the " +"format design, actually relying on it is generally discouraged." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:346 +msgid "" +"Firstly, wheel *is* designed primarily as a distribution format, so skipping " +"the installation step also means deliberately avoiding any reliance on " +"features that assume full installation (such as being able to use standard " +"tools like ``pip`` and ``virtualenv`` to capture and manage dependencies in " +"a way that can be properly tracked for auditing and security update " +"purposes, or integrating fully with the standard build machinery for C " +"extensions by publishing header files in the appropriate place)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:355 +msgid "" +"Secondly, while some Python software is written to support running directly " +"from a zip archive, it is still common for code to be written assuming it " +"has been fully installed. When that assumption is broken by trying to run " +"the software from a zip archive, the failures can often be obscure and hard " +"to diagnose (especially when they occur in third party libraries). The two " +"most common sources of problems with this are the fact that importing C " +"extensions from a zip archive is *not* supported by CPython (since doing so " +"is not supported directly by the dynamic loading machinery on any platform) " +"and that when running from a zip archive the ``__file__`` attribute no " +"longer refers to an ordinary filesystem path, but to a combination path that " +"includes both the location of the zip archive on the filesystem and the " +"relative path to the module inside the archive. Even when software correctly " +"uses the abstract resource APIs internally, interfacing with external " +"components may still require the availability of an actual on-disk file." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:372 +msgid "" +"Like metaclasses, monkeypatching and metapath importers, if you're not " +"already sure you need to take advantage of this feature, you almost " +"certainly don't need it. If you *do* decide to use it anyway, be aware that " +"many projects will require a failure to be reproduced with a fully installed " +"package before accepting it as a genuine bug." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:380 +#: ../source/specifications/core-metadata.rst:1035 +#: ../source/specifications/dependency-groups.rst:250 +#: ../source/specifications/dependency-specifiers.rst:516 +#: ../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 +#: ../source/specifications/glob-patterns.rst:118 +#: ../source/specifications/inline-script-metadata.rst:213 +#: ../source/specifications/name-normalization.rst:50 +#: ../source/specifications/platform-compatibility-tags.rst:440 +#: ../source/specifications/pylock-toml.rst:841 +#: ../source/specifications/pyproject-toml.rst:632 +#: ../source/specifications/recording-installed-packages.rst:278 +#: ../source/specifications/simple-repository-api.rst:974 +#: ../source/specifications/source-distribution-format.rst:153 +#: ../source/specifications/version-specifiers.rst:1285 +#: ../source/specifications/virtual-environments.rst:54 +msgid "History" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:382 +msgid "February 2013: This specification was approved through :pep:`427`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:383 +msgid "" +"February 2021: The rules on escaping in wheel filenames were revised, to " +"bring them into line with what popular tools actually do." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:385 +msgid "" +"December 2024: Clarified that the ``scripts`` folder should only contain " +"regular files (the expected behaviour of consuming tools when encountering " +"symlinks or subdirectories in this folder is not formally defined, and hence " +"may vary between tools)." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:389 +#: ../source/specifications/recording-installed-packages.rst:288 +msgid "" +"December 2024: The :file:`.dist-info/licenses/` directory was specified " +"through :pep:`639`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:391 +msgid "" +"January 2025: Clarified that name and version needs to be normalized for " +"``.dist-info`` and ``.data`` directories." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:393 +msgid "January 2026: Deprecate RECORD.jws and RECORD.p7s :pep:`815`." +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:397 +msgid "Appendix" +msgstr "" + +#: ../source/specifications/binary-distribution-format.rst:399 +msgid "Example urlsafe-base64-nopad implementation::" +msgstr "" + +#: ../source/specifications/build-details/index.rst:7 +#: ../source/specifications/build-details/index.rst:41 +msgid "v1.0" +msgstr "" + +#: ../source/specifications/build-details/index.rst:5 +msgid ":file:`build-details.json`" +msgstr "" + +#: ../source/specifications/build-details/index.rst:13 +msgid "" +"The ``build-details.json`` file is a standardized file format that provides " +"build-specfic information of a Python installation, such as its version, " +"extension ABI details, and other information that is specific to that " +"particular build of Python." +msgstr "" + +#: ../source/specifications/build-details/index.rst:18 +msgid "" +"Starting from Python 3.14, a ``build-details.json`` file is installed in the " +"platform-independent standard library directory (``stdlib``, e.g. ``/usr/lib/" +"python3.14/build-details.json``)." +msgstr "" + +#: ../source/specifications/build-details/index.rst:22 +msgid "" +"Please refer to the :ref:`latest version ` for its " +"specification." +msgstr "" + +#: ../source/specifications/build-details/index.rst:28 +#: ../source/specifications/build-details/v1.0.rst:16 +#: ../source/specifications/inline-script-metadata.rst:100 +#: ../source/specifications/pylock-toml.rst:737 +msgid "Example" +msgstr "" + +#: ../source/specifications/build-details/index.rst:35 +msgid "Changelog" +msgstr "" + +#: ../source/specifications/build-details/index.rst:45 +#: ../source/specifications/build-details/v1.0.rst:9 +#: ../source/specifications/dependency-groups.rst:20 +#: ../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 "" + +#: ../source/specifications/build-details/index.rst:46 +msgid ":ref:`build-details-v1.0`" +msgstr "" + +#: ../source/specifications/build-details/index.rst:48 +msgid "Schema" +msgstr "" + +#: ../source/specifications/build-details/index.rst:49 +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"https://packaging.python.org/en/latest/specifications/schemas/build-details-" +"v1.0.schema.json" +msgstr "" + +#: ../source/specifications/build-details/index.rst:52 +msgid "Initial version, introduced by :pep:`739`." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:5 +msgid "``build-details.json`` v1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"*build-details.json — a static description file with build details of Python " +"installations*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "type" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*object*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "properties" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**schema\\_version**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Schema version." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This is a string following the format ``.``, where ```` " +"and ```` are unpaded numbers and represent the **major** and " +"**minor** components of the version. Versions may be arithmetically compared " +"by intrepreting the version string as a decimal number." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"For this specification version, this value is constant and **MUST** be " +"``1.0``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Future versions of this schema **MUST** use a higher version number. Future " +"versions of this schema **MUST NOT** use the same **major** version " +"component as other schema version unless its specification is deemed " +"backwards-compatible with them — it can't change, or extend, any parts of " +"the current specification in such a way as the semantics of the interpreted " +"data differ, or that data valid under the new specification is invalid under " +"the older specification, with the exception of additional properties (errors " +"caused by ``additionalProperties``)." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*string*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "const" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**base\\_prefix**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Base prefix of the Python installation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Either an absolute path, or a path relative to directory where this file is " +"contained." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "examples" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "../.." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "base\\_interpreter" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the Python interprer of the base installation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Either an absolute path, or a path relative to ``base_prefix``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the installation provides an interpreter " +"executable." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/bin/python" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "bin/python" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**platform**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "System platform string." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "This field **SHOULD** be equivalent to ``sysconfig.get_platform()``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "linux-x86\\_64" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**language**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to the Python language specification." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**version**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"String representation the Python language version — a version string " +"consisting only of the *major* and *minor* components." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **SHOULD** be equivalent to ``sysconfig.get_python_version()``." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "3.14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "version\\_info" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object in the format of :py:data:`sys.version_info`." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "This section **SHOULD** be equivalent to :py:data:`sys.version_info`." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "major" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "3" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "minor" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "micro" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "1" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "releaselevel" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "final" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "serial" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**major**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*number*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**minor**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**micro**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**releaselevel**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "enum" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "alpha, beta, candidate, final" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**serial**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "additionalProperties" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "False" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**implementation**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to Python implementation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **SHOULD** be equivalent to :py:data:`sys.implementation`. It " +"follows specification defined in PEP 421, meaning that on top of the " +"required keys, implementation-specific keys can also exist, but must be " +"prefixed with an underscore." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**name**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Lower-case name of the Python implementation." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "cpython" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "pypy" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Object in the format of :py:data:`sys.version_info`, containing the " +"implementation version." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "7" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "16" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "True" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "abi" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to ABI." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**flags**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Build configuration flags, used to calculate the extension suffix." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"The flags **MUST** be defined in the order they appear on the extension " +"suffix." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*array*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "t" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "d" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "extension\\_suffix" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Suffix used for extensions built against the current implementation version." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python implementation supports " +"extensions, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".cpython-314-x86\\_64-linux-gnu.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "stable\\_abi\\_suffix" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Suffix used for extensions built against the stable ABI." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python implementation has a stable ABI " +"extension suffix, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".abi3.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "suffixes" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Valid module suffixes grouped by type." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **MUST** be present if the Python installation supports " +"importing external files, and it **SHOULD** be equivalent to the " +"``importlib.machinery.*_SUFFIXES`` attributes." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"Additionally, if a Python implementation provides extension kinds other than " +"the ones listed on ``importlib.machinery`` module, they **MAY** add a sub-" +"section for them." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "source" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".py" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "bytecode" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".pyc" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "optimized_bytecode" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "debug_bytecode" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "extensions" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".cpython-313-x86\\_64-linux-gnu.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid ".so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "libpython" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to the ``libpython`` library." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **MUST** by present if Python installation provides a " +"``libpython`` library, otherwise this section will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "dynamic" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the dynamic ``libpython`` library." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python installation provides a dynamic " +"``libpython`` library, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/libpython3.14.so.1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/libpython3.14.so.1.0" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "dynamic\\_stableabi" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the dynamic ``libpython`` library for the stable ABI." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python installation provides a dynamic " +"``libpython`` library targeting the Stable ABI, otherwise this entry will be " +"missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "If this key is present ``dynamic`` **MUST** also be set." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/libpython3.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/libpython3.so" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "static" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the static ``libpython`` library." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python installation provides a static " +"``libpython`` library, otherwise this entry will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/python3.14/config-3.14-x86\\_64-linux-gnu/libpython3.14.a" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/python3.14/config-3.14-x86\\_64-linux-gnu/libpython3.14.a" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "link\\_extensions" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Should extensions built against a dynamic ``libpython`` link to it?" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "*boolean*" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "c\\_api" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing details related to the Python C API." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This section **MUST** be present if the Python implementation provides a C " +"API, otherwise this section will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "**headers**" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the C API headers." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/include/python3.14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "include/python3.14" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "pkgconfig\\_path" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "The path to the pkg-config definition files." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This field **MUST** be present if the Python implementation provides pkg-" +"config definition files, otherwise this section will be missing." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "/usr/lib/pkgconfig" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "lib/pkgconfig" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "arbitrary\\_data" +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "Object containing extra arbitrary data." +msgstr "" + +#: ../source/specifications/build-details/v1.0.rst:12 +msgid "" +"This is meant to be used as an escape-hatch, to include any relevant data " +"that is not covered by this specification. Implementations may choose what " +"data to provide in this section." +msgstr "" + +#: ../source/specifications/core-metadata.rst:7 +msgid "Core metadata specifications" +msgstr "" + +#: ../source/specifications/core-metadata.rst:9 +msgid "This page describes version 2.5, approved in September 2025." +msgstr "" + +#: ../source/specifications/core-metadata.rst:11 +msgid "" +"Fields defined in the following specification should be considered valid, " +"complete and not subject to change. The required fields are:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:14 +msgid "``Metadata-Version``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:15 +msgid "``Name``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:16 +msgid "``Version``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:18 +msgid "All the other fields are optional." +msgstr "" + +#: ../source/specifications/core-metadata.rst:20 +msgid "" +"The standard file format for metadata (including in :doc:`wheels ` and :doc:`installed projects `) is based on the format of email headers. However, email formats " +"have been revised several times, and exactly which email RFC applies to " +"packaging metadata is not specified. In the absence of a precise definition, " +"the practical standard is set by what the standard " +"library :mod:`python:email.parser` module can parse using " +"the :data:`~.python:email.policy.compat32` policy." +msgstr "" + +#: ../source/specifications/core-metadata.rst:29 +msgid "" +"Whenever metadata is serialised to a byte stream (for example, to save to a " +"file), strings must be serialised using the UTF-8 encoding." +msgstr "" + +#: ../source/specifications/core-metadata.rst:32 +msgid "" +"Although :pep:`566` defined a way to transform metadata into a JSON-" +"compatible dictionary, this is not yet used as a standard interchange " +"format. The need for tools to work with years worth of existing packages " +"makes it difficult to shift to a new format." +msgstr "" + +#: ../source/specifications/core-metadata.rst:37 +msgid "" +"*Interpreting old metadata:* In :pep:`566`, the version specifier field " +"format specification was relaxed to accept the syntax used by popular " +"publishing tools (namely to remove the requirement that version specifiers " +"must be surrounded by parentheses). Metadata consumers may want to use the " +"more relaxed formatting rules even for metadata files that are nominally " +"less than version 2.1." +msgstr "" + +#: ../source/specifications/core-metadata.rst:48 +msgid "Metadata-Version" +msgstr "" + +#: ../source/specifications/core-metadata.rst:52 +msgid "" +"Version of the file format; legal values are \"1.0\", \"1.1\", \"1.2\", " +"\"2.1\", \"2.2\", \"2.3\", \"2.4\", and \"2.5\"." +msgstr "" + +#: ../source/specifications/core-metadata.rst:55 +msgid "" +"Automated tools consuming metadata SHOULD warn if ``metadata-version`` is " +"greater than the highest version they support, and MUST fail if ``metadata-" +"version`` has a greater major version than the highest version they support " +"(as described in the :ref:`Version specifier specification `, the major version is the value before the first dot)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:62 +msgid "" +"For broader compatibility, build tools MAY choose to produce distribution " +"metadata using the lowest metadata version that includes all of the needed " +"fields." +msgstr "" + +#: ../source/specifications/core-metadata.rst:66 +#: ../source/specifications/core-metadata.rst:84 +#: ../source/specifications/core-metadata.rst:101 +#: ../source/specifications/core-metadata.rst:176 +#: ../source/specifications/core-metadata.rst:191 +#: ../source/specifications/core-metadata.rst:229 +#: ../source/specifications/core-metadata.rst:301 +#: ../source/specifications/core-metadata.rst:305 +#: ../source/specifications/core-metadata.rst:309 +#: ../source/specifications/core-metadata.rst:313 +#: ../source/specifications/core-metadata.rst:345 +#: ../source/specifications/core-metadata.rst:367 +#: ../source/specifications/core-metadata.rst:385 +#: ../source/specifications/core-metadata.rst:410 +#: ../source/specifications/core-metadata.rst:432 +#: ../source/specifications/core-metadata.rst:658 +#: ../source/specifications/core-metadata.rst:693 +#: ../source/specifications/core-metadata.rst:703 +#: ../source/specifications/core-metadata.rst:932 +#: ../source/specifications/core-metadata.rst:1029 +msgid "Example::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:74 +msgid "Name" +msgstr "" + +#: ../source/specifications/core-metadata.rst:77 +msgid "Added restrictions on format from the :ref:`name format `." +msgstr "" + +#: ../source/specifications/core-metadata.rst:80 +msgid "" +"The name of the distribution. The name field is the primary identifier for a " +"distribution. It must conform to the :ref:`name format specification `." +msgstr "" + +#: ../source/specifications/core-metadata.rst:88 +msgid "" +"For comparison purposes, the names should be :ref:`normalized ` before comparing." +msgstr "" + +#: ../source/specifications/core-metadata.rst:93 +msgid "Version" +msgstr "" + +#: ../source/specifications/core-metadata.rst:97 +msgid "" +"A string containing the distribution's version number. This field must be " +"in the format specified in the :ref:`Version specifier specification " +"`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:109 +msgid "Dynamic (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:113 +msgid "" +"A string containing the name of another core metadata field. The field names " +"``Name``, ``Version``, and ``Metadata-Version`` may not be specified in this " +"field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:117 +msgid "" +"When found in the metadata of a source distribution, the following rules " +"apply:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:120 +msgid "" +"If a field is *not* marked as ``Dynamic``, then the value of the field in " +"any wheel built from the sdist MUST match the value in the sdist. If the " +"field is not in the sdist, and not marked as ``Dynamic``, then it MUST NOT " +"be present in the wheel." +msgstr "" + +#: ../source/specifications/core-metadata.rst:124 +msgid "" +"If a field is marked as ``Dynamic``, it may contain any valid value in a " +"wheel built from the sdist (including not being present at all)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:127 +msgid "" +"If the sdist metadata version is older than version 2.2, then all fields " +"should be treated as if they were specified with ``Dynamic`` (i.e. there are " +"no special restrictions on the metadata of wheels built from the sdist)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:131 +msgid "" +"In any context other than a source distribution, ``Dynamic`` is for " +"information only, and indicates that the field value was calculated at wheel " +"build time, and may not be the same as the value in the sdist or in other " +"wheels for the project." +msgstr "" + +#: ../source/specifications/core-metadata.rst:136 +msgid "" +"Note in particular that if you have obtained a prebuilt wheel, you cannot " +"assume that a field which is not marked as ``Dynamic`` will have the same " +"value in other wheels, as some wheels are not built directly from the sdist, " +"but are modified from existing wheels (the ``auditwheel`` tool does this, " +"for example, and it's commonly used when building wheels for PyPI). Such " +"modifications *could* include changing metadata (even non-dynamic " +"metadata). Similarly, if you have a sdist and a wheel which you didn't " +"build from that sdist, you cannot assume that the wheel's metadata matches " +"that of the sdist, even if the field is not marked as ``Dynamic``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:146 +msgid "" +"Full details of the semantics of ``Dynamic`` are described in :pep:`643`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:151 +msgid "Platform (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:155 +msgid "" +"A Platform specification describing an operating system supported by the " +"distribution which is not listed in the \"Operating System\" Trove " +"classifiers. See \"Classifier\" below." +msgstr "" + +#: ../source/specifications/core-metadata.rst:159 +#: ../source/specifications/core-metadata.rst:465 +#: ../source/specifications/core-metadata.rst:492 +#: ../source/specifications/core-metadata.rst:515 +#: ../source/specifications/core-metadata.rst:544 +#: ../source/specifications/core-metadata.rst:585 +#: ../source/specifications/core-metadata.rst:641 +#: ../source/specifications/core-metadata.rst:775 +#: ../source/specifications/core-metadata.rst:816 +#: ../source/specifications/core-metadata.rst:873 +#: ../source/specifications/core-metadata.rst:903 +#: ../source/specifications/core-metadata.rst:983 +#: ../source/specifications/core-metadata.rst:1005 +msgid "Examples::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:167 +msgid "Supported-Platform (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:171 +msgid "" +"Binary distributions containing a PKG-INFO file will use the Supported-" +"Platform field in their metadata to specify the OS and CPU for which the " +"binary distribution was compiled. The semantics of the Supported-Platform " +"field are not specified in this PEP." +msgstr "" + +#: ../source/specifications/core-metadata.rst:185 +msgid "Summary" +msgstr "" + +#: ../source/specifications/core-metadata.rst:189 +msgid "A one-line summary of what the distribution does." +msgstr "" + +#: ../source/specifications/core-metadata.rst:209 +msgid "This field may be specified in the message body instead." +msgstr "" + +#: ../source/specifications/core-metadata.rst:212 +msgid "" +"A longer description of the distribution that can run to several " +"paragraphs. Software that deals with metadata should not assume any maximum " +"size for this field, though people shouldn't include their instruction " +"manual as the description." +msgstr "" + +#: ../source/specifications/core-metadata.rst:217 +msgid "" +"The contents of this field can be written using reStructuredText markup " +"[1]_. For programs that work with the metadata, supporting markup is " +"optional; programs can also display the contents of the field as-is. This " +"means that authors should be conservative in the markup they use." +msgstr "" + +#: ../source/specifications/core-metadata.rst:223 +msgid "" +"To support empty lines and lines with indentation with respect to the RFC " +"822 format, any CRLF character has to be suffixed by 7 spaces followed by a " +"pipe (\"|\") char. As a result, the Description field is encoded into a " +"folded field that can be interpreted by RFC822 parser [2]_." +msgstr "" + +#: ../source/specifications/core-metadata.rst:240 +msgid "" +"This encoding implies that any occurrences of a CRLF followed by 7 spaces " +"and a pipe char have to be replaced by a single CRLF when the field is " +"unfolded using a RFC822 reader." +msgstr "" + +#: ../source/specifications/core-metadata.rst:244 +msgid "" +"Alternatively, the distribution's description may instead be provided in the " +"message body (i.e., after a completely blank line following the headers, " +"with no indentation or other special formatting necessary)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:253 +msgid "Description-Content-Type" +msgstr "" + +#: ../source/specifications/core-metadata.rst:257 +msgid "" +"A string stating the markup syntax (if any) used in the distribution's " +"description, so that tools can intelligently render the description." +msgstr "" + +#: ../source/specifications/core-metadata.rst:260 +msgid "" +"Historically, PyPI supported descriptions in plain text and " +"`reStructuredText (reST) `_, and could render reST into HTML. However, it is " +"common for distribution authors to write the description in `Markdown " +"`_ (:rfc:`7763`) as many code " +"hosting sites render Markdown READMEs, and authors would reuse the file for " +"the description. PyPI didn't recognize the format and so could not render " +"the description correctly. This resulted in many packages on PyPI with " +"poorly-rendered descriptions when Markdown is left as plain text, or worse, " +"was attempted to be rendered as reST. This field allows the distribution " +"author to specify the format of their description, opening up the " +"possibility for PyPI and other tools to be able to render Markdown and other " +"formats." +msgstr "" + +#: ../source/specifications/core-metadata.rst:273 +msgid "" +"The format of this field is the same as the ``Content-Type`` header in HTTP " +"(i.e.: `RFC 1341 `_). Briefly, this means that it has a ``type/subtype`` part and " +"then it can optionally have a number of parameters:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:279 +msgid "Format::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:283 +msgid "The ``type/subtype`` part has only a few legal values:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:285 +msgid "``text/plain``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:286 +msgid "``text/x-rst``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:287 +msgid "``text/markdown``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:289 +msgid "" +"The ``charset`` parameter can be used to specify the character encoding of " +"the description. The only legal value is ``UTF-8``. If omitted, it is " +"assumed to be ``UTF-8``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:293 +msgid "" +"Other parameters might be specific to the chosen subtype. For example, for " +"the ``markdown`` subtype, there is an optional ``variant`` parameter that " +"allows specifying the variant of Markdown in use (defaults to ``GFM`` if not " +"specified). Currently, two variants are recognized:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:298 +msgid "``GFM`` for :rfc:`GitHub-flavored Markdown <7764#section-3.2>`" +msgstr "" + +#: ../source/specifications/core-metadata.rst:299 +msgid "``CommonMark`` for :rfc:`CommonMark <7764#section-3.5>`" +msgstr "" + +#: ../source/specifications/core-metadata.rst:317 +msgid "" +"If a ``Description-Content-Type`` is not specified, then applications should " +"attempt to render it as ``text/x-rst; charset=UTF-8`` and fall back to " +"``text/plain`` if it is not valid rst." +msgstr "" + +#: ../source/specifications/core-metadata.rst:321 +msgid "" +"If a ``Description-Content-Type`` is an unrecognized value, then the assumed " +"content type is ``text/plain`` (Although PyPI will probably reject anything " +"with an unrecognized value)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:325 +msgid "" +"If the ``Description-Content-Type`` is ``text/markdown`` and ``variant`` is " +"not specified or is set to an unrecognized value, then the assumed " +"``variant`` is ``GFM``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:329 +msgid "" +"So for the last example above, the ``charset`` defaults to ``UTF-8`` and the " +"``variant`` defaults to ``GFM`` and thus it is equivalent to the example " +"before it." +msgstr "" + +#: ../source/specifications/core-metadata.rst:338 +msgid "Keywords" +msgstr "" + +#: ../source/specifications/core-metadata.rst:342 +msgid "" +"A list of additional keywords, separated by commas, to be used to assist " +"searching for the distribution in a larger catalog." +msgstr "" + +#: ../source/specifications/core-metadata.rst:351 +msgid "" +"The specification previously showed keywords separated by spaces, but " +"distutils and setuptools implemented it with commas. These tools have been " +"very widely used for many years, so it was easier to update the " +"specification to match the de facto standard." +msgstr "" + +#: ../source/specifications/core-metadata.rst:360 +msgid "Author" +msgstr "" + +#: ../source/specifications/core-metadata.rst:364 +msgid "" +"A string containing the author's name at a minimum; additional contact " +"information may be provided." +msgstr "" + +#: ../source/specifications/core-metadata.rst:377 +msgid "Author-email" +msgstr "" + +#: ../source/specifications/core-metadata.rst:381 +msgid "" +"A string containing the author's e-mail address. It can contain a name and " +"e-mail address in the legal forms for a RFC-822 ``From:`` header." +msgstr "" + +#: ../source/specifications/core-metadata.rst:389 +#: ../source/specifications/core-metadata.rst:436 +msgid "" +"Per RFC-822, this field may contain multiple comma-separated e-mail " +"addresses::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:399 +msgid "Maintainer" +msgstr "" + +#: ../source/specifications/core-metadata.rst:403 +msgid "" +"A string containing the maintainer's name at a minimum; additional contact " +"information may be provided." +msgstr "" + +#: ../source/specifications/core-metadata.rst:406 +msgid "" +"Note that this field is intended for use when a project is being maintained " +"by someone other than the original author: it should be omitted if it is " +"identical to ``Author``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:420 +msgid "Maintainer-email" +msgstr "" + +#: ../source/specifications/core-metadata.rst:424 +msgid "" +"A string containing the maintainer's e-mail address. It can contain a name " +"and e-mail address in the legal forms for a RFC-822 ``From:`` header." +msgstr "" + +#: ../source/specifications/core-metadata.rst:428 +msgid "" +"Note that this field is intended for use when a project is being maintained " +"by someone other than the original author: it should be omitted if it is " +"identical to ``Author-email``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:446 +msgid "License" +msgstr "" + +#: ../source/specifications/core-metadata.rst:449 +msgid "in favour of ``License-Expression``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:453 +msgid "" +"As of Metadata 2.4, ``License`` and ``License-Expression`` are mutually " +"exclusive. If both are specified, tools which parse metadata will disregard " +"``License`` and PyPI will reject uploads. See `PEP 639 `__." +msgstr "" + +#: ../source/specifications/core-metadata.rst:458 +msgid "" +"Text indicating the license covering the distribution where the license is " +"not a selection from the \"License\" Trove classifiers. " +"See :ref:`\"Classifier\" ` below. This field may also " +"be used to specify a particular version of a license which is named via the " +"``Classifier`` field, or to indicate a variation or exception to such a " +"license." +msgstr "" + +#: ../source/specifications/core-metadata.rst:478 +msgid "License-Expression" +msgstr "" + +#: ../source/specifications/core-metadata.rst:482 +msgid "" +"Text string that is a valid SPDX :term:`license expression `, as specified in :doc:`/specifications/license-expression`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:486 +msgid "" +"Note that the expression in this field only applies to " +"the :term:`Distribution Archive` containing the metadata with this field " +"(e.g., :term:`Source Distribution ` " +"or :term:`Wheel`), not the project overall or other files related to the " +"project (including other distribution archives)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:507 +msgid "License-File (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:511 +msgid "" +"Each entry is a string representation of the path of a license-related file. " +"The path is located within the project source tree, relative to the project " +"root directory. For details see :pep:`639`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:528 +msgid "Classifier (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:532 +msgid "" +"Each entry is a string giving a single classification value for the " +"distribution. Classifiers are described in :pep:`301`, and the Python " +"Package Index publishes a dynamic list of `currently defined classifiers " +"`__." +msgstr "" + +#: ../source/specifications/core-metadata.rst:538 +msgid "" +"The use of ``License ::`` classifiers is deprecated as of Metadata 2.4, use " +"``License-Expression`` instead. See `PEP 639 `_." +msgstr "" + +#: ../source/specifications/core-metadata.rst:542 +#: ../source/specifications/core-metadata.rst:632 +#: ../source/specifications/core-metadata.rst:871 +#: ../source/specifications/core-metadata.rst:896 +msgid "This field may be followed by an environment marker after a semicolon." +msgstr "" + +#: ../source/specifications/core-metadata.rst:553 +msgid "Requires-Dist (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:556 +#: ../source/specifications/core-metadata.rst:619 +#: ../source/specifications/core-metadata.rst:843 +#: ../source/specifications/core-metadata.rst:885 +msgid "" +"The field format specification was relaxed to accept the syntax used by " +"popular publishing tools." +msgstr "" + +#: ../source/specifications/core-metadata.rst:560 +msgid "" +"Each entry contains a string naming some other distutils project required by " +"this distribution." +msgstr "" + +#: ../source/specifications/core-metadata.rst:563 +msgid "The format of a requirement string contains from one to four parts:" +msgstr "" + +#: ../source/specifications/core-metadata.rst:565 +msgid "" +"A project name, in the same format as the ``Name:`` field. The only " +"mandatory part." +msgstr "" + +#: ../source/specifications/core-metadata.rst:567 +msgid "" +"A comma-separated list of 'extra' names. These are defined by the required " +"project, referring to specific features which may need extra dependencies. " +"The names MUST conform to the restrictions specified by the ``Provides-" +"Extra:`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:571 +msgid "" +"A version specifier. Tools parsing the format should accept optional " +"parentheses around this, but tools generating it should not use parentheses." +msgstr "" + +#: ../source/specifications/core-metadata.rst:574 +msgid "" +"An environment marker after a semicolon. This means that the requirement is " +"only needed in the specified conditions." +msgstr "" + +#: ../source/specifications/core-metadata.rst:577 +msgid "See :pep:`508` for full details of the allowed format." +msgstr "" + +#: ../source/specifications/core-metadata.rst:579 +msgid "" +"The project names should correspond to names as found on the `Python Package " +"Index`_." +msgstr "" + +#: ../source/specifications/core-metadata.rst:582 +msgid "" +"Version specifiers must follow the rules described in :doc:`version-" +"specifiers`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:596 +msgid "Requires-Python" +msgstr "" + +#: ../source/specifications/core-metadata.rst:600 +msgid "" +"This field specifies the Python version(s) that the distribution is " +"compatible with. Installation tools may look at this when picking which " +"version of a project to install." +msgstr "" + +#: ../source/specifications/core-metadata.rst:604 +msgid "The value must be in the format specified in :doc:`version-specifiers`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:606 +msgid "" +"For example, if a distribution uses :ref:`f-strings ` " +"then it may prevent installation on Python < 3.6 by specifying::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:611 +msgid "This field cannot be followed by an environment marker." +msgstr "" + +#: ../source/specifications/core-metadata.rst:616 +msgid "Requires-External (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:623 +msgid "" +"Each entry contains a string describing some dependency in the system that " +"the distribution is to be used. This field is intended to serve as a hint " +"to downstream project maintainers, and has no semantics which are meaningful " +"to the ``distutils`` distribution." +msgstr "" + +#: ../source/specifications/core-metadata.rst:628 +msgid "" +"The format of a requirement string is a name of an external dependency, " +"optionally followed by a version declaration within parentheses." +msgstr "" + +#: ../source/specifications/core-metadata.rst:634 +msgid "" +"Because they refer to non-Python software releases, version numbers for this " +"field are **not** required to conform to the format specified in " +"the :ref:`Version specifier specification `: they should " +"correspond to the version scheme used by the external dependency." +msgstr "" + +#: ../source/specifications/core-metadata.rst:639 +msgid "Notice that there is no particular rule on the strings to be used." +msgstr "" + +#: ../source/specifications/core-metadata.rst:651 +msgid "Project-URL (multiple-use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:655 +msgid "" +"A string containing a browsable URL for the project and a label for it, " +"separated by a comma." +msgstr "" + +#: ../source/specifications/core-metadata.rst:662 +msgid "The label is free text limited to 32 characters." +msgstr "" + +#: ../source/specifications/core-metadata.rst:664 +msgid "" +"Starting with :pep:`753`, project metadata consumers (such as the Python " +"Package Index) can use a standard normalization process to discover \"well-" +"known\" labels, which can then be given special presentations when being " +"rendered for human consumption. See :ref:`well-known-project-urls`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:674 +msgid "Provides-Extra (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:677 +msgid "" +":pep:`685` restricted valid values to be unambiguous (i.e. no normalization " +"required). For older metadata versions, value restrictions were brought into " +"line with ``Name:`` and normalization rules were introduced." +msgstr "" + +#: ../source/specifications/core-metadata.rst:682 +msgid "" +"A string containing the name of an optional feature. A valid name consists " +"only of lowercase ASCII letters, ASCII numbers, and hyphen. It must start " +"and end with a letter or number. Hyphens cannot be followed by another " +"hyphen. Names are limited to those which match the following regex (which " +"guarantees unambiguity)::" +msgstr "" + +#: ../source/specifications/core-metadata.rst:690 +msgid "" +"The specified name may be used to make a dependency conditional on whether " +"the optional feature has been requested." +msgstr "" + +#: ../source/specifications/core-metadata.rst:698 +msgid "" +"A second distribution requires an optional dependency by placing it inside " +"square brackets, and can request multiple features by separating them with a " +"comma (,). The requirements are evaluated for each requested feature and " +"added to the set of requirements for the distribution." +msgstr "" + +#: ../source/specifications/core-metadata.rst:708 +msgid "" +"Two feature names ``test`` and ``doc`` are reserved to mark dependencies " +"that are needed for running automated tests and generating documentation, " +"respectively." +msgstr "" + +#: ../source/specifications/core-metadata.rst:712 +msgid "" +"It is legal to specify ``Provides-Extra:`` without referencing it in any " +"``Requires-Dist:``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:715 +msgid "" +"When writing data for older metadata versions, names MUST be normalized " +"following the same rules used for the ``Name:`` field when performing " +"comparisons. Tools writing metadata MUST raise an error if two ``Provides-" +"Extra:`` entries would clash after being normalized." +msgstr "" + +#: ../source/specifications/core-metadata.rst:720 +msgid "" +"When reading data for older metadata versions, tools SHOULD warn when values " +"for this field would be invalid under newer metadata versions. If a value " +"would be invalid following the rules for ``Name:`` in any core metadata " +"version, the user SHOULD be warned and the value ignored to avoid ambiguity. " +"Tools MAY choose to raise an error when reading an invalid name for older " +"metadata versions." +msgstr "" + +#: ../source/specifications/core-metadata.rst:730 +msgid "Import-Name (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:734 +msgid "" +"A string containing an import name that the project exclusively provides " +"when installed. The specified import name MUST be a valid Python identifier " +"or can be empty. The import names listed in this field MUST be importable " +"when the project is installed on *some* platform for the same version of the " +"project. This implies that the metadata MUST be consistent across all sdists " +"and wheels for a project release." +msgstr "" + +#: ../source/specifications/core-metadata.rst:741 +#: ../source/specifications/core-metadata.rst:796 +msgid "" +"An import name MAY be followed by a semicolon and the term \"private\" (e.g. " +"``; private``) with any amount of whitespace surrounding the semicolon. This " +"signals to tools that the import name is not part of the public API for the " +"project." +msgstr "" + +#: ../source/specifications/core-metadata.rst:746 +#: ../source/specifications/core-metadata.rst:801 +msgid "" +"Projects SHOULD list all the shortest import names that are exclusively " +"provided by the project. If any of the shortest names are dotted names, all " +"intervening names from that name to the top-level name SHOULD also be listed " +"appropriately in ``Import-Name`` and/or ``Import-Namespace``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:751 +#: ../source/specifications/core-metadata.rst:811 +msgid "" +"If a project lists the same name in both ``Import-Name`` and ``Import-" +"Namespace``, tools MUST raise an error due to ambiguity." +msgstr "" + +#: ../source/specifications/core-metadata.rst:754 +msgid "" +"Tools SHOULD raise an error when two projects that are about to be installed " +"list names that overlap in each other's ``Import-Name`` entries, or when a " +"project has an entry in ``Import-Name`` that overlaps with another project's " +"``Import-Namespace`` entries. This is to avoid projects unexpectedly " +"shadowing another project's code. Tools MAY warn or raise an error when " +"installing a project into a preexisting environment where there is import " +"name overlap with a project that is already installed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:762 +msgid "" +"Projects MAY have an empty ``Import-Name`` field in their metadata to " +"represent a project with no import names (i.e. there are no Python modules " +"of any kind in the distribution file)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:766 +msgid "" +"Since projects MAY have no ``Import-Name`` metadata (either because the " +"project uses an older metadata version, or because it didn't specify any), " +"then tools have no information about what names the project provides. " +"However, in practice the majority of projects have their project name match " +"what their import name would be. As such, it is a reasonable assumption to " +"make that a project name that is normalized in some way to an import name " +"(e.g. ``packaging.utils.canonicalize_name(name, validate=True).replace(\"-" +"\", \"_\")``) can be used if some answer is needed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:786 +msgid "Import-Namespace (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:790 +msgid "" +"A string containing an import name that the project provides when installed, " +"but not exclusively. The specified import name MUST be a valid Python " +"identifier. This field is used for namespace packages where multiple " +"projects can contribute to the same import namespace. Projects all listing " +"the same import name in ``Import-Namespace`` can be installed together " +"without shadowing each other." +msgstr "" + +#: ../source/specifications/core-metadata.rst:806 +msgid "" +"The import names listed in this field MUST be importable when the project is " +"installed on *some* platform for the same version of the project. This " +"implies that the metadata MUST be consistent across all sdists and wheels " +"for a project release." +msgstr "" + +#: ../source/specifications/core-metadata.rst:814 +msgid "Note that ``Import-Namespace`` CANNOT be empty like ``Import-Name``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:823 +msgid "Rarely Used Fields" +msgstr "" + +#: ../source/specifications/core-metadata.rst:825 +msgid "" +"The fields in this section are currently rarely used, as their design was " +"inspired by comparable mechanisms in Linux package management systems, and " +"it isn't at all clear how tools should interpret them in the context of an " +"open index server such as `PyPI `__." +msgstr "" + +#: ../source/specifications/core-metadata.rst:830 +msgid "" +"As a result, popular installation tools ignore them completely, which in " +"turn means there is little incentive for package publishers to set them " +"appropriately. However, they're retained in the metadata specification, as " +"they're still potentially useful for informational purposes, and can also be " +"used for their originally intended purpose in combination with a curated " +"package repository." +msgstr "" + +#: ../source/specifications/core-metadata.rst:840 +msgid "Provides-Dist (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:847 +msgid "" +"Each entry contains a string naming a Distutils project which is contained " +"within this distribution. This field *must* include the project identified " +"in the ``Name`` field, followed by the version : Name (Version)." +msgstr "" + +#: ../source/specifications/core-metadata.rst:852 +msgid "" +"A distribution may provide additional names, e.g. to indicate that multiple " +"projects have been bundled together. For instance, source distributions of " +"the ``ZODB`` project have historically included the ``transaction`` project, " +"which is now available as a separate distribution. Installing such a source " +"distribution satisfies requirements for both ``ZODB`` and ``transaction``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:859 +msgid "" +"A distribution may also provide a \"virtual\" project name, which does not " +"correspond to any separately-distributed project: such a name might be used " +"to indicate an abstract capability which could be supplied by one of " +"multiple projects. E.g., multiple projects might supply RDBMS bindings for " +"use by a given ORM: each project might declare that it provides ``ORM-" +"bindings``, allowing other projects to depend only on having at most one of " +"them installed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:867 +msgid "" +"A version declaration may be supplied and must follow the rules described " +"in :doc:`version-specifiers`. The distribution's version number will be " +"implied if none is specified." +msgstr "" + +#: ../source/specifications/core-metadata.rst:882 +msgid "Obsoletes-Dist (multiple use)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:889 +msgid "" +"Each entry contains a string describing a distutils project's distribution " +"which this distribution renders obsolete, meaning that the two projects " +"should not be installed at the same time." +msgstr "" + +#: ../source/specifications/core-metadata.rst:893 +msgid "" +"Version declarations can be supplied. Version numbers must be in the format " +"specified in :doc:`version-specifiers`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:898 +msgid "" +"The most common use of this field will be in case a project name changes, " +"e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0. When you install " +"Torqued Python, the Gorgon distribution should be removed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:911 +msgid "Deprecated Fields" +msgstr "" + +#: ../source/specifications/core-metadata.rst:913 +msgid "" +"Deprecated fields should be avoided, but they are valid metadata fields. " +"They may be removed in future versions of the core metadata standard (at " +"which point they will only be valid in files that specify a metadata version " +"prior to the removal). Tools SHOULD warn users when deprecated fields are " +"used." +msgstr "" + +#: ../source/specifications/core-metadata.rst:922 +msgid "Home-page" +msgstr "" + +#: ../source/specifications/core-metadata.rst:928 +#: ../source/specifications/core-metadata.rst:945 +msgid "Per :pep:`753`, use :ref:`core-metadata-project-url` instead." +msgstr "" + +#: ../source/specifications/core-metadata.rst:930 +msgid "A string containing the URL for the distribution's home page." +msgstr "" + +#: ../source/specifications/core-metadata.rst:939 +msgid "Download-URL" +msgstr "" + +#: ../source/specifications/core-metadata.rst:947 +msgid "" +"A string containing the URL from which this version of the distribution can " +"be downloaded. (This means that the URL can't be something like \"``.../" +"BeagleVote-latest.tgz``\", but instead must be \"``.../" +"BeagleVote-0.45.tgz``\".)" +msgstr "" + +#: ../source/specifications/core-metadata.rst:953 +msgid "Requires" +msgstr "" + +#: ../source/specifications/core-metadata.rst:956 +msgid "in favour of ``Requires-Dist``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:959 +msgid "" +"Each entry contains a string describing some other module or package " +"required by this package." +msgstr "" + +#: ../source/specifications/core-metadata.rst:962 +msgid "" +"The format of a requirement string is identical to that of a module or " +"package name usable with the ``import`` statement, optionally followed by a " +"version declaration within parentheses." +msgstr "" + +#: ../source/specifications/core-metadata.rst:966 +msgid "" +"A version declaration is a series of conditional operators and version " +"numbers, separated by commas. Conditional operators must be one of \"<\", " +"\">\"', \"<=\", \">=\", \"==\", and \"!=\". Version numbers must be in the " +"format accepted by the ``distutils.version.StrictVersion`` class: two or " +"three dot-separated numeric components, with an optional \"pre-release\" tag " +"on the end consisting of the letter 'a' or 'b' followed by a number. Example " +"version numbers are \"1.0\", \"2.3a2\", \"1.3.99\"," +msgstr "" + +#: ../source/specifications/core-metadata.rst:974 +msgid "" +"Any number of conditional operators can be specified, e.g. the string " +"\">1.0, !=1.3.4, <2.0\" is a legal version declaration." +msgstr "" + +#: ../source/specifications/core-metadata.rst:977 +msgid "" +"All of the following are possible requirement strings: \"rfc822\", \"zlib " +"(>=1.1.4)\", \"zope\"." +msgstr "" + +#: ../source/specifications/core-metadata.rst:980 +msgid "" +"There’s no canonical list of what strings should be used; the Python " +"community is left to choose its own standards." +msgstr "" + +#: ../source/specifications/core-metadata.rst:993 +msgid "Provides" +msgstr "" + +#: ../source/specifications/core-metadata.rst:996 +msgid "in favour of ``Provides-Dist``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:999 +msgid "" +"Each entry contains a string describing a package or module that will be " +"provided by this package once it is installed. These strings should match " +"the ones used in Requirements fields. A version declaration may be supplied " +"(without a comparison operator); the package’s version number will be " +"implied if none is specified." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1015 +msgid "Obsoletes" +msgstr "" + +#: ../source/specifications/core-metadata.rst:1018 +msgid "in favour of ``Obsoletes-Dist``" +msgstr "" + +#: ../source/specifications/core-metadata.rst:1021 +msgid "" +"Each entry contains a string describing a package or module that this " +"package renders obsolete, meaning that the two packages should not be " +"installed at the same time. Version declarations can be supplied." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1025 +msgid "" +"The most common use of this field will be in case a package name changes, " +"e.g. Gorgon 2.3 gets subsumed into Torqued Python 1.0. When you install " +"Torqued Python, the Gorgon package should be removed." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1037 +msgid "March 2001: Core metadata 1.0 was approved through :pep:`241`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1039 +msgid "April 2003: Core metadata 1.1 was approved through :pep:`314`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1041 +msgid "February 2010: Core metadata 1.2 was approved through :pep:`345`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1043 +msgid "February 2018: Core metadata 2.1 was approved through :pep:`566`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1045 +msgid "Added ``Description-Content-Type`` and ``Provides-Extra``." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1046 +msgid "Added canonical method for transforming metadata to JSON." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1047 +msgid "Restricted the grammar of the ``Name`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1049 +msgid "October 2020: Core metadata 2.2 was approved through :pep:`643`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1051 +msgid "Added the ``Dynamic`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1053 +msgid "March 2022: Core metadata 2.3 was approved through :pep:`685`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1055 +msgid "Restricted extra names to be normalized." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1057 +msgid "August 2024: Core metadata 2.4 was approved through :pep:`639`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1059 +msgid "Added the ``License-Expression`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1060 +msgid "Added the ``License-File`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1062 +msgid "" +"August 2025: Clarified that ``Dynamic`` only affects how fields must be " +"treated when building a wheel from a sdist, not when modifying a wheel." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1066 +msgid "September 2025: Core metadata 2.5 was approved through :pep:`794`." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1068 +msgid "Added the ``Import-Name`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1069 +msgid "Added the ``Import-Namespace`` field." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1071 +msgid "" +"October 2025: Clarified that ``License-Expression`` applies to the " +"containing distribution file and not the project itself." +msgstr "" + +#: ../source/specifications/core-metadata.rst:1076 +msgid "reStructuredText markup: https://docutils.sourceforge.io/" +msgstr "" + +#: ../source/specifications/core-metadata.rst:1081 +msgid "RFC 822 Long Header Fields: :rfc:`822#section-3.1.1`" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:5 +msgid "Dependency Groups" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:7 +msgid "" +"This specification defines dependency groups, a mechanism for storing " +"package requirements in ``pyproject.toml`` files such that they are not " +"included in project metadata when it is built." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:11 +msgid "" +"Dependency groups are suitable for internal development use-cases like " +"linting and testing, as well as for projects which are not built for " +"distribution, like collections of related scripts." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:15 +msgid "" +"Fundamentally, dependency groups should be thought of as being a " +"standardized subset of the capabilities of ``requirements.txt`` files (which " +"are ``pip``-specific)." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:25 +msgid "This is a simple table which shows ``docs`` and ``test`` groups::" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:31 +msgid "" +"and a similar table which defines ``docs``, ``test``, and ``coverage`` " +"groups::" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:39 +msgid "The ``[dependency-groups]`` Table" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:41 +msgid "" +"Dependency groups are defined as a table in ``pyproject.toml`` named " +"``dependency-groups``. The ``dependency-groups`` table contains an arbitrary " +"number of user-defined keys, each of which has, as its value, a list of " +"requirements." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:46 +msgid "" +"``[dependency-groups]`` keys, sometimes also called \"group names\", must " +"be :ref:`valid non-normalized names `. Tools which handle " +"Dependency Groups MUST :ref:`normalize ` these names " +"before comparisons." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:51 +msgid "" +"Tools SHOULD prefer to present the original, non-normalized name to users, " +"and if duplicate names are detected after normalization, tools SHOULD emit " +"an error." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:55 +msgid "" +"Requirement lists, the values in ``[dependency-groups]``, may contain " +"strings, tables (``dict`` in Python), or a mix of strings and tables. " +"Strings must be valid :ref:`dependency specifiers `, " +"and tables must be valid Dependency Group Includes." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:61 +msgid "Dependency Group Include" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:63 +msgid "" +"A Dependency Group Include includes another Dependency Group in the current " +"group." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:66 +msgid "" +"An include is a table with exactly one key, ``\"include-group\"``, whose " +"value is a string, the name of another Dependency Group." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:69 +msgid "" +"Includes are defined to be exactly equivalent to the contents of the named " +"Dependency Group, inserted into the current group at the location of the " +"include. For example, if ``foo = [\"a\", \"b\"]`` is one group, and ``bar = " +"[\"c\", {include-group = \"foo\"}, \"d\"]`` is another, then ``bar`` should " +"evaluate to ``[\"c\", \"a\", \"b\", \"d\"]`` when Dependency Group Includes " +"are expanded." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:75 +msgid "" +"Dependency Group Includes may specify the same package multiple times. Tools " +"SHOULD NOT deduplicate or otherwise alter the list contents produced by the " +"include. For example, given the following table:" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:92 +msgid "" +"The resolved value of ``all`` SHOULD be ``[\"foo\", \"foo\", \"foo>1.0\", " +"\"foo<1.0\"]``. Tools should handle such a list exactly as they would handle " +"any other case in which they are asked to process the same requirement " +"multiple times with different version constraints." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:97 +msgid "" +"Dependency Group Includes may include groups containing Dependency Group " +"Includes, in which case those includes should be expanded as well. " +"Dependency Group Includes MUST NOT include cycles, and tools SHOULD report " +"an error if they detect a cycle." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:102 +msgid "Package Building" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:104 +msgid "" +"Build backends MUST NOT include Dependency Group data in built distributions " +"as package metadata. This means that sdist ``PKG-INFO`` and wheel " +"``METADATA`` files should not include referenceable fields containing " +"dependency groups." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:108 +msgid "" +"It is, however, valid to use dependency groups in the evaluation of dynamic " +"metadata, and ``pyproject.toml`` files included in sdists will still contain " +"``[dependency-groups]``. However, the table's contents are not part of a " +"built package's interfaces." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:114 +msgid "Installing Dependency Groups & Extras" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:116 +msgid "" +"There is no syntax or specification-defined interface for installing or " +"referring to dependency groups. Tools are expected to provide dedicated " +"interfaces for this purpose." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:120 +msgid "" +"Tools MAY choose to provide the same or similar interfaces for interacting " +"with dependency groups as they do for managing extras. Tools authors are " +"advised that the specification does not forbid having an extra whose name " +"matches a Dependency Group. Separately, users are advised to avoid creating " +"dependency groups whose names match extras, and tools MAY treat such " +"matching as an error." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:128 +msgid "Validation and Compatibility" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:130 +msgid "" +"Tools supporting dependency groups may want to validate data before using " +"it. When implementing such validation, authors should be aware of the " +"possibility of future extensions to the specification, so that they do not " +"unnecessarily emit errors or warnings." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:135 +msgid "" +"Tools SHOULD error when evaluating or processing unrecognized data in " +"dependency groups." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:138 +msgid "" +"Tools SHOULD NOT eagerly validate the contents of *all* dependency groups " +"unless they have a need to do so." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:141 +msgid "" +"This means that in the presence of the following data, most tools should " +"allow the ``foo`` group to be used and only error if the ``bar`` group is " +"used:" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:152 +msgid "" +"There are several known cases of tools which have good cause to be stricter. " +"Linters and validators are an example, as their purpose is to validate the " +"contents of all dependency groups." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:157 +#: ../source/specifications/inline-script-metadata.rst:123 +msgid "Reference Implementation" +msgstr "" + +#: ../source/specifications/dependency-groups.rst:159 +msgid "" +"The following Reference Implementation prints the contents of a Dependency " +"Group to stdout, newline delimited. The output is therefore valid " +"``requirements.txt`` data." +msgstr "" + +#: ../source/specifications/dependency-groups.rst:252 +msgid "October 2024: This specification was approved through :pep:`735`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:7 +msgid "Dependency specifiers" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:9 +msgid "" +"This document describes the dependency specifiers format as originally " +"specified in :pep:`508`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:12 +msgid "" +"The job of a dependency is to enable tools like pip [#pip]_ to find the " +"right package to install. Sometimes this is very loose - just specifying a " +"name, and sometimes very specific - referring to a specific file to install. " +"Sometimes dependencies are only relevant in one platform, or only some " +"versions are acceptable, so the language permits describing all these cases." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:18 +msgid "" +"The language defined is a compact line based format which is already in " +"widespread use in pip requirements files, though we do not specify the " +"command line option handling that those files permit. There is one caveat - " +"the URL reference form, specified in :ref:`Versioning specifier " +"specification ` is not actually implemented in pip, but " +"we use that format rather than pip's current native format." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:31 +msgid "All features of the language shown with a name based lookup::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:35 +msgid "A minimal URL based lookup::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:40 +msgid "Concepts" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:42 +msgid "" +"A dependency specification always specifies a distribution name. It may " +"include extras, which expand the dependencies of the named distribution to " +"enable optional features. The version installed can be controlled using " +"version limits, or giving the URL to a specific artifact to install. Finally " +"the dependency can be made conditional using environment markers." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:49 +msgid "Grammar" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:51 +msgid "" +"We first cover the grammar briefly and then drill into the semantics of each " +"section later." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:54 +msgid "" +"A distribution specification is written in ASCII text. We use a parsley " +"[#parsley]_ grammar to provide a precise grammar. It is expected that the " +"specification will be embedded into a larger system which offers framing " +"such as comments, multiple line support via continuations, or other such " +"features." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:59 +msgid "" +"The full grammar including annotations to build a useful parse tree is " +"included at the end of this document." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:62 +msgid "" +"Versions may be specified according to the rules of the :ref:`Version " +"specifier specification `. (Note: URI is defined " +"in :rfc:`std-66 <3986>`)::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:73 +msgid "" +"Environment markers allow making a specification only take effect in some " +"environments::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:102 +msgid "" +"Optional components of a distribution may be specified using the extras " +"field::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:111 +msgid "Restrictions on names for extras is defined in :pep:`685`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:113 +msgid "Giving us a rule for name based requirements::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:117 +msgid "And a rule for direct reference specifications::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:121 +msgid "Leading to the unified rule that can specify a dependency.::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:126 +msgid "Whitespace" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:128 +msgid "" +"Non line-breaking whitespace is mostly optional with no semantic meaning. " +"The sole exception is detecting the end of a URL requirement." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:134 +msgid "Names" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:136 +msgid "" +"Python distribution names are currently defined in :pep:`345`. Names act as " +"the primary identifier for distributions. They are present in all dependency " +"specifications, and are sufficient to be a specification on their own. " +"However, PyPI places strict restrictions on names - they must match a case " +"insensitive regex or they won't be accepted. Accordingly, in this document " +"we limit the acceptable values for identifiers to that regex. A full " +"redefinition of name may take place in a future metadata PEP. The regex (run " +"with re.IGNORECASE) is::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:150 +msgid "Extras" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:152 +msgid "" +"An extra is an optional part of a distribution. Distributions can specify as " +"many extras as they wish, and each extra results in the declaration of " +"additional dependencies of the distribution **when** the extra is used in a " +"dependency specification. For instance::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:159 +msgid "" +"Extras union in the dependencies they define with the dependencies of the " +"distribution they are attached to. The example above would result in " +"requests being installed, and requests own dependencies, and also any " +"dependencies that are listed in the \"security\" extra of requests." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:164 +msgid "" +"If multiple extras are listed, all the dependencies are unioned together." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:169 +msgid "Versions" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:171 +msgid "" +"See the :ref:`Version specifier specification ` for more " +"detail on both version numbers and version comparisons. Version " +"specifications limit the versions of a distribution that can be used. They " +"only apply to distributions looked up by name, rather than via a URL. " +"Version comparison are also used in the markers feature. The optional " +"brackets around a version are present for compatibility with :pep:`345` but " +"should not be generated, only accepted." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:182 +msgid "Environment Markers" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:184 +msgid "" +"Environment markers allow a dependency specification to provide a rule that " +"describes when the dependency should be used. For instance, consider a " +"package that needs argparse. In Python 2.7 argparse is always present. On " +"older Python versions it has to be installed as a dependency. This can be " +"expressed as so::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:191 +msgid "" +"A marker expression evaluates to either True or False. When it evaluates to " +"False, the dependency specification should be ignored." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:194 +msgid "" +"The marker language is inspired by Python itself, chosen for the ability to " +"safely evaluate it without running arbitrary code that could become a " +"security vulnerability. Markers were first standardised in :pep:`345`. This " +"document fixes some issues that were observed in the design described " +"in :pep:`426`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:199 +msgid "" +"Comparisons in marker expressions are typed by the comparison operator and " +"the type of the marker value. The operators that are not in " +" perform the same as they do for strings or sets in Python " +"based on whether the marker value is a string or set itself. The " +" operators use the version comparison rules of " +"the :ref:`Version specifier specification ` when those " +"are defined (that is when both sides have a valid version specifier). If " +"there is no defined behaviour of this specification and the operator exists " +"in Python, then the operator falls back to the Python behaviour for the " +"types involved. Otherwise an error should be raised. e.g. the following will " +"result in errors::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:213 +msgid "" +"User supplied constants are always encoded as strings with either ``'`` or " +"``\"`` quote marks. Note that backslash escapes are not defined, but " +"existing implementations do support them. They are not included in this " +"specification because they add complexity and there is no observable need " +"for them today. Similarly we do not define non-ASCII character support: all " +"the runtime variables we are referencing are expected to be ASCII-only." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:220 +msgid "" +"The variables in the marker grammar such as \"os_name\" resolve to values " +"looked up in the Python runtime. With the exception of \"extra\" all values " +"are defined on all Python versions today - it is an error in the " +"implementation of markers if a value is not defined." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:225 +msgid "" +"Unknown variables must raise an error rather than resulting in a comparison " +"that evaluates to True or False." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:228 +msgid "" +"Variables whose value cannot be calculated on a given Python implementation " +"should evaluate to ``0`` for versions, and an empty string for all other " +"variables." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:232 +msgid "" +"The \"extra\" variable is special. It is used by wheels to signal which " +"specifications apply to a given extra in the wheel ``METADATA`` file, but " +"since the ``METADATA`` file is based on a draft version of :pep:`426`, there " +"is no current specification for this. Regardless, outside of a context where " +"this special handling is taking place, the \"extra\" variable should result " +"in an error like all other unknown variables." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:239 +msgid "" +"The \"extras\" and \"dependency_groups\" variables are also special. They " +"are used to specify any requested extras or dependency groups when " +"installing from a lock file. Outside of the context of lock files, these two " +"variables should result in an error like all other unknown variables." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:247 +msgid "Marker" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:248 +msgid "Python equivalent" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:249 +msgid "Type" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:250 +msgid "Sample values" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:251 +msgid "``os_name``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:252 +msgid ":py:data:`os.name`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:253 +#: ../source/specifications/dependency-specifiers.rst:257 +#: ../source/specifications/dependency-specifiers.rst:262 +#: ../source/specifications/dependency-specifiers.rst:266 +#: ../source/specifications/dependency-specifiers.rst:270 +#: ../source/specifications/dependency-specifiers.rst:274 +#: ../source/specifications/dependency-specifiers.rst:278 +#: ../source/specifications/dependency-specifiers.rst:292 +#: ../source/specifications/dependency-specifiers.rst:301 +msgid "String" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:254 +msgid "``posix``, ``java``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:255 +msgid "``sys_platform``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:256 +msgid ":py:data:`sys.platform`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:258 +msgid "" +"``linux``, ``linux2``, ``darwin``, ``java1.8.0_51`` (note that \"linux\" is " +"from Python3 and \"linux2\" from Python2)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:260 +msgid "``platform_machine``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:261 +msgid ":py:func:`platform.machine()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:263 +#: ../source/specifications/platform-compatibility-tags.rst:262 +msgid "``x86_64``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:264 +msgid "``platform_python_implementation``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:265 +msgid ":py:func:`platform.python_implementation()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:267 +msgid "``CPython``, ``Jython``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:268 +msgid "``platform_release``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:269 +msgid ":py:func:`platform.release()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:271 +msgid "``3.14.1-x86_64-linode39``, ``14.5.0``, ``1.8.0_51``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:272 +msgid "``platform_system``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:273 +msgid ":py:func:`platform.system()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:275 +msgid "``Linux``, ``Windows``, ``Java``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:276 +msgid "``platform_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:277 +msgid ":py:func:`platform.version()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:279 +msgid "" +"``#1 SMP Fri Apr 25 13:07:35 EDT 2014`` ``Java HotSpot(TM) 64-Bit Server VM, " +"25.51-b03, Oracle Corporation`` ``Darwin Kernel Version 14.5.0: Wed Jul 29 " +"02:18:53 PDT 2015; root:xnu-2782.40.9~2/RELEASE_X86_64``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:282 +msgid "``python_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:283 +msgid "``'.'.join(platform.python_version_tuple()[:2])``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:284 +#: ../source/specifications/dependency-specifiers.rst:288 +#: ../source/specifications/dependency-specifiers.rst:296 +msgid ":ref:`Version `" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:285 +msgid "``3.4``, ``2.7``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:286 +msgid "``python_full_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:287 +msgid ":py:func:`platform.python_version()`" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:289 +#: ../source/specifications/dependency-specifiers.rst:297 +msgid "``3.4.0``, ``3.5.0b1``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:290 +msgid "``implementation_name``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:291 +msgid ":py:data:`sys.implementation.name `" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:293 +msgid "``cpython``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:294 +msgid "``implementation_version``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:295 +msgid "see definition below" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:298 +msgid "``extra``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:299 +#: ../source/specifications/dependency-specifiers.rst:304 +#: ../source/specifications/dependency-specifiers.rst:309 +msgid "" +"An error except when defined by the context interpreting the specification." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:302 +msgid "``toml``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:303 +#: ../source/specifications/pylock-toml.rst:108 +msgid "``extras``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:306 +#: ../source/specifications/dependency-specifiers.rst:311 +msgid "Set of strings" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:307 +msgid "``{\"toml\"}``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:308 +msgid "``dependency_groups``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:312 +msgid "``{\"test\"}``" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:314 +msgid "" +"The ``implementation_version`` marker variable is derived " +"from :py:data:`sys.implementation.version `:" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:331 +msgid "" +"This environment markers section, initially defined through :pep:`508`, " +"supersedes the environment markers section in :pep:`345`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:337 +msgid "Complete Grammar" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:339 +msgid "The complete parsley grammar::" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:446 +msgid "A test program - if the grammar is in a string ``grammar``:" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:518 +msgid "November 2015: This specification was approved through :pep:`508`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:519 +msgid "" +"July 2019: The definition of ``python_version`` was `changed `_ from ``platform.python_version()[:3]`` to " +"``'.'.join(platform.python_version_tuple()[:2])``, to accommodate potential " +"future versions of Python with 2-digit major and minor versions (e.g. 3.10). " +"[#future_versions]_" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:524 +msgid "" +"June 2024: The definition of ``version_many`` was changed to allow trailing " +"commas, matching with the behavior of the Python implementation that has " +"been in use since late 2022." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:527 +msgid "" +"April 2025: Added ``extras`` and ``dependency_groups`` for :ref:`lock-file-" +"spec` as approved through :pep:`751`." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:529 +#: ../source/specifications/name-normalization.rst:56 +msgid "" +"August 2025: The suggested name validation regex was fixed to match the " +"field specification (it previously finished with ``$`` instead of ``\\Z``, " +"incorrectly permitting trailing newlines)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:532 +msgid "" +"December 2025: Ensure ``===`` before ``==`` in grammar, to allow arbitrary " +"equality comparisons to be parsed." +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:539 +msgid "" +"pip, the recommended installer for Python packages (http://" +"pip.readthedocs.org/en/stable/)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:542 +msgid "The parsley PEG library. (https://pypi.python.org/pypi/parsley/)" +msgstr "" + +#: ../source/specifications/dependency-specifiers.rst:545 +msgid "" +"Future Python versions might be problematic with the definition of " +"Environment Marker Variable ``python_version`` (https://github.com/python/" +"peps/issues/560)" +msgstr "" + +#: ../source/specifications/direct-url.rst:6 +msgid "Recording the Direct URL Origin of installed distributions" +msgstr "" + +#: ../source/specifications/direct-url.rst:8 +msgid "" +"This document specifies a :file:`direct_url.json` file in the ``*.dist-" +"info`` directory of an installed distribution, to record the Direct URL " +"Origin of the distribution. The general structure and usage of ``*.dist-" +"info`` directories is described in :ref:`recording-installed-packages`." +msgstr "" + +#: ../source/specifications/direct-url.rst:17 +msgid "" +"The :file:`direct_url.json` file MUST be created in the :file:`*.dist-info` " +"directory by installers when installing a distribution from a requirement " +"specifying a direct URL reference (including a VCS URL)." +msgstr "" + +#: ../source/specifications/direct-url.rst:21 +#: ../source/specifications/recording-installed-packages.rst:222 +msgid "" +"This file MUST NOT be created when installing a distribution from an other " +"type of requirement (i.e. name plus version specifier)." +msgstr "" + +#: ../source/specifications/direct-url.rst:24 +msgid "" +"This JSON file MUST be a UTF-8 encoded, :rfc:`8259` compliant, serialization " +"of the :doc:`direct-url-data-structure`." +msgstr "" + +#: ../source/specifications/direct-url.rst:29 +msgid "" +"When the requested URL has the file:// scheme and points to a local " +"directory that happens to contain a VCS checkout, installers MUST NOT " +"attempt to infer any VCS information and therefore MUST NOT output any VCS " +"related information (such as ``vcs_info``) in :file:`direct_url.json`." +msgstr "" + +#: ../source/specifications/direct-url.rst:36 +msgid "" +"As a general rule, installers should as much as possible preserve the " +"information that was provided in the requested URL when " +"generating :file:`direct_url.json`. For example user:password environment " +"variables should be preserved and ``requested_revision`` should reflect the " +"revision that was provided in the requested URL as faithfully as possible. " +"This information is however *enriched* with more precise data, such as " +"``commit_id``." +msgstr "" + +#: ../source/specifications/direct-url.rst:45 +msgid "Example pip commands and their effect on direct_url.json" +msgstr "" + +#: ../source/specifications/direct-url.rst:47 +msgid "Commands that generate a ``direct_url.json``:" +msgstr "" + +#: ../source/specifications/direct-url.rst:49 +msgid "``pip install https://example.com/app-1.0.tgz``" +msgstr "" + +#: ../source/specifications/direct-url.rst:50 +msgid "``pip install https://example.com/app-1.0.whl``" +msgstr "" + +#: ../source/specifications/direct-url.rst:51 +msgid "" +"``pip install \"app @ git+https://example.com/repo/" +"app.git#subdirectory=setup\"``" +msgstr "" + +#: ../source/specifications/direct-url.rst:52 +msgid "``pip install ./app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:53 +msgid "``pip install file:///home/user/app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:54 +msgid "" +"``pip install --editable \"app @ git+https://example.com/repo/" +"app.git#subdirectory=setup\"`` (in which case, ``url`` will be the local " +"directory where the git repository has been cloned to, and ``dir_info`` will " +"be present with ``\"editable\": true`` and no ``vcs_info`` will be set)" +msgstr "" + +#: ../source/specifications/direct-url.rst:58 +msgid "``pip install -e ./app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:60 +msgid "Commands that *do not* generate a ``direct_url.json``" +msgstr "" + +#: ../source/specifications/direct-url.rst:62 +msgid "``pip install app``" +msgstr "" + +#: ../source/specifications/direct-url.rst:63 +msgid "``pip install app --no-index --find-links https://example.com/``" +msgstr "" + +#: ../source/specifications/direct-url.rst:69 +msgid "March 2020: This specification was approved through :pep:`610`." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:7 +msgid "Direct URL Data Structure" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:9 +msgid "" +"This document specifies a JSON-serializable abstract data structure that can " +"represent URLs to python projects and distribution artifacts such as VCS " +"source trees, local source trees, source distributions and wheels." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:13 +msgid "" +"At time of writing, it is not formally specified how to merge the parts of " +"this data structure into a single URL that can be passed to tools. A common " +"representation is the pip URL format (`VCS Support `_), " +"other examples are provided in the :ref:`Version specifier specification " +"`." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:21 +msgid "" +"The Direct URL Data Structure MUST be a dictionary, serializable to JSON " +"according to :rfc:`8259`." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:24 +msgid "" +"It MUST contain at least two fields. The first one is ``url``, with type " +"``string``. Its content must be a valid URL according to the `WHATWG URL " +"Standard `_." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:28 +msgid "" +"Depending on what ``url`` refers to, the second field MUST be one of " +"``vcs_info`` (if ``url`` is a VCS reference), ``archive_info`` (if ``url`` " +"is a source archive or a wheel), or ``dir_info`` (if ``url`` is a local " +"directory). These info fields have a (possibly empty) subdictionary as " +"value, with the possible keys defined below." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:35 +msgid "Security Considerations" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:37 +msgid "" +"When persisted, ``url`` MUST be stripped of any sensitive authentication " +"information, for security reasons." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:40 +msgid "" +"The user:password section of the URL MAY however be composed of environment " +"variables, matching the following regular expression:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:48 +msgid "" +"Additionally, the user:password section of the URL MAY be a well-known, non " +"security sensitive string. A typical example is ``git`` in the case of a URL " +"such as ``ssh://git@gitlab.com/user/repo``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:55 +msgid "VCS URLs" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:57 +msgid "" +"When ``url`` refers to a VCS repository, the ``vcs_info`` key MUST be " +"present as a dictionary with the following keys:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:60 +msgid "" +"A ``vcs`` key (type ``string``) MUST be present, containing the name of the " +"VCS (i.e. one of ``git``, ``hg``, ``bzr``, ``svn``). Other VCS's SHOULD be " +"registered by writing a PEP to amend this specification. The ``url`` value " +"MUST be compatible with the corresponding VCS, so an installer can hand it " +"off without transformation to a checkout/download command of the VCS." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:66 +msgid "" +"A ``requested_revision`` key (type ``string``) MAY be present naming a " +"branch/tag/ref/commit/revision/etc (in a format compatible with the VCS). " +"This field MUST match the revision requested by the user and MUST NOT exist " +"when the user did not select a specific revision." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:70 +msgid "" +"A ``commit_id`` key (type ``string``) MUST be present, containing the exact " +"commit/revision number that was/is to be installed. If the VCS supports " +"commit-hash based revision identifiers, such commit-hash MUST be used as " +"``commit_id`` in order to reference an immutable version of the source code." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:80 +msgid "Archive URLs" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:82 +msgid "" +"When ``url`` refers to a source archive or a wheel, the ``archive_info`` key " +"MUST be present as a dictionary with the following keys:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:85 +msgid "" +"A ``hashes`` key SHOULD be present as a dictionary mapping a hash name to a " +"hex encoded digest of the file." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:88 +msgid "" +"Multiple hashes can be included, and it is up to the consumer to decide what " +"to do with multiple hashes (it may validate all of them or a subset of them, " +"or nothing at all)." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:92 +msgid "These hash names SHOULD always be normalized to be lowercase." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:94 +msgid "" +"Any hash algorithm available via :py:mod:`hashlib` (specifically any that " +"can be passed to :py:func:`hashlib.new()` and do not require additional " +"parameters) can be used as a key for the hashes dictionary. At least one " +"secure algorithm from :py:data:`hashlib.algorithms_guaranteed` SHOULD always " +"be included. At time of writing, ``sha256`` specifically is recommended." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:100 +msgid "" +"A deprecated ``hash`` key (type ``string``) MAY be present for backwards " +"compatibility purposes, with value ``=``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:103 +msgid "" +"Producers of the data structure SHOULD emit the ``hashes`` key whether one " +"or multiple hashes are available. Producers SHOULD continue to emit the " +"``hash`` key in contexts where they did so before, so as to keep backwards " +"compatibility for existing clients." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:107 +msgid "" +"When both the ``hash`` and ``hashes`` keys are present, the hash represented " +"in the ``hash`` key MUST also be present in the ``hashes`` dictionary, so " +"consumers can consider the ``hashes`` key only if it is present, and fall " +"back to ``hash`` otherwise." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:114 +msgid "Local directories" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:116 +msgid "" +"When ``url`` refers to a local directory, the ``dir_info`` key MUST be " +"present as a dictionary with the following key:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:119 +msgid "" +"``editable`` (type: ``boolean``): ``true`` if the distribution was/is to be " +"installed in editable mode, ``false`` otherwise. If absent, default to " +"``false``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:122 +msgid "" +"When ``url`` refers to a local directory, it MUST have the ``file`` scheme " +"and be compliant with :rfc:`8089`. In particular, the path component must be " +"absolute. Symbolic links SHOULD be preserved when making relative paths " +"absolute." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:130 +msgid "Projects in subdirectories" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:132 +msgid "" +"A top-level ``subdirectory`` field MAY be present containing a directory " +"path, relative to the root of the VCS repository, source archive or local " +"directory, to specify where ``pyproject.toml`` or ``setup.py`` is located." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:139 +msgid "Registered VCS" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:141 +msgid "" +"This section lists the registered VCS's; expanded, VCS-specific information " +"on how to use the ``vcs``, ``requested_revision``, and other fields of " +"``vcs_info``; and in some cases additional VCS-specific fields. Tools MAY " +"support other VCS's although it is RECOMMENDED to register them by writing a " +"PEP to amend this specification. The ``vcs`` field SHOULD be the command " +"name (lowercased). Additional fields that would be necessary to support such " +"VCS SHOULD be prefixed with the VCS command name." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:151 +msgid "Git" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:154 +#: ../source/specifications/direct-url-data-structure.rst:181 +#: ../source/specifications/direct-url-data-structure.rst:199 +#: ../source/specifications/direct-url-data-structure.rst:217 +msgid "Home page" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:154 +msgid "https://git-scm.com/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:157 +#: ../source/specifications/direct-url-data-structure.rst:184 +#: ../source/specifications/direct-url-data-structure.rst:202 +#: ../source/specifications/direct-url-data-structure.rst:220 +msgid "vcs command" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:157 +#: ../source/specifications/direct-url-data-structure.rst:160 +msgid "git" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:160 +#: ../source/specifications/direct-url-data-structure.rst:187 +#: ../source/specifications/direct-url-data-structure.rst:205 +#: ../source/specifications/direct-url-data-structure.rst:223 +msgid "``vcs`` field" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:164 +#: ../source/specifications/direct-url-data-structure.rst:190 +#: ../source/specifications/direct-url-data-structure.rst:208 +#: ../source/specifications/direct-url-data-structure.rst:227 +msgid "``requested_revision`` field" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:163 +msgid "" +"A tag name, branch name, Git ref, commit hash, shortened commit hash, or " +"other commit-ish." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:167 +#: ../source/specifications/direct-url-data-structure.rst:193 +#: ../source/specifications/direct-url-data-structure.rst:211 +#: ../source/specifications/direct-url-data-structure.rst:232 +msgid "``commit_id`` field" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:167 +msgid "A commit hash (40 hexadecimal characters sha1)." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:171 +msgid "" +"Tools can use the ``git show-ref`` and ``git symbolic-ref`` commands to " +"determine if the ``requested_revision`` corresponds to a Git ref. In turn, a " +"ref beginning with ``refs/tags/`` corresponds to a tag, and a ref beginning " +"with ``refs/remotes/origin/`` after cloning corresponds to a branch." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:178 +msgid "Mercurial" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:181 +msgid "https://www.mercurial-scm.org/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:184 +#: ../source/specifications/direct-url-data-structure.rst:187 +msgid "hg" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:190 +msgid "A tag name, branch name, changeset ID, shortened changeset ID." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:193 +msgid "A changeset ID (40 hexadecimal characters)." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:196 +msgid "Bazaar" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:199 +msgid "https://www.breezy-vcs.org/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:202 +#: ../source/specifications/direct-url-data-structure.rst:205 +msgid "bzr" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:208 +msgid "A tag name, branch name, revision id." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:211 +msgid "A revision id." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:214 +msgid "Subversion" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:217 +msgid "https://subversion.apache.org/" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:220 +#: ../source/specifications/direct-url-data-structure.rst:223 +msgid "svn" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:226 +msgid "" +"``requested_revision`` must be compatible with ``svn checkout`` ``--" +"revision`` option. In Subversion, branch or tag is part of ``url``." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:230 +msgid "" +"Since Subversion does not support globally unique identifiers, this field is " +"the Subversion revision number in the corresponding repository." +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:235 +msgid "JSON Schema" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:237 +msgid "" +"The following JSON Schema can be used to validate the contents of " +"``direct_url.json``:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:244 +msgid "Source archive:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:257 +msgid "Git URL with tag and commit-hash:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:270 +msgid "Local directory:" +msgstr "" + +#: ../source/specifications/direct-url-data-structure.rst:279 +msgid "Local directory in editable mode:" +msgstr "" + +#: ../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:296 +msgid "" +"January 2023: Added the ``archive_info.hashes`` key (`discussion `_)." +msgstr "" + +#: ../source/specifications/entry-points.rst:5 +msgid "Entry points specification" +msgstr "" + +#: ../source/specifications/entry-points.rst:7 +msgid "" +"*Entry points* are a mechanism for an installed distribution to advertise " +"components it provides to be discovered and used by other code. For example:" +msgstr "" + +#: ../source/specifications/entry-points.rst:11 +msgid "" +"Distributions can specify ``console_scripts`` entry points, each referring " +"to a function. When *pip* (or another console_scripts aware installer) " +"installs the distribution, it will create a command-line wrapper for each " +"entry point." +msgstr "" + +#: ../source/specifications/entry-points.rst:14 +msgid "" +"Applications can use entry points to load plugins; e.g. Pygments (a syntax " +"highlighting tool) can use additional lexers and styles from separately " +"installed packages. For more about this, see :doc:`/guides/creating-and-" +"discovering-plugins`." +msgstr "" + +#: ../source/specifications/entry-points.rst:19 +msgid "" +"The entry point file format was originally developed to allow packages built " +"with setuptools to provide integration point metadata that would be read at " +"runtime with :py:mod:`importlib.metadata`. It is now defined as a PyPA " +"interoperability specification in order to allow build tools other than " +"``setuptools`` to publish :py:mod:`importlib.metadata` compatible entry " +"point metadata, and runtime libraries other " +"than :py:mod:`importlib.metadata` to portably read published entry point " +"metadata (potentially with different caching and conflict resolution " +"strategies)." +msgstr "" + +#: ../source/specifications/entry-points.rst:28 +msgid "Data model" +msgstr "" + +#: ../source/specifications/entry-points.rst:30 +msgid "Conceptually, an entry point is defined by three required properties:" +msgstr "" + +#: ../source/specifications/entry-points.rst:32 +msgid "" +"The **group** that an entry point belongs to indicates what sort of object " +"it provides. For instance, the group ``console_scripts`` is for entry points " +"referring to functions which can be used as a command, while " +"``pygments.styles`` is the group for classes defining pygments styles. The " +"consumer typically defines the expected interface. To avoid clashes, " +"consumers defining a new group should use names starting with a PyPI name " +"owned by the consumer project, followed by ``.``. Group names must be one or " +"more groups of letters, numbers and underscores, separated by dots (regex " +"``^\\w+(\\.\\w+)*$``)." +msgstr "" + +#: ../source/specifications/entry-points.rst:42 +msgid "" +"The **name** identifies this entry point within its group. The precise " +"meaning of this is up to the consumer. For console scripts, the name of the " +"entry point is the command that will be used to launch it. Within a " +"distribution, entry point names should be unique. If different distributions " +"provide the same name, the consumer decides how to handle such conflicts. " +"The name may contain any characters except ``=``, but it cannot start or end " +"with any whitespace character, or start with ``[``. For new entry points, it " +"is recommended to use only letters, numbers, underscores, dots and dashes " +"(regex ``[\\w.-]+``)." +msgstr "" + +#: ../source/specifications/entry-points.rst:51 +msgid "" +"The **object reference** points to a Python object. It is either in the form " +"``importable.module``, or ``importable.module:object.attr``. Each of the " +"parts delimited by dots and the colon is a valid Python identifier. It is " +"intended to be looked up like this::" +msgstr "" + +#: ../source/specifications/entry-points.rst:64 +msgid "" +"Some tools call this kind of object reference by itself an 'entry point', " +"for want of a better term, especially where it points to a function to " +"launch a program." +msgstr "" + +#: ../source/specifications/entry-points.rst:68 +msgid "" +"There is also an optional property: the **extras** are a set of strings " +"identifying optional features of the distribution providing the entry point. " +"If these are specified, the entry point requires the dependencies of those " +"'extras'. See the metadata field :ref:`metadata_provides_extra`." +msgstr "" + +#: ../source/specifications/entry-points.rst:73 +msgid "" +"Using extras for an entry point is no longer recommended. Consumers should " +"support parsing them from existing distributions, but may then ignore them. " +"New publishing tools need not support specifying extras. The functionality " +"of handling extras was tied to setuptools' model of managing 'egg' packages, " +"but newer tools such as pip and virtualenv use a different model." +msgstr "" + +#: ../source/specifications/entry-points.rst:80 +msgid "File format" +msgstr "" + +#: ../source/specifications/entry-points.rst:82 +msgid "" +"Entry points are defined in a file called :file:`entry_points.txt` in " +"the :file:`*.dist-info` directory of the distribution. This is the directory " +"described in :ref:`recording-installed-packages` for installed " +"distributions, and in :ref:`binary-distribution-format` for wheels. The file " +"uses the UTF-8 character encoding." +msgstr "" + +#: ../source/specifications/entry-points.rst:88 +msgid "" +"The file contents are in INI format, as read by Python's :mod:`configparser` " +"module. However, configparser treats names as case-insensitive by default, " +"whereas entry point names are case sensitive. A case-sensitive config parser " +"can be made like this::" +msgstr "" + +#: ../source/specifications/entry-points.rst:98 +msgid "" +"The entry points file must always use ``=`` to delimit names from values " +"(whereas configparser also allows using ``:``)." +msgstr "" + +#: ../source/specifications/entry-points.rst:101 +msgid "" +"The sections of the config file represent entry point groups, the names are " +"names, and the values encode both the object reference and the optional " +"extras. If extras are used, they are a comma-separated list inside square " +"brackets." +msgstr "" + +#: ../source/specifications/entry-points.rst:105 +msgid "" +"Within a value, readers must accept and ignore spaces (including multiple " +"consecutive spaces) before or after the colon, between the object reference " +"and the left square bracket, between the extra names and the square brackets " +"and colons delimiting them, and after the right square bracket. The syntax " +"for extras is formally specified as part of :pep:`508` (as ``extras``) and " +"restrictions on values specified in :pep:`685`. For tools writing the file, " +"it is recommended only to insert a space between the object reference and " +"the left square bracket." +msgstr "" + +#: ../source/specifications/entry-points.rst:128 +msgid "Use for scripts" +msgstr "" + +#: ../source/specifications/entry-points.rst:130 +msgid "" +"Two groups of entry points have special significance in packaging: " +"``console_scripts`` and ``gui_scripts``. In both groups, the name of the " +"entry point should be usable as a command in a system shell after the " +"package is installed. The object reference points to a function which will " +"be called with no arguments when this command is run. The function may " +"return an integer to be used as a process exit code, and returning ``None`` " +"is equivalent to returning ``0``." +msgstr "" + +#: ../source/specifications/entry-points.rst:138 +msgid "" +"For instance, the entry point ``mycmd = mymod:main`` would create a command " +"``mycmd`` launching a script like this::" +msgstr "" + +#: ../source/specifications/entry-points.rst:145 +msgid "" +"The difference between ``console_scripts`` and ``gui_scripts`` only affects " +"Windows systems. ``console_scripts`` are wrapped in a console executable, so " +"they are attached to a console and can " +"use :py:data:`sys.stdin`, :py:data:`sys.stdout` and :py:data:`sys.stderr` " +"for input and output. ``gui_scripts`` are wrapped in a GUI executable, so " +"they can be started without a console, but cannot use standard streams " +"unless application code redirects them. Other platforms do not have the same " +"distinction." +msgstr "" + +#: ../source/specifications/entry-points.rst:153 +msgid "" +"Install tools are expected to set up wrappers for both ``console_scripts`` " +"and ``gui_scripts`` in the scripts directory of the install scheme. They are " +"not responsible for putting this directory in the ``PATH`` environment " +"variable which defines where command-line tools are found." +msgstr "" + +#: ../source/specifications/entry-points.rst:158 +msgid "" +"As files are created from the names, and some filesystems are case-" +"insensitive, packages should avoid using names in these groups which differ " +"only in case. The behaviour of install tools when names differ only in case " +"is undefined." +msgstr "" + +#: ../source/specifications/entry-points.rst:166 +msgid "" +"October 2017: This specification was written to formalize the existing entry " +"points feature of setuptools (discussion_)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:6 +msgid "Externally Managed Environments" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:8 +msgid "" +"While some Python installations are entirely managed by the user that " +"installed Python, others may be provided and managed by another means (such " +"as the operating system package manager in a Linux distribution, or as a " +"bundled Python environment in an application with a dedicated installer)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:13 +msgid "" +"Attempting to use conventional Python packaging tools to manipulate such " +"environments can be confusing at best and outright break the entire " +"underlying operating system at worst. Documentation and interoperability " +"guides only go so far in resolving such problems." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:18 +msgid "" +"This specification defines an ``EXTERNALLY-MANAGED`` marker file that allows " +"a Python installation to indicate to Python-specific tools such as ``pip`` " +"that they neither install nor remove packages into the interpreter’s default " +"installation environment, and should instead guide the end user towards " +"using :ref:`virtual-environments`." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:24 +msgid "" +"It also standardizes an interpretation of the ``sysconfig`` schemes so that, " +"if a Python-specific package manager is about to install a package in an " +"interpreter-wide context, it can do so in a manner that will avoid " +"conflicting with the external package manager and reduces the risk of " +"breaking software shipped by the external package manager." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:32 +msgid "Terminology" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:34 +msgid "" +"A few terms used in this specification have multiple meanings in the " +"contexts that it spans. For clarity, this specification uses the following " +"terms in specific ways:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:61 +msgid "distro" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:39 +msgid "" +"Short for \"distribution,\" a collection of various sorts of software, " +"ideally designed to work properly together, including (in contexts relevant " +"to this document) the Python interpreter itself, software written in Python, " +"and software written in other languages. That is, this is the sense used in " +"phrases such as \"Linux distro\" or \"Berkeley Software Distribution.\"" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:46 +msgid "" +"A distro can be an operating system (OS) of its own, such as Debian, Fedora, " +"or FreeBSD. It can also be an overlay distribution that installs on top of " +"an existing OS, such as Homebrew or MacPorts." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:51 +msgid "" +"This document uses the short term \"distro,\" because the term " +"\"distribution\" has another meaning in Python packaging contexts: a source " +"or binary distribution package of a single piece of Python language " +"software, that is, in the sense of ``setuptools.dist.Distribution`` or " +"\"sdist\". To avoid confusion, this document does not use the plain term " +"\"distribution\" at all. In the Python packaging sense, it uses the full " +"phrase \"distribution package\" or just \"package\" (see below)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:60 +msgid "" +"The provider of a distro - the team or company that collects and publishes " +"the software and makes any needed modifications - is its **distributor**." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:79 +msgid "package" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:64 +msgid "" +"A unit of software that can be installed and used within Python. That is, " +"this refers to what Python-specific packaging tools tend to call " +"a :term:`distribution package` or simply a \"distribution\"; the colloquial " +"abbreviation \"package\" is used in the sense of the Python Package Index." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:70 +msgid "" +"This document does not use \"package\" in the sense of an importable name " +"that contains Python modules, though in many cases, a distribution package " +"consists of a single importable package of the same name." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:75 +msgid "" +"This document generally does not use the term \"package\" to refer to units " +"of installation by a distro's package manager (such as ``.deb`` or ``.rpm`` " +"files). When needed, it uses phrasing such as \"a distro's package.\" " +"(Again, in many cases, a Python package is shipped inside a distro's package " +"named something like ``python-`` plus the Python package name.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:102 +msgid "Python-specific package manager" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:82 +msgid "" +"A tool for installing, upgrading, and/or removing Python packages in a " +"manner that conforms to Python packaging standards. The most popular Python-" +"specific package manager is pip_; other examples include the old `Easy " +"Install command `_ as well as direct usage of a ``setup.py`` " +"command." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:92 +msgid "" +"(Note that the ``easy_install`` command was removed in setuptools version " +"52, released 23 January 2021.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:96 +msgid "" +"(Conda_ is a bit of a special case, as the ``conda`` command can install " +"much more than just Python packages, making it more like a distro package " +"manager in some senses. Since the ``conda`` command generally only operates " +"on Conda-created environments, most of the concerns in this document do not " +"apply to ``conda`` when acting as a Python-specific package manager.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:118 +msgid "distro package manager" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:105 +msgid "" +"A tool for installing, upgrading, and/or removing a distro's packages in an " +"installed instance of that distro, which is capable of installing Python " +"packages as well as non-Python packages, and therefore generally has its own " +"database of installed software unrelated to the :ref:`database of installed " +"distributions `. Examples include ``apt``, " +"``dpkg``, ``dnf``, ``rpm``, ``pacman``, and ``brew``. The salient feature is " +"that if a package was installed by a distro package manager, removing or " +"upgrading it in a way that would satisfy a Python-specific package manager " +"will generally leave a distro package manager in an inconsistent state." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:117 +msgid "" +"This document also uses phrases like \"external package manager\" or " +"\"system's package manager\" to refer to a distro package manager in certain " +"contexts." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:127 +msgid "shadow" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:121 +msgid "" +"To shadow an installed Python package is to cause some other package to be " +"preferred for imports without removing any files from the shadowed package. " +"This requires multiple entries on ``sys.path``: if package A 2.0 installs " +"module ``a.py`` in one ``sys.path`` entry, and package A 1.0 installs module " +"``a.py`` in a later ``sys.path`` entry, then ``import a`` returns the module " +"from the former, and we say that A 2.0 shadows A 1.0." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:132 +msgid "This specification is twofold." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:134 +msgid "" +"First, it describes **a way for distributors of a Python interpreter to mark " +"that interpreter as having its packages managed by means external to " +"Python**, such that Python-specific tools like pip should not change the " +"installed packages in the interpreter's global ``sys.path`` in any way (add, " +"upgrade/downgrade, or remove) unless specifically overridden. It also " +"provides a means for the distributor to indicate how to use a virtual " +"environment as an alternative." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:142 +msgid "" +"This is an opt-in mechanism: by default, the Python interpreter compiled " +"from upstream sources will not be so marked, and so running ``pip install`` " +"with a self-compiled interpreter, or with a distro that has not explicitly " +"marked its interpreter, will work as it always has worked." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:148 +msgid "" +"Second, it sets the rule that when installing packages to an interpreter's " +"global context (either to an unmarked interpreter, or if overriding the " +"marking), **Python-specific package managers should modify or delete files " +"only within the directories of the sysconfig scheme in which they would " +"create files**. This permits a distributor of a Python interpreter to set up " +"two directories, one for its own managed packages, and one for unmanaged " +"packages installed by the end user, and ensure that installing unmanaged " +"packages will not delete (or overwrite) files owned by the external package " +"manager." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:160 +msgid "Marking an interpreter as using an external package manager" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:162 +msgid "" +"Before a Python-specific package installer (that is, a tool such as pip - " +"not an external tool such as apt) installs a package into a certain Python " +"context, it should make the following checks by default:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:167 +msgid "" +"Is it running outside of a virtual environment? It can determine this by " +"whether ``sys.prefix == sys.base_prefix``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:170 +msgid "" +"Is there an ``EXTERNALLY-MANAGED`` file in the directory identified by " +"``sysconfig.get_path(\"stdlib\", sysconfig.get_default_scheme())``?" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:173 +msgid "" +"If both of these conditions are true, the installer should exit with an " +"error message indicating that package installation into this Python " +"interpreter's directory are disabled outside of a virtual environment." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:177 +msgid "" +"The installer should have a way for the user to override these rules, such " +"as a command-line flag ``--break-system-packages``. This option should not " +"be enabled by default and should carry some connotation that its use is " +"risky." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:182 +msgid "" +"The ``EXTERNALLY-MANAGED`` file is an INI-style metadata file intended to be " +"parsable by the standard library configparser_ module. If the file can be " +"parsed by ``configparser.ConfigParser(interpolation=None)`` using the UTF-8 " +"encoding, and it contains a section ``[externally-managed]``, then the " +"installer should look for an error message specified in the file and output " +"it as part of its error. If the first element of the tuple returned by " +"``locale.getlocale(locale.LC_MESSAGES)``, i.e., the language code, is not " +"``None``, it should look for the error message as the value of a key named " +"``Error-`` followed by the language code. If that key does not exist, and if " +"the language code contains underscore or hyphen, it should look for a key " +"named ``Error-`` followed by the portion of the language code before the " +"underscore or hyphen. If it cannot find either of those, or if the language " +"code is ``None``, it should look for a key simply named ``Error``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:200 +msgid "" +"If the installer cannot find an error message in the file (either because " +"the file cannot be parsed or because no suitable error key exists), then the " +"installer should just use a pre-defined error message of its own, which " +"should suggest that the user create a virtual environment to install " +"packages." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:206 +msgid "" +"Software distributors who have a non-Python-specific package manager that " +"manages libraries in the ``sys.path`` of their Python package should, in " +"general, ship an ``EXTERNALLY-MANAGED`` file in their standard library " +"directory. For instance, Debian may ship a file in ``/usr/lib/python3.9/" +"EXTERNALLY-MANAGED`` consisting of something like" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:230 +msgid "" +"which provides useful and distro-relevant information to a user trying to " +"install a package. Optionally, translations can be provided in the same file:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:240 +msgid "" +"In certain contexts, such as single-application container images that aren't " +"updated after creation, a distributor may choose not to ship an ``EXTERNALLY-" +"MANAGED`` file, so that users can install whatever they like (as they can " +"today) without having to manually override this rule." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:247 +msgid "Writing to only the target ``sysconfig`` scheme" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:249 +msgid "" +"Usually, a Python package installer installs to directories in a scheme " +"returned by the ``sysconfig`` standard library package. Ordinarily, this is " +"the scheme returned by ``sysconfig.get_default_scheme()``, but based on " +"configuration (e.g. ``pip install --user``), it may use a different scheme." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:255 +msgid "" +"Whenever the installer is installing to a ``sysconfig`` scheme, this " +"specification declares that the installer should never modify or delete " +"files outside of that scheme. For instance, if it's upgrading a package, and " +"the package is already installed in a directory outside that scheme (perhaps " +"in a directory from another scheme), it should leave the existing files " +"alone." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:262 +msgid "" +"If the installer does end up shadowing an existing installation during an " +"upgrade, we recommend that it produces a warning at the end of its run." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:266 +msgid "" +"If the installer is installing to a location outside of a ``sysconfig`` " +"scheme (e.g., ``pip install --target``), then this subsection does not apply." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:271 +msgid "Recommendations for distros" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:273 +msgid "" +"This section is non-normative. It provides best practices we believe distros " +"should follow unless they have a specific reason otherwise." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:277 +msgid "Mark the installation as externally managed" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:279 +msgid "" +"Distros should create an ``EXTERNALLY-MANAGED`` file in their ``stdlib`` " +"directory." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:283 +msgid "Guide users towards virtual environments" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:285 +msgid "" +"The file should contain a useful and distro-relevant error message " +"indicating both how to install system-wide packages via the distro's package " +"manager and how to set up a virtual environment. If your distro is often " +"used by users in a state where the ``python3`` command is available (and " +"especially where ``pip`` or ``get-pip`` is available) but ``python3 -m " +"venv`` does not work, the message should indicate clearly how to make " +"``python3 -m venv`` work properly." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:293 +msgid "" +"Consider packaging pipx_, a tool for installing Python-language " +"applications, and suggesting it in the error. pipx automatically creates a " +"virtual environment for that application alone, which is a much better " +"default for end users who want to install some Python-language software " +"(which isn't available in the distro) but are not themselves Python users. " +"Packaging pipx in the distro avoids the irony of instructing users to ``pip " +"install --user --break-system-packages pipx`` to *avoid* breaking system " +"packages. Consider arranging things so your distro's package / environment " +"for Python for end users (e.g., ``python3`` on Fedora or ``python3-full`` on " +"Debian) depends on pipx." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:308 +msgid "Keep the marker file in container images" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:310 +msgid "" +"Distros that produce official images for single-application containers " +"(e.g., Docker container images) should keep the ``EXTERNALLY-MANAGED`` file, " +"preferably in a way that makes it not go away if a user of that image " +"installs package updates inside their image (think ``RUN apt-get dist-" +"upgrade``)." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:317 +msgid "Create separate distro and local directories" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:319 +msgid "" +"Distros should place two separate paths on the system interpreter's " +"``sys.path``, one for distro-installed packages and one for packages " +"installed by the local system administrator, and configure " +"``sysconfig.get_default_scheme()`` to point at the latter path. This ensures " +"that tools like pip will not modify distro-installed packages. The path for " +"the local system administrator should come before the distro path on " +"``sys.path`` so that local installs take preference over distro packages." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:328 +msgid "" +"For example, Fedora and Debian (and their derivatives) both implement this " +"split by using ``/usr/local`` for locally-installed packages and ``/usr`` " +"for distro-installed packages. Fedora uses ``/usr/local/lib/python3.x/site-" +"packages`` vs. ``/usr/lib/python3.x/site-packages``. (Debian uses ``/usr/" +"local/lib/python3/dist-packages`` vs. ``/usr/lib/python3/dist-packages`` as " +"an additional layer of separation from a locally-compiled Python " +"interpreter: if you build and install upstream CPython in ``/usr/local/" +"bin``, it will look at ``/usr/local/lib/python3/site-packages``, and Debian " +"wishes to make sure that packages installed via the locally-built " +"interpreter don't show up on ``sys.path`` for the distro interpreter.)" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:341 +msgid "" +"Note that the ``/usr/local`` vs. ``/usr`` split is analogous to how the " +"``PATH`` environment variable typically includes ``/usr/local/bin:/usr/bin`` " +"and non-distro software installs to ``/usr/local`` by default. This split is " +"`recommended by the Filesystem Hierarchy Standard`__." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:349 +msgid "" +"There are two ways you could do this. One is, if you are building and " +"packaging Python libraries directly (e.g., your packaging helpers unpack a " +"wheel or call ``setup.py install``), arrange for those tools to use a " +"directory that is not in a ``sysconfig`` scheme but is still on ``sys.path``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:355 +msgid "" +"The other is to arrange for the default ``sysconfig`` scheme to change when " +"running inside a package build versus when running on an installed system. " +"The ``sysconfig`` customization hooks from bpo-43976_ should make this easy " +"(once accepted and implemented): make your packaging tool set an environment " +"variable or some other detectable configuration, and define a " +"``get_preferred_schemes`` function to return a different scheme when called " +"from inside a package build. Then you can use ``pip install`` as part of " +"your distro packaging." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:367 +msgid "" +"We propose adding a ``--scheme=...`` option to instruct pip to run against a " +"specific scheme. (See `Implementation Notes`_ below for how pip currently " +"determines schemes.) Once that's available, for local testing and possibly " +"for actual packaging, you would be able to run something like ``pip install " +"--scheme=posix_distro`` to explicitly install a package into your distro's " +"location (bypassing ``get_preferred_schemes``). One could also, if " +"absolutely needed, use ``pip uninstall --scheme=posix_distro`` to use pip to " +"remove packages from the system-managed directory." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:377 +msgid "" +"To install packages with pip, you would also need to either suppress the " +"``EXTERNALLY-MANAGED`` marker file to allow pip to run or to override it on " +"the command line. You may want to use the same means for suppressing the " +"marker file in build chroots as you do in container images." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:383 +msgid "" +"The advantage of setting these up to be automatic (suppressing the marker " +"file in your build environment and having ``get_preferred_schemes`` " +"automatically return your distro's scheme) is that an unadorned ``pip " +"install`` will work inside a package build, which generally means that an " +"unmodified upstream build script that happens to internally call ``pip " +"install`` will do the right thing. You can, of course, just ensure that your " +"packaging process always calls ``pip install --scheme=posix_distro --break-" +"system-packages``, which would work too." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:393 +msgid "" +"The best approach here depends a lot on your distro's conventions and " +"mechanisms for packaging." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:396 +msgid "" +"Similarly, the ``sysconfig`` paths that are not for importable Python code - " +"that is, ``include``, ``platinclude``, ``scripts``, and ``data`` - should " +"also have two variants, one for use by distro-packaged software and one for " +"use for locally-installed software, and the distro should be set up such " +"that both are usable. For instance, a typical FHS-compliant distro will use " +"``/usr/local/include`` for the default scheme's ``include`` and ``/usr/" +"include`` for distro-packaged headers and place both on the compiler's " +"search path, and it will use ``/usr/local/bin`` for the default scheme's " +"``scripts`` and ``/usr/bin`` for distro-packaged entry points and place both " +"on ``$PATH``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:410 +msgid "Implementation Notes" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:412 +msgid "" +"This section is non-normative and contains notes relevant to both the " +"specification and potential implementations." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:415 +msgid "" +"Currently (as of May 2021), pip does not directly expose a way to choose a " +"target ``sysconfig`` scheme, but it has three ways of looking up schemes " +"when installing:" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:422 +msgid "``pip install``" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:420 +msgid "" +"Calls ``sysconfig.get_default_scheme()``, which is usually (in upstream " +"CPython and most current distros) the same as " +"``get_preferred_scheme('prefix')``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:425 +msgid "``pip install --prefix=/some/path``" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:425 +msgid "Calls ``sysconfig.get_preferred_scheme('prefix')``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:428 +msgid "``pip install --user``" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:428 +msgid "Calls ``sysconfig.get_preferred_scheme('user')``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:430 +msgid "" +"Finally, ``pip install --target=/some/path`` writes directly to ``/some/" +"path`` without looking up any schemes." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:433 +msgid "" +"Debian currently carries a `patch to change the default install location " +"inside a virtual environment`__, using a few heuristics (including checking " +"for the ``VIRTUAL_ENV`` environment variable), largely so that the directory " +"used in a virtual environment remains ``site-packages`` and not ``dist-" +"packages``. This does not particularly affect this proposal, because the " +"implementation of that patch does not actually change the default " +"``sysconfig`` scheme, and notably does not change the result of " +"``sysconfig.get_path(\"stdlib\")``." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:445 +msgid "" +"Fedora currently carries a `patch to change the default install location " +"when not running inside rpmbuild`__, which they use to implement the two-" +"system-wide-directories approach. This is conceptually the sort of hook " +"envisioned by bpo-43976_, except implemented as a code patch to " +"``distutils`` instead of as a changed ``sysconfig`` scheme." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:454 +msgid "" +"The implementation of ``is_virtual_environment`` above, as well as the logic " +"to load the ``EXTERNALLY-MANAGED`` file and find the error message from it, " +"may as well get added to the standard library (``sys`` and ``sysconfig``, " +"respectively), to centralize their implementations, but they don't need to " +"be added yet." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:464 +msgid "Copyright" +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:466 +msgid "" +"This document is placed in the public domain or under the CC0-1.0-Universal " +"license, whichever is more permissive." +msgstr "" + +#: ../source/specifications/externally-managed-environments.rst:474 +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 "" + +#: ../source/specifications/glob-patterns.rst:5 +msgid "" +"Some PyPA specifications, e.g. :ref:`pyproject.toml's license-files " +"`, accept certain types of *glob patterns* to " +"match a given string containing wildcards and character ranges against files " +"and directories. This specification defines which patterns are acceptable " +"and how they should be handled." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:13 +msgid "Valid glob patterns" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:15 +msgid "" +"For PyPA purposes, a *valid glob pattern* MUST be a string matched against " +"filesystem entries as specified below:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:18 +msgid "" +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:21 +msgid "" +"Special glob characters: ``*``, ``?``, ``**`` and character ranges: ``[]`` " +"containing only the verbatim matched characters MUST be supported. Within " +"``[...]``, the hyphen indicates a locale-agnostic range (e.g. ``a-z``, order " +"based on Unicode code points). Hyphens at the start or end are matched " +"literally." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:27 +msgid "Path delimiters MUST be the forward slash character (``/``)." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:29 +msgid "" +"Patterns always refer to *relative paths*, e.g., when used " +"in :file:`pyproject.toml`, patterns should always be relative to the " +"directory containing that file. Therefore the leading slash character MUST " +"NOT be used." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:34 +msgid "Parent directory indicators (``..``) MUST NOT be used." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:36 +msgid "" +"Any characters or character sequences not covered by this specification are " +"invalid. Projects MUST NOT use such values. Tools consuming glob patterns " +"SHOULD reject invalid values with an error." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:40 +msgid "" +"Literal paths (e.g. :file:`LICENSE`) are valid globs which means they can " +"also be defined." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:43 +msgid "Tools consuming glob patterns:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:45 +msgid "" +"MUST treat each value as a glob pattern, and MUST raise an error if the " +"pattern contains invalid glob syntax." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:47 +msgid "" +"MUST raise an error if any individual user-specified pattern does not match " +"at least one file." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:50 +msgid "Examples of valid glob patterns:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:61 +msgid "Examples of invalid glob patterns:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:74 +msgid "Reference implementation in Python" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:76 +msgid "" +"It is possible to defer the majority of the pattern matching against the " +"file system to the :mod:`glob` module in Python's standard library. It is " +"necessary however to perform additional validations." +msgstr "" + +#: ../source/specifications/glob-patterns.rst:80 +msgid "The code below is as a simple reference implementation:" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + +#: ../source/specifications/index.rst:4 +msgid "PyPA specifications" +msgstr "" + +#: ../source/specifications/index.rst:6 +msgid "" +"This is a list of currently active interoperability specifications " +"maintained by the Python Packaging Authority. The process for updating these " +"standards, and for proposing new ones, is documented on `pypa.io `__." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:6 +msgid "Index hosted attestations" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:8 +msgid "This specification was originally defined in :pep:`740`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:12 +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`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:22 +msgid "Upload endpoint changes" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:26 +msgid "" +"The \"legacy\" upload API is not standardized. See `PyPI's Upload API " +"documentation `_ for how attestations are " +"uploaded." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:33 +msgid "Attestation objects" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:35 +msgid "" +"An attestation object is a JSON object with several required keys; " +"applications or signers may include additional keys so long as all " +"explicitly listed keys are provided. The required layout of an attestation " +"object is provided as pseudocode below." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:88 +msgid "" +"A full data model for each object in ``transparency_entries`` is provided " +"in :ref:`appendix`. Attestation objects **SHOULD** include one or more " +"transparency log entries, and **MAY** include additional keys for other " +"sources of signed time (such as an :rfc:`3161` Time Stamping Authority or a " +"`Roughtime `__ server)." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:94 +msgid "" +"Attestation objects are versioned; this PEP specifies version 1. Each " +"version is tied to a single cryptographic suite to minimize unnecessary " +"cryptographic agility. In version 1, the suite is as follows:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:98 +msgid "" +"Certificates are specified as X.509 certificates, and comply with the " +"profile in :rfc:`5280`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:100 +msgid "" +"The message signature algorithm is ECDSA, with the P-256 curve for public " +"keys and SHA-256 as the cryptographic digest function." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:103 +msgid "" +"Future PEPs may change this suite (and the overall shape of the attestation " +"object) by selecting a new version number." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:109 +msgid "Attestation statement and signature generation" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:111 +msgid "" +"The *attestation statement* is the actual claim that is cryptographically " +"signed over within the attestation object (i.e., the ``envelope.statement``)." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:114 +msgid "" +"The attestation statement is encoded as a `v1 in-toto Statement object " +"`__, in JSON form. When serialized the statement is treated as " +"an opaque binary blob, avoiding the need for canonicalization." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:119 +msgid "" +"In addition to being a v1 in-toto Statement, the attestation statement is " +"constrained in the following ways:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:122 +msgid "The in-toto ``subject`` **MUST** contain only a single subject." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:123 +msgid "" +"``subject[0].name`` is the distribution's filename, which **MUST** be a " +"valid :ref:`source distribution ` or :ref:`wheel " +"distribution ` filename." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:126 +msgid "" +"``subject[0].digest`` **MUST** contain a SHA-256 digest. Other digests " +"**MAY** be present. The digests **MUST** be represented as hexadecimal " +"strings." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:128 +msgid "The following ``predicateType`` values are supported:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:130 +msgid "" +"`SLSA Provenance `__: ``https://slsa.dev/" +"provenance/v1``" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:131 +msgid "" +"`PyPI Publish Attestation `__: ``https://docs.pypi.org/attestations/publish/v1``" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:133 +msgid "" +"The signature over this statement is constructed using the `v1 DSSE " +"signature protocol `__, with a ``PAYLOAD_TYPE`` of ``application/vnd.in-toto+json`` " +"and a ``PAYLOAD_BODY`` of the JSON-encoded statement above. No other " +"``PAYLOAD_TYPE`` is permitted." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:141 +msgid "Provenance objects" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:143 +msgid "" +"The index will serve uploaded attestations along with metadata that can " +"assist in verifying them in the form of JSON serialized objects." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:146 +msgid "" +"These *provenance objects* will be available via both the Simple Index and " +"JSON-based Simple API as described above, and will have the following layout:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:169 +msgid "or, as pseudocode:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:217 +msgid "" +"``version`` is ``1``. Like attestation objects, provenance objects are " +"versioned, and this PEP only defines version ``1``." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:219 +msgid "" +"``attestation_bundles`` is a **required** JSON array, containing one or more " +"\"bundles\" of attestations. Each bundle corresponds to a signing identity " +"(such as a Trusted Publishing identity), and contains one or more " +"attestation objects." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:224 +msgid "" +"As noted in the ``Publisher`` model, each ``AttestationBundle.publisher`` " +"object is specific to its Trusted Publisher but must include at minimum:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:228 +msgid "" +"A ``kind`` key, which **MUST** be a JSON string that uniquely identifies the " +"kind of Trusted Publisher." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:230 +msgid "" +"A ``claims`` key, which **MUST** be a JSON object containing any context-" +"specific claims retained by the index during Trusted Publisher " +"authentication." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:233 +msgid "All other keys in the publisher object are publisher-specific." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:235 +msgid "" +"Each array of attestation objects is a superset of the ``attestations`` " +"array supplied by the uploaded through the ``attestations`` field at upload " +"time, as described in :ref:`upload-endpoint` and :ref:`changes-to-provenance-" +"objects`." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:243 +msgid "Changes to provenance objects" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:245 +msgid "" +"Provenance objects are *not* immutable, and may change over time. Reasons " +"for changes to the provenance object include but are not limited to:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:248 +msgid "" +"Addition of new attestations for a pre-existing signing identity: the index " +"**MAY** choose to allow additional attestations by pre-existing signing " +"identities, such as newer attestation versions for already uploaded files." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:253 +msgid "" +"Addition of new signing identities and associated attestations: the index " +"**MAY** choose to support attestations from sources other than the file's " +"uploader, such as third-party auditors or the index itself. These " +"attestations may be performed asynchronously, requiring the index to insert " +"them into the provenance object *post facto*." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:262 +msgid "Attestation verification" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:264 +msgid "" +"Verifying an attestation object against a distribution file requires " +"verification of each of the following:" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:267 +msgid "``version`` is ``1``. The verifier **MUST** reject any other version." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:268 +msgid "" +"``verification_material.certificate`` is a valid signing certificate, as " +"issued by an *a priori* trusted authority (such as a root of trust already " +"present within the verifying client)." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:271 +msgid "" +"``verification_material.certificate`` identifies an appropriate signing " +"subject, such as the machine identity of the Trusted Publisher that " +"published the package." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:274 +msgid "" +"``envelope.statement`` is a valid in-toto v1 Statement, with a subject and " +"digest that **MUST** match the distribution's filename and contents. For the " +"distribution's filename, matching **MUST** be performed by parsing using the " +"appropriate source distribution or wheel filename format, as the statement's " +"subject may be equivalent but normalized." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:279 +msgid "" +"``envelope.signature`` is a valid signature for ``envelope.statement`` " +"corresponding to ``verification_material.certificate``, as reconstituted via " +"the `v1 DSSE signature protocol `__." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:284 +msgid "" +"In addition to the above required steps, a verifier **MAY** additionally " +"verify ``verification_material.transparency_entries`` on a policy basis, " +"e.g. requiring at least one transparency log entry or a threshold of " +"entries. When verifying transparency entries, the verifier **MUST** confirm " +"that the inclusion time for each entry lies within the signing certificate's " +"validity period." +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:293 +msgid "Appendix: Data models for Transparency Log Entries" +msgstr "" + +#: ../source/specifications/index-hosted-attestations.rst:295 +msgid "" +"This appendix contains pseudocoded data models for transparency log entries " +"in attestation objects. Each transparency log entry serves as a source of " +"signed inclusion time, and can be verified either online or offline." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:5 +msgid "Inline script metadata" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:7 +msgid "" +"This specification defines a metadata format that can be embedded in single-" +"file Python scripts to assist launchers, IDEs and other external tools which " +"may need to interact with such scripts." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:15 +msgid "" +"This specification defines a metadata comment block format (loosely inspired " +"by `reStructuredText Directives`__)." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:20 +msgid "" +"Any Python script may have top-level comment blocks that MUST start with the " +"line ``# /// TYPE`` where ``TYPE`` determines how to process the content. " +"That is: a single ``#``, followed by a single space, followed by three " +"forward slashes, followed by a single space, followed by the type of " +"metadata. Block MUST end with the line ``# ///``. That is: a single ``#``, " +"followed by a single space, followed by three forward slashes. The ``TYPE`` " +"MUST only consist of ASCII letters, numbers and hyphens." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:28 +msgid "" +"Every line between these two lines (``# /// TYPE`` and ``# ///``) MUST be a " +"comment starting with ``#``. If there are characters after the ``#`` then " +"the first character MUST be a space. The embedded content is formed by " +"taking away the first two characters of each line if the second character is " +"a space, otherwise just the first character (which means the line consists " +"of only a single ``#``)." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:35 +msgid "" +"Precedence for an ending line ``# ///`` is given when the next line is not a " +"valid embedded content line as described above. For example, the following " +"is a single fully valid block:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:51 +msgid "" +"A starting line MUST NOT be placed between another starting line and its " +"ending line. In such cases tools MAY produce an error. Unclosed blocks MUST " +"be ignored." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:54 +msgid "" +"When there are multiple comment blocks of the same ``TYPE`` defined, tools " +"MUST produce an error." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:57 +msgid "" +"Tools reading embedded metadata MAY respect the standard Python encoding " +"declaration. If they choose not to do so, they MUST process the file as " +"UTF-8." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:60 +msgid "" +"This is the canonical regular expression that MAY be used to parse the " +"metadata:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:67 +msgid "" +"In circumstances where there is a discrepancy between the text specification " +"and the regular expression, the text specification takes precedence." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:70 +msgid "" +"Tools MUST NOT read from metadata blocks with types that have not been " +"standardized by this specification." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:74 +msgid "script type" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:76 +msgid "" +"The first type of metadata block is named ``script``, which contains script " +"metadata (dependency data and tool configuration)." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:79 +msgid "" +"This document MAY include the top-level fields ``dependencies`` and " +"``requires-python``, and MAY optionally include a ``[tool]`` table." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:82 +msgid "" +"The ``[tool]`` table MAY be used by any tool, script runner or otherwise, to " +"configure behavior. It has the same semantics as the :ref:`[tool] table in " +"pyproject.toml `." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:86 +msgid "The top-level fields are:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:88 +msgid "" +"``dependencies``: A list of strings that specifies the runtime dependencies " +"of the script. Each entry MUST be a valid :ref:`dependency specifier " +"`." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:91 +msgid "" +"``requires-python``: A string that specifies the Python version(s) with " +"which the script is compatible. The value of this field MUST be a " +"valid :ref:`version specifier `." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:95 +msgid "" +"Script runners MUST error if the specified ``dependencies`` cannot be " +"provided. Script runners SHOULD error if no version of Python that satisfies " +"the specified ``requires-python`` can be provided." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:102 +msgid "The following is an example of a script with embedded metadata:" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:125 +msgid "" +"The following is an example of how to read the metadata on Python 3.11 or " +"higher." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:151 +msgid "" +"Often tools will edit dependencies like package managers or dependency " +"update automation in CI. The following is a crude example of modifying the " +"content using the ``tomlkit`` library__." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:182 +msgid "" +"Note that this example used a library that preserves TOML formatting. This " +"is not a requirement for editing by any means but rather is a \"nice to " +"have\" feature." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:186 +msgid "" +"The following is an example of how to read a stream of arbitrary metadata " +"blocks." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:205 +#: ../source/specifications/simple-repository-api.rst:916 +msgid "Recommendations" +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:207 +msgid "" +"Tools that support managing different versions of Python should attempt to " +"use the highest available version of Python that is compatible with the " +"script's ``requires-python`` metadata, if defined." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:215 +msgid "" +"October 2023: This specification was conditionally approved " +"through :pep:`723`." +msgstr "" + +#: ../source/specifications/inline-script-metadata.rst:216 +msgid "" +"January 2024: Through amendments to :pep:`723`, the ``pyproject`` metadata " +"block type was renamed to ``script``, and the ``[run]`` table was dropped, " +"making the ``dependencies`` and ``requires-python`` keys top-level. " +"Additionally, the specification is no longer provisional." +msgstr "" + +#: ../source/specifications/license-expression.rst:5 +msgid "" +":pep:`639` defined a new :ref:`pyproject.toml's license ` value and added a corresponding :ref:`core metadata License-" +"Expression field `. This specification " +"defines which license expressions are acceptable." +msgstr "" + +#: ../source/specifications/license-expression.rst:14 +msgid "" +"License can be defined as a text string that is a valid SPDX :term:`license " +"expression `, as documented in the `SPDX specification " +"`__, either Version 2.2 or a later compatible version." +msgstr "" + +#: ../source/specifications/license-expression.rst:19 +msgid "A license expression can use the following license identifiers:" +msgstr "" + +#: ../source/specifications/license-expression.rst:21 +msgid "" +"Any SPDX-listed license short-form identifiers that are published in the " +"`SPDX License List `__, version 3.17 or any later compatible " +"version." +msgstr "" + +#: ../source/specifications/license-expression.rst:25 +msgid "" +"The custom ``LicenseRef-[idstring]`` string(s), where ``[idstring]`` is a " +"unique string containing letters, numbers, ``.`` and/or ``-``, to identify " +"licenses that are not included in the SPDX license list. The custom " +"identifiers must follow the SPDX specification, `clause 10.1 " +"`__ of the given specification version." +msgstr "" + +#: ../source/specifications/license-expression.rst:32 +msgid "Examples of valid license expressions:" +msgstr "" + +#: ../source/specifications/license-expression.rst:45 +msgid "Examples of invalid license expressions:" +msgstr "" + +#: ../source/specifications/name-normalization.rst:3 +msgid "Names and normalization" +msgstr "" + +#: ../source/specifications/name-normalization.rst:5 +msgid "" +"This specification defines the format that names for packages and extras are " +"required to follow. It also describes how to normalize them, which should be " +"done before lookups and comparisons." +msgstr "" + +#: ../source/specifications/name-normalization.rst:13 +msgid "Name format" +msgstr "" + +#: ../source/specifications/name-normalization.rst:15 +msgid "" +"A valid name consists only of ASCII letters and numbers, period, underscore " +"and hyphen. It must start and end with a letter or number. This means that " +"valid project names are limited to those which match the following regex " +"(run with :py:data:`re.IGNORECASE`)::" +msgstr "" + +#: ../source/specifications/name-normalization.rst:26 +msgid "Name normalization" +msgstr "" + +#: ../source/specifications/name-normalization.rst:28 +msgid "" +"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/name-normalization.rst:39 +msgid "This means that the following names are all equivalent:" +msgstr "" + +#: ../source/specifications/name-normalization.rst:41 +msgid "``friendly-bard`` (normalized form)" +msgstr "" + +#: ../source/specifications/name-normalization.rst:42 +msgid "``Friendly-Bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:43 +msgid "``FRIENDLY-BARD``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:44 +msgid "``friendly.bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:45 +msgid "``friendly_bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:46 +msgid "``friendly--bard``" +msgstr "" + +#: ../source/specifications/name-normalization.rst:47 +msgid "" +"``FrIeNdLy-._.-bArD`` (a *terrible* way to write a name, but it is valid)" +msgstr "" + +#: ../source/specifications/name-normalization.rst:52 +msgid "" +"September 2015: The specification of name normalized was approved " +"through :pep:`503 <503#normalized-names>`." +msgstr "" + +#: ../source/specifications/name-normalization.rst:54 +msgid "" +"November 2015: The specification of valid names was approved " +"through :pep:`508 <508#names>`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:6 +msgid "Platform compatibility tags" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:8 +msgid "" +"Platform compatibility tags allow build tools to mark distributions as being " +"compatible with specific platforms, and allows installers to understand " +"which distributions are compatible with the system they are running on." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:16 +msgid "The tag format is ``{python tag}-{abi tag}-{platform tag}``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:18 +msgid "python tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:19 +msgid "'py27', 'cp33'" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:21 +msgid "'cp32dmu', 'none'" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:23 +msgid "'linux_x86_64', 'any'" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:25 +msgid "" +"For example, the tag ``py27-none-any`` indicates compatibility with Python " +"2.7 (any Python 2.7 implementation) with no abi requirement, on any platform." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:28 +msgid "" +"The ``wheel`` built package format includes these tags in its filenames, of " +"the form ``{distribution}-{version}(-{build tag})?-{python tag}-{abitag}-" +"{platform tag}.whl``. Other package formats may have their own conventions." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:33 +msgid "Any potential spaces in any tag should be replaced with ``_``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:37 +msgid "Python Tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:39 +msgid "" +"The Python tag indicates the implementation and version required by a " +"distribution. Major implementations have abbreviated codes, initially:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:42 +msgid "py: Generic Python (does not require implementation-specific features)" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:43 +msgid "cp: CPython" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:44 +msgid "ip: IronPython" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:45 +msgid "pp: PyPy" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:46 +msgid "jy: Jython" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:48 +msgid "" +"Other Python implementations should use :py:data:`sys.implementation.name " +"`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:50 +msgid "" +"The version is ``py_version_nodot``. CPython gets away with no dot, but if " +"one is needed the underscore ``_`` is used instead. PyPy should probably " +"use its own versions here ``pp18``, ``pp19``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:54 +msgid "" +"The version can be just the major version ``2`` or ``3`` ``py2``, ``py3`` " +"for many pure-Python distributions." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:57 +msgid "" +"Importantly, major-version-only tags like ``py2`` and ``py3`` are not " +"shorthand for ``py20`` and ``py30``. Instead, these tags mean the packager " +"intentionally released a cross-version-compatible distribution." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:61 +msgid "" +"A single-source Python 2/3 compatible distribution can use the compound tag " +"``py2.py3``. See `Compressed Tag Sets`_, below." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:66 +msgid "ABI Tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:68 +msgid "" +"The ABI tag indicates which Python ABI is required by any included extension " +"modules. For implementation-specific ABIs, the implementation is " +"abbreviated in the same way as the Python Tag, e.g. ``cp33d`` would be the " +"CPython 3.3 ABI with debugging." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:73 +msgid "The CPython stable ABI is ``abi3`` as in the shared library suffix." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:75 +msgid "" +"Implementations with a very unstable ABI may use the first 6 bytes (as 8 " +"base64-encoded characters) of the SHA-256 hash of their source code revision " +"and compiler flags, etc, but will probably not have a great need to " +"distribute binary distributions. Each implementation's community may decide " +"how to best use the ABI tag." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:83 +msgid "Platform Tag" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:86 +msgid "" +"Platform tags are dependent on the versioning of the operating system or " +"platform they represent and may change over time as the underlying platform " +"changes its versioning." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:91 +msgid "Basic platform tags" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:93 +msgid "" +"In its simplest form, the platform tag " +"is :py:func:`sysconfig.get_platform()` with all hyphens ``-`` and periods " +"``.`` replaced with underscore ``_``. Until the removal of :ref:`distutils` " +"in Python 3.12, this was ``distutils.util.get_platform()``. For example:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:98 +msgid "win32" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:99 +msgid "linux_i386" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:100 +msgid "linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:106 +msgid "``manylinux``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:108 +msgid "" +"The simple scheme above is insufficient for public distribution of wheel " +"files to Linux platforms, due to the large ecosystem of Linux platforms and " +"subtle differences between them." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:112 +msgid "" +"Instead, for those platforms, the ``manylinux`` standard represents a common " +"subset of Linux platforms, and allows building wheels tagged with the " +"``manylinux`` platform tag which can be used across most common Linux " +"distributions." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:117 +msgid "" +"The current standard is the future-proof :file:`manylinux_{x}_{y}` standard. " +"It defines tags of the form :file:`manylinux_{x}_{y}_{arch}`, where ``x`` " +"and ``y`` are glibc major and minor versions supported (e.g. " +"``manylinux_2_24_xxx`` should work on any distro using glibc 2.24+), and " +"``arch`` is the architecture, matching the value " +"of :py:func:`sysconfig.get_platform()` on the system as in the \"simple\" " +"form above." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:123 +msgid "" +"The following older tags are still supported for backward compatibility:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:125 +msgid "" +"``manylinux1`` supports glibc 2.5 on ``x86_64`` and ``i686`` architectures." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:126 +msgid "``manylinux2010`` supports glibc 2.12 on ``x86_64`` and ``i686``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:127 +msgid "" +"``manylinux2014`` supports glibc 2.17 on ``x86_64``, ``i686``, ``aarch64``, " +"``armv7l``, ``ppc64``, ``ppc64le``, and ``s390x``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:130 +msgid "" +"In general, distributions built for older versions of the specification are " +"forwards-compatible (meaning that ``manylinux1`` distributions should " +"continue to work on modern systems) but not backwards-compatible (meaning " +"that ``manylinux2010`` distributions are not expected to work on platforms " +"that existed before 2010)." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:136 +msgid "" +"Package maintainers should attempt to target the most compatible " +"specification possible, with the caveat that the provided build environment " +"for ``manylinux1`` and ``manylinux2010`` have reached end-of-life meaning " +"that these images will no longer receive security updates." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:141 +msgid "" +"The following table shows the minimum versions of relevant projects to " +"support the various ``manylinux`` standards:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "Tool" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux1``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux2010``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux2014``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:145 +msgid "``manylinux_x_y``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=8.1.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=19.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=19.3``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:147 +msgid "``>=20.3``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "auditwheel" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=1.0.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=2.0.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=3.0.0``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:148 +msgid "``>=3.3.0`` [#]_" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:151 +msgid "Only support for ``manylinux_2_24`` has been added in auditwheel 3.3.0" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:155 +msgid "``musllinux``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:157 +msgid "" +"The ``musllinux`` family of tags is similar to ``manylinux``, but for Linux " +"platforms that use the musl_ libc rather than glibc (a prime example being " +"Alpine Linux). The schema is :file:`musllinux_{x}_{y}_{arch}`, supporting " +"musl ``x.y`` and higher on the architecture ``arch``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:162 +msgid "" +"The musl version values can be obtained by executing the musl libc shared " +"library the Python interpreter is currently running on, and parsing the " +"output:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:193 +msgid "" +"There are currently two possible ways to find the musl library’s location " +"that a Python interpreter is running on, either with the system ldd_ " +"command, or by parsing the ``PT_INTERP`` section’s value from the " +"executable’s ELF_ header." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:202 +msgid "" +"macOS uses the ``macosx`` family of tags (the ``x`` suffix is a historical " +"artefact of Apple's official macOS naming scheme). The schema for " +"compatibility tags is :file:`macosx_{x}_{y}_{arch}`, indicating that the " +"wheel is compatible with macOS ``x.y`` or later on the architecture ``arch``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:207 +msgid "" +"For macOS 10, the tag is :file:`macosx_10_{y}_{arch}`, where ``y`` " +"corresponds to the minor version number of the macOS release. For macOS 11 " +"and higher, the tag is :file:`macosx_{x}_0_{arch}`, where ``x`` corresponds " +"to the major version number of the macOS release. Following the published " +"macOS major versions, the ``x`` value is either ``10 <= x <= 15``, or " +"``>=26`` and corresponding to the year of the macOS release. For example, " +"``macosx_11_0_arm64`` indicates compatibility with macOS 11 or later." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:215 +msgid "" +"macOS binaries can be compiled for a single architecture, or can include " +"support for multiple architectures in the same binary (sometimes called " +"\"fat\" binaries). To indicate support for a single architecture, the value " +"of ``arch`` must match the value of :py:func:`platform.machine()` on the " +"system. To indicate support multiple architectures, the ``arch`` tag should " +"be an identifier from the following list that describes the set of supported " +"architectures:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:223 +msgid "``arch``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:223 +msgid "Architectures supported" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:225 +msgid "``universal2``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:225 +msgid "``arm64``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:226 +msgid "``universal``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:226 +msgid "``i386``, ``ppc``, ``ppc64``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:227 +msgid "``intel``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:227 +msgid "``i386``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:228 +msgid "``fat``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:228 +msgid "``i386``, ``ppc``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:229 +msgid "``fat3``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:229 +msgid "``i386``, ``ppc``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:230 +msgid "``fat64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:230 +msgid "``ppc64``, ``x86_64``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:233 +msgid "" +"The minimum supported macOS version may also be constrained by architecture. " +"For example, macOS 11 (Big Sur) was the first release to support arm64. " +"These additional constraints are enforced transparently by the macOS " +"compilation toolchain when building binaries that support multiple " +"architectures." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:241 +msgid "Android" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:243 +msgid "" +"Android uses the schema :file:`android_{apilevel}_{abi}`, indicating " +"compatibility with the given Android API level or later, on the given ABI. " +"For example, ``android_27_arm64_v8a`` indicates support for API level 27 or " +"later, on ``arm64_v8a`` devices. Android makes no distinction between " +"physical devices and emulated devices." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:249 +msgid "" +"The API level should be a positive integer. This is *not* the same thing as " +"the user-facing Android version. For example, the release known as Android " +"12 (code named \"Snow Cone\") uses API level 31 or 32, depending on the " +"specific Android version in use. Android's release documentation contains " +"the `full list of Android versions and their corresponding API levels " +"`__." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:256 +msgid "" +"There are 4 `supported ABIs `__. Normalized according to the rules above, they are:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:259 +msgid "``armeabi_v7a``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:260 +msgid "``arm64_v8a``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:261 +msgid "``x86``" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:264 +msgid "" +"Virtually all current physical devices use one of the ARM architectures. " +"``x86`` and ``x86_64`` are supported for use in the emulator. ``x86`` has " +"not been supported as a development platform since 2020, and no new emulator " +"images have been released since then." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:272 +msgid "iOS" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:274 +msgid "" +"iOS uses the schema :file:`ios_{x}_{y}_{arch}_{sdk}`, indicating " +"compatibility with iOS ``x.y`` or later, on the ``arch`` architecture, using " +"the ``sdk`` SDK." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:277 +msgid "" +"The value of ``x`` and ``y`` correspond to the major and minor version " +"number of the iOS release, respectively. They must both be positive " +"integers. The version number always includes a major *and* minor version, " +"even if Apple's official version numbering only refers to the major value. " +"For example, a ``ios_13_0_arm64_iphonesimulator`` indicates compatibility " +"with iOS 13 or later." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:283 +msgid "" +"The value of ``arch`` must match the value of :py:func:`platform.machine()` " +"on the system." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:286 +msgid "" +"The value of ``sdk`` must be either ``iphoneos`` (for physical devices), or " +"``iphonesimulator`` (for device simulators). These SDKs have the same API " +"surface, but are incompatible at the binary level, even if they are running " +"on the same CPU architecture. Code compiled for an arm64 simulator will not " +"run on an arm64 device." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:292 +msgid "" +"The combination of :file:`{arch}_{sdk}` is referred to as the \"multiarch\". " +"There are three possible values for multiarch:" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:295 +msgid "" +"``arm64_iphoneos``, for physical iPhone/iPad devices. This includes every " +"iOS device manufactured since ~2015;" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:297 +msgid "" +"``arm64_iphonesimulator``, for simulators running on Apple Silicon macOS " +"hardware; and" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:299 +msgid "``x86_64_iphonesimulator``, for simulators running on x86_64 hardware." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:302 +msgid "Use" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:304 +msgid "" +"The tags are used by installers to decide which built distribution (if any) " +"to download from a list of potential built distributions. The installer " +"maintains a list of (pyver, abi, arch) tuples that it will support. If the " +"built distribution's tag is ``in`` the list, then it can be installed." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:310 +msgid "" +"It is recommended that installers try to choose the most feature complete " +"built distribution available (the one most specific to the installation " +"environment) by default before falling back to pure Python versions " +"published for older Python releases. Installers are also recommended to " +"provide a way to configure and re-order the list of allowed compatibility " +"tags; for example, a user might accept only the ``*-none-any`` tags to only " +"download built packages that advertise themselves as being pure Python." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:318 +msgid "" +"Another desirable installer feature might be to include \"re-compile from " +"source if possible\" as more preferable than some of the compatible but " +"legacy pre-built options." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:322 +msgid "" +"This example list is for an installer running under CPython 3.3 on a " +"linux_x86_64 system. It is in order from most-preferred (a distribution with " +"a compiled extension module, built for the current version of Python) to " +"least-preferred (a pure-Python distribution built with an older version of " +"Python):" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:328 +msgid "cp33-cp33m-linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:329 +msgid "cp33-abi3-linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:330 +msgid "cp3-abi3-linux_x86_64" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:331 +msgid "cp33-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:332 +msgid "cp3-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:333 +msgid "py33-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:334 +msgid "py3-none-linux_x86_64*" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:335 +msgid "cp33-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:336 +msgid "cp3-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:337 +msgid "py33-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:338 +msgid "py3-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:339 +msgid "py32-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:340 +msgid "py31-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:341 +msgid "py30-none-any" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:343 +msgid "" +"Built distributions may be platform specific for reasons other than C " +"extensions, such as by including a native executable invoked as a subprocess." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:347 +msgid "" +"Sometimes there will be more than one supported built distribution for a " +"particular version of a package. For example, a packager could release a " +"package tagged ``cp33-abi3-linux_x86_64`` that contains an optional C " +"extension and the same distribution tagged ``py3-none-any`` that does not. " +"The index of the tag in the supported tags list breaks the tie, and the " +"package with the C extension is installed in preference to the package " +"without because that tag appears first in the list." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:356 +msgid "Compressed Tag Sets" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:358 +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, 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:370 +msgid "" +"A bdist format that implements this scheme should include the expanded tags " +"in bdist-specific metadata. This compression scheme can generate large " +"numbers of unsupported tags and \"impossible\" tags that are supported by no " +"Python implementation e.g. \"cp33-cp31u-win64\", so use it sparingly." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:383 +msgid "What tags are used by default?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:379 +msgid "" +"Tools should use the most-preferred architecture dependent tag e.g. ``cp33-" +"cp33m-win32`` or the most-preferred pure python tag e.g. ``py33-none-any`` " +"by default. If the packager overrides the default it indicates that they " +"intended to provide cross-Python compatibility." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:393 +msgid "" +"What tag do I use if my distribution uses a feature exclusive to the newest " +"version of Python?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:386 +msgid "" +"Compatibility tags aid installers in selecting the *most compatible* build " +"of a *single version* of a distribution. For example, when there is no " +"Python 3.3 compatible build of ``beaglevote-1.2.0`` (it uses a Python 3.4 " +"exclusive feature) it may still use the ``py3-none-any`` tag instead of the " +"``py34-none-any`` tag. A Python 3.3 user must combine other qualifiers, such " +"as a requirement for the older release ``beaglevote-1.1.0`` that does not " +"use the new feature, to get a compatible build." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:398 +msgid "Why isn't there a ``.`` in the Python version number?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:396 +msgid "" +"CPython has lasted 20+ years without a 3-digit major release. This should " +"continue for some time. Other implementations may use _ as a delimiter, " +"since both - and . delimit the surrounding filename." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:404 +msgid "" +"Why normalise hyphens and other non-alphanumeric characters to underscores?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:401 +msgid "" +"To avoid conflicting with the ``.`` and ``-`` characters that separate " +"components of the filename, and for better compatibility with the widest " +"range of filesystem limitations for filenames (including being usable in URL " +"paths without quoting)." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:413 +msgid "Why not use special character rather than ``.`` or ``-``?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:407 +msgid "" +"Either because that character is inconvenient or potentially confusing in " +"some contexts (for example, ``+`` must be quoted in URLs, ``~`` is used to " +"denote the user's home directory in POSIX), or because the advantages " +"weren't sufficiently compelling to justify changing the existing reference " +"implementation for the wheel format defined in :pep:`427` (for example, " +"using ``,`` rather than ``.`` to separate components in a compressed tag)." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:418 +msgid "Who will maintain the registry of abbreviated implementations?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:416 +msgid "" +"New two-letter abbreviations can be requested on the python-dev mailing " +"list. As a rule of thumb, abbreviations are reserved for the current 4 most " +"prominent implementations." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:423 +msgid "Does the compatibility tag go into METADATA or PKG-INFO?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:421 +msgid "" +"No. The compatibility tag is part of the built distribution's metadata. " +"METADATA / PKG-INFO should be valid for an entire distribution, not a single " +"build of that distribution." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:429 +msgid "Why didn't you mention my favorite Python implementation?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:426 +msgid "" +"The abbreviated tags facilitate sharing compiled Python code in a public " +"index. Your Python implementation can use this specification too, but with " +"longer tags. Recall that all \"pure Python\" built distributions just use " +"``py``." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:437 +msgid "" +"Why is the ABI tag (the second tag) sometimes \"none\" in the reference " +"implementation?" +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:432 +msgid "" +"Since Python 2 does not have an easy way to get to the SOABI (the concept " +"comes from newer versions of Python 3) the reference implementation at the " +"time of writing guesses \"none\". Ideally it would detect \"py27(d|m|u)\" " +"analogous to newer versions of Python, but in the meantime \"none\" is a " +"good enough way to say \"don't know\"." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:442 +msgid "" +"February 2013: The original version of this specification was approved " +"through :pep:`425`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:444 +msgid "January 2016: The ``manylinux1`` tag was approved through :pep:`513`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:445 +msgid "April 2018: The ``manylinux2010`` tag was approved through :pep:`571`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:446 +msgid "July 2019: The ``manylinux2014`` tag was approved through :pep:`599`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:447 +msgid "" +"November 2019: The ``manylinux_x_y`` perennial tag was approved " +"through :pep:`600`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:449 +msgid "April 2021: The ``musllinux_x_y`` tag was approved through :pep:`656`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:450 +msgid "December 2023: The tags for iOS were approved through :pep:`730`." +msgstr "" + +#: ../source/specifications/platform-compatibility-tags.rst:451 +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 "" + +#: ../source/specifications/pylock-toml.rst:8 +msgid "" +"The ``pylock.toml`` file format is for specifying dependencies to enable " +"reproducible installation in a Python environment." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:11 +msgid "This specification was originally defined in :pep:`751`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:16 +msgid "File Name" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:18 +msgid "" +"A lock file MUST be named :file:`pylock.toml` or match the regular " +"expression ``r\"^pylock\\.([^.]+)\\.toml$\"`` if a name for the lock file is " +"desired or if multiple lock files exist (i.e. the regular expression " +"``r\"^pylock\\.([^.]+\\.)?toml$\"`` for any file name). The prefix and " +"suffix of a named file MUST be lowercase when possible, for easy detection " +"and removal, e.g.:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:30 +msgid "" +"The expectation is that services that automatically install from lock files " +"will search for:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:33 +msgid "The lock file with the service's name and doing the default install" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:34 +msgid "" +"A multi-use :file:`pylock.toml` with a dependency group with the name of the " +"service" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:35 +msgid "The default install of :file:`pylock.toml`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:37 +msgid "" +"E.g. a cloud host service named \"spam\" would first look " +"for :file:`pylock.spam.toml` to install from, and if that file didn't exist " +"then install from :file:`pylock.toml` and look for a dependency group named " +"\"spam\" to use if present." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:42 +msgid "" +"The lock file(s) SHOULD be located in the directory as appropriate for the " +"scope of the lock file. Locking against a single :file:`pyproject.toml`, for " +"instance, would place the :file:`pylock.toml` in the same directory. If the " +"lock file covered multiple projects in a monorepo, then the expectation is " +"the :file:`pylock.toml` file would be in the directory that held all the " +"projects being locked." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:53 +msgid "The format of the file is TOML_." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:55 +msgid "" +"Tools SHOULD write their lock files in a consistent way to minimize noise in " +"diff output. Keys in tables -- including the top-level table -- SHOULD be " +"recorded in a consistent order (if inspiration is desired, this " +"specification has tried to write down keys in a logical order). As well, " +"tools SHOULD sort arrays in consistent order. Usage of inline tables SHOULD " +"also be kept consistent." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:65 +msgid "``lock-version``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:67 +msgid "**Type**: string; value of ``\"1.0\"``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:68 +#: ../source/specifications/pylock-toml.rst:174 +#: ../source/specifications/pylock-toml.rst:189 +#: ../source/specifications/pylock-toml.rst:202 +#: ../source/specifications/pylock-toml.rst:298 +#: ../source/specifications/pylock-toml.rst:348 +#: ../source/specifications/pylock-toml.rst:397 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 +msgid "**Required?**: yes" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:69 +msgid "**Inspiration**: :ref:`core-metadata-metadata-version`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:70 +msgid "Record the file format version that the file adheres to." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:71 +msgid "" +"This PEP specifies the initial version -- and only valid value until future " +"updates to the standard change it -- as ``\"1.0\"``." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:73 +msgid "" +"If a tool supports the major version but not the minor version, a tool " +"SHOULD warn when an unknown key is seen." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:75 +msgid "If a tool doesn't support a major version, it MUST raise an error." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:81 +msgid "``environments``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:83 +#: ../source/specifications/pylock-toml.rst:110 +#: ../source/specifications/pylock-toml.rst:132 +#: ../source/specifications/pylock-toml.rst:154 +msgid "**Type**: Array of strings" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:84 +#: ../source/specifications/pylock-toml.rst:98 +#: ../source/specifications/pylock-toml.rst:213 +#: ../source/specifications/pylock-toml.rst:230 +#: ../source/specifications/pylock-toml.rst:243 +#: ../source/specifications/pylock-toml.rst:255 +#: ../source/specifications/pylock-toml.rst:334 +#: ../source/specifications/pylock-toml.rst:362 +#: ../source/specifications/pylock-toml.rst:435 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 +msgid "**Required?**: no" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:85 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 +msgid "**Inspiration**: uv_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:86 +msgid "" +"A list of :ref:`dependency-specifiers-environment-markers` for which the " +"lock file is considered compatible with." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:88 +msgid "" +"Tools SHOULD write exclusive/non-overlapping environment markers to ease in " +"understanding." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:97 +#: ../source/specifications/pylock-toml.rst:173 +#: ../source/specifications/pylock-toml.rst:201 +#: ../source/specifications/pylock-toml.rst:212 +#: ../source/specifications/pylock-toml.rst:229 +#: ../source/specifications/pylock-toml.rst:242 +#: ../source/specifications/pylock-toml.rst:308 +#: ../source/specifications/pylock-toml.rst:319 +#: ../source/specifications/pylock-toml.rst:333 +#: ../source/specifications/pylock-toml.rst:347 +#: ../source/specifications/pylock-toml.rst:361 +#: ../source/specifications/pylock-toml.rst:396 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 +msgid "**Type**: string" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:99 +#: ../source/specifications/pylock-toml.rst:190 +#: ../source/specifications/pylock-toml.rst:256 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 +msgid "**Inspiration**: PDM_, Poetry_, uv_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:100 +msgid "" +"Specifies the :ref:`core-metadata-requires-python` for the minimum Python " +"version compatible for any environment supported by the lock file (i.e. the " +"minimum viable Python version for the lock file)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:111 +#: ../source/specifications/pylock-toml.rst:133 +#: ../source/specifications/pylock-toml.rst:155 +msgid "**Required?**: no; defaults to ``[]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:112 +msgid "**Inspiration**: :ref:`core-metadata-provides-extra`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:113 +msgid "" +"The list of :ref:`extras ` supported by this " +"lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:115 +#: ../source/specifications/pylock-toml.rst:138 +msgid "" +"Lockers MAY choose to not support writing lock files that support extras and " +"dependency groups (i.e. tools may only support exporting a single-use lock " +"file)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:118 +msgid "Tools supporting extras MUST also support dependency groups." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:119 +msgid "" +"Tools should explicitly set this key to an empty array to signal that the " +"inputs used to generate the lock file had no extras (e.g. " +"a :ref:`pyproject.toml ` file had " +"no :ref:`[project.optional-dependencies] ` table), signalling that the lock file is, in effect, multi-" +"use even if it only looks to be single-use." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:130 +msgid "``dependency-groups``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:134 +#: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 +msgid "**Inspiration**: :ref:`pyproject-tool-table`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:135 +msgid "" +"The list of :ref:`dependency-groups` publicly supported by this lock file " +"(i.e. dependency groups users are expected to be able to specify via a " +"tool's UI)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:141 +msgid "Tools supporting dependency groups MUST also support extras." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:142 +msgid "" +"Tools SHOULD explicitly set this key to an empty array to signal that the " +"inputs used to generate the lock file had no dependency groups (e.g. " +"a :ref:`pyproject.toml ` file had no :ref:`[dependency-" +"groups] ` table), signalling that the lock file is, in " +"effect, multi-use even if it only looks to be single-use." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:152 +msgid "``default-groups``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:156 +msgid "**Inspiration**: Poetry_, PDM_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:157 +msgid "" +"The name of synthetic dependency groups to represent what should be " +"installed by default (e.g. what :ref:`[project.dependencies] ` implicitly represents)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:161 +msgid "" +"Meant to be used in situations where :ref:`pylock-packages-marker` " +"necessitates such a group to exist." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:163 +msgid "" +"The groups listed by this key SHOULD NOT be listed in :ref:`pylock-" +"dependency-groups` as the groups are not meant to be directly exposed to " +"users by name but instead via an installer's UI." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:171 +msgid "``created-by``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:175 +msgid "**Inspiration**: Tools with their name in their lock file name" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:176 +msgid "Records the name of the tool used to create the lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:177 +msgid "" +"Tools MAY use the :ref:`pylock-tool` table to record enough details that it " +"can be inferred what inputs were used to create the lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:179 +msgid "" +"Tools SHOULD record the normalized name of the tool if it is available as a " +"Python package to facilitate finding the tool." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:186 +msgid "``[[packages]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:188 +#: ../source/specifications/pylock-toml.rst:254 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 +msgid "**Type**: array of tables" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:191 +msgid "An array containing all packages that *may* be installed." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:192 +msgid "" +"Packages MAY be listed multiple times with varying data, but all packages to " +"be installed MUST narrow down to a single entry at install time." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:199 +msgid "``packages.name``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:203 +msgid "**Inspiration**: :ref:`core-metadata-name`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:204 +msgid "The name of the package :ref:`normalized `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:210 +msgid "``packages.version``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:214 +msgid "**Inspiration**: :ref:`core-metadata-version`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:215 +msgid "The version of the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:216 +msgid "" +"The version SHOULD be specified when the version is known to be stable (i.e. " +"when an :ref:`sdist ` or :ref:`wheels ` are specified)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:219 +msgid "" +"The version MUST NOT be included when it cannot be guaranteed to be " +"consistent with the code used (i.e. when a :ref:`source tree ` is used)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:227 +msgid "``packages.marker``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:231 +msgid "**Inspiration**: PDM_" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:232 +msgid "" +"The :ref:`environment marker ` " +"which specify when the package should be installed." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:240 +msgid "``packages.requires-python``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:244 +msgid "**Inspiration**: :ref:`core-metadata-requires-python`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:245 +msgid "" +"Holds the :ref:`version-specifiers` for Python version compatibility for the " +"package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:252 +msgid "``[[packages.dependencies]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:257 +msgid "" +"Records the other entries in :ref:`pylock-packages` which are direct " +"dependencies of this package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:259 +msgid "" +"Each entry is a table which contains the minimum information required to " +"tell which other package entry it corresponds to where doing a key-by-key " +"comparison would find the appropriate package with no ambiguity (e.g. if " +"there are two entries for the ``spam`` package, then you can include the " +"version number like ``{name = \"spam\", version = \"1.0.0\"}``, or by source " +"like ``{name = \"spam\", vcs = { url = \"...\"}``)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:265 +msgid "" +"Tools MUST NOT use this information when doing installation; it is purely " +"informational for auditing purposes." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:272 +msgid "``[packages.vcs]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:274 +#: ../source/specifications/pylock-toml.rst:376 +#: ../source/specifications/pylock-toml.rst:434 +#: ../source/specifications/pylock-toml.rst:546 +#: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 +msgid "**Type**: table" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:275 +msgid "" +"**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" +"directory`, :ref:`pylock-packages-archive`, :ref:`pylock-packages-sdist`, " +"and :ref:`pylock-packages-wheels`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:278 +msgid "**Inspiration**: :ref:`direct-url-data-structure`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:279 +msgid "" +"Record the version control system details for the :ref:`source tree ` it contains." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:282 +msgid "" +"Tools MAY choose to not support version control systems, both from a locking " +"and/or installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:284 +msgid "Tools MAY choose to only support a subset of the available VCS types." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:285 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using version control " +"systems." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:287 +msgid "" +"Installation from a version control system is considered originating from " +"a :ref:`direct URL reference `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:294 +msgid "``packages.vcs.type``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:296 +msgid "" +"**Type**: string; supported values specified in :ref:`direct-url-data-" +"structure-registered-vcs`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:299 +#: ../source/specifications/pylock-toml.rst:310 +#: ../source/specifications/pylock-toml.rst:321 +#: ../source/specifications/pylock-toml.rst:335 +#: ../source/specifications/pylock-toml.rst:349 +msgid "**Inspiration**: :ref:`direct-url-data-structure-vcs`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:300 +msgid "The type of version control system used." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:306 +msgid "``packages.vcs.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:309 +msgid "**Required?**: if :ref:`pylock-packages-vcs-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:311 +msgid "The URL_ to the source tree." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:317 +msgid "``packages.vcs.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:320 +msgid "**Required?**: if :ref:`pylock-packages-vcs-url` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:322 +msgid "The path to the local directory of the source tree." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 +msgid "" +"If a relative path is used it MUST be relative to the location of this file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 +msgid "" +"If the path is relative it MAY use POSIX-style path separators explicitly " +"for portability." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:331 +msgid "``packages.vcs.requested-revision``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:336 +msgid "The branch/tag/ref/commit/revision/etc. that the user requested." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:337 +msgid "" +"This is purely informational and to facilitate writing the :ref:`direct-url-" +"data-structure`; it MUST NOT be used to checkout the repository." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:345 +msgid "``packages.vcs.commit-id``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:350 +msgid "The exact commit/revision number that is to be installed." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:351 +msgid "" +"If the VCS supports commit-hash based revision identifiers, such a commit-" +"hash, it MUST be used as the commit ID in order to reference an immutable " +"version of the source code." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:359 +msgid "``packages.vcs.subdirectory``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:363 +msgid "**Inspiration**: :ref:`direct-url-data-structure-subdirectories`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:364 +msgid "" +"The subdirectory within the :ref:`source tree ` where the project root of the project is (e.g. the location of " +"the :ref:`pyproject.toml ` file)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:368 +msgid "The path MUST be relative to the root of the source tree structure." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:374 +msgid "``[packages.directory]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:377 +msgid "" +"**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" +"vcs`, :ref:`pylock-packages-archive`, :ref:`pylock-packages-sdist`, " +"and :ref:`pylock-packages-wheels`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:380 +#: ../source/specifications/pylock-toml.rst:398 +#: ../source/specifications/pylock-toml.rst:412 +msgid "**Inspiration**: :ref:`direct-url-data-structure-local-directory`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:381 +msgid "" +"Record the local directory details for the :ref:`source tree ` it contains." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:384 +msgid "" +"Tools MAY choose to not support local directories, both from a locking and/" +"or installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:386 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using local " +"directories." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:387 +msgid "" +"Installation from a directory is considered originating from a :ref:`direct " +"URL reference `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:394 +msgid "``packages.directory.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:399 +msgid "The local directory where the source tree is." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:400 +msgid "" +"If the path is relative it MUST be relative to the location of the lock file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:401 +msgid "" +"If the path is relative it MAY use POSIX-style path separators for " +"portability." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:408 +msgid "``packages.directory.editable``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:410 +msgid "**Type**: boolean" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:411 +msgid "**Required?**: no; defaults to ``false``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:413 +msgid "" +"A flag representing whether the source tree was an editable install at lock " +"time." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:415 +msgid "" +"An installer MAY choose to ignore this flag if user actions or context would " +"make an editable install unnecessary or undesirable (e.g. a container image " +"that will not be mounted for development purposes but instead deployed to " +"production where it would be treated at read-only)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:424 +msgid "``packages.directory.subdirectory``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:426 +#: ../source/specifications/pylock-toml.rst:521 +msgid "See :ref:`pylock-packages-vcs-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:432 +msgid "``[packages.archive]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 +msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:437 +msgid "" +"A direct reference to an archive file to install from (this can include " +"wheels and sdists, as well as other archive formats containing a source " +"tree)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:440 +msgid "" +"Tools MAY choose to not support archive files, both from a locking and/or " +"installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:442 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using archive files." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:443 +msgid "" +"Installation from an archive file is considered originating from " +"a :ref:`direct URL reference `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:450 +msgid "``packages.archive.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:461 +msgid "``packages.archive.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 +msgid "``packages.archive.size``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:479 +msgid "**Type**: integer" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:481 +msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:482 +msgid "The size of the archive file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:483 +msgid "" +"Tools SHOULD provide the file size when reasonably possible (e.g. the file " +"size is available via the Content-Length_ header from a HEAD_ HTTP request)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:490 +msgid "``packages.archive.upload-time``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:492 +msgid "**Type**: datetime" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:494 +msgid "**Inspiration**: :ref:`simple-repository-api`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:495 +msgid "The time the file was uploaded." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:496 +msgid "The date and time MUST be recorded in UTC." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:502 +msgid "``[packages.archive.hashes]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:504 +msgid "**Type**: Table of strings" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:506 +msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:507 +msgid "" +"A table listing known hash values of the file where the key is the hash " +"algorithm and the value is the hash value." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:509 +msgid "The table MUST contain at least one entry." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:510 +msgid "Hash algorithm keys SHOULD be lowercase." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:511 +msgid "" +"At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " +"SHOULD always be included (at time of writing, sha256 specifically is " +"recommended." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:519 +msgid "``packages.archive.subdirectory``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:527 +msgid "``packages.index``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:532 +msgid "" +"The base URL for the package index from :ref:`simple-repository-api` where " +"the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:534 +msgid "" +"When possible, this SHOULD be specified to assist with generating `software " +"bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " +"ceases to be valid." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:537 +msgid "" +"Tools MAY support installing from an index if the URL recorded for a " +"specific file is no longer valid (e.g. returns a 404 HTTP error code)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:544 +msgid "``[packages.sdist]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 +msgid "" +"**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" +"vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:550 +msgid "Details of a :ref:`source-distribution-format-sdist` for the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:552 +msgid "" +"Tools MAY choose to not support sdist files, both from a locking and/or " +"installation perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:554 +msgid "" +"Tools SHOULD provide a way for users to opt in/out of using sdist files." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:560 +msgid "``packages.sdist.name``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:563 +msgid "" +"**Required?**: no, not when the last component of :ref:`pylock-packages-" +"sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:567 +msgid "The file name of the :ref:`source-distribution-format-sdist` file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 +msgid "``packages.sdist.upload-time``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 +msgid "See :ref:`pylock-packages-archive-upload-time`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:583 +msgid "``packages.sdist.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 +msgid "See :ref:`pylock-packages-archive-url`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:591 +msgid "``packages.sdist.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 +msgid "See :ref:`pylock-packages-archive-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:599 +msgid "``packages.sdist.size``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 +msgid "See :ref:`pylock-packages-archive-size`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:607 +msgid "``packages.sdist.hashes``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 +msgid "See :ref:`pylock-packages-archive-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:616 +msgid "``[[packages.wheels]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:622 +msgid "" +"For recording the wheel files as specified by :ref:`binary-distribution-" +"format` for the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:624 +msgid "" +"Tools MUST support wheel files, both from a locking and installation " +"perspective." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:631 +msgid "``packages.wheels.name``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:634 +msgid "" +"**Required?**: no, not when the last component of :ref:`pylock-packages-" +"wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:638 +msgid "The file name of the :ref:`binary-distribution-format` file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 +msgid "``packages.wheels.upload-time``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:654 +msgid "``packages.wheels.url``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:662 +msgid "``packages.wheels.path``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:670 +msgid "``packages.wheels.size``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:678 +msgid "``packages.wheels.hashes``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:686 +msgid "``[[packages.attestation-identities]]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 +msgid "**Inspiration**: :ref:`provenance-object`" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:691 +msgid "" +"A recording of the attestations for **any** file recorded for this package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:692 +msgid "If available, tools SHOULD include the attestation identities found." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:693 +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`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:701 +msgid "``packages.attestation-identities.kind``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:706 +msgid "The unique identity of the Trusted Publisher." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:712 +msgid "``[packages.tool]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:717 +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 lock file level (which is also available via :ref:`pylock-tool`)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:720 +msgid "" +"Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " +"installation)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:727 +msgid "``[tool]``" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:732 +msgid "See :ref:`pylock-packages-tool`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:746 +msgid "" +"The following outlines the steps to be taken to install from a lock file " +"(while the requirements are prescriptive, the general steps and order are a " +"suggestion):" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:750 +msgid "" +"Gather the extras and dependency groups to install and set ``extras`` and " +"``dependency_groups`` for marker evaluation, respectively." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:753 +msgid "``extras`` SHOULD be set to the empty set by default." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:754 +msgid "" +"``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" +"groups` by default." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:757 +msgid "" +"Check if the metadata version specified by :ref:`pylock-lock-version` is " +"supported; an error or warning MUST be raised as appropriate." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:759 +msgid "" +"If :ref:`pylock-requires-python` is specified, check that the environment " +"being installed for meets the requirement; an error MUST be raised if it is " +"not met." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:762 +msgid "" +"If :ref:`pylock-environments` is specified, check that at least one of the " +"environment marker expressions is satisfied; an error MUST be raised if no " +"expression is satisfied." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:765 +msgid "For each package listed in :ref:`pylock-packages`:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:767 +msgid "" +"If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " +"it isn't, skip to the next package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:769 +msgid "" +"If :ref:`pylock-packages-requires-python` is specified, check if it is " +"satisfied; an error MUST be raised if it isn't." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:771 +msgid "" +"Check that no other conflicting instance of the package has been slated to " +"be installed; an error about the ambiguity MUST be raised otherwise." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:773 +msgid "" +"Check that the source of the package is specified appropriately (i.e. there " +"are no conflicting sources in the package entry); an error MUST be raised if " +"any issues are found." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:776 +msgid "Add the package to the set of packages to install." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:778 +msgid "For each package to be installed:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:780 +msgid "If :ref:`pylock-packages-vcs` is set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:782 +msgid "" +"Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" +"commit-id`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:784 +msgid "" +":ref:`Build ` the package, " +"respecting :ref:`pylock-packages-vcs-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:786 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 +#: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 +msgid ":ref:`Install `." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:788 +msgid "Else if :ref:`pylock-packages-directory` is set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:790 +msgid "" +":ref:`Build ` the package, " +"respecting :ref:`pylock-packages-directory-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:794 +msgid "Else if :ref:`pylock-packages-archive` is set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 +msgid "Get the file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:797 +msgid "" +"Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" +"archive-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:799 +msgid "" +":ref:`Build ` the package, " +"respecting :ref:`pylock-packages-archive-subdirectory`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:803 +msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:805 +msgid "" +"Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" +"name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " +"an error MUST be raised about a lack of source for the project." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:809 +msgid "Get the file:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:811 +msgid "If :ref:`pylock-packages-wheels-path` is set, use it." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:812 +msgid "" +"Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " +"tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " +"to download the selected wheel file (tools MUST NOT try to change what wheel " +"file to download based on what's available; what file to install should be " +"determined in an offline fashion for reproducibility)." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:819 +msgid "" +"Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" +"wheels-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:823 +msgid "" +"Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" +"packages-sdist` is solely set:" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:828 +msgid "If :ref:`pylock-packages-sdist-path` is set, use it." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:829 +msgid "" +"Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " +"use :ref:`pylock-packages-index` or some tool-specific mechanism to download " +"the file." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:833 +msgid "" +"Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" +"sdist-hashes`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:835 +msgid ":ref:`Build ` the package." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:843 +msgid "April 2025: Initial version, approved via :pep:`751`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + +#: ../source/specifications/pypirc.rst:6 +msgid "The :file:`.pypirc` file" +msgstr "" + +#: ../source/specifications/pypirc.rst:8 +msgid "" +"A :file:`.pypirc` file allows you to define the configuration " +"for :term:`package indexes ` (referred to here as " +"\"repositories\"), so that you don't have to enter the URL, username, or " +"password whenever you upload a package with :ref:`twine` or :ref:`flit`." +msgstr "" + +#: ../source/specifications/pypirc.rst:13 +msgid "The :file:`.pypirc` file **SHOULD** be UTF-8 encoded." +msgstr "" + +#: ../source/specifications/pypirc.rst:15 +msgid "" +"Tools that read or write :file:`.pypirc` files may not function correctly if " +"another character encoding is used." +msgstr "" + +#: ../source/specifications/pypirc.rst:18 +msgid "The format (originally defined by the :ref:`distutils` package) is:" +msgstr "" + +#: ../source/specifications/pypirc.rst:37 +msgid "" +"The ``distutils`` section defines an ``index-servers`` field that lists the " +"name of all sections describing a repository." +msgstr "" + +#: ../source/specifications/pypirc.rst:40 +msgid "Each section describing a repository defines three fields:" +msgstr "" + +#: ../source/specifications/pypirc.rst:42 +msgid "``repository``: The URL of the repository." +msgstr "" + +#: ../source/specifications/pypirc.rst:43 +msgid "``username``: The registered username on the repository." +msgstr "" + +#: ../source/specifications/pypirc.rst:44 +msgid "``password``: The password that will used to authenticate the username." +msgstr "" + +#: ../source/specifications/pypirc.rst:48 +msgid "" +"Be aware that this stores your password in plain text. For better security, " +"consider an alternative like `keyring`_, setting environment variables, or " +"providing the password on the command line." +msgstr "" + +#: ../source/specifications/pypirc.rst:52 +msgid "" +"Otherwise, set the permissions on :file:`.pypirc` so that only you can view " +"or modify it. For example, on Linux or macOS, run:" +msgstr "" + +#: ../source/specifications/pypirc.rst:62 +msgid "Common configurations" +msgstr "" + +#: ../source/specifications/pypirc.rst:66 +msgid "" +"These examples apply to :ref:`twine`. Other projects (e.g. :ref:`flit`) also " +"use :file:`.pypirc`, but with different defaults. Please refer to each " +"project's documentation for more details and usage instructions." +msgstr "" + +#: ../source/specifications/pypirc.rst:70 +msgid "" +"Twine's default configuration mimics a :file:`.pypirc` with repository " +"sections for PyPI and TestPyPI:" +msgstr "" + +#: ../source/specifications/pypirc.rst:86 +msgid "" +"Twine will add additional configuration from :file:`$HOME/.pypirc`, the " +"command line, and environment variables to this default configuration." +msgstr "" + +#: ../source/specifications/pypirc.rst:90 +msgid "Using a PyPI token" +msgstr "" + +#: ../source/specifications/pypirc.rst:92 +msgid "" +"To set your `API token`_ for PyPI, you can create a :file:`$HOME/.pypirc` " +"similar to:" +msgstr "" + +#: ../source/specifications/pypirc.rst:101 +msgid "" +"For :ref:`TestPyPI `, add a ``[testpypi]`` section, using " +"the API token from your TestPyPI account." +msgstr "" + +#: ../source/specifications/pypirc.rst:107 +msgid "Using another package index" +msgstr "" + +#: ../source/specifications/pypirc.rst:109 +msgid "" +"To configure an additional repository, you'll need to redefine the ``index-" +"servers`` field to include the repository name. Here is a complete example " +"of a :file:`$HOME/.pypirc` for PyPI, TestPyPI, and a private repository:" +msgstr "" + +#: ../source/specifications/pypirc.rst:136 +msgid "" +"Instead of using the ``password`` field, consider saving your API tokens and " +"passwords securely using `keyring`_ (which is installed by Twine):" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:6 +msgid "``pyproject.toml`` specification" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:10 +msgid "" +"This is a **technical, formal specification**. For a gentle, user-friendly " +"guide to ``pyproject.toml``, see :ref:`writing-pyproject-toml`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:14 +msgid "" +"The ``pyproject.toml`` file acts as a configuration file for packaging-" +"related tools (as well as other tools)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:17 +msgid "" +"The ``pyproject.toml`` file is written in `TOML `_. Three " +"tables are currently specified, namely :ref:`[build-system] `, :ref:`[project] ` and :ref:`[tool] " +"`. Other tables are reserved for future use (tool-" +"specific configuration should use the ``[tool]`` table)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:27 +msgid "Declaring build system dependencies: the ``[build-system]`` table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:29 +msgid "" +"The ``[build-system]`` table declares any Python level dependencies that " +"must be installed in order to run the project's build system successfully." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:35 +msgid "" +"The ``[build-system]`` table is used to store build-related data. Initially, " +"only one key of the table is valid and is mandatory for the table: " +"``requires``. This key must have a value of a list of strings representing " +"dependencies required to execute the build system. The strings in this list " +"follow the :ref:`version specifier specification `." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:42 +msgid "" +"An example ``[build-system]`` table for a project built with ``setuptools`` " +"is:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:51 +msgid "" +"Build tools are expected to use the example configuration file above as " +"their default semantics when a ``pyproject.toml`` file is not present." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:54 +msgid "" +"Tools should not require the existence of the ``[build-system]`` table. A " +"``pyproject.toml`` file may be used to store configuration details other " +"than build-related data and thus lack a ``[build-system]`` table " +"legitimately. If the file exists but is lacking the ``[build-system]`` table " +"then the default values as specified above should be used. If the table is " +"specified but is missing required fields then the tool should consider it an " +"error." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:62 +msgid "" +"Tools may choose to present an error to the user if the file exists, " +"``[build-system]`` table is missing, and there is no clear indication that " +"the project should be built (e.g., no setup.py/setup.cfg or other build " +"configuration files, and no ``[project]`` table)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:67 +msgid "" +"To provide a type-specific representation of the resulting data from the " +"TOML file for illustrative purposes only, the following `JSON Schema " +"`_ would match the data format:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:105 +msgid "Declaring project metadata: the ``[project]`` table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:107 +msgid "" +"The ``[project]`` table specifies the project's :ref:`core metadata `." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:109 +msgid "" +"There are two kinds of metadata: *static* and *dynamic*. Static metadata is " +"specified in the ``pyproject.toml`` file directly and cannot be specified or " +"changed by a tool (this includes data *referred* to by the metadata, e.g. " +"the contents of files referenced by the metadata). Dynamic metadata is " +"listed via the ``dynamic`` key (defined later in this specification) and " +"represents metadata that a tool will later provide." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:117 +msgid "" +"The lack of a ``[project]`` table implicitly means the :term:`build backend " +"` will dynamically provide all keys." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:120 +msgid "The only keys required to be statically defined are:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:124 +msgid "" +"The keys which are required but may be specified *either* statically or " +"listed as dynamic are:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:129 +msgid "" +"All other keys are considered optional and may be specified statically, " +"listed as dynamic, or left unspecified." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:132 +msgid "The complete list of keys allowed in the ``[project]`` table are:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:134 +msgid "``authors``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:136 +msgid "``dependencies``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:138 +#: ../source/specifications/pyproject-toml.rst:574 +msgid "``dynamic``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:139 +msgid "``entry-points``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:140 +msgid "``gui-scripts``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:141 +#: ../source/specifications/pyproject-toml.rst:482 +msgid "``import-names``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:142 +#: ../source/specifications/pyproject-toml.rst:533 +msgid "``import-namespaces``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:146 +msgid "``maintainers``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:148 +msgid "``optional-dependencies``" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:161 +#: ../source/specifications/pyproject-toml.rst:176 +#: ../source/specifications/pyproject-toml.rst:191 +#: ../source/specifications/pyproject-toml.rst:245 +#: ../source/specifications/pyproject-toml.rst:257 +msgid "TOML_ type: string" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:162 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Name `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:165 +msgid "The name of the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:167 +msgid "" +"Tools SHOULD :ref:`normalize ` this name, as soon as it " +"is read for internal consistency." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:177 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Version " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:180 +msgid "" +"The version of the project, as defined in the :ref:`Version specifier " +"specification `." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:183 +msgid "Users SHOULD prefer to specify already-normalized versions." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:192 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Summary " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:195 +msgid "" +"The summary description of the project in one line. Tools MAY error if this " +"includes multiple lines." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:204 +msgid "TOML_ type: string or table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:205 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Description " +"` and :ref:`Description-Content-Type `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:209 +msgid "The full description of the project (i.e. the README)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:211 +msgid "" +"The key accepts either a string or a table. If it is a string then it is a " +"path relative to ``pyproject.toml`` to a text file containing the full " +"description. Tools MUST assume the file's encoding is UTF-8. If the file " +"path ends in a case-insensitive ``.md`` suffix, then tools MUST assume the " +"content-type is ``text/markdown``. If the file path ends in a case-" +"insensitive ``.rst``, then tools MUST assume the content-type is ``text/x-" +"rst``. If a tool recognizes more extensions than this PEP, they MAY infer " +"the content-type for the user without specifying this key as ``dynamic``. " +"For all unrecognized suffixes when a content-type is not provided, tools " +"MUST raise an error." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:222 +msgid "" +"The ``readme`` key may also take a table. The ``file`` key has a string " +"value representing a path relative to ``pyproject.toml`` to a file " +"containing the full description. The ``text`` key has a string value which " +"is the full description. These keys are mutually-exclusive, thus tools MUST " +"raise an error if the metadata specifies both keys." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:229 +msgid "" +"A table specified in the ``readme`` key also has a ``content-type`` key " +"which takes a string specifying the content-type of the full description. A " +"tool MUST raise an error if the metadata does not specify this key in the " +"table. If the metadata does not specify the ``charset`` parameter, then it " +"is assumed to be UTF-8. Tools MAY support other encodings if they choose to. " +"Tools MAY support alternative content-types which they can transform to a " +"content-type as supported by the :ref:`core metadata `. " +"Otherwise tools MUST raise an error for unsupported content-types." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:246 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Requires-" +"Python `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:249 +msgid "The Python version requirements of the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:258 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`License-" +"Expression `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:261 +msgid "" +"Text string that is a valid SPDX :term:`license expression `, as specified in :doc:`/specifications/license-expression`. " +"Tools SHOULD validate and perform case normalization of the expression." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:266 +msgid "" +"This key should **only** be specified if the license expression for any and " +"all distribution files created by a build backend using " +"the :file:`pyproject.toml` is the same as the one specified. If the license " +"expression will differ then it should either be specified as dynamic or not " +"set at all." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:273 +msgid "Legacy specification" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:275 +msgid "TOML_ type: table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:276 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`License " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:279 +msgid "" +"The table may have one of two keys. The ``file`` key has a string value that " +"is a file path relative to :file:`pyproject.toml` to the file which contains " +"the license for the project. Tools MUST assume the file's encoding is UTF-8. " +"The ``text`` key has a string value which is the license of the project. " +"These keys are mutually exclusive, so a tool MUST raise an error if the " +"metadata specifies both keys." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:286 +msgid "" +"The table subkeys were deprecated by :pep:`639` in favor of the string value." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:293 +#: ../source/specifications/pyproject-toml.rst:376 +#: ../source/specifications/pyproject-toml.rst:388 +#: ../source/specifications/pyproject-toml.rst:484 +#: ../source/specifications/pyproject-toml.rst:535 +msgid "TOML_ type: array of strings" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:294 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`License-File " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:297 +msgid "" +"An array specifying paths in the project source tree relative to the project " +"root directory (i.e. directory containing :file:`pyproject.toml` or legacy " +"project configuration files, e.g. :file:`setup.py`, :file:`setup.cfg`, etc.) " +"to file(s) containing licenses and other legal notices to be distributed " +"with the package." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:303 +msgid "" +"The strings MUST contain valid glob patterns, as specified in :doc:`/" +"specifications/glob-patterns`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:306 +msgid "" +"Patterns are relative to the directory containing :file:`pyproject.toml`," +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:308 +msgid "" +"Tools MUST assume that license file content is valid UTF-8 encoded text, and " +"SHOULD validate this and raise an error if it is not." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:311 +msgid "Build tools:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:313 +msgid "" +"MUST include all files matched by a listed pattern in all distribution " +"archives." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:315 +msgid "" +"MUST list each matched file path under a License-File field in the Core " +"Metadata." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:318 +msgid "" +"If the ``license-files`` key is present and is set to a value of an empty " +"array, then tools MUST NOT include any license files and MUST NOT raise an " +"error. If the ``license-files`` key is not defined, tools can decide how to " +"handle license files. For example they can choose not to include any files " +"or use their own logic to discover the appropriate files in the distribution." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:332 +msgid "TOML_ type: Array of inline tables with string keys and values" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:333 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Author `, :ref:`Author-email `, :ref:`Maintainer `, and :ref:`Maintainer-" +"email `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:339 +msgid "" +"The people or organizations considered to be the \"authors\" of the project. " +"The exact meaning is open to interpretation — it may list the original or " +"primary authors, current maintainers, or owners of the package." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:344 +msgid "" +"The \"maintainers\" key is similar to \"authors\" in that its exact meaning " +"is open to interpretation." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:347 +msgid "" +"These keys accept an array of tables with 2 keys: ``name`` and ``email``. " +"Both values must be strings. The ``name`` value MUST be a valid email name " +"(i.e. whatever can be put as a name, before an email, in :rfc:`822`) and not " +"contain commas. The ``email`` value MUST be a valid email address. Both keys " +"are optional, but at least one of the keys must be specified in the table." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:354 +msgid "" +"Using the data to fill in :ref:`core metadata ` is as follows:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:357 +msgid "" +"If only ``name`` is provided, the value goes in :ref:`Author ` or :ref:`Maintainer ` as appropriate." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:360 +msgid "" +"If only ``email`` is provided, the value goes in :ref:`Author-email ` or :ref:`Maintainer-email ` as appropriate." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:364 +msgid "" +"If both ``email`` and ``name`` are provided, the value goes in :ref:`Author-" +"email ` or :ref:`Maintainer-email ` as appropriate, with the format ``{name} <{email}>``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:368 +msgid "Multiple values should be separated by commas." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:377 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Keywords " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:380 +msgid "The keywords for the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:389 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Classifier " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:392 +msgid "Trove classifiers which apply to the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:394 +msgid "" +"The use of ``License ::`` classifiers is deprecated and tools MAY issue a " +"warning informing users about that. Build tools MAY raise an error if both " +"the ``license`` string value (translating to ``License-Expression`` metadata " +"field) and the ``License ::`` classifiers are used." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:406 +msgid "TOML_ type: table with keys and values of strings" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:407 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Project-URL " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:410 +msgid "" +"A table of URLs where the key is the URL label and the value is the URL " +"itself. See :ref:`well-known-project-urls` for normalization rules and well-" +"known rules when processing metadata for presentation." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:420 +msgid "Entry points" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:422 +msgid "" +"TOML_ type: table (``[project.scripts]``, ``[project.gui-scripts]``, and " +"``[project.entry-points]``)" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:424 +msgid ":ref:`Entry points specification `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:426 +msgid "" +"There are three tables related to entry points. The ``[project.scripts]`` " +"table corresponds to the ``console_scripts`` group in the :ref:`entry points " +"specification `. The key of the table is the name of the entry " +"point and the value is the object reference." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:432 +msgid "" +"The ``[project.gui-scripts]`` table corresponds to the ``gui_scripts`` group " +"in the :ref:`entry points specification `. Its format is the " +"same as ``[project.scripts]``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:436 +msgid "" +"The ``[project.entry-points]`` table is a collection of tables. Each sub-" +"table's name is an entry point group. The key and value semantics are the " +"same as ``[project.scripts]``. Users MUST NOT create nested sub-tables but " +"instead keep the entry point groups to only one level deep." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:442 +msgid "" +"Build back-ends MUST raise an error if the metadata defines a " +"``[project.entry-points.console_scripts]`` or ``[project.entry-" +"points.gui_scripts]`` table, as they would be ambiguous in the face of " +"``[project.scripts]`` and ``[project.gui-scripts]``, respectively." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:455 +msgid "" +"TOML_ type: Array of :pep:`508` strings (``dependencies``), and a table with " +"values of arrays of :pep:`508` strings (``optional-dependencies``)" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:458 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Requires-" +"Dist ` and :ref:`Provides-Extra `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:462 +msgid "The (optional) dependencies of the project." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:464 +msgid "" +"For ``dependencies``, it is a key whose value is an array of strings. Each " +"string represents a dependency of the project and MUST be formatted as a " +"valid :pep:`508` string. Each string maps directly to a :ref:`Requires-Dist " +"` entry." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:469 +msgid "" +"For ``optional-dependencies``, it is a table where each key specifies an " +"extra and whose value is an array of strings. The strings of the arrays must " +"be valid :pep:`508` strings. The keys MUST be valid values " +"for :ref:`Provides-Extra `. Each value in the " +"array thus becomes a corresponding :ref:`Requires-Dist ` entry for the matching :ref:`Provides-Extra ` metadata." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:485 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Import-Name " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:488 +msgid "" +"An array of strings specifying the import names that the project exclusively " +"provides when installed. Each string MUST be a valid Python identifier or " +"can be empty. An import name MAY be followed by a semicolon and the term " +"\"private\" (e.g. ``\"; private\"``) with any amount of whitespace " +"surrounding the semicolon." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:493 +msgid "" +"Projects SHOULD list all the shortest import names that are exclusively " +"provided by the project. If any of the shortest names are dotted names, all " +"intervening names from that name to the top-level name should also be listed " +"appropriately in ``import-names`` and/or ``import-namespaces``. For " +"instance, a project which is a single package named spam with multiple " +"submodules would only list ``project.import-names = [\"spam\"]``. A project " +"that lists ``spam.bacon.eggs`` would also need to account for ``spam`` and " +"``spam.bacon`` appropriately in ``import-names`` and ``import-namespaces``. " +"Listing all names acts as a check that the intent of the import names is as " +"expected. As well, projects SHOULD list all import names, public or private, " +"using the ``; private`` modifier as appropriate." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:505 +#: ../source/specifications/pyproject-toml.rst:554 +msgid "" +"If a project lists the same name in both ``import-names`` and ``import-" +"namespaces``, then tools MUST raise an error due to ambiguity." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:508 +msgid "" +"Projects MAY set ``import-names`` to an empty array to represent a project " +"with no import names (i.e. there are no Python modules of any kind in the " +"distribution file)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:512 +#: ../source/specifications/pyproject-toml.rst:557 +msgid "" +"Build back-ends MAY support dynamically calculating the value if the user " +"declares the key in ``project.dynamic``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:515 +msgid "Examples:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:536 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Import-" +"Namespace `" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:539 +msgid "" +"An array of strings specifying the import names that the project provides " +"when installed, but not exclusively. Each string MUST be a valid Python " +"identifier. An import name MAY be followed by a semicolon and the term " +"\"private\" (e.g. ``\"; private\"``) with any amount of whitespace " +"surrounding the semicolon. Note that unlike ``import-names``, ``import-" +"namespaces`` CANNOT be an empty array." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:545 +msgid "" +"Projects SHOULD list all the shortest import names that are exclusively " +"provided by the project. If any of the shortest names are dotted names, all " +"intervening names from that name to the top-level name should also be listed " +"appropriately in ``import-names`` and/or ``import-namespaces``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:550 +msgid "" +"This field is used for namespace packages where multiple projects can " +"contribute to the same import namespace. Projects all listing the same " +"import name in ``import-namespaces`` can be installed together without " +"shadowing each other." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:560 +msgid "Example:" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:576 +msgid "TOML_ type: array of string" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:577 +msgid "" +"Corresponding :ref:`core metadata ` field: :ref:`Dynamic " +"`" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:580 +msgid "" +"Specifies which keys listed by this PEP were intentionally unspecified so " +"another tool can/will provide such metadata dynamically. This clearly " +"delineates which metadata is purposefully unspecified and expected to stay " +"unspecified compared to being provided via tooling later on." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:586 +msgid "" +"A build back-end MUST honour statically-specified metadata (which means the " +"metadata did not list the key in ``dynamic``)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:588 +msgid "" +"A build back-end MUST raise an error if the metadata specifies ``name`` in " +"``dynamic``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:590 +msgid "" +"If the :ref:`core metadata ` specification lists a field as " +"\"Required\", then the metadata MUST specify the key statically or list it " +"in ``dynamic`` (build back-ends MUST raise an error otherwise, i.e. it " +"should not be possible for a required key to not be listed somehow in the " +"``[project]`` table)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:595 +msgid "" +"If the :ref:`core metadata ` specification lists a field as " +"\"Optional\", the metadata MAY list it in ``dynamic`` if the expectation is " +"a build back-end will provide the data for the key later." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:599 +msgid "" +"Build back-ends MUST raise an error if the metadata specifies a key " +"statically as well as being listed in ``dynamic``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:601 +msgid "" +"If the metadata does not list a key in ``dynamic``, then a build back-end " +"CANNOT fill in the requisite metadata on behalf of the user (i.e. " +"``dynamic`` is the only way to allow a tool to fill in metadata and the user " +"must opt into the filling in)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:605 +msgid "" +"Build back-ends MUST raise an error if the metadata specifies a key in " +"``dynamic`` but the build back-end was unable to determine the data for it " +"(omitting the data, if determined to be the accurate value, is acceptable)." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:615 +msgid "Arbitrary tool configuration: the ``[tool]`` table" +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:617 +msgid "" +"The ``[tool]`` table is where any tool related to your Python project, not " +"just build tools, can have users specify configuration data as long as they " +"use a sub-table within ``[tool]``, e.g. the `flit `_ tool would store its configuration in ``[tool.flit]``." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:623 +msgid "" +"A mechanism is needed to allocate names within the ``tool.*`` namespace, to " +"make sure that different projects do not attempt to use the same sub-table " +"and collide. Our rule is that a project can use the subtable ``tool.$NAME`` " +"if, and only if, they own the entry for ``$NAME`` in the Cheeseshop/PyPI." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:634 +msgid "" +"May 2016: The initial specification of the ``pyproject.toml`` file, with " +"just a ``[build-system]`` containing a ``requires`` key and a ``[tool]`` " +"table, was approved through :pep:`518`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:638 +msgid "" +"November 2020: The specification of the ``[project]`` table was approved " +"through :pep:`621`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:641 +msgid "" +"December 2024: The ``license`` key was redefined, the ``license-files`` key " +"was added and ``License::`` classifiers were deprecated through :pep:`639`." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:644 +msgid "" +"September 2025: Clarity that the ``license`` key applies to all distribution " +"files generated from the :file:`pyproject.toml` file." +msgstr "" + +#: ../source/specifications/pyproject-toml.rst:647 +msgid "" +"October 2025: The ``import-names`` and ``import-namespaces`` keys were added " +"through :pep:`794`." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:7 +msgid "Recording installed projects" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:9 +msgid "" +"This document specifies a common format of recording information about " +"Python :term:`projects ` installed in an environment. A common " +"metadata format allows tools to query, manage or uninstall projects, " +"regardless of how they were installed." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:14 +msgid "" +"Almost all information is optional. This allows tools outside the Python " +"ecosystem, such as Linux package managers, to integrate with Python tooling " +"as much as possible. For example, even if an installer cannot easily provide " +"a list of installed files in a format specific to Python tooling, it should " +"still record the name and version of the installed project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:25 +msgid "" +"Each project installed from a distribution must, in addition to files, " +"install a \"``.dist-info``\" directory located alongside importable modules " +"and packages (commonly, the ``site-packages`` directory)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:29 +msgid "" +"This directory is named as ``{name}-{version}.dist-info``, with ``name`` and " +"``version`` fields corresponding to :ref:`core-metadata`. Both fields must " +"be normalized (see the :ref:`name normalization specification ` and the :ref:`version normalization specification `), and replace dash (``-``) characters with " +"underscore (``_``) characters, so the ``.dist-info`` directory always has " +"exactly one dash (``-``) character in its stem, separating the ``name`` and " +"``version`` fields." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:37 +msgid "" +"Historically, tools have failed to replace dot characters or normalize case " +"in the ``name`` field, or not perform normalization in the ``version`` " +"field. Tools consuming ``.dist-info`` directories should expect those fields " +"to be unnormalized, and treat them as equivalent to their normalized " +"counterparts. New tools that write ``.dist-info`` directories MUST normalize " +"both ``name`` and ``version`` fields using the rules described above, and " +"existing tools are encouraged to start normalizing those fields." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:47 +msgid "" +"The ``.dist-info`` directory's name is formatted to unambiguously represent " +"a distribution as a filesystem path. Tools presenting a distribution name to " +"a user should avoid using the normalized name, and instead present the " +"specified name (when needed prior to resolution to an installed package), or " +"read the respective fields in Core Metadata, since values listed there are " +"unescaped and accurately reflect the distribution. Libraries should provide " +"API for such tools to consume, so tools can have access to the unnormalized " +"name when displaying distribution information." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:56 +msgid "" +"This ``.dist-info`` directory may contain the following files, described in " +"detail below:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:59 +msgid "``METADATA``: contains project metadata" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:60 +msgid "``RECORD``: records the list of installed files." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:61 +msgid "" +"``INSTALLER``: records the name of the tool used to install the project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:62 +msgid "``entry_points.txt``: see :ref:`entry-points` for details" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:63 +msgid "``direct_url.json``: see :ref:`direct-url` for details" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:65 +msgid "" +"The ``METADATA`` file is mandatory. All other files may be omitted at the " +"installing tool's discretion. Additional installer-specific files may be " +"present." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:69 +msgid "" +"This :file:`.dist-info/` directory may contain the following directories, " +"described in detail below:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:72 +msgid ":file:`licenses/`: contains license files." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:73 +msgid ":file:`sboms/`: contains Software Bill-of-Materials files (SBOMs)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:77 +msgid "" +"The :ref:`binary-distribution-format` specification describes additional " +"files that may appear in the ``.dist-info`` directory of a :term:`Wheel`. " +"Such files may be copied to the ``.dist-info`` directory of an installed " +"project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:82 +msgid "" +"The previous versions of this specification also specified a ``REQUESTED`` " +"file. This file is now considered a tool-specific extension, but may be " +"standardized again in the future. See `PEP 376 `_ for its original meaning." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:89 +msgid "The METADATA file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:91 +msgid "" +"The ``METADATA`` file contains metadata as described in the :ref:`core-" +"metadata` specification, version 1.1 or greater." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:94 +msgid "" +"The ``METADATA`` file is mandatory. If it cannot be created, or if required " +"core metadata is not available, installers must report an error and fail to " +"install the project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:100 +msgid "The RECORD file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:102 +msgid "" +"The ``RECORD`` file holds the list of installed files. It is a CSV file " +"containing one record (line) per installed file." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:105 +msgid "" +"The CSV dialect must be readable with the default ``reader`` of Python's " +"``csv`` module:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:108 +msgid "field delimiter: ``,`` (comma)," +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:109 +msgid "quoting char: ``\"`` (straight double quote)," +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:110 +msgid "line terminator: either ``\\r\\n`` or ``\\n``." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:112 +msgid "" +"Each record is composed of three elements: the file's **path**, the **hash** " +"of the contents, and its **size**." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:115 +msgid "" +"The *path* may be either absolute, or relative to the directory containing " +"the ``.dist-info`` directory (commonly, the ``site-packages`` directory). On " +"Windows, directories may be separated either by forward- or backslashes (``/" +"`` or ``\\``)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:120 +msgid "" +"The *hash* is either an empty string or the name of a hash algorithm " +"from :py:data:`hashlib.algorithms_guaranteed`, followed by the equals " +"character ``=`` and the digest of the file's contents, encoded with the " +"urlsafe-base64-nopad encoding (:py:func:`base64.urlsafe_b64encode(digest) " +"` with trailing ``=`` removed)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:125 +msgid "" +"The *size* is either the empty string, or file's size in bytes, as a base 10 " +"integer." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:128 +msgid "" +"For any file, either or both of the *hash* and *size* fields may be left " +"empty. Commonly, entries for ``.pyc`` files and the ``RECORD`` file itself " +"have empty *hash* and *size*. For other files, leaving the information out " +"is discouraged, as it prevents verifying the integrity of the installed " +"project." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:134 +msgid "" +"If the ``RECORD`` file is present, it must list all installed files of the " +"project, except ``.pyc`` files corresponding to ``.py`` files listed in " +"``RECORD``, which are optional. Notably, the contents of the ``.dist-info`` " +"directory (including the ``RECORD`` file itself) must be listed. Directories " +"should not be listed." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:141 +msgid "" +"To completely uninstall a package, a tool needs to remove all files listed " +"in ``RECORD``, all ``.pyc`` files (of all optimization levels) corresponding " +"to removed ``.py`` files, and any directories emptied by the uninstallation." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:146 +msgid "Here is an example snippet of a possible ``RECORD`` file::" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:165 +msgid "" +"If the ``RECORD`` file is missing, tools that rely on ``.dist-info`` must " +"not attempt to uninstall or upgrade the package. (This restriction does not " +"apply to tools that rely on other sources of information, such as system " +"package managers in Linux distros.)" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:172 +msgid "" +"It is *strongly discouraged* for an installed package to modify itself " +"(e.g., store cache files under its namespace in ``site-packages``). Changes " +"inside ``site-packages`` should be left to specialized installer tools such " +"as pip. If a package is nevertheless modified in this way, then the " +"``RECORD`` must be updated, otherwise uninstalling the package will leave " +"unlisted files in place (possibly resulting in a zombie namespace package)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:181 +msgid "The INSTALLER file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:183 +msgid "" +"If present, ``INSTALLER`` is a single-line text file naming the tool used to " +"install the project. If the installer is executable from the command line, " +"``INSTALLER`` should contain the command name. Otherwise, it should contain " +"a printable ASCII string." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:189 +msgid "The file can be terminated by zero or more ASCII whitespace characters." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:191 +msgid "Here are examples of two possible ``INSTALLER`` files::" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:199 +msgid "" +"This value should be used for informational purposes only. For example, if a " +"tool is asked to uninstall a project but finds no ``RECORD`` file, it may " +"suggest that the tool named in ``INSTALLER`` may be able to do the " +"uninstallation." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:206 +msgid "The entry_points.txt file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:208 +msgid "" +"This file MAY be created by installers to indicate when packages contain " +"components intended for discovery and use by other code, including console " +"scripts and other applications that the installer has made available for " +"execution." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:213 +msgid "Its detailed specification is at :ref:`entry-points`." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:217 +msgid "The direct_url.json file" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:219 +msgid "" +"This file MUST be created by installers when installing a distribution from " +"a requirement specifying a direct URL reference (including a VCS URL)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:225 +msgid "Its detailed specification is at :ref:`direct-url`." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:229 +msgid "The :file:`licenses/` subdirectory" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:231 +msgid "" +"If the metadata version is 2.4 or greater and one or more ``License-File`` " +"fields is specified, the :file:`.dist-info/` directory MUST contain " +"a :file:`licenses/` subdirectory which MUST contain the files listed in the " +"``License-File`` fields in the :file:`METADATA` file at their respective " +"paths relative to the :file:`licenses/` directory. Any files in this " +"directory MUST be copied from wheels by the install tools." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:240 +msgid "The :file:`sboms/` subdirectory" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:242 +msgid "" +"All files contained within the :file:`.dist-info/sboms/` directory MUST be " +"Software Bill-of-Materials (SBOM) files that describe software contained " +"within the installed package. Any files in this directory MUST be copied " +"from wheels by the install tools." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:249 +msgid "Intentionally preventing changes to installed packages" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:251 +msgid "" +"In some cases (such as when needing to manage external dependencies in " +"addition to Python ecosystem dependencies), it is desirable for a tool that " +"installs packages into a Python environment to ensure that other tools are " +"not used to uninstall or otherwise modify that installed package, as doing " +"so may cause compatibility problems with the wider environment." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:257 +msgid "To achieve this, affected tools should take the following steps:" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:259 +msgid "" +"Rename or remove the ``RECORD`` file to prevent changes via other tools " +"(e.g. appending a suffix to create a non-standard ``RECORD.tool`` file if " +"the tool itself needs the information, or omitting the file entirely if the " +"package contents are tracked and managed via other means)" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:263 +msgid "" +"Write an ``INSTALLER`` file indicating the name of the tool that should be " +"used to manage the package (this allows ``RECORD``-aware tools to provide " +"better error notices when asked to modify affected packages)" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:267 +msgid "" +"Python runtime providers may also prevent inadvertent modification of " +"platform provided packages by modifying the default Python package " +"installation scheme to use a location other than that used by platform " +"provided packages (while also ensuring both locations appear on the default " +"Python import path)." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:272 +msgid "" +"In some circumstances, it may be desirable to block even installation of " +"additional packages via Python-specific tools. For these cases refer " +"to :ref:`externally-managed-environments`" +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:280 +msgid "" +"June 2009: The original version of this specification was approved " +"through :pep:`376`. At the time, it was known as the *Database of Installed " +"Python Distributions*." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:283 +msgid "" +"March 2020: The specification of the ``direct_url.json`` file was approved " +"through :pep:`610`. It is only mentioned on this page; see :ref:`direct-url` " +"for the full definition." +msgstr "" + +#: ../source/specifications/recording-installed-packages.rst:286 +msgid "" +"September 2020: Various amendments and clarifications were approved " +"through :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 "" + +#: ../source/specifications/section-distribution-metadata.rst:3 +msgid "Package Distribution Metadata" +msgstr "" + +#: ../source/specifications/section-installation-metadata.rst:3 +msgid "Package Installation Metadata" +msgstr "" + +#: ../source/specifications/section-package-indices.rst:3 +msgid "Package Index Interfaces" +msgstr "" + +#: ../source/specifications/section-python-description-formats.rst:3 +msgid "Python Description Formats" +msgstr "" + +#: ../source/specifications/section-reproducible-environments.rst:3 +msgid "Reproducible Environments" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:6 +msgid "Simple repository API" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:8 +msgid "" +"The keywords \"**MUST**\", \"**MUST NOT**\", \"**REQUIRED**\", " +"\"**SHALL**\", \"**SHALL NOT**\", \"**SHOULD**\", \"**SHOULD NOT**\", " +"\"**RECOMMENDED**\", \"**MAY**\", and \"**OPTIONAL**\"\" in this document " +"are to be interpreted as described in :rfc:`2119`." +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: :ref:`HTML ` and :ref:`JSON `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:21 +msgid "Base API" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:23 +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/``." +msgstr "" + +#: ../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: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 "" + +#: ../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 +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 "" + +#: ../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 +msgid "HTML Serialization" +msgstr "" + +#: ../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 +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." +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: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." +msgstr "" + +#: ../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: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: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:186 +msgid "" +"There are no constraints on where the files must be hosted relative to the " +"repository." +msgstr "" + +#: ../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: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: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 " +"standard library (currently ``md5``, ``sha1``, ``sha224``, ``sha256``, " +"``sha384``, ``sha512``). The current recommendation is to use ``sha256``." +msgstr "" + +#: ../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:208 +msgid "" +"A repository **MAY** include a ``data-core-metadata`` attribute on a file " +"link." +msgstr "" + +#: ../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:217 +msgid "" +"A repository **MAY** include a ``data-dist-info-metadata`` attribute on a " +"file link." +msgstr "" + +#: ../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: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: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 " +"there is a GPG signature. Repositories that do this **SHOULD** include it on " +"every link." +msgstr "" + +#: ../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 " +"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:242 +msgid "" +"In the attribute value, < and > have to be HTML encoded as ``<`` and " +"``>``, respectively." +msgstr "" + +#: ../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: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: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:258 +#: ../source/specifications/simple-repository-api.rst:603 +msgid "" +"The semantics of how tools should handle yanked files is described " +"in :ref:`file-yanking`." +msgstr "" + +#: ../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:268 +msgid "The ``data-provenance`` attribute was added with API version 1.3." +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:274 +msgid "" +"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:277 +msgid "" +"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:489 +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: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: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 " +"presence of the attribute indicates the distribution represented by the " +"anchor tag **MUST** contain a Core Metadata file that will not be modified " +"when the distribution is processed and/or installed." +msgstr "" + +#: ../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 " +"distribution with a ``.metadata`` appended to the distribution's file name. " +"For example, the Core Metadata of a distribution served at ``/files/" +"distribution-1.0-py3.none.any.whl`` would be located at ``/files/" +"distribution-1.0-py3.none.any.whl.metadata``. This is similar to " +"how :ref:`the base HTML API specification ` " +"specifies the GPG signature file's location." +msgstr "" + +#: ../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 " +"``=``, 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:319 +msgid "Backwards Compatibility" +msgstr "" + +#: ../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: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 " +"downloading the distribution to inspect the metadata. This is similar to how " +"prior ``data-`` attribute additions expect existing tools to operate." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:334 +msgid "JSON-based Simple API for Python Package Indexes" +msgstr "" + +#: ../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 " +"responses from :ref:`the base HTML API specification `) should be serialized using `JSON `_." +msgstr "" + +#: ../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 " +"specification ` such that all of the API " +"endpoints (other than the files themselves) will utilize HTTP content " +"negotiation to allow client and server to select the correct serialization " +"format to serve, i.e. either HTML or JSON." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:351 +msgid "" +"Versioning will adhere to :ref:`the API versioning specification ` format (``Major.Minor``), which has defined the " +"existing HTML responses to be ``1.0``. Since this spec does not introduce " +"new features into the API, rather it describes a different serialization " +"format for the existing features, this spec does not change the existing " +"``1.0`` version, and instead just describes how to serialize that into JSON." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:358 +msgid "" +"Similar to :ref:`the API versioning specification `, the major version number **MUST** be incremented if any " +"changes to the new format would result in no longer being able to expect " +"existing clients to meaningfully understand the format." +msgstr "" + +#: ../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: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: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: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 " +"version numbers, within a major version, **SHOULD** be kept in sync, but the " +"specifics of how a feature serializes into each format may differ, including " +"whether or not that feature is present at all." +msgstr "" + +#: ../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:390 +msgid "JSON Serialization" +msgstr "" + +#: ../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." +msgstr "" + +#: ../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: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: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 " +"the correct location. If relative, they are relative to the current URL as " +"if it were HTML." +msgstr "" + +#: ../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: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: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`` version number, with the same " +"fail/warn semantics as defined in :ref:`the API versioning specification " +"`." +msgstr "" + +#: ../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: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: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: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:434 +#: ../source/specifications/simple-repository-api.rst:508 +msgid "" +"``meta``: The general response metadata as `described earlier `__." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:436 +#: ../source/specifications/simple-repository-api.rst:634 +msgid "As an example:" +msgstr "" + +#: ../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 " +"it is the non-normalized display name or the normalized name. In practice " +"different implementations of these specs are choosing differently here, so " +"relying on it being either non-normalized or normalized is relying on an " +"implementation detail of the repository in question." +msgstr "" + +#: ../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 ` nor this spec requires any specific ordering nor that " +"the ordering is consistent from one request to the next. Mentally this is " +"best thought of as a set, but both JSON and HTML lack the functionality to " +"have sets." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:475 +msgid "" +"The format of this URL is ``//`` where the ```` is " +"replaced by the :ref:`the base HTML API specification ` normalized name for that project, so a project named \"Silly_Walk\" " +"would have a URL like ``/silly-walk/``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:480 +msgid "" +"This URL must respond with a JSON encoded dictionary that has five keys:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:482 +msgid "``name``: The normalized name of the project." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:483 +msgid "``project-status``: An optional dictionary, containing the following:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:485 +msgid "``status``: If present, this **MUST** be a valid project status marker." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:494 +msgid "The ``status`` key was added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:496 +msgid "" +"``reason``: If present, this **MUST** be an arbitrary string description of " +"the project status." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:501 +msgid "The ``reason`` key was added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:505 +msgid "The ``project-status`` key was added with API version 1.4." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:507 +msgid "" +"``files``: A list of dictionaries, each one representing an individual file." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:509 +msgid "" +"``versions``: A list of version strings specifying all of the project " +"versions uploaded for this project. The value of ``versions`` is logically a " +"set, and as such may not contain duplicates, and the order of the versions " +"is not significant." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:516 +msgid "" +"All of the files listed in the ``files`` key MUST be associated with one of " +"the versions in the ``versions`` key. The ``versions`` key MAY contain " +"versions with no associated files (to represent versions with no files " +"uploaded, if the server has such a concept)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:523 +msgid "" +"Because servers may hold \"legacy\" data from before the adoption " +"of :ref:`the version specifiers specification (VSS) `, " +"version strings currently cannot be required to be valid VSS versions, and " +"therefore cannot be assumed to be orderable using the VSS rules. However, " +"servers **SHOULD** use normalized VSS versions where possible." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:531 +msgid "The ``versions`` key was added with API version 1.1." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:533 +msgid "Each individual file dictionary has the following keys:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:535 +msgid "``filename``: The filename that is being represented." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:536 +msgid "``url``: The URL that the file can be fetched from." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:537 +msgid "" +"``hashes``: A dictionary mapping a hash name to a hex encoded digest of the " +"file. Multiple hashes can be included, and it is up to the client to decide " +"what to do with multiple hashes (it may validate all of them or a subset of " +"them, or nothing at all). These hash names **SHOULD** always be normalized " +"to be lowercase." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:542 +msgid "" +"The ``hashes`` dictionary **MUST** be present, even if no hashes are " +"available for the file, however it is **HIGHLY** recommended that at least " +"one secure, guaranteed-to-be-available hash is always included." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:546 +msgid "" +"By default, any hash algorithm available via :py:mod:`hashlib` (specifically " +"any that can be passed to :py:func:`hashlib.new()` and do not require " +"additional parameters) can be used as a key for the hashes dictionary. At " +"least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " +"**SHOULD** always be included. At the time of this spec, ``sha256`` " +"specifically is recommended." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:551 +msgid "" +"``requires-python``: An **optional** key that exposes the :ref:`core-" +"metadata-requires-python` metadata field. Where this is present, installer " +"tools **SHOULD** ignore the download when installing to a Python version " +"that doesn't satisfy the requirement." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:557 +msgid "" +"Unlike ``data-requires-python`` in :ref:`the base HTML API specification " +"`, the ``requires-python`` key does not require " +"any special escaping other than anything JSON does naturally." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:560 +msgid "" +"``core-metadata``: An **optional** key that indicates that metadata for this " +"file is available, via the same location as specified in :ref:`the API " +"metadata file specification ` " +"(``{file_url}.metadata``). Where this is present, it **MUST** be either a " +"boolean to indicate if the file has an associated metadata file, or a " +"dictionary mapping hash names to a hex encoded digest of the metadata's hash." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:568 +msgid "" +"When this is a dictionary of hashes instead of a boolean, then all the same " +"requirements and recommendations as the ``hashes`` key hold true for this " +"key as well." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:572 +msgid "" +"If this key is missing then the metadata file may or may not exist. If the " +"key value is truthy, then the metadata file is present, and if it is falsey " +"then it is not." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:576 +msgid "" +"It is recommended that servers make the hashes of the metadata file " +"available if possible." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:579 +msgid "" +"``dist-info-metadata``: An **optional**, deprecated alias for ``core-" +"metadata``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:581 +msgid "" +"Index clients **MAY** consume this key if present, as a legacy fallback for " +"``core-metadata``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:586 +msgid "" +"``dist-info-metadata`` was standardized with :pep:`658` and renamed to " +"``core-metadata`` with :pep:`714`." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:589 +msgid "" +"``gpg-sig``: An **optional** key that acts a boolean to indicate if the file " +"has an associated GPG signature or not. The URL for the signature file " +"follows what is specified in :ref:`the base HTML API specification ` (``{file_url}.asc``). If this key does not exist, then " +"the signature may or may not exist." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:595 +msgid "" +"``yanked``: An **optional** key which may be either a boolean to indicate if " +"the file has been yanked, or a non empty, but otherwise arbitrary, string to " +"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\"." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:606 +msgid "" +"``size``: A **mandatory** key. It **MUST** contain an integer which is the " +"file size in bytes." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:610 +msgid "The ``size`` key was added with API version 1.1." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:612 +msgid "" +"``upload-time``: An **optional** key that, if present, **MUST** contain a " +"valid ISO 8601 date/time string in the format ``yyyy-mm-" +"ddThh:mm:ss.ffffffZ`` which represents the time the file was uploaded to the " +"index." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:616 +msgid "" +"As indicated by the ``Z`` suffix, the upload time **MUST** use the UTC " +"timezone. The fractional seconds part of the timestamp (the ``.ffffff`` " +"part) is optional, and if present may contain up to 6 digits of precision. " +"If a server does not record upload time information for a file, it **MAY** " +"omit the ``upload-time`` key." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:623 +msgid "The ``upload-time`` key was added with API version 1.1." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:625 +msgid "" +"``provenance``: An **optional** key which, if present **MUST** be either a " +"JSON string or ``null``. If not ``null``, it **MUST** be a URL to the file's " +"associated provenance, with the same rules as ``data-provenance`` in " +"the :ref:`base HTML API specification `." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:632 +msgid "The ``provenance`` field was added with API version 1.3." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:670 +msgid "" +"While the ``files`` key is an array, and thus is required to be in some kind " +"of an order, neither :ref:`the base HTML API specification ` nor this spec requires any specific ordering nor that " +"the ordering is consistent from one request to the next. Mentally this is " +"best thought of as a set, but both JSON and HTML lack the functionality to " +"have sets." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:679 +msgid "Content-Types" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:681 +msgid "" +"This spec proposes that all responses from the Simple API will have a " +"standard content type that describes what the response is (a Simple API " +"response), what version of the API it represents, and what serialization " +"format has been used." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:685 +msgid "The structure of this content type will be:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:691 +msgid "" +"Since only major versions should be disruptive to clients attempting to " +"understand one of these API responses, only the major version will be " +"included in the content type, and will be prefixed with a ``v`` to clarify " +"that it is a version number." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:696 +msgid "Which means that for the existing 1.0 API, the content types would be:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:698 +msgid "**JSON:** ``application/vnd.pypi.simple.v1+json``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:699 +msgid "**HTML:** ``application/vnd.pypi.simple.v1+html``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:701 +msgid "" +"In addition to the above, a special \"meta\" version is supported named " +"``latest``, whose purpose is to allow clients to request the absolute latest " +"version, without having to know ahead of time what that version is. It is " +"recommended however, that clients be explicit about what versions they " +"support." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:706 +msgid "" +"To support existing clients which expect the existing :ref:`the base HTML " +"API specification ` API responses to use the " +"``text/html`` content type, this spec further defines ``text/html`` as an " +"alias for the ``application/vnd.pypi.simple.v1+html`` content type." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:713 +msgid "Version + Format Selection" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:715 +msgid "" +"Now that there is multiple possible serializations, we need a mechanism to " +"allow clients to indicate what serialization formats they're able to " +"understand. In addition, it would be beneficial if any possible new major " +"version to the API can be added without disrupting existing clients " +"expecting the previous API version." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:720 +msgid "" +"To enable this, this spec standardizes on the use of HTTP's `Server-Driven " +"Content Negotiation `_." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:723 +msgid "" +"While this spec won't fully describe the entirety of server-driven content " +"negotiation, the flow is roughly:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:726 +msgid "" +"The client makes an HTTP request containing an ``Accept`` header listing all " +"of the version+format content types that they are able to understand." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:728 +msgid "" +"The server inspects that header, selects one of the listed content types, " +"then returns a response using that content type (treating the absence of an " +"``Accept`` header as ``Accept: */*``)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:731 +msgid "" +"If the server does not support any of the content types in the ``Accept`` " +"header then they are able to choose between 3 different options for how to " +"respond:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:735 +msgid "" +"Select a default content type other than what the client has requested and " +"return a response with that." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:737 +msgid "" +"Return a HTTP ``406 Not Acceptable`` response to indicate that none of the " +"requested content types were available, and the server was unable or " +"unwilling to select a default content type to respond with." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:740 +msgid "" +"Return a HTTP ``300 Multiple Choices`` response that contains a list of all " +"of the possible responses that could have been chosen." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:742 +msgid "" +"The client interprets the response, handling the different types of " +"responses that the server may have responded with." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:745 +msgid "" +"This spec does not specify which choices the server makes in regards to " +"handling a content type that it isn't able to return, and clients **SHOULD** " +"be prepared to handle all of the possible responses in whatever way makes " +"the most sense for that client." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:750 +msgid "" +"However, as there is no standard format for how a ``300 Multiple Choices`` " +"response can be interpreted, this spec highly discourages servers from " +"utilizing that option, as clients will have no way to understand and select " +"a different content-type to request. In addition, it's unlikely that the " +"client *could* understand a different content type anyways, so at best this " +"response would likely just be treated the same as a ``406 Not Acceptable`` " +"error." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:757 +msgid "" +"This spec **does** require that if the meta version ``latest`` is being " +"used, the server **MUST** respond with the content type for the actual " +"version that is contained in the response (i.e. an ``Accept: application/" +"vnd.pypi.simple.latest+json`` request that returns a ``v1.x`` response " +"should have a ``Content-Type`` of ``application/vnd.pypi.simple.v1+json``)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:764 +msgid "" +"The ``Accept`` header is a comma separated list of content types that the " +"client understands and is able to process. It supports three different " +"formats for each content type that is being requested:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:768 +msgid "``$type/$subtype``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:769 +msgid "``$type/*``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:770 +msgid "``*/*``" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:772 +msgid "" +"For the use of selecting a version+format, the most useful of these is " +"``$type/$subtype``, as that is the only way to actually specify the version " +"and format you want." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:776 +msgid "" +"The order of the content types listed in the ``Accept`` header does not have " +"any specific meaning, and the server **SHOULD** consider all of them to be " +"equally valid to respond with. If a client wishes to specify that they " +"prefer a specific content type over another, they may use the ``Accept`` " +"header's `quality value `_ syntax." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:783 +msgid "" +"This allows a client to specify a priority for a specific entry in their " +"``Accept`` header, by appending a ``;q=`` followed by a value between ``0`` " +"and ``1`` inclusive, with up to 3 decimal digits. When interpreting this " +"value, an entry with a higher quality has priority over an entry with a " +"lower quality, and any entry without a quality present will default to a " +"quality of ``1``." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:789 +msgid "" +"However, clients should keep in mind that a server is free to select **any** " +"of the content types they've asked for, regardless of their requested " +"priority, and it may even return a content type that they did **not** ask " +"for." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:793 +msgid "" +"To aid clients in determining the content type of the response that they " +"have received from an API request, this spec requires that servers always " +"include a ``Content-Type`` header indicating the content type of the " +"response. This is technically a backwards incompatible change, however in " +"practice `pip has been enforcing this requirement `_ so the risks for actual breakages is low." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:800 +msgid "An example of how a client can operate would look like:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:851 +msgid "" +"If a client wishes to only support HTML or only support JSON, then they " +"would just remove the content types that they do not want from the " +"``Accept`` header, and turn receiving them into an error." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:857 +msgid "Alternative Negotiation Mechanisms" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:859 +msgid "" +"While using HTTP's Content negotiation is considered the standard way for a " +"client and server to coordinate to ensure that the client is getting an HTTP " +"response that it is able to understand, there are situations where that " +"mechanism may not be sufficient. For those cases this spec has alternative " +"negotiation mechanisms that may *optionally* be used instead." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:867 +msgid "URL Parameter" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:869 +msgid "" +"Servers that implement the Simple API may choose to support a URL parameter " +"named ``format`` to allow the clients to request a specific version of the " +"URL." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:872 +msgid "" +"The value of the ``format`` parameter should be **one** of the valid content " +"types. Passing multiple content types, wild cards, quality values, etc... is " +"**not** supported." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:876 +msgid "" +"Supporting this parameter is optional, and clients **SHOULD NOT** rely on it " +"for interacting with the API. This negotiation mechanism is intended to " +"allow for easier human based exploration of the API within a browser, or to " +"allow documentation or notes to link to a specific version+format." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:881 +msgid "" +"Servers that do not support this parameter may choose to return an error " +"when it is present, or they may simple ignore its presence." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:884 +msgid "" +"When a server does implement this parameter, it **SHOULD** take precedence " +"over any values in the client's ``Accept`` header, and if the server does " +"not support the requested format, it may choose to fall back to the " +"``Accept`` header, or choose any of the error conditions that standard " +"server-driven content negotiation typically has (e.g. ``406 Not Available``, " +"``303 Multiple Choices``, or selecting a default type to return)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:893 +msgid "Endpoint Configuration" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:895 +msgid "" +"This option technically is not a special option at all, it is just a natural " +"consequence of using content negotiation and allowing servers to select " +"which of the available content types is their default." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:899 +msgid "" +"If a server is unwilling or unable to implement the server-driven content " +"negotiation, and would instead rather require users to explicitly configure " +"their client to select the version they want, then that is a supported " +"configuration." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:903 +msgid "" +"To enable this, a server should make multiple endpoints (for instance, ``/" +"simple/v1+html/`` and/or ``/simple/v1+json/``) for each version+format that " +"they wish to support. Under that endpoint, they can host a copy of their " +"repository that only supports one (or a subset) of the content-types. When a " +"client makes a request using the ``Accept`` header, the server can ignore it " +"and return the content type that corresponds to that endpoint." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:910 +msgid "" +"For clients that wish to require specific configuration, they can keep track " +"of which version+format a specific repository URL was configured for, and " +"when making a request to that server, emit an ``Accept`` header that *only* " +"includes the correct content type." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:918 +msgid "" +"This section is non-normative, and represents what the spec authors believe " +"to be the best default implementation decisions for something implementing " +"this spec, but it does **not** represent any sort of requirement to match " +"these decisions." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:922 +msgid "" +"These decisions have been chosen to maximize the number of requests that can " +"be moved onto the newest version of an API, while maintaining the greatest " +"amount of compatibility. In addition, they've also tried to make using the " +"API provide guardrails that attempt to push clients into making the best " +"choices it can." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:927 +msgid "It is recommended that servers:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:929 +msgid "" +"Support all 3 content types described in this spec, using server-driven " +"content negotiation, for as long as they reasonably can, or at least as long " +"as they're receiving non trivial traffic that uses the HTML responses." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:933 +msgid "" +"When encountering an ``Accept`` header that does not contain any content " +"types that it knows how to work with, the server should not ever return a " +"``300 Multiple Choice`` response, and instead return a ``406 Not " +"Acceptable`` response." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:938 +msgid "" +"However, if choosing to use the endpoint configuration, you should prefer to " +"return a ``200 OK`` response in the expected content type for that endpoint." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:941 +msgid "" +"When selecting an acceptable version, the server should choose the highest " +"version that the client supports, with the most expressive/featureful " +"serialization format, taking into account the specificity of the client " +"requests as well as any quality priority values they have expressed, and it " +"should only use the ``text/html`` content type as a last resort." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:947 +msgid "It is recommended that clients:" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:949 +msgid "" +"Support all 3 content types described in this spec, using server-driven " +"content negotiation, for as long as they reasonably can." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:952 +msgid "" +"When constructing an ``Accept`` header, include all of the content types " +"that you support." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:955 +msgid "" +"You should generally *not* include a quality priority value for your content " +"types, unless you have implementation specific reasons that you want the " +"server to take into account (for example, if you're using the standard " +"library HTML parser and you're worried that there may be some kinds of HTML " +"responses that you're unable to parse in some edge cases)." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:961 +msgid "" +"The one exception to this recommendation is that it is recommended that you " +"*should* include a ``;q=0.01`` value on the legacy ``text/html`` content " +"type, unless it is the only content type that you are requesting." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:965 +msgid "" +"Explicitly select what versions they are looking for, rather than using the " +"``latest`` meta version during normal operation." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:968 +msgid "" +"Check the ``Content-Type`` of the response and ensure it matches something " +"that you were expecting." +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:976 +msgid "September 2015: initial form of the HTML format, in :pep:`503`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:977 +msgid "July 2016: Requires-Python metadata, in an update to :pep:`503`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:978 +msgid "May 2019: \"yank\" support, in :pep:`592`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:979 +msgid "" +"July 2020: API versioning convention and metadata, and declaring the HTML " +"format as API v1, in :pep:`629`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:981 +msgid "" +"May 2021: providing package metadata independently from a package, " +"in :pep:`658`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:983 +msgid "" +"May 2022: initial form of the JSON format, with a mechanism for clients to " +"choose between them, and declaring both formats as API v1, in :pep:`691`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:985 +msgid "" +"October 2022: project versions and file size and upload-time in the JSON " +"format, in :pep:`700`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:987 +msgid "" +"June 2023: renaming the field which provides package metadata independently " +"from a package, in :pep:`714`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:989 +msgid "" +"November 2024: provenance metadata in the HTML and JSON formats, " +"in :pep:`740`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:990 +msgid "" +"July 2025: project status markers in the HTML and JSON formats, in :pep:`792`" +msgstr "" + +#: ../source/specifications/simple-repository-api.rst:991 +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 "" + +#: ../source/specifications/source-distribution-format.rst:8 +msgid "" +"The current standard source distribution format is identified by the " +"presence of a :file:`pyproject.toml` file in the distribution archive. The " +"layout of such a distribution was originally specified in :pep:`517` and is " +"formally documented here." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:13 +msgid "" +"There is also the legacy source distribution format, implicitly defined by " +"the behaviour of ``distutils`` module in the standard library, when " +"executing :command:`setup.py sdist`. This document does not attempt to " +"standardise this format, except to note that if a legacy source distribution " +"contains a ``PKG-INFO`` file using metadata version 2.2 or later, then it " +"MUST follow the rules applicable to source distributions defined in the " +"metadata specification." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:21 +msgid "Source distributions are also known as *sdists* for short." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:26 +msgid "Source trees" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:28 +msgid "" +"A *source tree* is a collection of files and directories -- like a version " +"control system checkout -- which contains a :file:`pyproject.toml` file that " +"can be used to build a source distribution from the contained files and " +"directories. :pep:`517` and :pep:`518` specify what is required to meet the " +"definition of what :file:`pyproject.toml` must contain for something to be " +"deemed a source tree." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:38 +msgid "Source distribution file name" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:40 +msgid "" +"The file name of a sdist was standardised in :pep:`625`. The file name must " +"be in the form ``{name}-{version}.tar.gz``, where ``{name}`` is normalised " +"according to the same rules as for binary distributions (see :ref:`binary-" +"distribution-format`), and ``{version}`` is the canonicalized form of the " +"project version (see :ref:`version-specifiers`)." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:46 +msgid "" +"The name and version components of the filename MUST match the values stored " +"in the metadata contained in the file." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:49 +msgid "" +"Code that produces a source distribution file MUST give the file a name that " +"matches this specification. This includes the ``build_sdist`` hook of " +"a :term:`build backend `." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:53 +msgid "" +"Code that processes source distribution files MAY recognise source " +"distribution files by the ``.tar.gz`` suffix and the presence of precisely " +"*one* hyphen in the filename. Code that does this may then use the " +"distribution name and version from the filename without further verification." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:59 +msgid "Source distribution file format" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:61 +msgid "" +"A ``.tar.gz`` source distribution (sdist) contains a single top-level " +"directory called ``{name}-{version}`` (e.g. ``foo-1.0``), containing the " +"source files of the package. The name and version MUST match the metadata " +"stored in the file. This directory must also contain " +"a :file:`pyproject.toml` in the format defined in :ref:`pyproject-toml-" +"spec`, and a :file:`PKG-INFO` file containing metadata in the format " +"described in the :ref:`core-metadata` specification. The metadata MUST " +"conform to at least version 2.2 of the metadata specification." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:69 +msgid "" +"If the metadata version is 2.4 or greater, the source distribution MUST " +"contain any license files specified by the ``License-File`` field in " +"the :file:`PKG-INFO` at their respective paths relative to the root " +"directory of the sdist (containing the :file:`pyproject.toml` and " +"the :file:`PKG-INFO` metadata)." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:74 +msgid "" +"No other content of a sdist is required or defined. Build systems can store " +"whatever information they need in the sdist to build the project." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:77 +msgid "" +"The tarball should use the modern POSIX.1-2001 pax tar format, which " +"specifies UTF-8 based file names. In particular, source distribution files " +"must be readable using the standard library tarfile module with the open " +"flag 'r:gz'." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:85 +msgid "Source distribution archive features" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:87 +msgid "" +"Because extracting tar files as-is is dangerous, and the results are " +"platform-specific, archive features of source distributions are limited." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:91 +msgid "Unpacking with the data filter" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:93 +msgid "" +"When extracting a source distribution, tools MUST either " +"use :py:func:`tarfile.data_filter` (e.g. :py:meth:`TarFile.extractall(..., " +"filter='data') `), OR follow the *Unpacking " +"without the data filter* section below." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:97 +msgid "" +"As an exception, on Python interpreters without :py:func:`hasattr(tarfile, " +"'data_filter') ` (:pep:`706`), tools that normally use " +"that filter (directly on indirectly) MAY warn the user and ignore this " +"specification. The trade-off between usability (e.g. fully trusting the " +"archive) and security (e.g. refusing to unpack) is left up to the tool in " +"this case." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:105 +msgid "Unpacking without the data filter" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:107 +msgid "" +"Tools that do not use the ``data`` filter directly (e.g. for backwards " +"compatibility, allowing additional features, or not using Python) MUST " +"follow this section. (At the time of this writing, the ``data`` filter also " +"follows this section, but it may get out of sync in the future.)" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:113 +msgid "" +"The following files are invalid in an *sdist* archive. Upon encountering " +"such an entry, tools SHOULD notify the user, MUST NOT unpack the entry, and " +"MAY abort with a failure:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:117 +msgid "Files that would be placed outside the destination directory." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:118 +msgid "Links (symbolic or hard) pointing outside the destination directory." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:119 +msgid "Device files (including pipes)." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:121 +msgid "" +"The following are also invalid. Tools MAY treat them as above, but are NOT " +"REQUIRED to do so:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:124 +msgid "Files with a ``..`` component in the filename or link target." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:125 +msgid "Links pointing to a file that is not part of the archive." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:127 +msgid "" +"Tools MAY unpack links (symbolic or hard) as regular files, using content " +"from the archive." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:130 +msgid "When extracting *sdist* archives:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:132 +msgid "" +"Leading slashes in file names MUST be dropped. (This is nowadays standard " +"behaviour for ``tar`` unpacking.)" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:134 +msgid "For each ``mode`` (Unix permission) bit, tools MUST either:" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:136 +msgid "use the platform's default for a new file/directory (respectively)," +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:137 +msgid "set the bit according to the archive, or" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:138 +msgid "" +"use the bit from ``rw-r--r--`` (``0o644``) for non-executable files or " +"``rwxr-xr-x`` (``0o755``) for executable files and directories." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:141 +msgid "High ``mode`` bits (setuid, setgid, sticky) MUST be cleared." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:142 +msgid "It is RECOMMENDED to preserve the user *executable* bit." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:146 +msgid "Further hints" +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:148 +msgid "" +"Tool authors are encouraged to consider how *hints for further verification* " +"in ``tarfile`` documentation apply to their tool." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:155 +msgid "" +"November 2020: The original version of this specification was approved " +"through :pep:`643`." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:157 +msgid "July 2021: Defined what a source tree is." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:158 +msgid "" +"September 2022: The filename of a source distribution was standardized " +"through :pep:`625`." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:160 +msgid "" +"August 2023: Source distribution archive features were standardized " +"through :pep:`721`." +msgstr "" + +#: ../source/specifications/source-distribution-format.rst:162 +msgid "" +"December 2024: License files inclusion into source distribution was " +"standardized through :pep:`639`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:7 +#: ../source/specifications/version-specifiers.rst:800 +msgid "Version specifiers" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:10 +msgid "" +"This specification describes a scheme for identifying versions of Python " +"software distributions, and declaring dependencies on particular versions." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:15 +msgid "Definitions" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:17 +msgid "" +"The key words \"MUST\", \"MUST NOT\", \"REQUIRED\", \"SHALL\", \"SHALL " +"NOT\", \"SHOULD\", \"SHOULD NOT\", \"RECOMMENDED\", \"MAY\", and " +"\"OPTIONAL\" in this document are to be interpreted as described " +"in :rfc:`2119`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:21 +msgid "" +"\"Build tools\" are automated tools intended to run on development systems, " +"producing source and binary distribution archives. Build tools may also be " +"invoked by integration tools in order to build software distributed as " +"sdists rather than prebuilt binary archives." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:26 +msgid "" +"\"Index servers\" are active distribution registries which publish version " +"and dependency metadata and place constraints on the permitted metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:29 +msgid "" +"\"Publication tools\" are automated tools intended to run on development " +"systems and upload source and binary distribution archives to index servers." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:32 +msgid "" +"\"Installation tools\" are integration tools specifically intended to run on " +"deployment targets, consuming source and binary distribution archives from " +"an index server or other designated location and deploying them to the " +"target system." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:37 +msgid "" +"\"Automated tools\" is a collective term covering build tools, index " +"servers, publication tools, integration tools and any other software that " +"produces or consumes distribution version and dependency metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:43 +msgid "Version scheme" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:45 +msgid "" +"Distributions are identified by a public version identifier which supports " +"all defined version comparison operations" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:48 +msgid "" +"The version scheme is used both to describe the distribution version " +"provided by a particular distribution archive, as well as to place " +"constraints on the version of dependencies needed in order to build or run " +"the software." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:57 +msgid "Public version identifiers" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:59 +msgid "" +"The canonical public version identifiers MUST comply with the following " +"scheme::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:64 +msgid "" +"Public version identifiers MUST NOT include leading or trailing whitespace." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:66 +msgid "Public version identifiers MUST be unique within a given distribution." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:68 +msgid "" +"Installation tools SHOULD ignore any public versions which do not comply " +"with this scheme but MUST also include the normalizations specified below. " +"Installation tools MAY warn the user when non-compliant or ambiguous " +"versions are detected." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:73 +msgid "" +"See also :ref:`version-specifiers-regex` which provides a regular expression " +"to check strict conformance with the canonical format, as well as a more " +"permissive regular expression accepting inputs that may require subsequent " +"normalization." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:78 +msgid "Public version identifiers are separated into up to five segments:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:80 +msgid "Epoch segment: ``N!``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:81 +msgid "Release segment: ``N(.N)*``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:82 +msgid "Pre-release segment: ``{a|b|rc}N``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:83 +msgid "Post-release segment: ``.postN``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:84 +msgid "Development release segment: ``.devN``" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:86 +msgid "" +"Any given release will be a \"final release\", \"pre-release\", \"post-" +"release\" or \"developmental release\" as defined in the following sections." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:89 +msgid "" +"All numeric components MUST be non-negative integers represented as " +"sequences of ASCII digits." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:92 +msgid "" +"All numeric components MUST be interpreted and ordered according to their " +"numeric value, not as text strings." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:95 +msgid "" +"All numeric components MAY be zero. Except as described below for the " +"release segment, a numeric component of zero has no special significance " +"aside from always being the lowest possible value in the version ordering." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:101 +msgid "" +"Some hard to read version identifiers are permitted by this scheme in order " +"to better accommodate the wide range of versioning practices across existing " +"public and private Python projects." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:105 +msgid "" +"Accordingly, some of the versioning practices which are technically " +"permitted by the specification are strongly discouraged for new projects. " +"Where this is the case, the relevant details are noted in the following " +"sections." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:116 +msgid "Local version identifiers MUST comply with the following scheme::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:120 +msgid "" +"They consist of a normal public version identifier (as defined in the " +"previous section), along with an arbitrary \"local version label\", " +"separated from the public version identifier by a plus. Local version labels " +"have no specific semantics assigned, but some syntactic restrictions are " +"imposed." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:125 +msgid "" +"Local version identifiers are used to denote fully API (and, if applicable, " +"ABI) compatible patched versions of upstream projects. For example, these " +"may be created by application developers and system integrators by applying " +"specific backported bug fixes when upgrading to a new upstream release would " +"be too disruptive to the application or other integrated system (such as a " +"Linux distribution)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:132 +msgid "" +"The inclusion of the local version label makes it possible to differentiate " +"upstream releases from potentially altered rebuilds by downstream " +"integrators. The use of a local version identifier does not affect the kind " +"of a release but, when applied to a source distribution, does indicate that " +"it may not contain the exact same code as the corresponding upstream release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:138 +msgid "" +"To ensure local version identifiers can be readily incorporated as part of " +"filenames and URLs, and to avoid formatting inconsistencies in hexadecimal " +"hash representations, local version labels MUST be limited to the following " +"set of permitted characters:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:143 +msgid "ASCII letters (``[a-zA-Z]``)" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:144 +msgid "ASCII digits (``[0-9]``)" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:145 +msgid "periods (``.``)" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:147 +msgid "Local version labels MUST start and end with an ASCII letter or digit." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:149 +msgid "" +"Comparison and ordering of local versions considers each segment of the " +"local version (divided by a ``.``) separately. If a segment consists " +"entirely of ASCII digits then that section should be considered an integer " +"for comparison purposes and if a segment contains any ASCII letters then " +"that segment is compared lexicographically with case insensitivity. When " +"comparing a numeric and lexicographic segment, the numeric section always " +"compares as greater than the lexicographic segment. Additionally a local " +"version with a great number of segments will always compare as greater than " +"a local version with fewer segments, as long as the shorter local version's " +"segments match the beginning of the longer local version's segments exactly." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:160 +msgid "" +"An \"upstream project\" is a project that defines its own public versions. A " +"\"downstream project\" is one which tracks and redistributes an upstream " +"project, potentially backporting security and bug fixes from later versions " +"of the upstream project." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:165 +msgid "" +"Local version identifiers SHOULD NOT be used when publishing upstream " +"projects to a public index server, but MAY be used to identify private " +"builds created directly from the project source. Local version identifiers " +"SHOULD be used by downstream projects when releasing a version that is API " +"compatible with the version of the upstream project identified by the public " +"version identifier, but contains additional changes (such as bug fixes). As " +"the Python Package Index is intended solely for indexing and hosting " +"upstream projects, it MUST NOT allow the use of local version identifiers." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:175 +msgid "" +"Source distributions using a local version identifier SHOULD provide the " +"``python.integrator`` extension metadata (as defined in :pep:`459`)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:180 +msgid "Final releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:182 +msgid "" +"A version identifier that consists solely of a release segment and " +"optionally an epoch identifier is termed a \"final release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:185 +msgid "" +"The release segment consists of one or more non-negative integer values, " +"separated by dots::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:190 +msgid "" +"Final releases within a project MUST be numbered in a consistently " +"increasing fashion, otherwise automated tools will not be able to upgrade " +"them correctly." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:194 +msgid "" +"Comparison and ordering of release segments considers the numeric value of " +"each component of the release segment in turn. When comparing release " +"segments with different numbers of components, the shorter segment is padded " +"out with additional zeros as necessary." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:199 +msgid "" +"While any number of additional components after the first are permitted " +"under this scheme, the most common variants are to use two components " +"(\"major.minor\") or three components (\"major.minor.micro\")." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:203 +msgid "For example::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:218 +msgid "" +"A release series is any set of final release numbers that start with a " +"common prefix. For example, ``3.3.1``, ``3.3.5`` and ``3.3.9.45`` are all " +"part of the ``3.3`` release series." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:224 +msgid "" +"``X.Y`` and ``X.Y.0`` are not considered distinct release numbers, as the " +"release segment comparison rules implicit expand the two component form to " +"``X.Y.0`` when comparing it to any release segment that includes three " +"components." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:229 +msgid "" +"Date-based release segments are also permitted. An example of a date-based " +"release scheme using the year and month of the release::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:243 +msgid "Pre-releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:245 +msgid "" +"Some projects use an \"alpha, beta, release candidate\" pre-release cycle to " +"support testing by their users prior to a final release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:248 +msgid "" +"If used as part of a project's development cycle, these pre-releases are " +"indicated by including a pre-release segment in the version identifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:256 +msgid "" +"A version identifier that consists solely of a release segment and a pre-" +"release segment is termed a \"pre-release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:259 +msgid "" +"The pre-release segment consists of an alphabetical identifier for the pre-" +"release phase, along with a non-negative integer value. Pre-releases for a " +"given release are ordered first by phase (alpha, beta, release candidate) " +"and then by the numerical component within that phase." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:264 +msgid "" +"Installation tools MAY accept both ``c`` and ``rc`` releases for a common " +"release segment in order to handle some existing legacy distributions." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:267 +msgid "" +"Installation tools SHOULD interpret ``c`` versions as being equivalent to " +"``rc`` versions (that is, ``c1`` indicates the same version as ``rc1``)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:270 +msgid "" +"Build tools, publication tools and index servers SHOULD disallow the " +"creation of both ``rc`` and ``c`` releases for a common release segment." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:275 +msgid "Post-releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:277 +msgid "" +"Some projects use post-releases to address minor errors in a final release " +"that do not affect the distributed software (for example, correcting an " +"error in the release notes)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:281 +msgid "" +"If used as part of a project's development cycle, these post-releases are " +"indicated by including a post-release segment in the version identifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:286 +msgid "" +"A version identifier that includes a post-release segment without a " +"developmental release segment is termed a \"post-release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:289 +msgid "" +"The post-release segment consists of the string ``.post``, followed by a non-" +"negative integer value. Post-releases are ordered by their numerical " +"component, immediately following the corresponding release, and ahead of any " +"subsequent release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:296 +msgid "" +"The use of post-releases to publish maintenance releases containing actual " +"bug fixes is strongly discouraged. In general, it is better to use a longer " +"release number and increment the final component for each maintenance " +"release." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:301 +msgid "Post-releases are also permitted for pre-releases::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:309 +msgid "" +"Creating post-releases of pre-releases is strongly discouraged, as it makes " +"the version identifier difficult to parse for human readers. In general, it " +"is substantially clearer to simply create a new pre-release by incrementing " +"the numeric component." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:316 +msgid "Developmental releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:318 +msgid "" +"Some projects make regular developmental releases, and system packagers " +"(especially for Linux distributions) may wish to create early releases " +"directly from source control which do not conflict with later project " +"releases." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:323 +msgid "" +"If used as part of a project's development cycle, these developmental " +"releases are indicated by including a developmental release segment in the " +"version identifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:329 +msgid "" +"A version identifier that includes a developmental release segment is termed " +"a \"developmental release\"." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:332 +msgid "" +"The developmental release segment consists of the string ``.dev``, followed " +"by a non-negative integer value. Developmental releases are ordered by their " +"numerical component, immediately before the corresponding release (and " +"before any pre-releases with the same release segment), and following any " +"previous release (including any post-releases)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:338 +msgid "" +"Developmental releases are also permitted for pre-releases and post-" +"releases::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:346 +msgid "" +"Do note that development releases are considered a type of pre-release when " +"handling them." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:351 +msgid "" +"While they may be useful for continuous integration purposes, publishing " +"developmental releases of pre-releases to general purpose public index " +"servers is strongly discouraged, as it makes the version identifier " +"difficult to parse for human readers. If such a release needs to be " +"published, it is substantially clearer to instead create a new pre-release " +"by incrementing the numeric component." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:358 +msgid "" +"Developmental releases of post-releases are also strongly discouraged, but " +"they may be appropriate for projects which use the post-release notation for " +"full maintenance releases which may include code changes." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:364 +msgid "Version epochs" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:366 +msgid "" +"If included in a version identifier, the epoch appears before all other " +"components, separated from the release segment by an exclamation mark::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:371 +msgid "If no explicit epoch is given, the implicit epoch is ``0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:373 +msgid "" +"Most version identifiers will not include an epoch, as an explicit epoch is " +"only needed if a project *changes* the way it handles version numbering in a " +"way that means the normal version ordering rules will give the wrong answer. " +"For example, if a project is using date based versions like ``2014.04`` and " +"would like to switch to semantic versions like ``1.0``, then the new " +"releases would be identified as *older* than the date based releases when " +"using the normal sorting scheme::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:387 +msgid "" +"However, by specifying an explicit epoch, the sort order can be changed " +"appropriately, as all versions from a later epoch are sorted after versions " +"from an earlier epoch::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:399 +msgid "" +"Use of nonzero epochs is discouraged. They are often not supported or " +"discouraged by downstream packaging where Python packages may need to be " +"consumed, and due to their scarce use they may also not be well supported by " +"Python packaging tools." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:404 +msgid "" +"When version scheme needs to be changed, it is preferable to continue with " +"monotonically increasing numbers in epoch zero. For example, the version " +"2026.x could be unambiguously followed by 3000.x." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:408 +msgid "" +"See `Discouraging use of epoch segments in versions `__ for the relevant discussion." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:416 +msgid "Normalization" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:418 +msgid "" +"In order to maintain better compatibility with existing versions there are a " +"number of \"alternative\" syntaxes that MUST be taken into account when " +"parsing versions. These syntaxes MUST be considered when parsing a version, " +"however they should be \"normalized\" to the standard syntax defined above." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:425 +msgid "Case sensitivity" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:427 +msgid "" +"All ascii letters should be interpreted case insensitively within a version " +"and the normal form is lowercase. This allows versions such as ``1.1RC1`` " +"which would be normalized to ``1.1rc1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:433 +msgid "Integer Normalization" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:435 +msgid "" +"All integers are interpreted via the ``int()`` built in and normalize to the " +"string form of the output. This means that an integer version of ``00`` " +"would normalize to ``0`` while ``09000`` would normalize to ``9000``. This " +"does not hold true for integers inside of an alphanumeric segment of a local " +"version such as ``1.0+foo0100`` which is already in its normalized form." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:443 +msgid "Pre-release separators" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:445 +msgid "" +"Pre-releases should allow a ``.``, ``-``, or ``_`` separator between the " +"release segment and the pre-release segment. The normal form for this is " +"without a separator. This allows versions such as ``1.1.a1`` or ``1.1-a1`` " +"which would be normalized to ``1.1a1``. It should also allow a separator to " +"be used between the pre-release signifier and the numeral. This allows " +"versions such as ``1.0a.1`` which would be normalized to ``1.0a1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:454 +msgid "Pre-release spelling" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:456 +msgid "" +"Pre-releases allow the additional spellings of ``alpha``, ``beta``, ``c``, " +"``pre``, and ``preview`` for ``a``, ``b``, ``rc``, ``rc``, and ``rc`` " +"respectively. This allows versions such as ``1.1alpha1``, ``1.1beta2``, or " +"``1.1c3`` which normalize to ``1.1a1``, ``1.1b2``, and ``1.1rc3``. In every " +"case the additional spelling should be considered equivalent to their normal " +"forms." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:465 +msgid "Implicit pre-release number" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:467 +msgid "" +"Pre releases allow omitting the numeral in which case it is implicitly " +"assumed to be ``0``. The normal form for this is to include the ``0`` " +"explicitly. This allows versions such as ``1.2a`` which is normalized to " +"``1.2a0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:473 +msgid "Post release separators" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:475 +msgid "" +"Post releases allow a ``.``, ``-``, or ``_`` separator as well as omitting " +"the separator all together. The normal form of this is with the ``.`` " +"separator. This allows versions such as ``1.2-post2`` or ``1.2post2`` which " +"normalize to ``1.2.post2``. Like the pre-release separator this also allows " +"an optional separator between the post release signifier and the numeral. " +"This allows versions like ``1.2.post-2`` which would normalize to " +"``1.2.post2``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:484 +msgid "Post release spelling" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:486 +msgid "" +"Post-releases allow the additional spellings of ``rev`` and ``r``. This " +"allows versions such as ``1.0-r4`` which normalizes to ``1.0.post4``. As " +"with the pre-releases the additional spellings should be considered " +"equivalent to their normal forms." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:493 +msgid "Implicit post release number" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:495 +msgid "" +"Post releases allow omitting the numeral in which case it is implicitly " +"assumed to be ``0``. The normal form for this is to include the ``0`` " +"explicitly. This allows versions such as ``1.2.post`` which is normalized to " +"``1.2.post0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:501 +msgid "Implicit post releases" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:503 +msgid "" +"Post releases allow omitting the ``post`` signifier all together. When using " +"this form the separator MUST be ``-`` and no other form is allowed. This " +"allows versions such as ``1.0-1`` to be normalized to ``1.0.post1``. This " +"particular normalization MUST NOT be used in conjunction with the implicit " +"post release number rule. In other words, ``1.0-`` is *not* a valid version " +"and it does *not* normalize to ``1.0.post0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:512 +msgid "Development release separators" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:514 +msgid "" +"Development releases allow a ``.``, ``-``, or a ``_`` separator as well as " +"omitting the separator all together. The normal form of this is with the " +"``.`` separator. This allows versions such as ``1.2-dev2`` or ``1.2dev2`` " +"which normalize to ``1.2.dev2``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:521 +msgid "Implicit development release number" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:523 +msgid "" +"Development releases allow omitting the numeral in which case it is " +"implicitly assumed to be ``0``. The normal form for this is to include the " +"``0`` explicitly. This allows versions such as ``1.2.dev`` which is " +"normalized to ``1.2.dev0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:530 +msgid "Local version segments" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:532 +msgid "" +"With a local version, in addition to the use of ``.`` as a separator of " +"segments, the use of ``-`` and ``_`` is also acceptable. The normal form is " +"using the ``.`` character. This allows versions such as ``1.0+ubuntu-1`` to " +"be normalized to ``1.0+ubuntu.1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:539 +msgid "Preceding v character" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:541 +msgid "" +"In order to support the common version notation of ``v1.0`` versions may be " +"preceded by a single literal ``v`` character. This character MUST be ignored " +"for all purposes and should be omitted from all normalized forms of the " +"version. The same version with and without the ``v`` is considered " +"equivalent." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:548 +msgid "Leading and Trailing Whitespace" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:550 +msgid "" +"Leading and trailing whitespace must be silently ignored and removed from " +"all normalized forms of a version. This includes ``\" \"``, ``\\t``, " +"``\\n``, ``\\r``, ``\\f``, and ``\\v``. This allows accidental whitespace to " +"be handled sensibly, such as a version like ``1.0\\n`` which normalizes to " +"``1.0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:557 +msgid "Examples of compliant version schemes" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:559 +msgid "" +"The standard version scheme is designed to encompass a wide range of " +"identification practices across public and private Python projects. In " +"practice, a single project attempting to use the full flexibility offered by " +"the scheme would create a situation where human users had difficulty " +"figuring out the relative order of versions, even though the rules above " +"ensure all compliant tools will order them consistently." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:566 +msgid "" +"The following examples illustrate a small selection of the different " +"approaches projects may choose to identify their releases, while still " +"ensuring that the \"latest release\" and the \"latest stable release\" can " +"be easily determined, both by human users and automated tools." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:571 +msgid "Simple \"major.minor\" versioning::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:580 +msgid "Simple \"major.minor.micro\" versioning::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:588 +msgid "" +"\"major.minor\" versioning with alpha, beta and candidate pre-releases::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:600 +msgid "" +"\"major.minor\" versioning with developmental releases, release candidates " +"and post-releases for minor corrections::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:615 +msgid "" +"Date based releases, using an incrementing serial within each year, skipping " +"zero::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:629 +msgid "Summary of permitted suffixes and relative ordering" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:633 +msgid "" +"This section is intended primarily for authors of tools that automatically " +"process distribution metadata, rather than developers of Python " +"distributions deciding on a versioning scheme." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:637 +msgid "" +"The epoch segment of version identifiers MUST be sorted according to the " +"numeric value of the given epoch. If no epoch segment is present, the " +"implicit numeric value is ``0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:641 +msgid "" +"The release segment of version identifiers MUST be sorted in the same order " +"as Python's tuple sorting when the normalized release segment is parsed as " +"follows::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:647 +msgid "" +"All release segments involved in the comparison MUST be converted to a " +"consistent length by padding shorter segments with zeros as needed." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:650 +msgid "" +"Within a numeric release (``1.0``, ``2.7.3``), the following suffixes are " +"permitted and MUST be ordered as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:655 +msgid "" +"Note that ``c`` is considered to be semantically equivalent to ``rc`` and " +"must be sorted as if it were ``rc``. Tools MAY reject the case of having the " +"same ``N`` for both a ``c`` and a ``rc`` in the same release segment as " +"ambiguous and remain in compliance with the specification." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:660 +msgid "" +"Within an alpha (``1.0a1``), beta (``1.0b1``), or release candidate " +"(``1.0rc1``, ``1.0c1``), the following suffixes are permitted and MUST be " +"ordered as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:666 +msgid "" +"Within a post-release (``1.0.post1``), the following suffixes are permitted " +"and MUST be ordered as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:671 +msgid "" +"Note that ``devN`` and ``postN`` MUST always be preceded by a dot, even when " +"used immediately following a numeric version (e.g. ``1.0.dev456``, " +"``1.0.post1``)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:675 +msgid "" +"Within a pre-release, post-release or development release segment with a " +"shared prefix, ordering MUST be by the value of the numeric component." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:678 +msgid "The following example covers many of the possible combinations::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:703 +msgid "Version ordering across different metadata versions" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:705 +msgid "" +"Metadata v1.0 (:pep:`241`) and metadata v1.1 (:pep:`314`) do not specify a " +"standard version identification or ordering scheme. However metadata v1.2 " +"(:pep:`345`) does specify a scheme which is defined in :pep:`386`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:709 +msgid "" +"Due to the nature of the simple installer API it is not possible for an " +"installer to be aware of which metadata version a particular distribution " +"was using. Additionally installers required the ability to create a " +"reasonably prioritized list that includes all, or as many as possible, " +"versions of a project to determine which versions it should install. These " +"requirements necessitate a standardization across one parsing mechanism to " +"be used for all versions of a project." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:717 +msgid "" +"Due to the above, this specification MUST be used for all versions of " +"metadata and supersedes :pep:`386` even for metadata v1.2. Tools SHOULD " +"ignore any versions which cannot be parsed by the rules in this " +"specification, but MAY fall back to implementation defined version parsing " +"and ordering schemes if no versions complying with this specification are " +"available." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:723 +msgid "" +"Distribution users may wish to explicitly remove non-compliant versions from " +"any private package indexes they control." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:728 +msgid "Compatibility with other version schemes" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:730 +msgid "" +"Some projects may choose to use a version scheme which requires translation " +"in order to comply with the public version scheme defined in this " +"specification. In such cases, the project specific version can be stored in " +"the metadata while the translated public version is published in the version " +"field." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:735 +msgid "" +"This allows automated distribution tools to provide consistently correct " +"ordering of published releases, while still allowing developers to use the " +"internal versioning scheme they prefer for their projects." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:743 +msgid "" +"`Semantic versioning`_ is a popular version identification scheme that is " +"more prescriptive than this specification regarding the significance of " +"different elements of a release number. Even if a project chooses not to " +"abide by the details of semantic versioning, the scheme is worth " +"understanding as it covers many of the issues that can arise when depending " +"on other distributions, and when publishing a distribution that others rely " +"on." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:750 +msgid "" +"The \"Major.Minor.Patch\" (described in this specification as " +"\"major.minor.micro\") aspects of semantic versioning (clauses 1-8 in the " +"2.0.0 specification) are fully compatible with the version scheme defined in " +"this specification, and abiding by these aspects is encouraged." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:755 +msgid "" +"Semantic versions containing a hyphen (pre-releases - clause 10) or a plus " +"sign (builds - clause 11) are *not* compatible with this specification and " +"are not permitted in the public version field." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:759 +msgid "" +"One possible mechanism to translate such semantic versioning based source " +"labels to compatible public versions is to use the ``.devN`` suffix to " +"specify the appropriate version order." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:763 +msgid "" +"Specific build information may also be included in local version labels." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:769 +msgid "DVCS based version labels" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:771 +msgid "" +"Many build tools integrate with distributed version control systems like Git " +"and Mercurial in order to add an identifying hash to the version identifier. " +"As hashes cannot be ordered reliably such versions are not permitted in the " +"public version field." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:776 +msgid "" +"As with semantic versioning, the public ``.devN`` suffix may be used to " +"uniquely identify such releases for publication, while the original DVCS " +"based label can be stored in the project metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:780 +msgid "" +"Identifying hash information may also be included in local version labels." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:784 +msgid "Olson database versioning" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:786 +msgid "" +"The ``pytz`` project inherits its versioning scheme from the corresponding " +"Olson timezone database versioning scheme: the year followed by a lowercase " +"character indicating the version of the database within that year." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:790 +msgid "" +"This can be translated to a compliant public version identifier as ``." +"``, where the serial starts at zero or one (for the 'a' " +"release) and is incremented with each subsequent database update within the " +"year." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:795 +msgid "" +"As with other translated version identifiers, the corresponding Olson " +"database version could be recorded in the project metadata." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:802 +msgid "" +"A version specifier consists of a series of version clauses, separated by " +"commas. For example::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:807 +msgid "The comparison operator determines the kind of version clause:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:809 +msgid "``~=``: `Compatible release`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:810 +msgid "``==``: `Version matching`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:811 +msgid "``!=``: `Version exclusion`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:812 +msgid "``<=``, ``>=``: `Inclusive ordered comparison`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:813 +msgid "``<``, ``>``: `Exclusive ordered comparison`_ clause" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:814 +msgid "``===``: `Arbitrary equality`_ clause." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:816 +msgid "" +"The comma (\",\") is equivalent to a logical **and** operator: a candidate " +"version must match all given version clauses in order to match the specifier " +"as a whole." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:820 +msgid "" +"Whitespace between a conditional operator and the following version " +"identifier is optional, as is the whitespace around the commas." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:823 +msgid "" +"When multiple candidate versions match a version specifier, the preferred " +"version SHOULD be the latest version as determined by the consistent " +"ordering defined by the standard `Version scheme`_. Whether or not pre-" +"releases are considered as candidate versions SHOULD be handled as described " +"in `Handling of pre-releases`_." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:829 +msgid "" +"Except where specifically noted below, local version identifiers MUST NOT be " +"permitted in version specifiers, and local version labels MUST be ignored " +"entirely when checking if candidate versions match a given version specifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:838 +msgid "Compatible release" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:840 +msgid "" +"A compatible release clause consists of the compatible release operator " +"``~=`` and a version identifier. It matches any candidate version that is " +"expected to be compatible with the specified version." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:844 +msgid "" +"The specified version identifier must be in the standard format described in " +"`Version scheme`_. Local version identifiers are NOT permitted in this " +"version specifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:848 +msgid "" +"For a given release identifier ``V.N``, the compatible release clause is " +"approximately equivalent to the pair of comparison clauses::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:853 +msgid "" +"This operator MUST NOT be used with a single segment version number such as " +"``~=1``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:856 +msgid "For example, the following groups of version clauses are equivalent::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:864 +msgid "" +"If a pre-release, post-release or developmental release is named in a " +"compatible release clause as ``V.N.suffix``, then the suffix is ignored when " +"determining the required prefix match::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:874 +msgid "" +"The padding rules for release segment comparisons means that the assumed " +"degree of forward compatibility in a compatible release clause can be " +"controlled by appending additional zeros to the version specifier::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:886 +msgid "Version matching" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:888 +msgid "" +"A version matching clause includes the version matching operator ``==`` and " +"a version identifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:891 +msgid "" +"The specified version identifier must be in the standard format described in " +"`Version scheme`_, but a trailing ``.*`` is permitted on public version " +"identifiers as described below." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:895 +msgid "" +"By default, the version matching operator is based on a strict equality " +"comparison: the specified version must be exactly the same as the requested " +"version. The *only* substitution performed is the zero padding of the " +"release segment to ensure the release segments are compared with the same " +"length." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:901 +msgid "" +"Whether or not strict version matching is appropriate depends on the " +"specific use case for the version specifier. Automated tools SHOULD at least " +"issue warnings and MAY reject them entirely when strict version matches are " +"used inappropriately." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:906 +msgid "" +"Prefix matching may be requested instead of strict comparison, by appending " +"a trailing ``.*`` to the version identifier in the version matching clause. " +"This means that additional trailing segments will be ignored when " +"determining whether or not a version identifier matches the clause. If the " +"specified version includes only a release segment, then trailing components " +"(or the lack thereof) in the release segment are also ignored." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:913 +#: ../source/specifications/version-specifiers.rst:974 +msgid "" +"For example, given the version ``1.1.post1``, the following clauses would " +"match or not as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:920 +msgid "" +"For purposes of prefix matching, the pre-release segment is considered to " +"have an implied preceding ``.``, so given the version ``1.1a1``, the " +"following clauses would match or not as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:928 +msgid "" +"An exact match is also considered a prefix match (this interpretation is " +"implied by the usual zero padding rules for the release segment of version " +"identifiers). Given the version ``1.1``, the following clauses would match " +"or not as shown::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:940 +msgid "" +"It is invalid to have a prefix match containing a development or local " +"release such as ``1.0.dev1.*`` or ``1.0+foo1.*``. If present, the " +"development release segment is always the final segment in the public " +"version, and the local version is ignored for comparison purposes, so using " +"either in a prefix match wouldn't make any sense." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:946 +msgid "" +"The use of ``==`` (without at least the wildcard suffix) when defining " +"dependencies for published distributions is strongly discouraged as it " +"greatly complicates the deployment of security fixes. The strict version " +"comparison operator is intended primarily for use when defining dependencies " +"for repeatable *deployments of applications* while using a shared " +"distribution index." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:953 +msgid "" +"If the specified version identifier is a public version identifier (no local " +"version label), then the local version label of any candidate versions MUST " +"be ignored when matching versions." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:957 +msgid "" +"If the specified version identifier is a local version identifier, then the " +"local version labels of candidate versions MUST be considered when matching " +"versions, with the public version identifier being matched as described " +"above, and the local version label being checked for equivalence using a " +"strict string equality comparison." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:965 +msgid "Version exclusion" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:967 +msgid "" +"A version exclusion clause includes the version exclusion operator ``!=`` " +"and a version identifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:970 +msgid "" +"The allowed version identifiers and comparison semantics are the same as " +"those of the `Version matching`_ operator, except that the sense of any " +"match is inverted." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:983 +msgid "Inclusive ordered comparison" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:985 +msgid "" +"An inclusive ordered comparison clause includes a comparison operator and a " +"version identifier, and will match any version where the comparison is " +"correct based on the relative position of the candidate version and the " +"specified version given the consistent ordering defined by the standard " +"`Version scheme`_." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:991 +msgid "The inclusive ordered comparison operators are ``<=`` and ``>=``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:993 +#: ../source/specifications/version-specifiers.rst:1023 +msgid "" +"As with version matching, the release segment is zero padded as necessary to " +"ensure the release segments are compared with the same length." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:996 +#: ../source/specifications/version-specifiers.rst:1026 +msgid "Local version identifiers are NOT permitted in this version specifier." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1000 +msgid "Exclusive ordered comparison" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1002 +msgid "" +"The exclusive ordered comparisons ``>`` and ``<`` are similar to the " +"inclusive ordered comparisons in that they rely on the relative position of " +"the candidate version and the specified version given the consistent " +"ordering defined by the standard `Version scheme`_. However, they " +"specifically exclude pre-releases, post-releases, and local versions of the " +"specified version." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1008 +msgid "" +"The exclusive ordered comparison ``>V`` **MUST NOT** allow a post-release of " +"the given version unless ``V`` itself is a post release. You may mandate " +"that releases are later than a particular post release, including additional " +"post releases, by using ``>V.postN``. For example, ``>1.7`` will allow " +"``1.7.1`` but not ``1.7.0.post1`` and ``>1.7.post2`` will allow ``1.7.1`` " +"and ``1.7.0.post3`` but not ``1.7.0``." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1015 +msgid "" +"The exclusive ordered comparison ``>V`` **MUST NOT** match a local version " +"of the specified version." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1018 +msgid "" +"The exclusive ordered comparison ``=`` entry as part " +"of the URL fragment." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1148 +msgid "" +"For version control references, the ``VCS+protocol`` scheme SHOULD be used " +"to identify both the version control system and the secure transport, and a " +"version control system with hash based commit identifiers SHOULD be used. " +"Automated tools MAY omit warnings about missing hashes for version control " +"systems that do not provide hash based commit identifiers." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1154 +msgid "" +"To handle version control systems that do not support including commit or " +"tag references directly in the URL, that information may be appended to the " +"end of the URL using the ``@`` or the ``@#`` " +"notation." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1161 +msgid "" +"This isn't *quite* the same as the existing VCS reference notation supported " +"by pip. Firstly, the distribution name is moved in front rather than " +"embedded as part of the URL. Secondly, the commit hash is included even when " +"retrieving based on a tag, in order to meet the requirement above that " +"*every* link should include a hash to make things harder to forge (creating " +"a malicious repo with a particular tag is easy, creating one with a specific " +"*hash*, less so)." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1169 +msgid "Remote URL examples::" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1177 +msgid "File URLs" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1179 +msgid "" +"File URLs take the form of ``file:///``. If the ```` is " +"omitted it is assumed to be ``localhost`` and even if the ```` is " +"omitted the third slash MUST still exist. The ```` defines what the " +"file path on the filesystem that is to be accessed." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1184 +msgid "" +"On the various \\*nix operating systems the only allowed values for " +"```` is for it to be omitted, ``localhost``, or another FQDN that the " +"current machine believes matches its own host. In other words, on \\*nix the " +"``file://`` scheme can only be used to access paths on the local machine." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1189 +msgid "" +"On Windows the file format should include the drive letter if applicable as " +"part of the ```` (e.g. ``file:///c:/path/to/a/file``). Unlike \\*nix " +"on Windows the ```` parameter may be used to specify a file residing " +"on a network share. In other words, in order to translate ``\\" +"\\machine\\volume\\file`` to a ``file://`` url, it would end up as ``file://" +"machine/volume/file``. For more information on ``file://`` URLs on Windows " +"see `MSDN `_." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1200 +msgid "Summary of differences from pkg_resources.parse_version" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1202 +msgid "" +"Note: this comparison is to ``pkg_resources.parse_version`` as it existed at " +"the time :pep:`440` was written. After the PEP was accepted, setuptools 6.0 " +"and later versions adopted the behaviour described here." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1206 +msgid "" +"Local versions sort differently, this specification requires that they sort " +"as greater than the same version without a local version, whereas " +"``pkg_resources.parse_version`` considers it a pre-release marker." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1210 +msgid "" +"This specification purposely restricts the syntax which constitutes a valid " +"version while ``pkg_resources.parse_version`` attempts to provide some " +"meaning from *any* arbitrary string." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1214 +msgid "" +"``pkg_resources.parse_version`` allows arbitrarily deeply nested version " +"signifiers like ``1.0.dev1.post1.dev5``. This specification however allows " +"only a single use of each type and they must exist in a certain order." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1223 +msgid "Appendix: Parsing version strings with regular expressions" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1225 +msgid "" +"As noted earlier in the :ref:`public-version-identifiers` section, published " +"version identifiers SHOULD use the canonical format. This section provides " +"regular expressions that can be used to test whether a version is already in " +"that form, and if it's not, extract the various components for subsequent " +"normalization." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1231 +msgid "" +"To test whether a version identifier is in the canonical format, you can use " +"the following function:" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1240 +msgid "" +"To extract the components of a version identifier, use the following regular " +"expression (as defined by the `packaging `_ project):" +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1287 +msgid "August 2014: This specification was approved through :pep:`440`." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1288 +msgid "" +"May 2025: Clarify that development releases are a form of pre-release when " +"they are handled." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1290 +msgid "Nov 2025: Make arbitrary equality case insensitivity explicit." +msgstr "" + +#: ../source/specifications/version-specifiers.rst:1291 +msgid "Jan 2026: The use of epochs was discouraged." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:6 +msgid "Python Virtual Environments" +msgstr "" + +#: ../source/specifications/virtual-environments.rst:8 +msgid "" +"For Python 3.3 and later versions, :pep:`405` introduced interpreter level " +"support for the concept of \"Python Virtual Environments\". Each virtual " +"environment has its own Python binary (allowing creation of environments " +"with various Python versions) and can have its own independent set of " +"installed Python packages in its site directories, but shares the standard " +"library with the base installed Python. While the concept of virtual " +"environments existed prior to this update, there was no previously " +"standardised mechanism for declaring or discovering them." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:18 +msgid "Runtime detection of virtual environments" +msgstr "" + +#: ../source/specifications/virtual-environments.rst:20 +msgid "" +"At runtime, virtual environments can be identified by virtue " +"of :py:data:`sys.prefix` (the filesystem location of the running " +"interpreter) having a different value from :py:data:`sys.base_prefix` (the " +"default filesystem location of the standard library directories)." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:25 +msgid "" +":ref:`venv-explanation` in the Python standard library documentation for " +"the :py:mod:`venv` module covers this along with the concept of " +"\"activating\" a virtual environment in an interactive operating system " +"shell (this activation step is optional and hence the changes it makes can't " +"be reliably used to detect whether a Python program is running in a virtual " +"environment or not)." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:33 +msgid "Declaring installation environments as Python virtual environments" +msgstr "" + +#: ../source/specifications/virtual-environments.rst:35 +msgid "" +"As described in :pep:`405`, a Python virtual environment in its simplest " +"form consists of nothing more than a copy or symlink of the Python binary " +"accompanied by a ``site-packages`` directory and a ``pyvenv.cfg`` file with " +"a ``home`` key that indicates where to find the Python standard library " +"modules." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:40 +msgid "" +"While designed to meet the needs of the standard :py:mod:`venv` module, this " +"split installation and ``pyvenv.cfg`` file approach can be used by *any* " +"Python installation provider that desires Python-specific tools to be aware " +"that they are already operating in a virtual environment and no further " +"environment nesting is required or desired." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:46 +msgid "" +"Even in the absence of a ``pyvenv.cfg`` file, any approach (e.g. " +"``sitecustomize.py``, patching the installed Python runtime) that results " +"in :py:data:`sys.prefix` and :py:data:`sys.base_prefix` having different " +"values, while still providing a matching default package installation scheme " +"in :py:mod:`sysconfig`, will be detected and behave as a Python virtual " +"environment." +msgstr "" + +#: ../source/specifications/virtual-environments.rst:56 +msgid "May 2012: This specification was approved through :pep:`405`." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:5 +msgid "Well-known Project URLs in Metadata" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:9 +msgid "" +"This document is primarily of interest to metadata *consumers*, who should " +"use the normalization rules and well-known list below to make their " +"presentation of project URLs consistent across the Python ecosystem." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:14 +msgid "" +"Metadata *producers* (such as build tools and individual package " +"maintainers) may continue to use any labels they please, within the overall " +"``Project-URL`` length restrictions. However, when possible, users are " +"*encouraged* to pick meaningful labels that normalize to well-known labels." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:22 +msgid "" +"See :ref:`Writing your pyproject.toml - urls ` " +"for user-oriented guidance on choosing project URL labels in your package's " +"metadata." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:26 +msgid "This specification was originally defined in :pep:`753`." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:28 +msgid "" +":pep:`753` deprecates the :ref:`core-metadata-home-page` and :ref:`core-" +"metadata-download-url` metadata fields in favor of :ref:`core-metadata-" +"project-url`, and defines a normalization and lookup procedure for " +"determining whether a ``Project-URL`` is \"well-known,\" i.e. has the " +"semantics assigned to ``Home-page``, ``Download-URL``, or other common " +"project URLs." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:35 +msgid "" +"This allows indices (such as the Python Package Index) and other downstream " +"metadata consumers to present project URLs in a consistent manner." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:42 +msgid "Label normalization" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:46 +msgid "" +"Label normalization is performed by metadata *consumers*, not metadata " +"producers." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:49 +msgid "" +"To determine whether a ``Project-URL`` label is \"well-known,\" metadata " +"consumers should normalize the label before comparing it to the :ref:`list " +"of well-known labels `." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:53 +msgid "" +"The normalization procedure for ``Project-URL`` labels is defined by the " +"following Python function:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:65 +msgid "" +"In plain language: a label is *normalized* by deleting all ASCII punctuation " +"and whitespace, and then converting the result to lowercase." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:68 +msgid "" +"The following table shows examples of labels before (raw) and after " +"normalization:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:74 +msgid "Raw" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:75 +msgid "Normalized" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:76 +msgid "``Homepage``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:77 +#: ../source/specifications/well-known-project-urls.rst:79 +#: ../source/specifications/well-known-project-urls.rst:81 +msgid "``homepage``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:78 +msgid "``Home-page``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:80 +msgid "``Home page``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:82 +msgid "``Change_Log``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:83 +msgid "``changelog``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:84 +msgid "``What's New?``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:85 +msgid "``whatsnew``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:86 +#: ../source/specifications/well-known-project-urls.rst:87 +msgid "``github``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:92 +msgid "Well-known labels" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:96 +msgid "" +"The list of well-known labels is a living standard, maintained as part of " +"this document." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:99 +msgid "" +"The following table lists labels that are well-known for the purpose of " +"specializing the presentation of ``Project-URL`` metadata:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:105 +msgid "Label (Human-readable equivalent)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:107 +msgid "Aliases" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:108 +msgid "``homepage`` (Homepage)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:109 +msgid "The project's home page" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:110 +#: ../source/specifications/well-known-project-urls.rst:116 +#: ../source/specifications/well-known-project-urls.rst:122 +msgid "*(none)*" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:111 +msgid "``source`` (Source Code)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:112 +msgid "The project's hosted source code or repository" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:113 +msgid "``repository``, ``sourcecode``, ``github``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:114 +msgid "``download`` (Download)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:115 +msgid "" +"A download URL for the current distribution, equivalent to ``Download-URL``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:117 +msgid "``changelog`` (Changelog)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:118 +msgid "The project's comprehensive changelog" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:119 +msgid "``changes``, ``whatsnew``, ``history``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:120 +msgid "``releasenotes`` (Release Notes)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:121 +msgid "The project's curated release notes" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:123 +msgid "``documentation`` (Documentation)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:124 +msgid "The project's online documentation" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:125 +msgid "``docs``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:126 +msgid "``issues`` (Issue Tracker)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:127 +msgid "The project's bug tracker" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:128 +msgid "``bugs``, ``issue``, ``tracker``, ``issuetracker``, ``bugtracker``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:129 +msgid "``funding`` (Funding)" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:130 +msgid "Funding Information" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:131 +msgid "``sponsor``, ``donate``, ``donation``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:133 +msgid "" +"Package metadata consumers may choose to render aliased labels the same as " +"their \"parent\" well known label, or further specialize them." +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:137 +msgid "Example behavior" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:139 +msgid "" +"The following shows the flow of project URL metadata from ``pyproject.toml`` " +"to core metadata to a potential index presentation:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:142 +msgid "Example project URLs in standard configuration" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:151 +msgid "Core metadata representation" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:159 +msgid "Potential rendering" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:167 +msgid "" +"Observe that the core metadata appears in the form provided by the user " +"(since metadata *producers* do not perform normalization), but the metadata " +"*consumer* normalizes and identifies appropriate human-readable equivalents " +"based on the normalized form:" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:172 +msgid "``Home page`` becomes ``homepage``, which is rendered as ``Homepage``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:173 +msgid "" +"``DOCUMENTATION`` becomes ``documentation``, which is rendered as " +"``Documentation``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:174 +msgid "" +"``Repository`` becomes ``repository``, which is rendered as ``Source Code``" +msgstr "" + +#: ../source/specifications/well-known-project-urls.rst:175 +msgid "" +"``GitHub`` becomes ``github``, which is rendered as ``Source Code (GitHub)`` " +"(as a specialization of ``Source Code``)" +msgstr "" + +#: ../source/support.rst:3 +msgid "How to Get Support" +msgstr "" + +#: ../source/support.rst:5 +msgid "" +"For support related to a specific project, see the links on " +"the :doc:`Projects ` page." +msgstr "" + +#: ../source/support.rst:8 +msgid "" +"For something more general, or when you're just not sure, please `open an " +"issue `_ on the `packaging-problems `_ repository on GitHub." +msgstr "" + +#: ../source/tutorials/creating-documentation.rst:4 +msgid "Creating documentation" +msgstr "" + +#: ../source/tutorials/creating-documentation.rst:6 +msgid "" +"This tutorial has been removed since it is not related to packaging and was " +"unmaintained. Please see the `Sphinx tutorial `_ instead." +msgstr "" + +#: ../source/tutorials/index.rst:4 +msgid "" +"**Tutorials** are opinionated step-by-step guides to help you get familiar " +"with packaging concepts. For more detailed information on specific packaging " +"topics, see :doc:`/guides/index`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:5 +msgid "Installing Packages" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:7 +msgid "" +"This section covers the basics of how to install Python :term:`packages " +"`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:10 +msgid "" +"It's important to note that the term \"package\" in this context is being " +"used to describe a bundle of software to be installed (i.e. as a synonym for " +"a :term:`distribution `). It does not refer to the " +"kind of :term:`package ` that you import in your Python " +"source code (i.e. a container of modules). It is common in the Python " +"community to refer to a :term:`distribution ` using " +"the term \"package\". Using the term \"distribution\" is often not " +"preferred, because it can easily be confused with a Linux distribution, or " +"another larger software distribution like Python itself." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:24 +msgid "Requirements for Installing Packages" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:26 +msgid "" +"This section describes the steps to follow before installing other Python " +"packages." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:31 +msgid "Ensure you can run Python from the command line" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:33 +msgid "" +"Before you go any further, make sure you have Python and that the expected " +"version is available from your command line. You can check this by running:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:49 +msgid "" +"You should get some output like ``Python 3.6.3``. If you do not have Python, " +"please install the latest 3.x version from `python.org`_ or refer to " +"the :ref:`Installing Python ` section of the " +"Hitchhiker's Guide to Python." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:53 +msgid "If you're a newcomer and you get an error like this:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:62 +msgid "" +"It's because this command and other suggested commands in this tutorial are " +"intended to be run in a *shell* (also called a *terminal* or *console*). See " +"the Python for Beginners `getting started tutorial`_ for an introduction to " +"using your operating system's shell and interacting with Python." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:68 +msgid "" +"If you're using an enhanced shell like IPython or the Jupyter notebook, you " +"can run system commands like those in this tutorial by prefacing them with a " +"``!`` character:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:78 +msgid "" +"It's recommended to write ``{sys.executable}`` rather than plain ``python`` " +"in order to ensure that commands are run in the Python installation matching " +"the currently running notebook (which may not be the same Python " +"installation that the ``python`` command refers to)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:83 +msgid "" +"Due to the way most Linux distributions are handling the Python 3 migration, " +"Linux users using the system Python without creating a virtual environment " +"first should replace the ``python`` command in this tutorial with " +"``python3`` and the ``python -m pip`` command with ``python3 -m pip --" +"user``. Do *not* run any of the commands in this tutorial with ``sudo``: if " +"you get a permissions error, come back to the section on creating virtual " +"environments, set one up, and then continue with the tutorial as written." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:95 +msgid "Ensure you can run pip from the command line" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:97 +msgid "" +"Additionally, you'll need to make sure you have :ref:`pip` available. You " +"can check this by running:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:112 +msgid "" +"If you installed Python from source, with an installer from `python.org`_, " +"or via `Homebrew`_ you should already have pip. If you're on Linux and " +"installed using your OS package manager, you may have to install pip " +"separately, see :doc:`/guides/installing-using-linux-tools`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:119 +msgid "" +"If ``pip`` isn't already installed, then first try to bootstrap it from the " +"standard library:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:134 +msgid "If that still doesn't allow you to run ``python -m pip``:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:136 +msgid "" +"Securely Download `get-pip.py `_ [1]_" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:139 +msgid "" +"Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " +"not installed already." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:145 +msgid "" +"Be cautious if you're using a Python install that's managed by your " +"operating system or another package manager. get-pip.py does not coordinate " +"with those tools, and may leave your system in an inconsistent state. You " +"can use ``python get-pip.py --prefix=/usr/local/`` to install in ``/usr/" +"local`` which is designed for locally-installed software." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:154 +msgid "Ensure pip is up to date" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:156 +msgid "" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:172 +msgid "Optionally, create a virtual environment" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:174 +msgid "" +"See :ref:`section below ` for " +"details, but here's the basic :doc:`venv ` [3]_ command " +"to use on a typical Linux system:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:191 +msgid "" +"This will create a new virtual environment in the ``tutorial_env`` " +"subdirectory, and configure the current shell to use it as the default " +"``python`` environment." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:198 +msgid "Creating Virtual Environments" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:200 +msgid "" +"Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " +"application, rather than being installed globally. If you are looking to " +"safely install global command line tools, see :doc:`/guides/installing-stand-" +"alone-command-line-tools`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:206 +msgid "" +"Imagine you have an application that needs version 1 of LibFoo, but another " +"application requires version 2. How can you use both these applications? If " +"you install everything into /usr/lib/python3.6/site-packages (or whatever " +"your platform’s standard location is), it’s easy to end up in a situation " +"where you unintentionally upgrade an application that shouldn’t be upgraded." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:212 +msgid "" +"Or more generally, what if you want to install an application and leave it " +"be? If an application works, any change in its libraries or the versions of " +"those libraries can break the application." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:216 +msgid "" +"Also, what if you can’t install :term:`packages ` into " +"the global site-packages directory? For instance, on a shared host." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:219 +msgid "" +"In all these cases, virtual environments can help you. They have their own " +"installation directories and they don’t share libraries with other virtual " +"environments." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:223 +msgid "" +"Currently, there are two common tools for creating Python virtual " +"environments:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:225 +msgid "" +":doc:`venv ` is available by default in Python 3.3 and " +"later, and installs :ref:`pip` into created virtual environments in Python " +"3.4 and later (Python versions prior to 3.12 also " +"installed :ref:`setuptools`)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:228 +msgid "" +":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " +"and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " +"installed into created virtual environments by default. Note that " +"``setuptools`` is no longer included by default starting with Python 3.12 " +"(and ``virtualenv`` follows this behavior)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:233 +msgid "The basic usage is like so:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:235 +msgid "Using :doc:`venv `:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:251 +msgid "Using :ref:`virtualenv`:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:267 +msgid "" +"For more information, see the :doc:`venv ` docs or " +"the :doc:`virtualenv ` docs." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:270 +msgid "" +"The use of :command:`source` under Unix shells ensures that the virtual " +"environment's variables are set within the current shell, and not in a " +"subprocess (which then disappears, having no useful effect)." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:275 +msgid "" +"In both of the above cases, Windows users should *not* use " +"the :command:`source` command, but should rather run the :command:`activate` " +"script directly from the command shell like so:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:285 +msgid "" +"Managing multiple virtual environments directly can become tedious, so " +"the :ref:`dependency management tutorial ` introduces " +"a higher level tool, :ref:`Pipenv`, that automatically manages a separate " +"virtual environment for each project and application that you work on." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:292 +msgid "Use pip for Installing" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:294 +msgid "" +":ref:`pip` is the recommended installer. Below, we'll cover the most common " +"usage scenarios. For more detail, see the :doc:`pip docs `, which " +"includes a complete :doc:`Reference Guide `." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:300 +msgid "Installing from PyPI" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:302 +msgid "" +"The most common usage of :ref:`pip` is to install from the :term:`Python " +"Package Index ` using a :term:`requirement " +"specifier `. Generally speaking, a requirement " +"specifier is composed of a project name followed by an " +"optional :term:`version specifier `. A full description " +"of the supported specifiers can be found in the :ref:`Version specifier " +"specification `. Below are some examples." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:310 +msgid "To install the latest version of \"SomeProject\":" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:324 +msgid "To install a specific version:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:338 +msgid "To install greater than or equal to one version and less than another:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:353 +msgid "" +"To install a version that's :ref:`compatible ` with a certain version: [4]_" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:368 +msgid "" +"In this case, this means to install any version \"==1.4.*\" version that's " +"also \">=1.4.2\"." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:373 +msgid "Source Distributions vs Wheels" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:375 +msgid "" +":ref:`pip` can install from either :term:`Source Distributions (sdist) " +"` or :term:`Wheels `, but if both " +"are present on PyPI, pip will prefer a compatible :term:`wheel `. You " +"can override pip`s default behavior by e.g. using its :ref:`--no-binary " +"` option." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:381 +msgid "" +":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " +"Distributions (sdist) `, especially when " +"a project contains compiled extensions." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:386 +msgid "" +"If :ref:`pip` does not find a wheel to install, it will locally build a " +"wheel and cache it for future installs, instead of rebuilding the source " +"distribution in the future." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:394 +msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:411 +msgid "Installing to the User Site" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:413 +msgid "" +"To install :term:`packages ` that are isolated to the " +"current user, use the ``--user`` flag:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:428 +msgid "" +"For more information see the `User Installs `_ section from the pip docs." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:432 +msgid "" +"Note that the ``--user`` flag has no effect when inside a virtual " +"environment - all installation commands will affect the virtual environment." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:435 +msgid "" +"If ``SomeProject`` defines any command-line scripts or console entry points, " +"``--user`` will cause them to be installed inside the `user base`_'s binary " +"directory, which may or may not already be present in your " +"shell's :envvar:`PATH`. (Starting in version 10, pip displays a warning " +"when installing any scripts to a directory outside :envvar:`PATH`.) If the " +"scripts are not available in your shell after installation, you'll need to " +"add the directory to your :envvar:`PATH`:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:443 +msgid "" +"On Linux and macOS you can find the user base binary directory by running " +"``python -m site --user-base`` and adding ``bin`` to the end. For example, " +"this will typically print ``~/.local`` (with ``~`` expanded to the absolute " +"path to your home directory) so you'll need to add ``~/.local/bin`` to your " +"``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:449 +msgid "" +"On Windows you can find the user base binary directory by running ``py -m " +"site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " +"example, this could return ``C:" +"\\Users\\Username\\AppData\\Roaming\\Python36\\site-packages`` so you would " +"need to set your ``PATH`` to include ``C:" +"\\Users\\Username\\AppData\\Roaming\\Python36\\Scripts``. You can set your " +"user ``PATH`` permanently in the `Control Panel`_. You may need to log out " +"for the ``PATH`` changes to take effect." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:465 +msgid "" +"Install a list of requirements specified in a :ref:`Requirements File " +"`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:481 +msgid "Installing from VCS" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:483 +msgid "" +"Install a project from VCS in \"editable\" mode. For a full breakdown of " +"the syntax, see pip's section on :ref:`VCS Support `." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:505 +msgid "Installing from other Indexes" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:507 +msgid "Install from an alternate index" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:521 +msgid "" +"Search an additional index during install, in addition to :term:`PyPI " +"`" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:537 +msgid "Installing from a local src tree" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:540 +msgid "" +"Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " +"installed, but yet is still editable from the src tree." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:557 +msgid "You can also install normally from src" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:572 +msgid "Installing from local archives" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:574 +msgid "Install a particular source archive file." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:588 +msgid "" +"Install from a local directory containing archives (and don't " +"check :term:`PyPI `)" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:608 +msgid "Installing from other sources" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:610 +msgid "" +"To install from other data sources (for example Amazon S3 storage) you can " +"create a helper application that presents the data in a format compliant " +"with the :ref:`simple repository API `:, and use the " +"``--extra-index-url`` flag to direct pip to use that index." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:622 +msgid "Installing Prereleases" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:624 +msgid "" +"Find pre-release and development versions, in addition to stable versions. " +"By default, pip only finds stable versions." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:640 +msgid "Installing \"Extras\"" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:642 +msgid "" +"Extras are optional \"variants\" of a package, which may include additional " +"dependencies, and thereby enable additional functionality from the package. " +"If you wish to install an extra for a package which you know publishes one, " +"you can include it in the pip installation command:" +msgstr "" + +#: ../source/tutorials/installing-packages.rst:665 +msgid "" +"\"Secure\" in this context means using a modern browser or a tool " +"like :command:`curl` that verifies SSL certificates when downloading from " +"https URLs." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:674 +msgid "" +"Beginning with Python 3.4, ``venv`` (a stdlib alternative " +"to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" +"installed, thereby making it an equal alternative to :ref:`virtualenv`." +msgstr "" + +#: ../source/tutorials/installing-packages.rst:679 +msgid "" +"The compatible release specifier was accepted in :pep:`440` and support was " +"released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:4 +msgid "Managing Application Dependencies" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:6 +msgid "" +"The :ref:`package installation tutorial ` covered the " +"basics of getting set up to install and update Python packages." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:9 +msgid "" +"However, running these commands interactively can get tedious even for your " +"own personal projects, and things get even more difficult when trying to set " +"up development environments automatically for projects with multiple " +"contributors." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:13 +msgid "" +"This tutorial walks you through the use of :ref:`Pipenv` to manage " +"dependencies for an application. It will show you how to install and use the " +"necessary tools and make strong recommendations on best practices." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:17 +msgid "" +"Keep in mind that Python is used for a great many different purposes, and " +"precisely how you want to manage your dependencies may change based on how " +"you decide to publish your software. The guidance presented here is most " +"directly applicable to the development and deployment of network services " +"(including web applications), but is also very well suited to managing " +"development and testing environments for any kind of project." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:24 +msgid "" +"For alternatives, see `Other Tools for Application Dependency Management`_." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:27 +msgid "Installing Pipenv" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:29 +msgid "" +":ref:`Pipenv` is a dependency manager for Python projects. If you're " +"familiar with Node.js' `npm`_ or Ruby's `bundler`_, it is similar in spirit " +"to those tools. While :ref:`pip` alone is often sufficient for personal use, " +"Pipenv is recommended for collaborative projects as it's a higher-level tool " +"that simplifies dependency management for common use cases." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:35 +msgid "Use ``pip`` to install Pipenv:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:51 +msgid "" +"This does a `user installation`_ to prevent breaking any system-wide " +"packages. If ``pipenv`` isn't available in your shell after installation, " +"you'll need to add the :py:data:`user base `'s binary " +"directory to your ``PATH``. See :ref:`Installing to the User Site` for more " +"information." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:62 +msgid "Installing packages for your project" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:64 +msgid "" +"Pipenv manages dependencies on a per-project basis. To install packages, " +"change into your project's directory (or just an empty directory for this " +"tutorial) and run:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:73 +msgid "" +"Pipenv will install the `Requests`_ library and create a ``Pipfile`` for you " +"in your project's directory. The :ref:`Pipfile` is used to track which " +"dependencies your project needs in case you need to re-install them, such as " +"when you share your project with others. You should get output similar to " +"this (although the exact paths shown will vary):" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:109 +msgid "Using installed packages" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:111 +msgid "" +"Now that Requests is installed you can create a simple :file:`main.py` file " +"to use it:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:122 +msgid "Then you can run this script using ``pipenv run``:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:128 +msgid "You should get output similar to this:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:134 +msgid "" +"Using ``pipenv run`` ensures that your installed packages are available to " +"your script. It's also possible to spawn a new shell that ensures all " +"commands have access to your installed packages with ``pipenv shell``." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:140 +#: ../source/tutorials/packaging-projects.rst:484 +msgid "Next steps" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:142 +msgid "" +"Congratulations, you now know how to effectively manage dependencies and " +"development environments on a collaborative Python project! ✨ 🍰 ✨" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:145 +msgid "" +"If you're interested in creating and distributing your own Python packages, " +"see the :ref:`tutorial on packaging and distributing packages `." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:148 +msgid "" +"Note that when your application includes definitions of Python source " +"packages, they (and their dependencies) can be added to your ``pipenv`` " +"environment with ``pipenv install -e `` " +"(e.g. ``pipenv install -e .`` or ``pipenv install -e src``)." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:157 +msgid "Other Tools for Application Dependency Management" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:159 +msgid "" +"If you find this particular approach to managing application dependencies " +"isn't working well for you or your use case, you may want to explore these " +"other tools and techniques, listed in alphabetical order, to see if one of " +"them is a better fit:" +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:163 +msgid "" +"`hatch `_ for opinionated coverage of even " +"more steps in the project management workflow, such as incrementing versions " +"and creating new skeleton projects from project templates." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:166 +msgid "" +"`micropipenv `_ for a " +"lightweight wrapper around pip that supports ``requirements.txt``, Pipenv " +"and Poetry lock files, or converting them to pip-tools compatible output. " +"Designed for containerized Python applications, but not limited to them." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:170 +msgid "" +"`PDM `_ for a modern Python package " +"management relying on standards such as :pep:`517` and :pep:`621`." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:172 +msgid "" +"`pip-tools `_ for creating a lock " +"file of all dependencies from a list of packages directly used in a project, " +"and ensuring that only those dependencies are installed." +msgstr "" + +#: ../source/tutorials/managing-dependencies.rst:175 +msgid "" +"`Poetry `__ for a tool comparable " +"in scope to Pipenv that focuses more directly on use cases where the project " +"being managed is structured as a distributable Python package with a valid " +"``pyproject.toml`` file. By contrast, Pipenv explicitly avoids making the " +"assumption that the application being worked on will support distribution as " +"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 "" + +#: ../source/tutorials/packaging-projects.rst:4 +msgid "" +"This tutorial walks you through how to package a simple Python project. It " +"will show you how to add the necessary files and structure to create the " +"package, how to build the package, and how to upload it to the Python " +"Package Index (PyPI)." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:10 +msgid "" +"If you have trouble running the commands in this tutorial, please copy the " +"command and its output, then `open an issue`_ on the `packaging-problems`_ " +"repository on GitHub. We'll do our best to help you!" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:18 +msgid "" +"Some of the commands require a newer version of :ref:`pip`, so start by " +"making sure you have the latest version installed:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:35 +msgid "A simple project" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:37 +msgid "" +"This tutorial uses a simple project named " +"``example_package_YOUR_USERNAME_HERE``. If your username is ``me``, then the " +"package would be ``example_package_me``; this ensures that you have a unique " +"package name that doesn't conflict with packages uploaded by other people " +"following this tutorial. We recommend following this tutorial as-is using " +"this project, before packaging your own project." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:44 +msgid "Create the following file structure locally:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:54 +msgid "" +"The directory containing the Python files should match the project name. " +"This simplifies the configuration and is more obvious to users who install " +"the package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:57 +msgid "" +"Creating the file :file:`__init__.py` is recommended because the existence " +"of an :file:`__init__.py` file allows users to import the directory as a " +"regular package, even if (as is the case in this " +"tutorial) :file:`__init__.py` is empty. [#namespace-packages]_" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:62 +msgid "" +":file:`example.py` is an example of a module within the package that could " +"contain the logic (functions, classes, constants, etc.) of your package. " +"Open that file and enter the following content:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:71 +msgid "" +"If you are unfamiliar with Python's :term:`modules ` " +"and :term:`import packages `, take a few minutes to read " +"over the `Python documentation for packages and modules`_." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:75 +msgid "" +"Once you create this structure, you'll want to run all of the commands in " +"this tutorial within the ``packaging_tutorial`` directory." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:83 +msgid "Creating the package files" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:85 +msgid "" +"You will now add files that are used to prepare the project for " +"distribution. When you're done, the project structure will look like this:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:103 +msgid "Creating a test directory" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:105 +msgid ":file:`tests/` is a placeholder for test files. Leave it empty for now." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:111 +msgid "Choosing a build backend" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:113 +msgid "" +"Tools like :ref:`pip` and :ref:`build` do not actually convert your sources " +"into a :term:`distribution package ` (like a wheel); " +"that job is performed by a :term:`build backend `. The build " +"backend determines how your project will specify its configuration, " +"including metadata (information about the project, for example, the name and " +"tags that are displayed on PyPI) and input files. Build backends have " +"different levels of functionality, such as whether they support " +"building :term:`extension modules `, and you should choose " +"one that suits your needs and preferences." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:122 +msgid "" +"You can choose from a number of backends; this tutorial uses :ref:`Hatchling " +"` by default, but it will work identically " +"with :ref:`setuptools`, :ref:`Flit `, :ref:`PDM `, and others " +"that support the ``[project]`` table for :ref:`metadata `." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:129 +msgid "" +"Some build backends are part of larger tools that provide a command-line " +"interface with additional features like project initialization and version " +"management, as well as building, uploading, and installing packages. This " +"tutorial uses single-purpose tools that work independently." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:134 +msgid "" +"The :file:`pyproject.toml` tells :term:`build frontend ` " +"tools like :ref:`pip` and :ref:`build` which backend to use for your " +"project. Below are some examples for common build backends, but check your " +"backend's own documentation for more details." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:141 +msgid "" +"The ``requires`` key is a list of packages that are needed to build your " +"package. The :term:`frontend ` should install them " +"automatically when building your package. Frontends usually run builds in " +"isolated environments, so omitting dependencies here may cause build-time " +"errors. This should always include your backend's package, and might have " +"other build-time dependencies. The minimum version specified in the above " +"code block is the one that introduced support for :ref:`the new license " +"metadata `." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:150 +msgid "" +"The ``build-backend`` key is the name of the Python object that frontends " +"will use to perform the build." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:153 +msgid "" +"Both of these values will be provided by the documentation for your build " +"backend, or generated by its command line interface. There should be no need " +"for you to customize these settings." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:157 +msgid "" +"Additional configuration of the build tool will either be in a ``tool`` " +"section of the ``pyproject.toml``, or in a special file defined by the build " +"tool. For example, when using ``setuptools`` as your build backend, " +"additional configuration may be added to a ``setup.py`` or ``setup.cfg`` " +"file, and specifying ``setuptools.build_meta`` in your build allows the " +"tools to locate and use these automatically." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:167 +msgid "Configuring metadata" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:169 +msgid "" +"Open :file:`pyproject.toml` and enter the following content. Change the " +"``name`` to include your username; this ensures that you have a unique " +"package name that doesn't conflict with packages uploaded by other people " +"following this tutorial." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:196 +msgid "" +"``name`` is the *distribution name* of your package. This can be any name as " +"long as it only contains letters, numbers, ``.``, ``_`` , and ``-``. It also " +"must not already be taken on PyPI. **Be sure to update this with your " +"username** for this tutorial, as this ensures you won't try to upload a " +"package with the same name as one which already exists." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:201 +msgid "" +"``version`` is the package version. (Some build backends allow it to be " +"specified another way, such as from a file or Git tag.)" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:203 +msgid "" +"``authors`` is used to identify the author of the package; you specify a " +"name and an email for each author. You can also list ``maintainers`` in the " +"same format." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:206 +msgid "``description`` is a short, one-sentence summary of the package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:207 +msgid "" +"``readme`` is a path to a file containing a detailed description of the " +"package. This is shown on the package detail page on PyPI. In this case, the " +"description is loaded from :file:`README.md` (which is a common pattern). " +"There also is a more advanced table form described in " +"the :ref:`pyproject.toml guide `." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:212 +msgid "" +"``requires-python`` gives the versions of Python supported by your project. " +"An installer like :ref:`pip` will look back through older versions of " +"packages until it finds one that has a matching Python version." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:215 +msgid "" +"``classifiers`` gives the index and :ref:`pip` some additional metadata " +"about your package. In this case, the package is only compatible with Python " +"3 and is OS-independent. You should always include at least which version(s) " +"of Python your package works on and which operating systems your package " +"will work on. For a complete list of classifiers, see https://pypi.org/" +"classifiers/." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:222 +msgid "" +"``license`` is the :term:`SPDX license expression ` of " +"your :term:`Distribution Archive` files." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:224 +msgid "" +"``license-files`` is the list of glob paths to the license files, relative " +"to the directory where :file:`pyproject.toml` is located." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:226 +msgid "" +"``urls`` lets you list any number of extra links to show on PyPI. Generally " +"this could be to the source, documentation, issue trackers, etc." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:229 +msgid "" +"See the :ref:`pyproject.toml guide ` for details on " +"these and other fields that can be defined in the ``[project]`` table. Other " +"common fields are ``keywords`` to improve discoverability and the " +"``dependencies`` that are required to install your package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:236 +msgid "Creating README.md" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:238 +msgid "" +"Open :file:`README.md` and enter the following content. You can customize " +"this if you'd like." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:251 +msgid "Creating a LICENSE" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:253 +msgid "" +"It's important for every :term:`Distribution Archive` uploaded to the Python " +"Package Index to include a license. This tells users who install " +"your :term:`Distribution Archive` the terms under which they can use it. For " +"help picking a license, see https://choosealicense.com/. Once you have " +"chosen a license, open :file:`LICENSE` and enter the license text. For " +"example, if you had chosen the MIT license:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:282 +msgid "" +"Most build backends automatically include license files in packages. See " +"your backend's documentation for more details. If you include the path to " +"license in the ``license-files`` key of :file:`pyproject.toml`, and your " +"build backend supports :pep:`639`, the file will be automatically included " +"in the package." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:290 +msgid "Including other files" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:292 +msgid "" +"The files listed above will be included automatically in your :term:`source " +"distribution `. If you want to include " +"additional files, see the documentation for your build backend." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:299 +msgid "Generating distribution archives" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:301 +msgid "" +"The next step is to generate :term:`distribution packages ` for the package. These are archives that are uploaded to the " +"Python Package Index and can be installed by :ref:`pip`." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:305 +msgid "Make sure you have the latest version of PyPA's :ref:`build` installed:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:319 +msgid "" +"If you have trouble installing these, see the :doc:`installing-packages` " +"tutorial." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:322 +msgid "" +"Now run this command from the same directory where :file:`pyproject.toml` is " +"located:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:336 +msgid "" +"This command should output a lot of text and once completed should generate " +"two files in the :file:`dist` directory:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:346 +msgid "" +"The ``tar.gz`` file is a :term:`source distribution ` whereas the ``.whl`` file is a :term:`built distribution `. Newer :ref:`pip` versions preferentially install built " +"distributions, but will fall back to source distributions if needed. You " +"should always upload a source distribution and provide built distributions " +"for the platforms your project is compatible with. In this case, our example " +"package is compatible with Python on any platform so only one built " +"distribution is needed." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:355 +msgid "Uploading the distribution archives" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:357 +msgid "Finally, it's time to upload your package to the Python Package Index!" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:359 +msgid "" +"The first thing you'll need to do is register an account on TestPyPI, which " +"is a separate instance of the package index intended for testing and " +"experimentation. It's great for things like this tutorial where we don't " +"necessarily want to upload to the real index. To register an account, go to " +"https://test.pypi.org/account/register/ and complete the steps on that page. " +"You will also need to verify your email address before you're able to upload " +"any packages. For more details, see :doc:`/guides/using-testpypi`." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:367 +msgid "" +"To securely upload your project, you'll need a PyPI `API token`_. Create one " +"at https://test.pypi.org/manage/account/#api-tokens, setting the \"Scope\" " +"to \"Entire account\". **Don't close the page until you have copied and " +"saved the token — you won't see that token again.**" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:374 +msgid "" +"Now that you are registered, you can use :ref:`twine` to upload the " +"distribution packages. You'll need to install Twine:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:389 +msgid "" +"Once installed, run Twine to upload all of the archives under :file:`dist`:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:403 +msgid "" +"You will be prompted for an API token. Use the token value, including the " +"``pypi-`` prefix. Note that the input will be hidden, so be sure to paste " +"correctly." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:406 +msgid "After the command completes, you should see output similar to this:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:417 +msgid "" +"Once uploaded, your package should be viewable on TestPyPI; for example: " +"``https://test.pypi.org/project/example_package_YOUR_USERNAME_HERE``." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:422 +msgid "Installing your newly uploaded package" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:424 +msgid "" +"You can use :ref:`pip` to install your package and verify that it works. " +"Create a :ref:`virtual environment ` and install your package from TestPyPI:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:440 +msgid "Make sure to specify your username in the package name!" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:442 +msgid "" +"pip should install the package from TestPyPI and the output should look " +"something like this:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:452 +msgid "" +"This example uses ``--index-url`` flag to specify TestPyPI instead of live " +"PyPI. Additionally, it specifies ``--no-deps``. Since TestPyPI doesn't have " +"the same packages as the live PyPI, it's possible that attempting to install " +"dependencies may fail or install something unexpected. While our example " +"package doesn't have any dependencies, it's a good practice to avoid " +"installing dependencies when using TestPyPI." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:459 +msgid "" +"You can test that it was installed correctly by importing the package. Make " +"sure you're still in your virtual environment, then run Python:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:474 +msgid "and import the package:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:486 +msgid "" +"**Congratulations, you've packaged and distributed a Python project!** ✨ 🍰 " +"✨" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:489 +msgid "" +"Keep in mind that this tutorial showed you how to upload your package to " +"Test PyPI, which isn't a permanent storage. The Test system occasionally " +"deletes packages and accounts. It is best to use TestPyPI for testing and " +"experiments like this tutorial." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:494 +msgid "" +"When you are ready to upload a real package to the Python Package Index you " +"can do much the same as you did in this tutorial, but with these important " +"differences:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:498 +msgid "" +"Choose a memorable and unique name for your package. You don't have to " +"append your username as you did in the tutorial, but you can't use an " +"existing name." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:500 +msgid "" +"Register an account on https://pypi.org - note that these are two separate " +"servers and the login details from the test server are not shared with the " +"main server." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:503 +msgid "" +"Use ``twine upload dist/*`` to upload your package and enter your " +"credentials for the account you registered on the real PyPI. Now that " +"you're uploading the package in production, you don't need to specify ``--" +"repository``; the package will upload to https://pypi.org/ by default." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:507 +msgid "" +"Install your package from the real PyPI using ``python3 -m pip install [your-" +"package]``." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:509 +msgid "" +"At this point if you want to read more on packaging Python libraries here " +"are some things you can do:" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:512 +msgid "" +"Read about advanced configuration for your chosen build backend: `Hatchling " +"`_, :doc:`setuptools `, :doc:`Flit `, `PDM `_." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:516 +msgid "" +"Look at the :doc:`guides ` on this site for more advanced " +"practical information, or the :doc:`discussions ` for " +"explanations and background on specific topics." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:519 +msgid "" +"Consider packaging tools that provide a single command-line interface for " +"project management and packaging, such " +"as :ref:`hatch`, :ref:`flit`, :ref:`pdm`, and :ref:`poetry`." +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:527 +msgid "Notes" +msgstr "" + +#: ../source/tutorials/packaging-projects.rst:529 +msgid "" +"Technically, you can also create Python packages without an ``__init__.py`` " +"file, but those are called :doc:`namespace packages ` and considered an **advanced topic** (not covered in " +"this tutorial). If you are only getting started with Python packaging, it is " +"recommended to stick with *regular packages* and ``__init__.py`` (even if " +"the file is empty)." +msgstr "" diff --git a/locales/pl/LC_MESSAGES/messages.po b/locales/pl/LC_MESSAGES/messages.po index 9d6464797..07bf51652 100644 --- a/locales/pl/LC_MESSAGES/messages.po +++ b/locales/pl/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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2026-02-11 07:09+0000\n" "Last-Translator: Maciej Olko \n" "Language-Team: Polish `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8647,37 +8655,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8685,7 +8693,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8694,7 +8702,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8709,7 +8717,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8780,35 +8788,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8820,7 +8827,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8829,15 +8836,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8847,7 +8854,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8856,11 +8863,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8896,15 +8903,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8913,11 +8911,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8929,7 +8927,7 @@ msgstr "" "się w dokumentacji Appveyor `__. Bezpłatny " "poziom konta jest w pełni wystarczający dla projektów open source." -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " @@ -8939,21 +8937,25 @@ msgstr "" "projekt jest hostowany w jednej z tych dwóch usług, skonfigurowanie " "integracji Appveyor jest proste." -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 +#, fuzzy +#| msgid "" +#| "Once you have set up your Appveyor account and added your project, " +#| "Appveyor will automatically build your project each time a commit occurs. " +#| "This behaviour will be familiar to users of Travis." msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" "Po skonfigurowaniu konta Appveyor i dodaniu projektu, Appveyor automatycznie " "zbuduje go po każdym zatwierdzeniu. To zachowanie będzie znane użytkownikom " "Travisa." -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "Dodawanie obsługi Appveyor do projektu" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8965,7 +8967,7 @@ msgstr "" "temat zawartości pliku znajdują się w dokumentacji Appveyor. Ten przewodnik " "zawiera informacje niezbędne do skonfigurowania kompilacji Wheel." -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8983,24 +8985,24 @@ msgstr "" "(Od wersji 3.5 używana wersja programu Visual Studio zawiera kompilatory 64-" "bitowe bez konieczności dodatkowej konfiguracji)." -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appveyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9011,7 +9013,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9020,19 +9022,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9044,7 +9046,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9052,17 +9054,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9070,7 +9072,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9082,17 +9084,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9103,25 +9105,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9129,7 +9131,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9137,23 +9139,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9162,25 +9164,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9188,7 +9190,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9196,11 +9198,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9208,7 +9210,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9216,17 +9218,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9236,15 +9238,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11431,17 +11433,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11449,21 +11468,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11471,34 +11490,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13513,10 +13532,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13602,7 +13622,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17628,8 +17648,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17709,6 +17729,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19371,8 +19399,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19420,18 +19448,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19459,19 +19487,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19525,8 +19555,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19608,8 +19638,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19722,9 +19752,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19814,11 +19844,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19963,7 +19995,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19972,6 +20004,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20003,467 +20037,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20472,43 +20533,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25706,7 +25772,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25720,39 +25786,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25761,7 +25826,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25770,33 +25835,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25804,7 +25869,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25813,39 +25878,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25853,22 +25918,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25879,35 +25944,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25916,7 +25981,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25924,40 +25989,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25968,7 +26033,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25977,7 +26042,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25989,70 +26054,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26060,21 +26125,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26082,21 +26147,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/pt_BR/LC_MESSAGES/messages.po b/locales/pt_BR/LC_MESSAGES/messages.po index 45cf12757..6241007ba 100644 --- a/locales/pt_BR/LC_MESSAGES/messages.po +++ b/locales/pt_BR/LC_MESSAGES/messages.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-08-07 00:01+0000\n" "Last-Translator: Rafael Fontenelle \n" "Language-Team: Portuguese (Brazil) `_, `pypa/gh-action-pypi-publish`_ generates " @@ -11480,11 +11488,11 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "Fluxo de trabalho separado para publicação no TestPyPI" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" @@ -11492,7 +11500,7 @@ msgstr "" "Agora, repita essas etapas e crie outro trabalho para publicação no índice " "do pacote TestPyPI na seção ``jobs``:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " @@ -11503,21 +11511,21 @@ msgstr "" "branch principal e é frequentemente usado para indicar um pipeline de " "publicação de lançamento íntegro." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "O fluxo de trabalho de CI/CD completo" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" "Este parágrafo mostra todo o fluxo de trabalho após seguir o guia acima." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "Isso é tudo, pessoal!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -11530,7 +11538,7 @@ msgstr "" "construções de teste para seus usuários alfa, bem como garantir que sua " "versão pipeline permaneça saudável!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -11545,7 +11553,7 @@ msgstr "" "um servidor compatível com PyPI como :ref:`pypiserver` no CI para fins de " "teste." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -11562,7 +11570,7 @@ msgid "Hosting" msgstr "Hospedagem" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "Instalação" @@ -11657,21 +11665,12 @@ msgstr "" "conjunto, fornecem testes automatizados no Linux, Mac e Windows:" #: ../source/guides/supporting-multiple-python-versions.rst:65 -#, fuzzy -#| msgid "" -#| "`Travis CI `_ provides both a Linux and a macOS " -#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " -#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -"`Travis CI `_ fornece um ambiente Linux e macOS. O " -"ambiente Linux é Ubuntu 12.04 LTS Server Edition de 64 bits, enquanto o " -"macOS é 10.9.2 no momento da escrita." -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." @@ -11679,9 +11678,15 @@ msgstr "" "`Appveyor `_ fornece um ambiente Windows (Windows " "Server 2012)." -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 +#, fuzzy +#| msgid "" +#| "Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +#| "formatted file as specification for the instructions for testing. If any " +#| "tests fail, the output log for that specific configuration can be " +#| "inspected." msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" @@ -11690,7 +11695,7 @@ msgstr "" "algum teste falhar, o log de saída para essa configuração específica pode " "ser inspecionado." -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." @@ -11698,11 +11703,11 @@ msgstr "" "Para projetos Python que devem ser implantados em Python 2 e 3 com uma " "estratégia de única fonte, há uma série de opções." -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "Ferramentas para pacotes Python de única fonte" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -11722,7 +11727,7 @@ msgstr "" "desenvolvida por Armin Ronacher, pode ser usada para aplicar automaticamente " "as modificações de código fornecidas por six_." -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -11736,15 +11741,15 @@ msgstr "" "fornecer interoperabilidade entre Python 2 e Python 3 com uma sintaxe de " "linguagem que corresponda a uma das duas versões Python: pode-se usar" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "um módulo Python 2 (por sintaxe) em um projeto Python 3." -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "um módulo Python 3 (por sintaxe) em um projeto *Python 3*." -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -11760,7 +11765,7 @@ msgstr "" "scripts chamados ``futurize`` e ``pasteurize`` que podem ser aplicados a um " "módulo Python 2 ou um módulo Python 3 respectivamente." -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -11775,11 +11780,11 @@ msgstr "" "Quaisquer problemas de compatibilidade remanescentes exigiriam alterações " "manuais." -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "O que há em cada Python?" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -11829,20 +11834,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" -"O serviço Appveyor é um serviço de integração contínua, muito parecido com o " -"serviço `Travis`_ mais conhecido que é comumente usado para testes por " -"projetos hospedados no `GitHub`_. No entanto, ao contrário do Travis, os " -"workers de construção no Appveyor são hosts Windows e têm os compiladores " -"necessários instalados para construir extensões Python." - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -11857,11 +11848,11 @@ msgstr "" "que não seja para teste), é possível para projetos sem um ambiente Windows " "dedicado fornecer binários direcionados ao Windows." -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "Configurando" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -11874,7 +11865,7 @@ msgstr "" "docs/>`__. O nível de conta grátis é perfeitamente adequado para projetos de " "código aberto." -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " @@ -11884,21 +11875,25 @@ msgstr "" "que seu projeto esteja hospedado em um desses dois serviços, configurar a " "integração do Appveyor é simples." -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 +#, fuzzy +#| msgid "" +#| "Once you have set up your Appveyor account and added your project, " +#| "Appveyor will automatically build your project each time a commit occurs. " +#| "This behaviour will be familiar to users of Travis." msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" "Depois de configurar sua conta do Appveyor e adicionar seu projeto, o " "Appveyor construirá automaticamente seu projeto cada vez que ocorrer um " "commit. Esse comportamento será familiar para os usuários do Travis." -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "Adicionando suporte a Appveyor ao seu projeto" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -11911,7 +11906,7 @@ msgstr "" "do Appveyor. Este guia fornecerá os detalhes necessários para configurar a " "configuração dos wheels." -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -11929,11 +11924,11 @@ msgstr "" "encontrar os compiladores de 64 bits. (De 3.5 em diante, a versão do Visual " "Studio usada inclui compiladores de 64 bits sem configuração adicional)." -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appveyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." @@ -11951,7 +11946,7 @@ msgstr "" "O arquivo :file:`appveyor.yml` deve estar localizado no diretório raiz do " "seu projeto. Está no formato ``YAML`` e consiste em várias seções." -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -11970,7 +11965,7 @@ msgstr "" "Python 2 geralmente são capazes de migrar para o Python 2.7 sem muita " "dificuldade)." -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -11984,7 +11979,7 @@ msgstr "" "certas circunstâncias (por exemplo, para instalar pacotes de construção " "adicionais, como ``Cython``, ou ferramentas de teste como ``tox``)." -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." @@ -11992,7 +11987,7 @@ msgstr "" "A seção ``build`` simplesmente desativa as construções -- não há etapa de " "construção necessária para Python, ao contrário de linguagens como ``C#``." -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." @@ -12000,7 +11995,7 @@ msgstr "" "As principais seções que precisarão ser adaptadas ao seu projeto são " "``test_script`` e ``after_test``." -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -12021,7 +12016,7 @@ msgstr "" "existem algumas alterações de configuração adicionais que você precisará " "considerar, que são descritas abaixo." -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -12033,7 +12028,7 @@ msgstr "" "as ferramentas recomendadas (especificamente, ``setuptools``) então o " "comando ``setup.py bdist_wheel`` irá construir seus wheels." -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." @@ -12042,11 +12037,11 @@ msgstr "" "sucedidos. Se você espera que seus testes falhem no Windows, você pode pulá-" "los conforme descrito acima." -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "Script de suporte" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -12059,7 +12054,7 @@ msgstr "" "não oferecem suporte a 3.3 ou 3.4 em Windows 64 bits, apenas o " "arquivo :file:`appveyor.yml` é necessário." -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -12079,7 +12074,7 @@ msgstr "" "compilações de 64 bits de Python 3.3 ou 3.4, portanto, não defina a variável " "de ambiente para quaisquer outras compilações." -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." @@ -12087,11 +12082,11 @@ msgstr "" "Você pode simplesmente baixar o arquivo em lote e incluí-lo em seu projeto " "inalterado." -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "Acesso aos wheels construídos" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -12109,11 +12104,11 @@ msgstr "" "links para os wheels dessa versão Python / arquitetura. Você pode baixar " "esses wheels e enviá-los para PyPI como parte de seu processo de lançamento." -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "Testando com tox" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " @@ -12123,7 +12118,7 @@ msgstr "" "testes. Ele garante que os testes sejam executados em um ambiente isolado " "usando os arquivos exatos que serão distribuídos pelo projeto." -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " @@ -12133,7 +12128,7 @@ msgstr "" "verdade, esses problemas não são específicos do Appveyor e podem afetar " "outros sistemas de CI)." -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -12145,7 +12140,7 @@ msgstr "" "ambiente para controlar o compilador, este recurso de \"isolamento de " "teste\" fará com que os testes usem o compilador errado por padrão." -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -12157,23 +12152,23 @@ msgstr "" "``tox`` para listar as variáveis de ambiente adicionais a serem passadas " "para o subprocesso. Para os compiladores SDK, você precisa" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -12187,15 +12182,24 @@ msgstr "" "ambiente ``TOX_TESTENV_PASSENV``. O script :file:`build.cmd` fornecido faz " "isso por padrão sempre que ``DISTUTILS_USE_SDK`` é definida." -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 +#, fuzzy +#| msgid "" +#| "When used interactively, ``tox`` allows you to run your tests against " +#| "multiple environments (often, this means multiple Python versions). This " +#| "feature is not as useful in a CI environment like Travis or Appveyor, " +#| "where all tests are run in isolated environments for each configuration. " +#| "As a result, projects often supply an argument ``-e ENVNAME`` to ``tox`` " +#| "to specify which environment to use (there are default environments for " +#| "most versions of Python)." msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" "Quando usado interativamente, ``tox`` permite que você execute seus testes " "em vários ambientes (frequentemente, isso significa várias versões do " @@ -12205,7 +12209,7 @@ msgstr "" "argumento ``-e NOMEENV`` para ``tox`` para especificar qual ambiente usar " "(há ambientes padrão para a maioria das versões do Python)." -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" @@ -12215,7 +12219,7 @@ msgstr "" "Appveyor, onde há (por exemplo) duas instalações de Python 3.4 (32 bits e 64 " "bits) disponíveis, mas apenas um ambiente ``py34`` no ``tox``." -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -12228,7 +12232,7 @@ msgstr "" "Appveyor executar os testes, eles serão executados com o interpretador " "configurado." -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -12240,11 +12244,11 @@ msgstr "" "arquivo :file:`tox.ini`. Fazer isso está, no entanto, fora do escopo deste " "documento." -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "Enviando automaticamente wheels" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -12257,7 +12261,7 @@ msgstr "" "instância do Amazon S3. A documentação sobre como fazer isso está incluída " "nos guias do Appveyor." -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -12269,11 +12273,11 @@ msgstr "" "claro se é desejável enviar novos wheels após cada commit (embora alguns " "projetos possam desejar fazer isso)." -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "Dependências externas" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." @@ -12281,7 +12285,7 @@ msgstr "" "Os scripts fornecidos construirão com sucesso qualquer distribuição que não " "dependa de bibliotecas externas de terceiros para a construção." -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -12297,17 +12301,17 @@ msgstr "" "bibliotecas para o compilador. No entanto, esse nível de configuração está " "além do escopo deste documento." -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "Scripts de suporte" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" "Para referência, o script de suporte de configuração do SDK está listado " "aqui:" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -15199,10 +15203,33 @@ msgstr "" "imediatamente após a clonagem do GitHub." #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +#, fuzzy +#| msgid "" +#| "`Docs `__ | `GitHub `__ | `PyPI `__" +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" +"`Documentação `__ | `GitHub `__ | `PyPI `__" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.releaser" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__ | `PyPI `__" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -15225,15 +15252,15 @@ msgstr "" "versão de pacote, atualizando changelogs, marcando lançamentos no controle " "de fontes e enviando novos pacotes para PyPI." -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "Projetos de biblioteca padrão" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "ensurepip" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" @@ -15241,7 +15268,7 @@ msgstr "" "`Documentação `__ | " "`Issues `__" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -15253,12 +15280,12 @@ msgstr "" "Na maioria dos casos, os usuários finais não usarão este módulo, mas em vez " "disso, ele será usado durante a construção da distribuição Python." -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 #, fuzzy msgid "http.server" msgstr "pypiserver" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 #, fuzzy msgid "" ":doc:`Docs ` | :gh:`Issues `__ | " "`Issues `__" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "venv" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" @@ -15286,7 +15313,7 @@ msgstr "" "`Documentação `__ | " "`Issues `__" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -17931,10 +17958,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -18030,7 +18058,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "Exemplo" @@ -22925,8 +22953,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -23007,6 +23035,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "Especificações do PyPA" @@ -24822,8 +24858,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 #, fuzzy #| msgid "Requires" msgid "**Required?**: yes" @@ -24877,18 +24913,18 @@ msgstr "Tipo TOML_: vetor de strings" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -24916,10 +24952,12 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 #, fuzzy #| msgid "TOML_ type: string" msgid "**Type**: string" @@ -24928,9 +24966,9 @@ msgstr "Tipo TOML_: string" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -24986,8 +25024,8 @@ msgid "``dependency-groups``" msgstr "``dependencies``" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -25077,8 +25115,8 @@ msgstr "``packages``" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: array of tables" @@ -25212,9 +25250,9 @@ msgstr "``packages``" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 #, fuzzy #| msgid "TOML_ type: table" msgid "**Type**: table" @@ -25316,11 +25354,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -25485,7 +25525,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -25496,6 +25536,8 @@ msgid "``[packages.archive]``" msgstr "``packages``" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -25529,83 +25571,101 @@ msgstr "" msgid "``packages.archive.url``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:455 +#, fuzzy +#| msgid "The source tree" +msgid "The URL_ to the archive." +msgstr "A árvore fonte" + +#: ../source/specifications/pylock-toml.rst:461 #, fuzzy #| msgid "``packages``" msgid "``packages.archive.path``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 #, fuzzy +#| msgid "The name of the project." +msgid "The path to the archive." +msgstr "O nome do projeto." + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 +#, fuzzy #| msgid "``packages``" msgid "``packages.archive.size``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 #, fuzzy #| msgid "The name of the project." msgid "The size of the archive file." msgstr "O nome do projeto." -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "Onde o guia é disponibilizado" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: Table of strings" msgstr "Tipo TOML_: vetor de strings" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 #, fuzzy #| msgid "" #| "A table of URLs where the key is the URL label and the value is the URL " @@ -25616,429 +25676,442 @@ msgid "" msgstr "" "Uma tabela de URLs onde a chave é o rótulo da URL e o valor é a URL em si." -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "``packages``" msgid "``packages.index``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 #, fuzzy #| msgid "``packages``" msgid "``[packages.sdist]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.name``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.upload-time``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.url``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.path``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.size``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.hashes``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 #, fuzzy #| msgid "``packages``" msgid "``[[packages.wheels]]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.name``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.url``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.path``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.size``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.hashes``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`provenance-object`" msgstr ":ref:`pyproject-toml-spec`" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 #, fuzzy #| msgid "``packages``" msgid "``[packages.tool]``" msgstr "``packages``" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 #, fuzzy #| msgid "Binary distribution format" msgid ":ref:`Install `." msgstr "Formato de distribuição binária" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -26047,43 +26120,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "O arquivo :file:`.pypirc`" @@ -31873,9 +31951,14 @@ msgstr "" "Baixe com segurança `get-pip.py `_ [1]_" #: ../source/tutorials/installing-packages.rst:139 +#, fuzzy +#| msgid "" +#| "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " +#| "Additionally, it will install :ref:`setuptools` and :ref:`wheel` if " +#| "they're not installed already." msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" "Execute ``python get-pip.py``. [2]_ Isso vai instalar ou atualizar o pip. " @@ -31897,25 +31980,22 @@ msgstr "" "``/usr/local`` que é projetado para software instalado localmente." #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +#, fuzzy +#| msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "Certifique-se que pip, setuptools e wheel estejam atualizados" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -"Embora ``pip`` sozinho seja suficiente para instalar a partir de arquivos " -"binários pré-compilados, cópias atualizadas dos projetos ``setuptools`` e " -"``wheel`` são úteis para garantir que você também possa instalar a partir de " -"arquivos fonte:" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "Opcionalmente, crie um ambiente virtual" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " @@ -31925,7 +32005,7 @@ msgstr "" "detalhes, mas aqui está o comando básico de :doc:`venv ` [3]_ para usar em um sistema Linux típico:" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " @@ -31934,11 +32014,11 @@ msgstr "" "Isso criará um novo ambiente virtual no subdiretório ``tutorial_env`` e " "configurará o shell atual para usá-lo como o ambiente ``python`` padrão." -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "Criando ambientes virtuais" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -31952,7 +32032,7 @@ msgstr "" "deseja instalar ferramentas de linha de comando globais com segurança, " "consulte :doc:`/guides/installing-stand-alone-command-line-tools`." -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -31967,7 +32047,7 @@ msgstr "" "situação em que você atualiza acidentalmente uma aplicação que não deveria " "ser atualizada." -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " @@ -31977,7 +32057,7 @@ msgstr "" "como está? Se uma aplicação funcionar, qualquer alteração em suas " "bibliotecas ou nas versões dessas bibliotecas pode interromper a aplicação." -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." @@ -31986,7 +32066,7 @@ msgstr "" "Distribuição>` no diretório global site-packages? Por exemplo, em um host " "compartilhado." -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " @@ -31996,7 +32076,7 @@ msgstr "" "próprios diretórios de instalação e não compartilham bibliotecas com outros " "ambientes virtuais." -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" @@ -32004,7 +32084,7 @@ msgstr "" "Atualmente, existem duas ferramentas comuns para a criação de ambientes " "virtuais Python:" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 #, fuzzy msgid "" ":doc:`venv ` is available by default in Python 3.3 and " @@ -32016,7 +32096,7 @@ msgstr "" "posterior, e instala :ref:`pip` e :ref:`setuptools` em ambientes virtuais " "criados no Python 3.4 e posterior." -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 #, fuzzy #| msgid "" #| ":ref:`virtualenv` needs to be installed separately, but supports Python " @@ -32035,19 +32115,19 @@ msgstr "" "são sempre instalados em ambientes virtuais criados por padrão " "(independentemente da versão Python)." -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "O uso básico é assim:" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "Usando :doc:`venv `:" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "Usando :ref:`virtualenv`:" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." @@ -32055,7 +32135,7 @@ msgstr "" "Para mais informações, veja a documentação do :doc:`venv ` ou do :doc:`virtualenv `." -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " @@ -32065,7 +32145,7 @@ msgstr "" "ambiente virtual sejam definidas dentro do shell atual, e não em um " "subprocesso (que então desaparece, sem nenhum efeito útil)." -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 #, fuzzy msgid "" "In both of the above cases, Windows users should *not* use " @@ -32076,7 +32156,7 @@ msgstr "" "comando :command:`source`, mas devem executar o script :command:`activate` " "diretamente do shell de comando assim:" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -32089,11 +32169,11 @@ msgstr "" "gerencia automaticamente um ambiente virtual separado para cada projeto e " "aplicação no qual você trabalha." -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "Usar pip para instalação" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " @@ -32104,11 +32184,11 @@ msgstr "" "pip `, que inclui um :doc:`Guia de Referências ` " "completo." -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "Instalando a partir do PyPI" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -32127,19 +32207,19 @@ msgstr "" "na :ref:`especificação de especificadores de versão `. " "Abaixo estão alguns exemplos." -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "Para instalar a versão mais recente de \"SomeProject\":" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "Para instalar uma versão específica:" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "Para instalar maior ou igual a uma versão e menor que outra:" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 #, fuzzy msgid "" "To install a version that's :ref:`compatible ` com uma determinada versão: [4]_" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." @@ -32156,11 +32236,11 @@ msgstr "" "Nesse caso, isso significa instalar qualquer versão \"==1.4.*\" que também " "seja \">=1.4.2\"." -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "Distribuições de fonte vs Wheels" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -32174,7 +32254,7 @@ msgstr "" "compatível. Você pode substituir o comportamento padrão do pip, por exemplo " "usando sua opção :ref:`--no-binary `." -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -32186,7 +32266,7 @@ msgstr "" "comparação com :term:`Distribuições Fonte (sdist) `, especialmente quando um projeto contém extensões compiladas." -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " @@ -32196,15 +32276,15 @@ msgstr "" "wheel localmente e armazená-lo em cache para instalações futuras, ao invés " "de reconstruir a distribuição fonte no futuro." -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "Atualize um ``SomeProject`` já instalado para o mais recente do PyPI." -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "Instalando para o site do usuário" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" @@ -32212,7 +32292,7 @@ msgstr "" "Para instalar :term:`pacotes ` que são isolados para " "o usuário atual, use o sinalizador ``--user``:" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." @@ -32220,7 +32300,7 @@ msgstr "" "Para obter mais informações, consulte a seção `User Installs `_ da documentação do pip." -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." @@ -32229,7 +32309,7 @@ msgstr "" "ambiente virtual -- todos os comandos de instalação afetarão o ambiente " "virtual." -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -32247,7 +32327,7 @@ msgstr "" "scripts não estiverem disponíveis em seu shell após a instalação, você " "precisará adicionar o diretório ao seu :envvar:`PATH`:" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -32262,7 +32342,7 @@ msgstr "" "precisará adicionar ``~/.local/bin`` para seu ``PATH``. Você pode definir " "seu ``PATH`` permanentemente `modificando ~/.profile`_." -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -32282,7 +32362,7 @@ msgstr "" "seu usuário ``PATH`` permanentemente no `Painel de Controle`_. Você pode " "precisar encerrar a sessão para que as alterações de ``PATH`` tenham efeito." -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." @@ -32290,11 +32370,11 @@ msgstr "" "Instale uma lista de requisitos especificados em um :ref:`arquivo de " "requisitos `." -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "Instalando a partir de VCS" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." @@ -32303,15 +32383,15 @@ msgstr "" "instrução completa da sintaxe, veja a seção do pip em :ref:`VCS Support " "`." -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "Instalando a partir de outros índices" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "Instalar a partir de um índice alternativo" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" @@ -32319,11 +32399,11 @@ msgstr "" "Pesquise um índice adicional durante a instalação, além do :term:`PyPI " "`" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "Instalando a partir de uma árvore de fontes local" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " @@ -32334,19 +32414,19 @@ msgstr "" "projeto parece estar instalado, mas ainda seja editável a partir da árvore " "de fontes." -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "Você também pode instalar normalmente a partir dos fontes" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "Instalando de arquivos locais" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "Instale um arquivo de pacote fonte em particular." -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" @@ -32354,11 +32434,11 @@ msgstr "" "Instale de um pacote contendo diretório local (e não verifique o :term:`PyPI " "`)" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "Instalando a partir de outras fontes" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -32371,11 +32451,11 @@ msgstr "" "repository-api>`, e usar o sinalizador ``--extra-index-url`` para direcionar " "o pip para usar esse índice." -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "Instalando pré-lançamentos" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." @@ -32383,11 +32463,11 @@ msgstr "" "Encontre versões de pré-lançamento e desenvolvimento, além de versões " "estáveis. Por padrão, pip só encontra versões estáveis." -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "Instalando \"Extras\"" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -32399,7 +32479,7 @@ msgstr "" "pacote. Se você deseja instalar um extra para um pacote que você sabe que " "publica um, você pode incluí-lo no comando de instalação pip:" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " @@ -32409,7 +32489,7 @@ msgstr "" "ferramenta como :command:`curl` que verifica os certificados SSL ao baixar " "de URLs https." -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" @@ -32419,7 +32499,7 @@ msgstr "" "para :ref:`virtualenv`) criará ambientes do virtualenv com ``pip`` pré-" "instalado, tornando-o uma alternativa igual a :ref:`virtualenv`." -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" @@ -33450,6 +33530,43 @@ msgid "" "the file is empty)." msgstr "" +#~ msgid "" +#~ "While ``pip`` alone is sufficient to install from pre-built binary " +#~ "archives, up to date copies of the ``setuptools`` and ``wheel`` projects " +#~ "are useful to ensure you can also install from source archives:" +#~ msgstr "" +#~ "Embora ``pip`` sozinho seja suficiente para instalar a partir de arquivos " +#~ "binários pré-compilados, cópias atualizadas dos projetos ``setuptools`` e " +#~ "``wheel`` são úteis para garantir que você também possa instalar a partir " +#~ "de arquivos fonte:" + +#, fuzzy +#~| msgid "" +#~| "`Travis CI `_ provides both a Linux and a macOS " +#~| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~| "bit while the macOS is 10.9.2 at the time of writing." +#~ msgid "" +#~ "`Travis CI `_ provides both a Linux and a macOS " +#~ "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~ "bit while the macOS is 10.9.2 at the time of writing." +#~ msgstr "" +#~ "`Travis CI `_ fornece um ambiente Linux e macOS. O " +#~ "ambiente Linux é Ubuntu 12.04 LTS Server Edition de 64 bits, enquanto o " +#~ "macOS é 10.9.2 no momento da escrita." + +#~ msgid "" +#~ "The Appveyor service is a continuous integration service, much like the " +#~ "better-known `Travis`_ service that is commonly used for testing by " +#~ "projects hosted on `GitHub`_. However, unlike Travis, the build workers " +#~ "on Appveyor are Windows hosts and have the necessary compilers installed " +#~ "to build Python extensions." +#~ msgstr "" +#~ "O serviço Appveyor é um serviço de integração contínua, muito parecido " +#~ "com o serviço `Travis`_ mais conhecido que é comumente usado para testes " +#~ "por projetos hospedados no `GitHub`_. No entanto, ao contrário do Travis, " +#~ "os workers de construção no Appveyor são hosts Windows e têm os " +#~ "compiladores necessários instalados para construir extensões Python." + #~ msgid "" #~ "Refer to the `pkg_resources documentation \n" "Language-Team: Romanian `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8630,37 +8638,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8668,7 +8676,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8677,7 +8685,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8692,7 +8700,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8763,35 +8771,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8803,7 +8810,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8812,15 +8819,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8830,7 +8837,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8839,11 +8846,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8879,15 +8886,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8896,11 +8894,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8908,25 +8906,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8934,7 +8931,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8945,24 +8942,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8973,7 +8970,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8982,19 +8979,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9006,7 +9003,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9014,17 +9011,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9032,7 +9029,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9044,17 +9041,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9065,25 +9062,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9091,7 +9088,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9099,23 +9096,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9124,25 +9121,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9150,7 +9147,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9158,11 +9155,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9170,7 +9167,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9178,17 +9175,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9198,15 +9195,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11393,17 +11390,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11411,21 +11425,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11433,34 +11447,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13475,10 +13489,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13564,7 +13579,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17590,8 +17605,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17671,6 +17686,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19333,8 +19356,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19382,18 +19405,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19421,19 +19444,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19487,8 +19512,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19570,8 +19595,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19684,9 +19709,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19776,11 +19801,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19925,7 +19952,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19934,6 +19961,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19965,467 +19994,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20434,43 +20490,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25668,7 +25729,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25682,39 +25743,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25723,7 +25783,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25732,33 +25792,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25766,7 +25826,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25775,39 +25835,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25815,22 +25875,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25841,35 +25901,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25878,7 +25938,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25886,40 +25946,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25930,7 +25990,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25939,7 +25999,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25951,70 +26011,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26022,21 +26082,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26044,21 +26104,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/ru/LC_MESSAGES/messages.po b/locales/ru/LC_MESSAGES/messages.po index c74a06140..e4857197b 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-06-07 08:01+0000\n" "Last-Translator: da070116 \n" "Language-Team: Russian `_, `pypa/gh-action-pypi-publish`_ generates " @@ -11597,11 +11605,11 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "Отдельный рабочий процесс для публикации в TestPyPI" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" @@ -11609,7 +11617,7 @@ msgstr "" "Теперь повторите эти шаги и создайте еще одно задание для публикации в " "индекс пакета TestPyPI в разделе ``jobs``:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " @@ -11620,22 +11628,22 @@ msgstr "" "основной ветке и часто используется для обозначения здорового конвейера " "публикации pipрелизов." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "Весь рабочий процесс CI/CD" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" "В этом пункте показан весь рабочий процесс после выполнения вышеописанного " "руководства." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "Вот и все, друзья!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -11648,7 +11656,7 @@ msgstr "" "сборок вашим альфа-пользователям, а также для того, чтобы убедиться, что ваш " "конвейер релизовpip остаётся здоровым!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -11662,7 +11670,7 @@ msgstr "" "увеличен, но лучшим решением может быть использование PyPI-совместимого " "сервера, например :ref:`pypiserver`, в CI для тестирования." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -11679,7 +11687,7 @@ msgid "Hosting" msgstr "Хостинг" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "Установка" @@ -11775,21 +11783,12 @@ msgstr "" "Windows:" #: ../source/guides/supporting-multiple-python-versions.rst:65 -#, fuzzy -#| msgid "" -#| "`Travis CI `_ provides both a Linux and a macOS " -#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " -#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -"В системе Travis CI `_ есть как Linux, так и macOS. " -"Среда Linux - это Ubuntu 12.04 LTS Server Edition 64 bit, а macOS на момент " -"написания статьи - 10.9.2." -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." @@ -11797,9 +11796,15 @@ msgstr "" "`Appveyor `_ предоставляет среду Windows (Windows " "Server 2012)." -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 +#, fuzzy +#| msgid "" +#| "Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +#| "formatted file as specification for the instructions for testing. If any " +#| "tests fail, the output log for that specific configuration can be " +#| "inspected." msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" @@ -11808,7 +11813,7 @@ msgstr "" "провалены, можно просмотреть журнал вывода для данной конкретной " "конфигурации." -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." @@ -11817,11 +11822,11 @@ msgstr "" "так и на Python 3 с использованием стратегии единого источника, есть " "несколько вариантов." -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "Инструменты для создания пакетов Python с одним источником" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -11842,7 +11847,7 @@ msgstr "" "использован для автоматического применения модификаций кода, предоставляемых " "six_." -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -11856,15 +11861,15 @@ msgstr "" "совместимости между Python 2 и Python 3 с синтаксисом языка, соответствующим " "одной из двух версий Python: можно использовать" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "модуль Python 2 (по синтаксису) в проекте Python 3." -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "модуль Python 3 (по синтаксису) в проекте *Python 2*." -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -11880,7 +11885,7 @@ msgstr "" "``futurize`` и ``pasteurize``, которые могут быть применены как к модулю " "Python 2, так и к модулю Python 3 соответственно." -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -11894,11 +11899,11 @@ msgstr "" "которые Python 2.6+ уже обеспечивает для прямой совместимости с Python 3. " "Любые оставшиеся проблемы совместимости потребуют внесения изменений вручную." -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "Что находится в каком Python?" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -11949,20 +11954,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" -"Сервис Appveyor - это сервис непрерывной интеграции, подобный более " -"известному сервису `Travis`_, который обычно используется для тестирования " -"проектов, размещенных на `GitHub`_. Однако, в отличие от Travis, рабочие " -"сборщики Appveyor являются хостами Windows и имеют необходимые компиляторы " -"для сборки расширений Python." - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -11978,11 +11969,11 @@ msgstr "" "имеющим выделенной среды Windows, предоставлять двоичные файлы, " "ориентированные на Windows." -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "Настройка" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -11995,7 +11986,7 @@ msgstr "" ">`__. Бесплатный уровень учетной записи вполне подходит для проектов с " "открытым исходным кодом." -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " @@ -12005,21 +11996,25 @@ msgstr "" "ваш проект размещен на одном из этих двух сервисов, настройка интеграции с " "Appveyor не составит труда." -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 +#, fuzzy +#| msgid "" +#| "Once you have set up your Appveyor account and added your project, " +#| "Appveyor will automatically build your project each time a commit occurs. " +#| "This behaviour will be familiar to users of Travis." msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" "После того, как вы настроили свой аккаунт Appveyor и добавили проект, " "Appveyor будет автоматически собирать ваш проект каждый раз, когда " "происходит коммит. Такое поведение будет знакомо пользователям Travis." -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "Добавление поддержки Appveyor в ваш проект" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -12031,7 +12026,7 @@ msgstr "" "том, что может быть включено в этот файл, описаны в документации Appveyor. В " "этом руководстве мы расскажем о том, как настроить сборку колес." -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -12049,11 +12044,11 @@ msgstr "" "используемая версия Visual Studio включает 64-битные компиляторы без " "дополнительных настроек)." -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr ":file:`appveyor.yml`" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." @@ -12071,7 +12066,7 @@ msgstr "" "Файл :file:`appveyor.yml` должен находиться в корневом каталоге вашего " "проекта. Он имеет формат ``YAML`` и состоит из нескольких секций." -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -12090,7 +12085,7 @@ msgstr "" "использующие Python 2, обычно могут перейти на Python 2.7 без особых " "проблем)." -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -12105,7 +12100,7 @@ msgstr "" "установки дополнительных пакетов сборки, таких как ``Cython``, или " "инструментов тестирования, таких как ``tox``)." -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." @@ -12113,7 +12108,7 @@ msgstr "" "Секция ``build`` просто отключает сборку - в отличие от таких языков, как " "``C#``, для Python не требуется никаких действий по сборке." -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." @@ -12121,7 +12116,7 @@ msgstr "" "Основные секции, которые необходимо адаптировать под ваш проект, - это " "``тестовый_скрипт`` и ``после_теста``." -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -12142,7 +12137,7 @@ msgstr "" "используете ``tox``, вам придется внести некоторые дополнительные изменения " "в конфигурацию, которые описаны ниже." -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -12154,7 +12149,7 @@ msgstr "" "инструменты (в частности, ``setuptools``), то команда ``setup.py " "bdist_wheel'' соберет ваши колеса." -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." @@ -12163,11 +12158,11 @@ msgstr "" "тесты пройдут успешно. Если вы ожидаете, что ваши тесты не пройдут под " "Windows, вы можете пропустить их, как описано выше." -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "Скрипт поддержки" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -12180,7 +12175,7 @@ msgstr "" "которые не поддерживают 3.3 или 3.4 на 64-битной Windows, необходим только " "файл :file:`appveyor.yml`." -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -12200,7 +12195,7 @@ msgstr "" "устанавливает SDK, необходимый для 64-битных сборок Python 3.3.3 или 3.4, " "поэтому не устанавливайте переменную окружения для других сборок." -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." @@ -12208,11 +12203,11 @@ msgstr "" "Вы можете просто загрузить пакетный файл и включить его в свой проект без " "изменений." -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "Доступ к собранным колёсам" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -12230,11 +12225,11 @@ msgstr "" "можете скачать эти колеса и загрузить их в PyPI как часть вашего процесса " "выпуска." -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "Тестирование с помощью tox" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " @@ -12244,7 +12239,7 @@ msgstr "" "своих тестов. Он обеспечивает запуск тестов в изолированном окружении с " "использованием именно тех файлов, которые будут распространяться проектом." -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " @@ -12254,7 +12249,7 @@ msgstr "" "(на самом деле, эти вопросы не относятся к Appveyor и вполне могут " "затрагивать другие CI-системы)." -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -12267,7 +12262,7 @@ msgstr "" "тестов\" приведет к тому, что тесты по умолчанию будут использовать " "неправильный компилятор." -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -12279,23 +12274,23 @@ msgstr "" "список дополнительных переменных окружения, которые нужно передать " "подпроцессу. Для компиляторов SDK необходимо" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -12309,15 +12304,24 @@ msgstr "" "``TOX_TESTENV_PASSENV``. Поставляемый в комплекте скрипт :file:`build.cmd` " "делает это по умолчанию, когда установлено значение ``DISTUTILS_USE_SDK``." -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 +#, fuzzy +#| msgid "" +#| "When used interactively, ``tox`` allows you to run your tests against " +#| "multiple environments (often, this means multiple Python versions). This " +#| "feature is not as useful in a CI environment like Travis or Appveyor, " +#| "where all tests are run in isolated environments for each configuration. " +#| "As a result, projects often supply an argument ``-e ENVNAME`` to ``tox`` " +#| "to specify which environment to use (there are default environments for " +#| "most versions of Python)." msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" "При интерактивном использовании ``tox`` позволяет запускать тесты в " "нескольких окружениях (часто это означает несколько версий Python). Эта " @@ -12327,7 +12331,7 @@ msgstr "" "указать, какое окружение использовать (есть окружения по умолчанию для " "большинства версий Python)." -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" @@ -12337,7 +12341,7 @@ msgstr "" "где (например) доступны две установки Python 3.4 (32-битная и 64-битная), но " "только одно окружение ``py34`` в ``tox``." -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -12350,7 +12354,7 @@ msgstr "" "что когда Appveyor запустит тесты, они будут запущены с настроенным " "интерпретатором." -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -12361,11 +12365,11 @@ msgstr "" "конфигурацией ``tox`` потребуется изменить свой файл :file:`tox.ini`. Однако " "это выходит за рамки данного документа." -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "Автоматическая загрузка колёс" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -12378,7 +12382,7 @@ msgstr "" "или в экземпляр Amazon S3. Документация о том, как это сделать, включена в " "руководства по Appveyor." -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -12390,11 +12394,11 @@ msgstr "" "неясно, насколько желательна загрузка новых колес после каждого коммита " "(хотя некоторые проекты могут захотеть это сделать)." -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "Внешние зависимости" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." @@ -12402,7 +12406,7 @@ msgstr "" "Прилагаемые скрипты успешно соберут любой дистрибутив, который не зависит от " "сторонних внешних библиотек для сборки." -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -12417,15 +12421,15 @@ msgstr "" "для сборки, чтобы указать компилятору местоположение этих библиотек. Однако " "такой уровень конфигурации выходит за рамки данного документа." -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "Скрипты поддержки" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "Для справки, сценарий поддержки установки SDK приведен здесь:" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -15424,10 +15428,33 @@ msgstr "" "сразу после клонирования с GitHub." #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +#, fuzzy +#| msgid "" +#| "`Docs `__ | `GitHub `__ | `PyPI `__" +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" +"`Docs `__ | `GitHub `__ " +"| `PyPI `__" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.releaser" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__ | `PyPI `__" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -15450,15 +15477,15 @@ msgstr "" "пакетов, обновления журналов изменений, маркировки релизов в системе " "контроля исходного кода и загрузки новых пакетов в PyPI." -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "Проекты в стандартное библиотеке" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "ensurepip" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" @@ -15466,7 +15493,7 @@ msgstr "" "`Документация `__ | " "`Замечания `__" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -15478,11 +15505,11 @@ msgstr "" "В большинстве случаев конечные пользователи не будут использовать этот " "модуль, скорее он будет использоваться во время сборки дистрибутива Python." -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "http.server" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" @@ -15490,7 +15517,7 @@ msgstr "" ": Док:`Документы ` | :gh:`Выпуски `" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " @@ -15500,11 +15527,11 @@ msgstr "" "сайта, например, как : термин:`пакетный индекс <Пакетный индекс>` " "(см. :ссылка:`Хостинг собственного простого репозитория`)." -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "venv" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" @@ -15512,7 +15539,7 @@ msgstr "" "`Документация `__ | `Замечания " "`__" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -18125,10 +18152,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -18225,7 +18253,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "Пример" @@ -23572,9 +23600,13 @@ msgid "" msgstr "" #: ../source/specifications/glob-patterns.rst:18 +#, fuzzy +#| msgid "" +#| "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " +#| "(``.``) MUST be matched verbatim." msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" "Буквенно-цифровые символы, подчеркивания (``_``), дефисы (``-``) и точки " "(``.``) ДОЛЖНЫ совпадать дословно." @@ -23688,6 +23720,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "Спецификации PyPA" @@ -25874,8 +25914,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 #, fuzzy #| msgid "Requires" msgid "**Required?**: yes" @@ -25929,18 +25969,18 @@ msgstr "Тип TOML_: массив строк" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -25968,10 +26008,12 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 #, fuzzy #| msgid "TOML_ type: string" msgid "**Type**: string" @@ -25980,9 +26022,9 @@ msgstr "Тип TOML_: строка" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -26038,8 +26080,8 @@ msgid "``dependency-groups``" msgstr "Таблица ``[dependency-groups]``" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -26130,8 +26172,8 @@ msgstr "``пакеты``" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: array of tables" @@ -26274,9 +26316,9 @@ msgstr "``пакеты``" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 #, fuzzy #| msgid "TOML_ type: table" msgid "**Type**: table" @@ -26378,11 +26420,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -26547,7 +26591,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -26558,6 +26602,8 @@ msgid "``[packages.archive]``" msgstr "``пакеты``" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -26591,83 +26637,101 @@ msgstr "" msgid "``packages.archive.url``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:455 +#, fuzzy +#| msgid "The source tree" +msgid "The URL_ to the archive." +msgstr "Дерево исходного кода" + +#: ../source/specifications/pylock-toml.rst:461 #, fuzzy #| msgid "``packages``" msgid "``packages.archive.path``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 #, fuzzy +#| msgid "The name of the project." +msgid "The path to the archive." +msgstr "Название проекта." + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 +#, fuzzy #| msgid "``packages``" msgid "``packages.archive.size``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 #, fuzzy #| msgid "The name of the project." msgid "The size of the archive file." msgstr "Название проекта." -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "Где развёрнуто руководство" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: Table of strings" msgstr "Тип TOML_: массив строк" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 #, fuzzy #| msgid "" #| "A table of URLs where the key is the URL label and the value is the URL " @@ -26678,429 +26742,442 @@ msgid "" msgstr "" "Таблица URL-адресов, где ключом является метка URL, а значением - сам URL." -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "``packages``" msgid "``packages.index``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 #, fuzzy #| msgid "``packages``" msgid "``[packages.sdist]``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.name``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.upload-time``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.url``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.path``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.size``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.hashes``" msgstr "``package_data``" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 #, fuzzy #| msgid "``packages``" msgid "``[[packages.wheels]]``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.name``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.url``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.path``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.size``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.hashes``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`provenance-object`" msgstr ":ref:`pyproject-toml-spec`" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 #, fuzzy #| msgid "``packages``" msgid "``[packages.tool]``" msgstr "``пакеты``" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 #, fuzzy #| msgid "Binary distribution format" msgid ":ref:`Install `." msgstr "Формат распространения двоичных пакетов" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -27109,40 +27186,40 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 #, fuzzy #| msgid "" #| "API version 1.0: Initial version of the API, declared with :pep:`629`." @@ -27150,6 +27227,11 @@ msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" "Версия API 1.0: Начальная версия API, объявленная с помощью :pep:`629`." +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "Файл :file:`.pypirc`" @@ -34391,9 +34473,14 @@ msgstr "" "Безопасная загрузка `get-pip.py `_ [1]_" #: ../source/tutorials/installing-packages.rst:139 +#, fuzzy +#| msgid "" +#| "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " +#| "Additionally, it will install :ref:`setuptools` and :ref:`wheel` if " +#| "they're not installed already." msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" "Запустите ``python get-pip.py``. [2]_ Это приведет к установке или " @@ -34416,25 +34503,23 @@ msgstr "" "для локально установленного программного обеспечения." #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +#, fuzzy +#| msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" "Убедитесь, что pip, setuptools и wheel находятся в актуальном состоянии" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -"Хотя одного ``pip`` достаточно для установки из предварительно собранных " -"бинарных архивов, актуальные копии проектов ``setuptools`` и ``wheel`` " -"полезны для обеспечения возможности установки из исходных архивов:" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "По желанию создайте виртуальную среду" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " @@ -34444,7 +34529,7 @@ msgstr "" "сред>`, а вот основная :doc:`venv ` [3]_ команда для " "использования в типичной системе Linux:" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " @@ -34454,11 +34539,11 @@ msgstr "" "настроит текущую оболочку на использование его в качестве окружения по " "умолчанию ``python``." -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "Создание виртуальных окружений" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -34472,7 +34557,7 @@ msgstr "" "инструменты командной строки, смотрите :doc:`/guides/installing-stand-alone-" "command-line-tools`." -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -34487,7 +34572,7 @@ msgstr "" "когда вы непреднамеренно обновите приложение, которое не должно быть " "обновлено." -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " @@ -34497,7 +34582,7 @@ msgstr "" "работает, любое изменение в его библиотеках или их версиях может привести к " "поломке приложения." -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." @@ -34506,7 +34591,7 @@ msgstr "" "` в глобальный каталог site-packages? Например, на " "общем хосте." -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " @@ -34516,7 +34601,7 @@ msgstr "" "собственные каталоги установки, и они не обмениваются библиотеками с другими " "виртуальными средами." -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" @@ -34524,7 +34609,7 @@ msgstr "" "В настоящее время существует два распространенных инструмента для создания " "виртуальных сред Python:" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -34535,7 +34620,7 @@ msgstr "" "выше, и устанавливает : ссылка:`pip` в созданные виртуальные среды в Python " "3.4 и выше (версии Python до 3.12 также устанавливали :ссылка:`setuptools`)." -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 #, fuzzy #| msgid "" #| ":ref:`virtualenv` needs to be installed separately, but supports Python " @@ -34554,19 +34639,19 @@ msgstr "" "устанавливаются в созданные виртуальные среды по умолчанию (независимо от " "версии Python)." -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "Основное использование выглядит следующим образом:" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "Использование :doc:`venv `:" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "Использование :ref:`virtualenv`:" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." @@ -34574,7 +34659,7 @@ msgstr "" "Дополнительную информацию можно найти в документах :doc:`venv " "` или :doc:`virtualenv `." -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " @@ -34585,7 +34670,7 @@ msgstr "" "подпроцессе (который затем исчезает, не оказывая никакого полезного " "воздействия)." -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " @@ -34595,7 +34680,7 @@ msgstr "" "команду :command:`source`, а лучше запустить скрипт :command:`activate` " "непосредственно из командной оболочки, как показано выше:" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -34608,11 +34693,11 @@ msgstr "" "который автоматически управляет отдельной виртуальной средой для каждого " "проекта и приложения, над которым вы работаете." -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "Используйте pip для установки" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " @@ -34623,11 +34708,11 @@ msgstr "" "можно найти в :doc:`pip docs `, который включает в себя " "полное :doc:`Reference Guide `." -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "Установка из PyPI" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -34646,19 +34731,19 @@ msgstr "" "спецификации :ref:`Version specifier `. Ниже приведены " "некоторые примеры." -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "Чтобы установить последнюю версию \"SomeProject\":" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "Для установки определенной версии:" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "Чтобы установить версию больше или равную одной и меньше другой:" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" @@ -34666,7 +34751,7 @@ msgstr "" "Чтобы установить версию, которая :ref:`совместима ` с определенной версией: [4]_" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." @@ -34674,11 +34759,11 @@ msgstr "" "В данном случае это означает установку любой версии \"==1.4.*\", которая " "также \">=1.4.2\"." -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "Дистрибутивы источников против колес" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -34693,7 +34778,7 @@ msgstr "" "умолчанию, например, используя его опцию :ref:`--no-binary `." -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -34706,7 +34791,7 @@ msgstr "" "Distribution (или \"sdist\")>`, особенно когда проект содержит " "скомпилированные расширения." -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " @@ -34716,16 +34801,16 @@ msgstr "" "и кэширует его для будущих установок, вместо того, чтобы пересобирать " "исходный дистрибутив в будущем." -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" "Обновление уже установленного ``SomeProject`` до последней версии из PyPI." -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "Установка в пользовательский каталог :file:`site`" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" @@ -34733,7 +34818,7 @@ msgstr "" "Чтобы установить :term:`пакеты `, которые изолированы " "от текущего пользователя, используйте флаг ``--user``:" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." @@ -34742,7 +34827,7 @@ msgstr "" "`_ из документации " "pip." -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." @@ -34750,7 +34835,7 @@ msgstr "" "Обратите внимание, что флаг ``--user`` не влияет на виртуальную среду - все " "команды установки будут влиять на виртуальную среду." -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -34768,7 +34853,7 @@ msgstr "" "вне :envvar:`PATH`). Если скрипты недоступны в вашей оболочке после " "установки, вам нужно добавить каталог в :envvar:`PATH`:" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -34783,7 +34868,7 @@ msgstr "" "добавить ``~/.local/bin`` в ваш ``PATH``. Вы можете установить свой " "``PATH`` постоянно, ``изменив ~/.profile``." -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -34804,7 +34889,7 @@ msgstr "" "Чтобы изменения ``PATH'' вступили в силу, вам может потребоваться выйти из " "системы." -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." @@ -34812,11 +34897,11 @@ msgstr "" "Установка списка требований, указанных в :ref:`Requirements File " "`." -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "Установка из СКВ" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." @@ -34824,15 +34909,15 @@ msgstr "" "Установка проекта из VCS в \"редактируемом\" режиме. Полное описание " "синтаксиса см. в разделе pip по :ref:`VCS Support `." -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "Установка из других индексов" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "Установка из альтернативного индекса" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" @@ -34840,11 +34925,11 @@ msgstr "" "Поиск дополнительного индекса во время установки, в дополнение к :term:`PyPI " "`" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "Установка из локального дерева исходных кодов" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " @@ -34854,19 +34939,19 @@ msgstr "" "development_mode>`, т.е. таким образом, что проект кажется установленным, но " "при этом его можно редактировать из дерева src." -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "Вы также можете установить обычную установку из src" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "Установка из локальных архивов" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "Установка определенного файла исходного архива." -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" @@ -34874,11 +34959,11 @@ msgstr "" "Установите из локальной директории, содержащей архивы (и не " "проверяйте :term:`PyPI `)" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "Установка из других источников" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -34891,11 +34976,11 @@ msgstr "" "и использовать флаг ``--extra-index-url``, чтобы направить pip на " "использование этого индекса." -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "Установка предварительных выпусков" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." @@ -34903,11 +34988,11 @@ msgstr "" "Найдите предварительные версии и версии для разработки в дополнение к " "стабильным версиям. По умолчанию pip находит только стабильные версии." -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "Установка \"Дополнений\"" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -34920,7 +35005,7 @@ msgstr "" "расширение для пакета, который, как вы знаете, его публикует, вы можете " "включить его в команду установки pip:" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " @@ -34930,7 +35015,7 @@ msgstr "" "браузера или такого инструмента, как :command:`curl`, который проверяет SSL-" "сертификаты при загрузке с https-адресов." -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" @@ -34940,7 +35025,7 @@ msgstr "" "создавать виртуальные среды virtualenv с предустановленным ``pip``, что " "делает его равноправной альтернативой :ref:`virtualenv``." -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" @@ -36011,6 +36096,42 @@ msgstr "" "Если вы только начинаете с Python упаковки, рекомендуется придерживаться " "*регулярных пакетов* и ``__init__.py`` (даже если файл пуст)." +#~ msgid "" +#~ "While ``pip`` alone is sufficient to install from pre-built binary " +#~ "archives, up to date copies of the ``setuptools`` and ``wheel`` projects " +#~ "are useful to ensure you can also install from source archives:" +#~ msgstr "" +#~ "Хотя одного ``pip`` достаточно для установки из предварительно собранных " +#~ "бинарных архивов, актуальные копии проектов ``setuptools`` и ``wheel`` " +#~ "полезны для обеспечения возможности установки из исходных архивов:" + +#, fuzzy +#~| msgid "" +#~| "`Travis CI `_ provides both a Linux and a macOS " +#~| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~| "bit while the macOS is 10.9.2 at the time of writing." +#~ msgid "" +#~ "`Travis CI `_ provides both a Linux and a macOS " +#~ "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~ "bit while the macOS is 10.9.2 at the time of writing." +#~ msgstr "" +#~ "В системе Travis CI `_ есть как Linux, так и " +#~ "macOS. Среда Linux - это Ubuntu 12.04 LTS Server Edition 64 bit, а macOS " +#~ "на момент написания статьи - 10.9.2." + +#~ msgid "" +#~ "The Appveyor service is a continuous integration service, much like the " +#~ "better-known `Travis`_ service that is commonly used for testing by " +#~ "projects hosted on `GitHub`_. However, unlike Travis, the build workers " +#~ "on Appveyor are Windows hosts and have the necessary compilers installed " +#~ "to build Python extensions." +#~ msgstr "" +#~ "Сервис Appveyor - это сервис непрерывной интеграции, подобный более " +#~ "известному сервису `Travis`_, который обычно используется для " +#~ "тестирования проектов, размещенных на `GitHub`_. Однако, в отличие от " +#~ "Travis, рабочие сборщики Appveyor являются хостами Windows и имеют " +#~ "необходимые компиляторы для сборки расширений Python." + #~ msgid "" #~ "This specification was originally defined in :pep:`518` and :pep:`621`." #~ msgstr "" diff --git a/locales/sai/LC_MESSAGES/messages.po b/locales/sai/LC_MESSAGES/messages.po index ba2ae7995..4de72ce1d 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1524,7 +1524,7 @@ msgid "" msgstr "" #: ../source/discussions/install-requires-vs-requirements.rst:62 -#: ../source/tutorials/installing-packages.rst:464 +#: ../source/tutorials/installing-packages.rst:463 msgid "Requirements files" msgstr "" @@ -5356,7 +5356,7 @@ msgid "" msgstr "" #: ../source/guides/distributing-packages-using-setuptools.rst:589 -#: ../source/tutorials/installing-packages.rst:670 +#: ../source/tutorials/installing-packages.rst:669 msgid "" "Depending on your platform, this may require root or Administrator " "access. :ref:`pip` is currently considering changing this by `making user " @@ -5609,7 +5609,7 @@ msgstr "" #: ../source/guides/hosting-your-own-index.rst:65 #: ../source/guides/index-mirrors-and-caches.rst:56 -#: ../source/guides/supporting-windows-using-appveyor.rst:146 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 msgid "Additional notes" msgstr "" @@ -6621,7 +6621,7 @@ msgid "" msgstr "" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 -#: ../source/tutorials/installing-packages.rst:393 +#: ../source/tutorials/installing-packages.rst:392 msgid "Upgrading packages" msgstr "" @@ -8565,23 +8565,31 @@ msgid "" "and storing them for later use:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:115 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 msgid "" "This will download your repository into the CI runner and then install and " "activate the newest available Python 3 release." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:118 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 msgid "" "And now we can build the dists from source and store them. In this example, " "we'll use the ``build`` package. So add this to the steps list:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:128 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 msgid "Defining a workflow job environment" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:130 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 msgid "" "Now, let's add initial setup for our job that will publish to PyPI. It's a " "process that will execute commands that we'll define later. In this guide, " @@ -8592,21 +8600,21 @@ msgid "" "implement secretless Trusted Publishing to PyPI." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:144 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 msgid "" "This will also ensure that the PyPI publishing workflow is only triggered if " "the current commit is tagged." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:148 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 msgid "Publishing the distribution to PyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:150 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 msgid "Finally, add the following steps at the end:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 msgid "" "This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " "stored distribution package has been downloaded by the `download-artifact`_ " @@ -8614,7 +8622,7 @@ msgid "" "unconditionally." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 msgid "" "Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8622,37 +8630,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8660,7 +8668,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8669,7 +8677,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8684,7 +8692,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8755,35 +8763,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8795,7 +8802,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8804,15 +8811,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8822,7 +8829,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8831,11 +8838,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8871,15 +8878,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8888,11 +8886,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8900,25 +8898,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8926,7 +8923,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8937,24 +8934,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8965,7 +8962,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8974,19 +8971,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -8998,7 +8995,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9006,17 +9003,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9024,7 +9021,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9036,17 +9033,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9057,25 +9054,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9083,7 +9080,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9091,23 +9088,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9116,25 +9113,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9142,7 +9139,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9150,11 +9147,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9162,7 +9159,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9170,17 +9167,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9190,15 +9187,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11385,17 +11382,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11403,21 +11417,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11425,34 +11439,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13467,10 +13481,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13556,7 +13571,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17582,8 +17597,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17663,6 +17678,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19325,8 +19348,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19374,18 +19397,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19413,19 +19436,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19479,8 +19504,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19562,8 +19587,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19676,9 +19701,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19768,11 +19793,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19917,7 +19944,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19926,6 +19953,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19957,467 +19986,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20426,43 +20482,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25660,7 +25721,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25674,39 +25735,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25715,7 +25775,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25724,33 +25784,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25758,7 +25818,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25767,39 +25827,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25807,22 +25867,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25833,35 +25893,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25870,7 +25930,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25878,40 +25938,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25922,7 +25982,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25931,7 +25991,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25943,70 +26003,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26014,21 +26074,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26036,21 +26096,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/si/LC_MESSAGES/messages.po b/locales/si/LC_MESSAGES/messages.po index ce7fbaebf..1f60e37bc 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2022-06-11 08:19+0000\n" "Last-Translator: Kushan Gunasekera \n" "Language-Team: Sinhala `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8626,37 +8634,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8664,7 +8672,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8673,7 +8681,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8688,7 +8696,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8759,35 +8767,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8799,7 +8806,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8808,15 +8815,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8826,7 +8833,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8835,11 +8842,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8875,15 +8882,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8892,11 +8890,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8904,25 +8902,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8930,7 +8927,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8941,24 +8938,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8969,7 +8966,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8978,19 +8975,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9002,7 +8999,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9010,17 +9007,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9028,7 +9025,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9040,17 +9037,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9061,25 +9058,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9087,7 +9084,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9095,23 +9092,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9120,25 +9117,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9146,7 +9143,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9154,11 +9151,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9166,7 +9163,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9174,17 +9171,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9194,15 +9191,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11389,17 +11386,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11407,21 +11421,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11429,34 +11443,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13471,10 +13485,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13560,7 +13575,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17586,8 +17601,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17667,6 +17682,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19329,8 +19352,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19378,18 +19401,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19417,19 +19440,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19483,8 +19508,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19566,8 +19591,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19680,9 +19705,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19772,11 +19797,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19921,7 +19948,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19930,6 +19957,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19961,467 +19990,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20430,43 +20486,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25664,7 +25725,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25678,39 +25739,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25719,7 +25779,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25728,33 +25788,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25762,7 +25822,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25771,39 +25831,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25811,22 +25871,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25837,35 +25897,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25874,7 +25934,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25882,40 +25942,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25926,7 +25986,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25935,7 +25995,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25947,70 +26007,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26018,21 +26078,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26040,21 +26100,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/sk/LC_MESSAGES/messages.po b/locales/sk/LC_MESSAGES/messages.po index 1d79dbe9d..ad85d30fa 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2024-11-02 00:54+0000\n" "Last-Translator: Milan Šalka \n" "Language-Team: Slovak `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8782,37 +8790,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8820,7 +8828,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8829,7 +8837,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8844,7 +8852,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy #| msgid "Translations" msgid "Installation" @@ -8917,35 +8925,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8957,7 +8964,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8966,15 +8973,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8984,7 +8991,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8993,11 +9000,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9033,15 +9040,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9050,11 +9048,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9062,25 +9060,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9088,7 +9085,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9099,24 +9096,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9127,7 +9124,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9136,19 +9133,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9160,7 +9157,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9168,17 +9165,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9186,7 +9183,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9198,17 +9195,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9219,25 +9216,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9245,7 +9242,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9253,23 +9250,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9278,25 +9275,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9304,7 +9301,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9312,11 +9309,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9324,7 +9321,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9332,17 +9329,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9352,15 +9349,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11551,17 +11548,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11569,21 +11583,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11591,34 +11605,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13635,10 +13649,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13724,7 +13739,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17766,8 +17781,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17849,6 +17864,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19519,8 +19542,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19568,18 +19591,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19607,19 +19630,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19673,8 +19698,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid "Project name" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -19758,8 +19783,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19874,9 +19899,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19966,11 +19991,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20115,7 +20142,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20124,6 +20151,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20155,471 +20184,498 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "Kde je sprievodca nasadený" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid "Project name" msgid "**Inspiration**: :ref:`provenance-object`" msgstr "Meno projektu" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20628,43 +20684,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25876,7 +25937,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25890,39 +25951,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25931,7 +25991,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25940,33 +26000,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25974,7 +26034,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25983,39 +26043,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26023,22 +26083,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26049,35 +26109,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26086,7 +26146,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26094,40 +26154,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26138,7 +26198,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26147,7 +26207,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26159,70 +26219,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26230,21 +26290,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26252,21 +26312,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/ta/LC_MESSAGES/messages.po b/locales/ta/LC_MESSAGES/messages.po index f3816c8f3..b3358d82d 100644 --- a/locales/ta/LC_MESSAGES/messages.po +++ b/locales/ta/LC_MESSAGES/messages.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-07-19 06:36+0000\n" "Last-Translator: தமிழ்நேரம் \n" "Language-Team: Tamil `_, `pypa/gh-action-pypi-publish`_ generates " @@ -11196,11 +11204,11 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "டெச்ட்பிபிக்கு வெளியிடுவதற்கு பணிப்பாய்வு தனி" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" @@ -11208,7 +11216,7 @@ msgstr "" "இப்போது, இந்த படிகளை மீண்டும் செய்து, `` வேலைகள்`` பிரிவின் கீழ் டெச்ட்பை தொகுப்பு " "குறியீட்டுக்கு வெளியிட மற்றொரு வேலையை உருவாக்கவும்:" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " @@ -11219,21 +11227,21 @@ msgstr "" "வடிவமைக்கப்பட்டுள்ளது மற்றும் ஆரோக்கியமான வெளியீட்டு வெளியீட்டு குழாய்த்திட்டத்தைக் குறிக்க " "பெரும்பாலும் பயன்படுத்தப்படுகிறது." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "முழு சிஐ/சிடி பணிப்பாய்வு" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" "இந்த பத்தி மேலே உள்ள வழிகாட்டியைப் பின்பற்றிய பிறகு முழு பணிப்பாய்வுகளையும் காட்டுகிறது." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "அவ்வளவுதான், எல்லோரும்!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -11245,7 +11253,7 @@ msgstr "" "சோதனை கட்டமைப்பை வழங்குவதற்கும், உங்கள் வெளியீட்டு குழாய் ஆரோக்கியமாக இருப்பதை " "உறுதிசெய்வதற்கும் பயனுள்ளதாக இருக்கும் டெச்ட்பிபிக்கு எந்தவொரு உந்துதலையும் வெளியிடும்!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -11259,7 +11267,7 @@ msgstr "" "ஒரு சிறந்த தீர்வு ஒரு பைபி-இணக்கமான சேவையகத்தைப் பயன்படுத்தலாம்: குறிப்பு நோக்கங்களுக்காக " "தொஒ இல் `பைபிசெவர்`." -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -11276,7 +11284,7 @@ msgid "Hosting" msgstr "ஓச்டிங்" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "நிறுவல்" @@ -11364,21 +11372,12 @@ msgstr "" "போது இரண்டு புரவலன் செய்யப்பட்ட சேவைகள் உள்ளன:" #: ../source/guides/supporting-multiple-python-versions.rst:65 -#, fuzzy -#| msgid "" -#| "`Travis CI `_ provides both a Linux and a macOS " -#| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " -#| "bit while the macOS is 10.9.2 at the time of writing." msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -"`டிராவிச் சி ` _ லினக்ச் மற்றும் மேகோச் சூழல் இரண்டையும் " -"வழங்குகிறது. லினக்ச் சூழல் உபுண்டு 12.04 எல்.டி.எச் சர்வர் பதிப்பு 64 பிட் ஆகும், அதே " -"நேரத்தில் மேகோச் 10.9.2 ஆகும்." -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." @@ -11386,9 +11385,15 @@ msgstr "" "`Appveyor ` _ சாளரங்கள் சூழலை வழங்குகிறது (விண்டோச் " "சர்வர் 2012)." -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 +#, fuzzy +#| msgid "" +#| "Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +#| "formatted file as specification for the instructions for testing. If any " +#| "tests fail, the output log for that specific configuration can be " +#| "inspected." msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" @@ -11397,7 +11402,7 @@ msgstr "" "ஏதேனும் சோதனைகள் தோல்வியுற்றால், அந்த குறிப்பிட்ட உள்ளமைவுக்கான வெளியீட்டு பதிவை ஆய்வு " "செய்யலாம்." -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." @@ -11405,11 +11410,11 @@ msgstr "" "ஒற்றை மூல மூலோபாயத்துடன் பைதான் 2 மற்றும் 3 இரண்டிலும் பயன்படுத்தப்பட வேண்டிய பைதான் " "திட்டங்களுக்கு, பல விருப்பங்கள் உள்ளன." -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "ஒற்றை மூல பைதான் தொகுப்புகளுக்கான கருவிகள்" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -11428,7 +11433,7 @@ msgstr "" "modernize>` _, அர்மின் ரோனாச்சரால் உருவாக்கப்பட்டது, ஆறு_ வழங்கிய குறியீடு மாற்றங்களை " "தானாகவே பயன்படுத்த பயன்படுத்தலாம்." -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -11442,15 +11447,15 @@ msgstr "" "இடையில் இரண்டு பைதான் பதிப்புகளில் ஒன்றோடு பொருந்தக்கூடிய மொழி தொடரியல் மூலம் " "இயங்குதளத்தை வழங்குவதை நோக்கமாகக் கொண்டுள்ளது: ஒருவர் பயன்படுத்தலாம்" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "பைதான் 3 திட்டத்தில் ஒரு பைதான் 2 (தொடரியல் மூலம்) தொகுதி." -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "* பைதான் 2 * திட்டத்தில் ஒரு பைதான் 3 (தொடரியல் மூலம்) தொகுதி." -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -11466,7 +11471,7 @@ msgstr "" "மற்றும் `` பேசூரைச்`` என அழைக்கப்படுகிறது, இது முறையே பைதான் 2 தொகுதி அல்லது பைதான் " "3 தொகுதிக்கு பயன்படுத்தப்படலாம்." -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -11480,11 +11485,11 @@ msgstr "" "பைதானுக்கு முன்னோக்கி-இணக்கத்தன்மைக்கு ஏற்கனவே வழங்குகிறது. மீதமுள்ள பொருந்தக்கூடிய " "சிக்கல்களுக்கு கையேடு மாற்றங்கள் தேவைப்படும்." -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "எந்த பைதான் என்ன?" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -11530,20 +11535,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" -"AppVeair பணி என்பது தொடர்ச்சியான ஒருங்கிணைப்பு சேவையாகும், இது நன்கு அறியப்பட்ட " -"`டிராவிச்`_ சேவையைப் போன்றது, இது பொதுவாக` கிதுப்`_ இல் வழங்கப்பட்ட திட்டங்களால் " -"சோதனைக்கு பயன்படுத்தப்படுகிறது. இருப்பினும், டிராவிசைப் போலல்லாமல், ஆப்சியரில் உள்ள " -"தொழிலாளர்கள் சாளரங்கள் ஓச்ட்கள் மற்றும் பைதான் நீட்டிப்புகளை உருவாக்க தேவையான கம்பைலர்கள் " -"நிறுவப்பட்டுள்ளன." - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -11558,11 +11549,11 @@ msgstr "" "பிரத்யேக சாளரங்கள் சூழல் இல்லாத திட்டங்களுக்கு விண்டோச்-இலக்கு கொண்ட இருமங்களை வழங்க " "முடியும்." -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "அமைத்தல்" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -11574,7 +11565,7 @@ msgstr "" "ஆவணத்தில் __ __ இல் கொடுக்கப்பட்டுள்ளன. திறந்த மூல " "திட்டங்களுக்கு கணக்கின் இலவச அடுக்கு போதுமானது." -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " @@ -11584,21 +11575,25 @@ msgstr "" "திட்டம் அந்த இரண்டு சேவைகளில் ஒன்றில் புரவலன் செய்யப்படும் வரை, AppWeair ஒருங்கிணைப்பை " "அமைப்பது நேரடியானது." -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 +#, fuzzy +#| msgid "" +#| "Once you have set up your Appveyor account and added your project, " +#| "Appveyor will automatically build your project each time a commit occurs. " +#| "This behaviour will be familiar to users of Travis." msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" "உங்கள் ஆப்சேயர் கணக்கை அமைத்து, உங்கள் திட்டத்தைச் சேர்த்தவுடன், ஒவ்வொரு முறையும் ஒரு கமிட் " "நிகழும் போது AppWeyor தானாகவே உங்கள் திட்டத்தை உருவாக்கும். இந்த நடத்தை டிராவிசின் " "பயனர்களுக்கு தெரிந்திருக்கும்." -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "உங்கள் திட்டத்தில் AppWeyor ஆதரவைச் சேர்ப்பது" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -11610,7 +11605,7 @@ msgstr "" "என்பதற்கான முழு விவரங்களும் AppWayor ஆவணத்தில் உள்ளன. இந்த வழிகாட்டி சக்கர கட்டமைப்புகளை " "அமைக்க தேவையான விவரங்களை வழங்கும்." -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -11628,11 +11623,11 @@ msgstr "" "பயன்படுத்தப்படும் விசுவல் ச்டுடியோவின் பதிப்பில் கூடுதல் அமைப்பு இல்லாத 64-பிட் கம்பைலர்கள் " "உள்ளன)." -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appweyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here __." -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." @@ -11649,7 +11644,7 @@ msgstr "" "தி: கோப்பு: `appveyor.yml` கோப்பு உங்கள் திட்டத்தின் ரூட் கோப்பகத்தில் இருக்க வேண்டும். " "இது `` யம்ல்` `வடிவத்தில் உள்ளது, மேலும் பல பிரிவுகளைக் கொண்டுள்ளது." -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -11667,7 +11662,7 @@ msgstr "" "ஆதரிக்கவில்லை (விண்டோச் பயனர்கள் இன்னும் பைதான் 2 ஐப் பயன்படுத்துவதால் பொதுவாக பைதான் 2.7 " "க்கு அதிக தொல்லை இல்லாமல் செல்ல முடியும்)." -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -11681,7 +11676,7 @@ msgstr "" "சைதான்`` போன்ற கூடுதல் பில்ட் தொகுப்புகளை நிறுவ அல்லது `` போன்ற சோதனைக் கருவிகளை " "நிறுவவும் விரும்பலாம் நச்சு``)." -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." @@ -11689,7 +11684,7 @@ msgstr "" "`` பில்ட்`` பிரிவு வெறுமனே கட்டமைப்பை அணைக்க வேண்டும் - பைத்தானுக்கு எந்த கட்டமைப்பும் " "தேவையில்லை, `` சி#`` போன்ற மொழிகளைப் போலல்லாமல்." -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." @@ -11697,7 +11692,7 @@ msgstr "" "உங்கள் திட்டத்திற்கு ஏற்ப வடிவமைக்க வேண்டிய முக்கிய பிரிவுகள் `` டெச்ட்_ச்கிரிப்ட்`` மற்றும் " "`` பிறகு_டெச்ட்``." -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -11717,7 +11712,7 @@ msgstr "" "இருப்பினும் நீங்கள் `` டோக்ச்`` ஐப் பயன்படுத்துகிறீர்கள் என்றால், நீங்கள் கருத்தில் கொள்ள வேண்டிய " "சில கூடுதல் உள்ளமைவு மாற்றங்கள் உள்ளன, அவை கீழே விவரிக்கப்பட்டுள்ளன." -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -11729,7 +11724,7 @@ msgstr "" "setuptools``) பின்னர் `` setup.py.py bdist_wheel`` கட்டளை உங்கள் சக்கரங்களை " "உருவாக்கும்." -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." @@ -11738,11 +11733,11 @@ msgstr "" "சாளரங்களில் உங்கள் சோதனைகள் தோல்வியடையும் என்று நீங்கள் எதிர்பார்த்தால், மேலே " "விவரிக்கப்பட்டபடி அவற்றைத் தவிர்க்கலாம்." -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "ச்கிரிப்ட் உதவி" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -11754,7 +11749,7 @@ msgstr "" "ஒரு கம்பைலர் தேவையில்லை, அல்லது 64-பிட் சாளரங்களில் 3.3 அல்லது 3.4 ஐ ஆதரிக்காத " "திட்டங்களுக்கு, மட்டுமே: கோப்பு: `appveyor.yml` கோப்பு தேவை." -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -11771,18 +11766,18 @@ msgstr "" "பிட் கட்டங்களுக்கு தேவையான SDK ஐ அமைக்கிறது, எனவே வேறு எந்த கட்டமைப்பிற்கும் சூழல் " "மாறியை அமைக்க வேண்டாம்." -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" "நீங்கள் வெறுமனே தொகுதி கோப்பை பதிவிறக்கம் செய்து அதை மாற்றாமல் உங்கள் திட்டத்தில் சேர்க்கலாம்." -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "கட்டப்பட்ட சக்கரங்களுக்கான அணுகல்" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -11799,11 +11794,11 @@ msgstr "" "சக்கரங்களுக்கான இணைப்புகளின் பட்டியல் இருக்கும். உங்கள் வெளியீட்டு செயல்முறையின் ஒரு " "பகுதியாக அந்த சக்கரங்களை பதிவிறக்கம் செய்து அவற்றை PYPI இல் பதிவேற்றலாம்." -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "டாக்சுடன் சோதனை" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " @@ -11813,7 +11808,7 @@ msgstr "" "பயன்படுத்துகின்றன. திட்டத்தால் விநியோகிக்கப்படும் சரியான கோப்புகளைப் பயன்படுத்தி " "தனிமைப்படுத்தப்பட்ட சூழலில் சோதனைகள் இயக்கப்படுவதை இது உறுதி செய்கிறது." -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " @@ -11823,7 +11818,7 @@ msgstr "" "(உண்மையில், இந்த சிக்கல்கள் AppWeyor க்கு குறிப்பிட்டவை அல்ல, மேலும் பிற தொஒ அமைப்புகளை " "பாதிக்கலாம்)." -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -11835,7 +11830,7 @@ msgstr "" "மாறிகளைப் பயன்படுத்துவதால், இந்த \"சோதனை தனிமைப்படுத்தல்\" நற்பொருத்தம் சோதனைகள் " "இயல்புநிலையாக தவறான தொகுப்பைப் பயன்படுத்தும்." -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -11847,23 +11842,23 @@ msgstr "" "டோக்ச்` உள்ளமைவு விருப்பத்தை `` பயணிகள்`` அமைக்க வேண்டும். SDK கம்பைலர்களுக்கு, உங்களுக்கு " "தேவை" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "`` Distutils_use_sdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "`` Mssdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "`` சேர்க்கவும்``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "`` லிப்``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -11876,15 +11871,24 @@ msgstr "" "`Tox_testenv_passenv`` சுற்றுச்சூழல் மாறி. வழங்கப்பட்ட: கோப்பு: `` `` " "`distutils_use_sdk`` அமைக்கும்போதெல்லாம் இயல்புநிலையாக இதைச் செய்கிறது." -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 +#, fuzzy +#| msgid "" +#| "When used interactively, ``tox`` allows you to run your tests against " +#| "multiple environments (often, this means multiple Python versions). This " +#| "feature is not as useful in a CI environment like Travis or Appveyor, " +#| "where all tests are run in isolated environments for each configuration. " +#| "As a result, projects often supply an argument ``-e ENVNAME`` to ``tox`` " +#| "to specify which environment to use (there are default environments for " +#| "most versions of Python)." msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" "ஊடாடும் வகையில் பயன்படுத்தும்போது, `` டோக்ச்`` பல சூழல்களுக்கு எதிராக உங்கள் சோதனைகளை " "இயக்க உங்களை அனுமதிக்கிறது (பெரும்பாலும், இதன் பொருள் பல பைதான் பதிப்புகள்). டிராவிச் " @@ -11894,7 +11898,7 @@ msgstr "" "`` -e envname`` க்கு `` டோக்ச்`` க்கு வழங்குகின்றன (பைத்தானின் பெரும்பாலான " "பதிப்புகளுக்கு இயல்புநிலை சூழல்கள் உள்ளன)." -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" @@ -11904,7 +11908,7 @@ msgstr "" "பைதான் 3.4 (32-பிட் மற்றும் 64-பிட்) இரண்டு நிறுவல்கள் உள்ளன, ஆனால் ஒரு `` py34`` சூழல் " "மட்டுமே `` டாக்ச்``." -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -11917,7 +11921,7 @@ msgstr "" "இயக்கும்போது, அவை உள்ளமைக்கப்பட்ட மொழிபெயர்ப்பாளருடன் இயக்கப்படும் என்பதை இது உறுதி " "செய்யும்." -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -11928,11 +11932,11 @@ msgstr "" "திட்டங்கள் அவற்றின்: கோப்பு: `Tox.ini` கோப்பை மாற்ற வேண்டியிருக்கலாம். இருப்பினும், " "அவ்வாறு செய்வது இந்த ஆவணத்தின் எல்லைக்கு வெளியே உள்ளது." -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "தானாகவே சக்கரங்களை பதிவேற்றும்" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -11945,7 +11949,7 @@ msgstr "" "உதாரணமாகவோ. இதை எப்படி செய்வது என்பது குறித்த ஆவணங்கள் AppWayer வழிகாட்டிகளில் " "சேர்க்கப்பட்டுள்ளன." -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -11957,11 +11961,11 @@ msgstr "" "சக்கரங்களை பதிவேற்றுவது விரும்பத்தக்கது என்பது தெளிவாகத் தெரியவில்லை (சில திட்டங்கள் " "இதைச் செய்ய விரும்பினாலும்)." -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "வெளிப்புற சார்புநிலைகள்" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." @@ -11969,7 +11973,7 @@ msgstr "" "வழங்கப்பட்ட ச்கிரிப்ட்கள் 3 வது தரப்பு வெளிப்புற நூலகங்களை நம்பாத எந்தவொரு விநியோகத்தையும் " "வெற்றிகரமாக உருவாக்கும்." -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -11984,15 +11988,15 @@ msgstr "" "வழங்குவதற்கு கூடுதல் உள்ளமைவைச் சேர்க்க முடியும். இருப்பினும், இந்த நிலை உள்ளமைவு இந்த " "ஆவணத்தின் எல்லைக்கு அப்பாற்பட்டது." -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "ச்கிரிப்ட்களை ஆதரிக்கவும்" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "குறிப்புக்கு, SDK அமைவு உதவி ச்கிரிப்ட் இங்கே பட்டியலிடப்பட்டுள்ளது:" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "`` appweyor-sample/build.cmd``" @@ -14926,10 +14930,33 @@ msgstr "" "கிட்அப்பிலிருந்து நகலி செய்த உடனேயே பயன்படுத்தலாம்." #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +#, fuzzy +#| msgid "" +#| "`Docs `__ | `GitHub `__ | `PyPI `__" +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" +"`டாக்ச் __ | `Github ` " +"__ | `Pypi ____" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.relases" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI __ | `Pypi ____ __" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -14952,15 +14979,15 @@ msgstr "" "மற்றும் புதிய தொகுப்புகளை PYPI இல் பதிவேற்றுதல் ஆகியவற்றை தானியக்கமாக்க `` " "zest.releaser`` ஐப் பயன்படுத்துகின்றனர்." -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "நிலையான நூலக திட்டங்கள்" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "உறுதிப்படுத்தவும்" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" @@ -14968,7 +14995,7 @@ msgstr "" "`டாக்ச் __ | `சிக்கல்கள் " " ____ __" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -14980,11 +15007,11 @@ msgstr "" "சந்தர்ப்பங்களில், இறுதி பயனர்கள் இந்த தொகுதியைப் பயன்படுத்த மாட்டார்கள், மாறாக இது பைதான் " "விநியோகத்தின் போது பயன்படுத்தப்படும்." -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "http.server" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" @@ -14992,7 +15019,7 @@ msgstr "" ": டாக்: `டாக்ச் <பைதான்: நூலகம்/http.server>` | : GH: `சிக்கல்கள் <பைதான்/சிபிதான்/" "சிக்கல்கள்>`" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " @@ -15002,11 +15029,11 @@ msgstr "" "இடைமுகம், எடுத்துக்காட்டாக ஒரு: கால: `தொகுப்பு குறியீட்டு <தொகுப்பு குறியீட்டு>` " "(பார்க்க: குறிப்பு: `உங்கள் சொந்த எளிய களஞ்சியத்தை புரவலன் செய்தல்`)." -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "vev" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" @@ -15014,7 +15041,7 @@ msgstr "" "`டாக்ச் __ | `சிக்கல்கள் ____ __" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -17573,10 +17600,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -17672,7 +17700,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "எடுத்துக்காட்டு" @@ -22862,9 +22890,13 @@ msgid "" msgstr "" #: ../source/specifications/glob-patterns.rst:18 +#, fuzzy +#| msgid "" +#| "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " +#| "(``.``) MUST be matched verbatim." msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" "எண்ணெழுத்து எழுத்துக்கள், அடிக்கோடிட்டு (`` _``), ஐபன்கள் (`` -``) மற்றும் புள்ளிகள் " "(`` .``) ஆகியவை சொற்களஞ்சியத்துடன் பொருந்த வேண்டும்." @@ -22975,6 +23007,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "PYPA விவரக்குறிப்புகள்" @@ -25000,8 +25040,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 #, fuzzy #| msgid "Requires" msgid "**Required?**: yes" @@ -25055,18 +25095,18 @@ msgstr "டாம்_ வகை: சரங்களின் வரிசை" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -25094,10 +25134,12 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 #, fuzzy #| msgid "TOML_ type: string" msgid "**Type**: string" @@ -25106,9 +25148,9 @@ msgstr "TOML_ வகை: சரம்" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -25164,8 +25206,8 @@ msgid "``dependency-groups``" msgstr "`` [சார்பு-குழுக்கள்] `` அட்டவணை" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -25255,8 +25297,8 @@ msgstr "`` தொகுப்புகள்``" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: array of tables" @@ -25399,9 +25441,9 @@ msgstr "`` தொகுப்புகள்``" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 #, fuzzy #| msgid "TOML_ type: string or table" msgid "**Type**: table" @@ -25503,11 +25545,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -25671,7 +25715,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -25682,6 +25726,8 @@ msgid "``[packages.archive]``" msgstr "`` தொகுப்புகள்``" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -25715,511 +25761,542 @@ msgstr "" msgid "``packages.archive.url``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:455 +#, fuzzy +#| msgid "The source tree" +msgid "The URL_ to the archive." +msgstr "மூல மரம்" + +#: ../source/specifications/pylock-toml.rst:461 #, fuzzy #| msgid "``packages``" msgid "``packages.archive.path``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 #, fuzzy +#| msgid "The name of the project." +msgid "The path to the archive." +msgstr "திட்டத்தின் பெயர்." + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 +#, fuzzy #| msgid "``packages``" msgid "``packages.archive.size``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 #, fuzzy #| msgid "The name of the project." msgid "The size of the archive file." msgstr "திட்டத்தின் பெயர்." -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "வழிகாட்டி பயன்படுத்தப்படும் இடத்தில்" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 #, fuzzy #| msgid "TOML_ type: array of strings" msgid "**Type**: Table of strings" msgstr "டாம்_ வகை: சரங்களின் வரிசை" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "``packages``" msgid "``packages.index``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 #, fuzzy #| msgid "``packages``" msgid "``[packages.sdist]``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.name``" msgstr "`` தொகுப்பு_டேட்டா``" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.upload-time``" msgstr "`` தொகுப்பு_டேட்டா``" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.url``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.path``" msgstr "`` தொகுப்பு_டேட்டா``" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 #, fuzzy #| msgid "``packages``" msgid "``packages.sdist.size``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 #, fuzzy #| msgid "``package_data``" msgid "``packages.sdist.hashes``" msgstr "`` தொகுப்பு_டேட்டா``" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 #, fuzzy #| msgid "``packages``" msgid "``[[packages.wheels]]``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.name``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.url``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.path``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.size``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 #, fuzzy #| msgid "``packages``" msgid "``packages.wheels.hashes``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid ":ref:`pyproject-toml-spec`" msgid "**Inspiration**: :ref:`provenance-object`" msgstr ": ref: `pyproject-toml-spec`" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 #, fuzzy #| msgid "``packages``" msgid "``[packages.tool]``" msgstr "`` தொகுப்புகள்``" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 #, fuzzy #| msgid "Binary distribution format" msgid ":ref:`Install `." msgstr "பைனரி விநியோக வடிவம்" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -26228,40 +26305,40 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 #, fuzzy #| msgid "" #| "April 2018: The ``manylinux2010`` tag was approved through :pep:`571`." @@ -26269,6 +26346,11 @@ msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" "ஏப்ரல் 2018: `` மேனிலினக்ச் 2010`` குறிச்சொல் மூலம் அங்கீகரிக்கப்பட்டது: PEP: `571`." +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "தி: கோப்பு: `.pypirc` கோப்பு" @@ -33194,9 +33276,14 @@ msgid "" msgstr "பாதுகாப்பாக பதிவிறக்குங்கள்" #: ../source/tutorials/installing-packages.rst:139 +#, fuzzy +#| msgid "" +#| "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " +#| "Additionally, it will install :ref:`setuptools` and :ref:`wheel` if " +#| "they're not installed already." msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" "`` பைதான் get-pip.py`` ஐ இயக்கவும். [2] _ இது PIP ஐ நிறுவும் அல்லது மேம்படுத்தும். " @@ -33218,24 +33305,22 @@ msgstr "" "pip.py-/USR/`` ஆகியவற்றைப் பயன்படுத்தலாம்." #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +#, fuzzy +#| msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "பிப், செட்டுப்டூல்கள் மற்றும் சக்கரம் புதுப்பித்த நிலையில் இருப்பதை உறுதிசெய்க" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -"முன்பே கட்டப்பட்ட பைனரி காப்பகங்களிலிருந்து நிறுவுவதற்கு `` பிப்`` மட்டும் போதுமானது " -"என்றாலும், `` செடிப்டூல்ச்`` மற்றும் `` வீல்`` திட்டங்களின் புதுப்பித்த நகல்கள் மூல " -"காப்பகங்களிலிருந்து நிறுவ முடியும் என்பதை உறுதிப்படுத்த பயனுள்ளதாக இருக்கும்:" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "விருப்பமாக, மெய்நிகர் சூழலை உருவாக்கவும்" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " @@ -33245,7 +33330,7 @@ msgstr "" "பயன்படுத்துதல்>` விவரங்களுக்கு, ஆனால் இங்கே அடிப்படை: ஆவணம்: `வெவி <பைதான்: நூலகம்/" "வென்வ்>` [3] _ ஒரு பொதுவான லினக்ச் கணினியில் பயன்படுத்த கட்டளை:" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " @@ -33254,11 +33339,11 @@ msgstr "" "இது `` டுடோரியல்_என்வ்`` துணை அடைவில் ஒரு புதிய மெய்நிகர் சூழலை உருவாக்கும், மேலும் " "தற்போதைய செல்லை இயல்புநிலை `` பைதான்`` சூழலாகப் பயன்படுத்தவும்." -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "மெய்நிகர் சூழல்களை உருவாக்குதல்" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -33272,7 +33357,7 @@ msgstr "" "பாதுகாப்பாக நிறுவ நீங்கள் விரும்பினால், காண்க: DOC: `/வழிகாட்டிகள்/நிறுவுதல்-தனித்த-" "கட்டளை-கோட்டுகளை நிறுவுதல்." -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -33286,7 +33371,7 @@ msgstr "" "தளத்தின் நிலையான இருப்பிடம் எதுவாக இருந்தாலும்) நிறுவினால், மேம்படுத்தப்படாத ஒரு " "பயன்பாட்டை நீங்கள் தற்செயலாக மேம்படுத்தும் சூழ்நிலையில் முடிவடைவது எளிது." -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " @@ -33296,7 +33381,7 @@ msgstr "" "ஒரு பயன்பாடு செயல்பட்டால், அதன் நூலகங்களில் ஏதேனும் மாற்றம் அல்லது அந்த நூலகங்களின் " "பதிப்புகள் பயன்பாட்டை உடைக்கலாம்." -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." @@ -33304,7 +33389,7 @@ msgstr "" "மேலும், நீங்கள் நிறுவ முடியாவிட்டால்: கால: `தொகுப்புகள் <விநியோக தொகுப்பு>` உலகளாவிய " "தள-பேக்கேச்கள் கோப்பகத்தில் என்ன செய்வது? உதாரணமாக, பகிரப்பட்ட ஓச்டில்." -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " @@ -33314,13 +33399,13 @@ msgstr "" "நிறுவல் கோப்பகங்களைக் கொண்டுள்ளன, மேலும் அவை பிற மெய்நிகர் சூழல்களுடன் நூலகங்களைப் " "பகிர்ந்து கொள்ளாது." -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "தற்போது, பைதான் மெய்நிகர் சூழல்களை உருவாக்க இரண்டு பொதுவான கருவிகள் உள்ளன:" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -33332,7 +33417,7 @@ msgstr "" "பைதான் 3.4 and later (Python versions prior பெறுநர் 3.12 also " "installed :ref:`setuptools`)." -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 #, fuzzy #| msgid "" #| ":ref:`virtualenv` needs to be installed separately, but supports Python " @@ -33351,19 +33436,19 @@ msgstr "" "எப்போதும் installed into உருவாக்கப்பட்டது virtual environments by இயல்புநிலை " "(regardless of பைதான் version)." -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "அடிப்படை பயன்பாடு அவ்வாறு உள்ளது:" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "பயன்படுத்துதல்: DOC: `vev `:" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "பயன்படுத்துதல்: ref: `Virtualenv`:" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." @@ -33371,7 +33456,7 @@ msgstr "" "மேலும் தகவலுக்கு, டி.ஓ.சி: `வெவி <பைதான்: நூலகம்/வென்வ்>` டாக்ச் அல்லது தி: டாக்: " "`மெய்நிகர் ஈவ் <மெய்நிகர் ஈன்வ்: குறியீட்டு>` டாக்ச் ஆகியவற்றைக் காண்க." -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " @@ -33381,7 +33466,7 @@ msgstr "" "செல்லுக்குள் அமைக்கப்பட்டிருப்பதை உறுதி செய்கிறது, ஆனால் ஒரு துணை செயலாக்கத்தில் அல்ல " "(பின்னர் அது மறைந்துவிடும், பயனுள்ள விளைவு இல்லை)." -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " @@ -33391,7 +33476,7 @@ msgstr "" "பயன்படுத்தக்கூடாது: கட்டளை: `மூல` கட்டளை, மாறாக: கட்டளையை இயக்க வேண்டும்:` ச்கிரிப்டை " "நேரடியாக கட்டளை செல்லிலிருந்து நேரடியாக ச்கிரிப்டை இயக்கவும்:" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -33403,11 +33488,11 @@ msgstr "" "அறிமுகப்படுத்துகிறது,: re: `பைபென்வ்`, நீங்கள் பணிபுரியும் ஒவ்வொரு திட்டத்திற்கும் " "பயன்பாட்டிற்கும் ஒரு தனி மெய்நிகர் சூழலை தானாக நிர்வகிக்கிறது." -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "நிறுவ PIP ஐப் பயன்படுத்தவும்" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " @@ -33418,11 +33503,11 @@ msgstr "" "இன்டெக்ச்>`, இதில் முழுமையானது: டாக்: `குறிப்பு வழிகாட்டி <பிஐபி: சிஎல்ஐ/குறியீட்டு>` " "ஐப் பார்க்கவும்." -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "PYPI இலிருந்து நிறுவுகிறது" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -33440,21 +33525,21 @@ msgstr "" "விவரக்குறிப்பு விவரக்குறிப்பு <பதிப்பு-விவரக்குறிப்புகள்>` இல் காணலாம். சில " "எடுத்துக்காட்டுகள் கீழே." -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "\"Forproject\" இன் அண்மைக் கால பதிப்பை நிறுவ:" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "ஒரு குறிப்பிட்ட பதிப்பை நிறுவ:" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" "ஒரு பதிப்பை விட அதிகமாகவோ அல்லது சமமாகவோ நிறுவவும், மற்றொன்றை விட குறைவாகவும் " "நிறுவுதல்:" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" @@ -33462,7 +33547,7 @@ msgstr "" "ஒரு பதிப்பை நிறுவ: குறிப்பு: `இணக்கமான <பதிப்பு-விவரிப்பாளர்கள்-இணக்கமான-வெளியீடு>` " "ஒரு குறிப்பிட்ட பதிப்போடு: [4] _" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." @@ -33470,11 +33555,11 @@ msgstr "" "இந்த வழக்கில், \"== 1.4.*\" பதிப்பையும் நிறுவ வேண்டும் என்பதே இதன் பொருள் \"> = " "1.4.2\"." -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "மூல வழங்கல் Vs சக்கரங்கள்" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -33485,7 +33570,7 @@ msgstr "" ". பைப்பின் இயல்புநிலை நடத்தை எ.கா. அதைப் பயன்படுத்துதல்: ref: `-no-entar ` விருப்பம்." -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -33497,7 +33582,7 @@ msgstr "" "Distributions (sdist) `, especially when a திட்டம் " "contains compiled extensions." -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " @@ -33507,16 +33592,16 @@ msgstr "" "விநியோகத்தை மீண்டும் கட்டியெழுப்புவதற்குப் பதிலாக, உள்நாட்டில் ஒரு சக்கரத்தை உருவாக்கி " "எதிர்கால நிறுவல்களுக்கு தற்காலிகமாக சேமிக்கும்." -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" "ஏற்கனவே நிறுவப்பட்ட `` someproject`` ஐ பைபியிலிருந்து சமீபத்தியதாக மேம்படுத்தவும்." -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "பயனர் தளத்திற்கு நிறுவுதல்" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" @@ -33524,7 +33609,7 @@ msgstr "" "நிறுவ: கால: `தொகுப்புகள் <விநியோக தொகுப்பு>` தற்போதைய பயனருக்கு தனிமைப்படுத்தப்பட்ட, " "`` --user`` கொடியைப் பயன்படுத்தவும்:" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." @@ -33532,7 +33617,7 @@ msgstr "" "மேலும் தகவலுக்கு, `பயனர் நிறுவல்கள் ` _ பிரிவு பிப் டாக்சிலிருந்து." -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." @@ -33540,7 +33625,7 @@ msgstr "" "மெய்நிகர் சூழலுக்குள் இருக்கும்போது `` --user`` கொடி எந்த விளைவையும் ஏற்படுத்தாது " "என்பதை நினைவில் கொள்க-அனைத்து நிறுவல் கட்டளைகளும் மெய்நிகர் சூழலை பாதிக்கும்." -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -33555,7 +33640,7 @@ msgstr "" "நிறுவப்படும், இது ஏற்கனவே உங்கள் செல்லில் இருக்கலாம் அல்லது இல்லாமல் இருக்கலாம்: envvar: " "`பாதை`. ." -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -33569,7 +33654,7 @@ msgstr "" "பாதைக்கு விரிவாக்கப்படும்) எனவே உங்கள்` `பாதை`` இல்` `~/.local/bin`` ஐ சேர்க்க " "வேண்டும். `மாற்றியமைப்பதன் மூலம் உங்கள்` `பாதையை` நிரந்தரமாக அமைக்கலாம்." -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -33588,7 +33673,7 @@ msgstr "" "`கட்டுப்பாட்டு குழு`_ இல் நிரந்தரமாக அமைக்கலாம். நடைமுறைக்கு வருவதற்கான `` பாதை` " "`மாற்றங்களுக்கு நீங்கள் வெளியேற வேண்டியிருக்கலாம்." -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." @@ -33596,11 +33681,11 @@ msgstr "" "A இல் குறிப்பிடப்பட்டுள்ள தேவைகளின் பட்டியலை நிறுவவும்: ref: `தேவைகள் கோப்பு `." -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "பகஅ இலிருந்து நிறுவுகிறது" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." @@ -33609,15 +33694,15 @@ msgstr "" "முறிவுக்கு, பைப்பின் பகுதியைப் பார்க்கவும்: குறிப்பு: `வி.சி.எச் உதவி <பிஐபி: " "வி.சி.எச் ஆதரவு>`." -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "பிற குறியீடுகளிலிருந்து நிறுவுகிறது" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "மாற்று குறியீட்டிலிருந்து நிறுவவும்" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" @@ -33625,11 +33710,11 @@ msgstr "" "நிறுவலின் போது கூடுதல் குறியீட்டைத் தேடுங்கள், கூடுதலாக: கால: `பைபி <பைதான் தொகுப்பு " "அட்டவணை (பைபி)>`" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "உள்ளக எச்.ஆர்.சி மரத்திலிருந்து நிறுவுகிறது" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " @@ -33639,19 +33724,19 @@ msgstr "" "வழிகாட்டி/மேம்பாட்டு பயன்முறை>`, ஐ.எச்.எச். திட்டம் நிறுவப்பட்டதாகத் தோன்றும் வகையில், " "ஆனால் இன்னும் எச்.ஆர்.சி மரத்திலிருந்து திருத்தக்கூடியது." -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "நீங்கள் பொதுவாக SRC இலிருந்து நிறுவலாம்" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "உள்ளக காப்பகங்களிலிருந்து நிறுவுதல்" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "ஒரு குறிப்பிட்ட மூல காப்பக கோப்பை நிறுவவும்." -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" @@ -33659,11 +33744,11 @@ msgstr "" "காப்பகங்களைக் கொண்ட உள்ளக கோப்பகத்திலிருந்து நிறுவவும் (மற்றும் சரிபார்க்க வேண்டாம்: சொல்: " "`பைபி <பைதான் தொகுப்பு குறியீட்டு (பைபி)>`)" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "பிற மூலங்களிலிருந்து நிறுவுகிறது" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -33675,11 +33760,11 @@ msgstr "" "`எளிய களஞ்சிய பநிஇ <எளிய-ரோபோசிட்டரி-ஏபிஐ>`:, மற்றும் ``-எக்ச்ட்ரா-இன்டெக்ச்-உர்எல்``` " "கொடியை அந்த குறியீட்டைப் பயன்படுத்துவதற்கு நேரடியாகப் பயன்படுத்தவும்." -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "முன்நிபந்தனைகளை நிறுவுதல்" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." @@ -33687,11 +33772,11 @@ msgstr "" "நிலையான பதிப்புகளுக்கு கூடுதலாக, முன் வெளியீடு மற்றும் மேம்பாட்டு பதிப்புகளைக் " "கண்டறியவும். இயல்பாக, பிஐபி நிலையான பதிப்புகளை மட்டுமே காண்கிறது." -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "\"கூடுதல்\" நிறுவுதல்" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -33703,7 +33788,7 @@ msgstr "" "வெளியிடுவது உங்களுக்குத் தெரிந்த ஒரு தொகுப்புக்கு கூடுதல் நிறுவ விரும்பினால், நீங்கள் " "அதை PIP நிறுவல் கட்டளையில் சேர்க்கலாம்:" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " @@ -33713,7 +33798,7 @@ msgstr "" "பயன்படுத்துவதாகும்: கட்டளை: `சுருட்டை` இது HTTPS முகவரி களில் இருந்து பதிவிறக்கும் " "போது SSL சான்றிதழ்களை சரிபார்க்கிறது." -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" @@ -33723,7 +33808,7 @@ msgstr "" "மெய்நிகர் ஈட்டிங் சூழல்களை முன் நிறுவப்பட்ட` `பிஐபி`` உடன் உருவாக்கும், இதனால் இது சமமான " "மாற்றாக அமைகிறது: குறிப்பு:` மெய்நிகர் ஈன்வ்`." -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" @@ -34764,6 +34849,42 @@ msgstr "" "மட்டுமே தொடங்கினால், * வழக்கமான தொகுப்புகள் * மற்றும் `__init __. பை`` (கோப்பு " "காலியாக இருந்தாலும் கூட) ஒட்டிக்கொள்ள பரிந்துரைக்கப்படுகிறது." +#~ msgid "" +#~ "While ``pip`` alone is sufficient to install from pre-built binary " +#~ "archives, up to date copies of the ``setuptools`` and ``wheel`` projects " +#~ "are useful to ensure you can also install from source archives:" +#~ msgstr "" +#~ "முன்பே கட்டப்பட்ட பைனரி காப்பகங்களிலிருந்து நிறுவுவதற்கு `` பிப்`` மட்டும் போதுமானது " +#~ "என்றாலும், `` செடிப்டூல்ச்`` மற்றும் `` வீல்`` திட்டங்களின் புதுப்பித்த நகல்கள் மூல " +#~ "காப்பகங்களிலிருந்து நிறுவ முடியும் என்பதை உறுதிப்படுத்த பயனுள்ளதாக இருக்கும்:" + +#, fuzzy +#~| msgid "" +#~| "`Travis CI `_ provides both a Linux and a macOS " +#~| "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~| "bit while the macOS is 10.9.2 at the time of writing." +#~ msgid "" +#~ "`Travis CI `_ provides both a Linux and a macOS " +#~ "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~ "bit while the macOS is 10.9.2 at the time of writing." +#~ msgstr "" +#~ "`டிராவிச் சி ` _ லினக்ச் மற்றும் மேகோச் சூழல் இரண்டையும் " +#~ "வழங்குகிறது. லினக்ச் சூழல் உபுண்டு 12.04 எல்.டி.எச் சர்வர் பதிப்பு 64 பிட் ஆகும், அதே " +#~ "நேரத்தில் மேகோச் 10.9.2 ஆகும்." + +#~ msgid "" +#~ "The Appveyor service is a continuous integration service, much like the " +#~ "better-known `Travis`_ service that is commonly used for testing by " +#~ "projects hosted on `GitHub`_. However, unlike Travis, the build workers " +#~ "on Appveyor are Windows hosts and have the necessary compilers installed " +#~ "to build Python extensions." +#~ msgstr "" +#~ "AppVeair பணி என்பது தொடர்ச்சியான ஒருங்கிணைப்பு சேவையாகும், இது நன்கு அறியப்பட்ட " +#~ "`டிராவிச்`_ சேவையைப் போன்றது, இது பொதுவாக` கிதுப்`_ இல் வழங்கப்பட்ட திட்டங்களால் " +#~ "சோதனைக்கு பயன்படுத்தப்படுகிறது. இருப்பினும், டிராவிசைப் போலல்லாமல், ஆப்சியரில் உள்ள " +#~ "தொழிலாளர்கள் சாளரங்கள் ஓச்ட்கள் மற்றும் பைதான் நீட்டிப்புகளை உருவாக்க தேவையான கம்பைலர்கள் " +#~ "நிறுவப்பட்டுள்ளன." + #~ msgid "" #~ "This specification was originally defined in :pep:`518` and :pep:`621`." #~ msgstr "" diff --git a/locales/th/LC_MESSAGES/messages.po b/locales/th/LC_MESSAGES/messages.po index f1f5aab88..85160d5e6 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: Automatically generated\n" "Language-Team: none\n" @@ -1524,7 +1524,7 @@ msgid "" msgstr "" #: ../source/discussions/install-requires-vs-requirements.rst:62 -#: ../source/tutorials/installing-packages.rst:464 +#: ../source/tutorials/installing-packages.rst:463 msgid "Requirements files" msgstr "" @@ -5356,7 +5356,7 @@ msgid "" msgstr "" #: ../source/guides/distributing-packages-using-setuptools.rst:589 -#: ../source/tutorials/installing-packages.rst:670 +#: ../source/tutorials/installing-packages.rst:669 msgid "" "Depending on your platform, this may require root or Administrator " "access. :ref:`pip` is currently considering changing this by `making user " @@ -5609,7 +5609,7 @@ msgstr "" #: ../source/guides/hosting-your-own-index.rst:65 #: ../source/guides/index-mirrors-and-caches.rst:56 -#: ../source/guides/supporting-windows-using-appveyor.rst:146 +#: ../source/guides/supporting-windows-using-appveyor.rst:139 msgid "Additional notes" msgstr "" @@ -6621,7 +6621,7 @@ msgid "" msgstr "" #: ../source/guides/installing-using-pip-and-virtual-environments.rst:434 -#: ../source/tutorials/installing-packages.rst:393 +#: ../source/tutorials/installing-packages.rst:392 msgid "Upgrading packages" msgstr "" @@ -8565,23 +8565,31 @@ msgid "" "and storing them for later use:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:115 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:112 +msgid "" +"If you adapt this workflow to build multiple platform-specific wheels, use " +"uniquely named artifacts for each build job and adjust the download step " +"accordingly. The `cibuildwheel GitHub Actions examples`_ show a fuller wheel " +"matrix layout." +msgstr "" + +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:122 msgid "" "This will download your repository into the CI runner and then install and " "activate the newest available Python 3 release." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:118 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:125 msgid "" "And now we can build the dists from source and store them. In this example, " "we'll use the ``build`` package. So add this to the steps list:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:128 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:135 msgid "Defining a workflow job environment" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:130 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:137 msgid "" "Now, let's add initial setup for our job that will publish to PyPI. It's a " "process that will execute commands that we'll define later. In this guide, " @@ -8592,21 +8600,21 @@ msgid "" "implement secretless Trusted Publishing to PyPI." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:144 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:151 msgid "" "This will also ensure that the PyPI publishing workflow is only triggered if " "the current commit is tagged." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:148 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:155 msgid "Publishing the distribution to PyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:150 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 msgid "Finally, add the following steps at the end:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:157 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 msgid "" "This step uses the `pypa/gh-action-pypi-publish`_ GitHub Action: after the " "stored distribution package has been downloaded by the `download-artifact`_ " @@ -8614,7 +8622,7 @@ msgid "" "unconditionally." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:164 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:171 msgid "" "Starting with version `v1.11.0 `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8622,37 +8630,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8660,7 +8668,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8669,7 +8677,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8684,7 +8692,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8755,35 +8763,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8795,7 +8802,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8804,15 +8811,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8822,7 +8829,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8831,11 +8838,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8871,15 +8878,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8888,11 +8886,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8900,25 +8898,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8926,7 +8923,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8937,24 +8934,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8965,7 +8962,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -8974,19 +8971,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -8998,7 +8995,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9006,17 +9003,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9024,7 +9021,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9036,17 +9033,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9057,25 +9054,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9083,7 +9080,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9091,23 +9088,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9116,25 +9113,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9142,7 +9139,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9150,11 +9147,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9162,7 +9159,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9170,17 +9167,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9190,15 +9187,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11385,17 +11382,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11403,21 +11417,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11425,34 +11439,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13467,10 +13481,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13556,7 +13571,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17582,8 +17597,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17663,6 +17678,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19325,8 +19348,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19374,18 +19397,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19413,19 +19436,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19479,8 +19504,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19562,8 +19587,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19676,9 +19701,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19768,11 +19793,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19917,7 +19944,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19926,6 +19953,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19957,467 +19986,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20426,43 +20482,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25660,7 +25721,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25674,39 +25735,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25715,7 +25775,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25724,33 +25784,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25758,7 +25818,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25767,39 +25827,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25807,22 +25867,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25833,35 +25893,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25870,7 +25930,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25878,40 +25938,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25922,7 +25982,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25931,7 +25991,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25943,70 +26003,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26014,21 +26074,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26036,21 +26096,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/tr/LC_MESSAGES/messages.po b/locales/tr/LC_MESSAGES/messages.po index abef18066..18b9b4718 100644 --- a/locales/tr/LC_MESSAGES/messages.po +++ b/locales/tr/LC_MESSAGES/messages.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-09-29 04:02+0000\n" "Last-Translator: Rüzgar Hünerel \n" "Language-Team: Turkish `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8649,37 +8657,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8687,7 +8695,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8696,7 +8704,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8711,7 +8719,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8782,35 +8790,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8822,7 +8829,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8831,15 +8838,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8849,7 +8856,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8858,11 +8865,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8898,15 +8905,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8915,11 +8913,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -8927,25 +8925,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -8953,7 +8950,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -8964,24 +8961,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -8992,7 +8989,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9001,19 +8998,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9025,7 +9022,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9033,17 +9030,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9051,7 +9048,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9063,17 +9060,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9084,25 +9081,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9110,7 +9107,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9118,23 +9115,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9143,25 +9140,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9169,7 +9166,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9177,11 +9174,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9189,7 +9186,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9197,17 +9194,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9217,15 +9214,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11412,17 +11409,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11430,21 +11444,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11452,34 +11466,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13494,10 +13508,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13583,7 +13598,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17609,8 +17624,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17690,6 +17705,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19352,8 +19375,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19401,18 +19424,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19440,19 +19463,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19506,8 +19531,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19589,8 +19614,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19703,9 +19728,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19795,11 +19820,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -19944,7 +19971,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -19953,6 +19980,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -19984,467 +20013,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20453,43 +20509,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25687,7 +25748,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25701,39 +25762,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25742,7 +25802,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25751,33 +25811,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25785,7 +25845,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25794,39 +25854,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -25834,22 +25894,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -25860,35 +25920,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -25897,7 +25957,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -25905,40 +25965,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -25949,7 +26009,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -25958,7 +26018,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -25970,70 +26030,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26041,21 +26101,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26063,21 +26123,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/uk/LC_MESSAGES/messages.po b/locales/uk/LC_MESSAGES/messages.po index 4f6c1a667..17bf6813d 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2024-03-01 20:00+0000\n" "Last-Translator: Sviatoslav Sydorenko \n" "Language-Team: Ukrainian `_, `pypa/gh-action-pypi-publish`_ generates " @@ -9132,37 +9140,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "Це все, добродії!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -9170,7 +9178,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -9179,7 +9187,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -9194,7 +9202,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy #| msgid "Installation format" msgid "Installation" @@ -9267,35 +9275,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -9307,7 +9314,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -9316,15 +9323,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -9334,7 +9341,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -9343,11 +9350,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9383,15 +9390,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9400,11 +9398,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9412,25 +9410,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9438,7 +9435,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9449,24 +9446,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appveyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9477,7 +9474,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9486,19 +9483,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9510,7 +9507,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9518,17 +9515,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9536,7 +9533,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9548,17 +9545,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9569,25 +9566,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9595,7 +9592,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9603,23 +9600,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9628,25 +9625,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9654,7 +9651,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9662,11 +9659,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9674,7 +9671,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9682,17 +9679,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9702,15 +9699,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -11943,17 +11940,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.releaser" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11961,21 +11975,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "ensurepip" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11983,36 +11997,36 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 #, fuzzy #| msgid "pypiserver" msgid "http.server" msgstr "pypiserver" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "venv" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -14038,10 +14052,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -14127,7 +14142,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 #, fuzzy msgid "Example" msgstr "Приклади" @@ -18240,8 +18255,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -18323,6 +18338,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "Специфікації PyPA" @@ -20017,8 +20040,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 #, fuzzy #| msgid "Requirements files" msgid "**Required?**: yes" @@ -20070,18 +20093,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -20109,19 +20132,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -20176,8 +20201,8 @@ msgid "``dependency-groups``" msgstr "Перевизначення залежностей" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid "pyproject.toml" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -20263,8 +20288,8 @@ msgstr "пакунок" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -20385,9 +20410,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -20477,11 +20502,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20626,7 +20653,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20635,6 +20662,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20666,473 +20695,500 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 #, fuzzy #| msgid "Where the guide is deployed" msgid "The time the file was uploaded." msgstr "Куди це керівництво публікується" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "Package Index" msgid "``packages.index``" msgstr "Реєстр Пакунків" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid "pyproject.toml" msgid "**Inspiration**: :ref:`provenance-object`" msgstr "pyproject.toml" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -21141,43 +21197,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "Файл :file:`.pypirc`" @@ -26464,7 +26525,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -26478,39 +26539,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -26519,7 +26579,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -26528,33 +26588,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -26562,7 +26622,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -26571,39 +26631,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26611,22 +26671,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26637,35 +26697,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26674,7 +26734,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26682,40 +26742,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26726,7 +26786,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26735,7 +26795,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26747,70 +26807,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26818,22 +26878,22 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 #, fuzzy msgid "Installing \"Extras\"" msgstr "Встановлення пакунків" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26841,21 +26901,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/vi/LC_MESSAGES/messages.po b/locales/vi/LC_MESSAGES/messages.po index 1bf82d356..f2b8df993 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: 2026-03-05 06:32+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" "PO-Revision-Date: 2025-09-23 05:02+0000\n" "Last-Translator: Lenny Tran \n" "Language-Team: Vietnamese `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8769,37 +8777,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8807,7 +8815,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8816,7 +8824,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8831,7 +8839,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "" @@ -8902,35 +8910,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8942,7 +8949,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8951,15 +8958,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8969,7 +8976,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8978,11 +8985,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9018,15 +9025,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9035,11 +9033,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9047,25 +9045,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9073,7 +9070,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9084,24 +9081,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9112,7 +9109,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9121,19 +9118,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9145,7 +9142,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9153,17 +9150,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9171,7 +9168,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9183,17 +9180,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9204,25 +9201,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9230,7 +9227,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9238,23 +9235,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9263,25 +9260,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9289,7 +9286,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9297,11 +9294,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9309,7 +9306,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9317,17 +9314,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9337,15 +9334,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "" @@ -11604,17 +11601,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11622,21 +11636,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11644,34 +11658,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13686,10 +13700,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13775,7 +13790,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17800,10 +17815,16 @@ msgid "" msgstr "" #: ../source/specifications/glob-patterns.rst:18 +#, fuzzy +#| msgid "" +#| "Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " +#| "(``.``) will be matched verbatim." msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" +"Các ký tự chữ và số, dấu gạch dưới (``_``), dấu gạch nối (``-``) và dấu chấm " +"(``.``) sẽ được khớp nguyên văn." #: ../source/specifications/glob-patterns.rst:21 msgid "" @@ -17882,6 +17903,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19546,8 +19575,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "" @@ -19595,18 +19624,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19634,19 +19663,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19700,8 +19731,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "" @@ -19783,8 +19814,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19897,9 +19928,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19989,11 +20020,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20138,7 +20171,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20147,6 +20180,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20178,467 +20213,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20647,43 +20709,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25883,7 +25950,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25897,39 +25964,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25938,7 +26004,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25947,33 +26013,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25981,7 +26047,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25990,39 +26056,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26030,22 +26096,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26056,35 +26122,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26093,7 +26159,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26101,40 +26167,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26145,7 +26211,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26154,7 +26220,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26166,70 +26232,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26237,21 +26303,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26259,21 +26325,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" diff --git a/locales/zh_Hans/LC_MESSAGES/messages.po b/locales/zh_Hans/LC_MESSAGES/messages.po index 28cd87624..5d2705d20 100644 --- a/locales/zh_Hans/LC_MESSAGES/messages.po +++ b/locales/zh_Hans/LC_MESSAGES/messages.po @@ -41,8 +41,8 @@ msgid "" msgstr "" "Project-Id-Version: Python Packaging User Guide\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2026-03-05 06:32+0000\n" -"PO-Revision-Date: 2026-03-03 14:09+0000\n" +"POT-Creation-Date: 2026-05-05 16:17+0000\n" +"PO-Revision-Date: 2026-05-03 20:50+0000\n" "Last-Translator: 大王叫我来巡山 " "\n" "Language-Team: Chinese (Simplified Han script) `_, `pypa/gh-action-pypi-publish`_ generates " @@ -9502,37 +9510,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "就这些了,伙计们!" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -9540,7 +9548,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -9549,7 +9557,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -9564,7 +9572,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 msgid "Installation" msgstr "安装" @@ -9635,15 +9643,11 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -"`Travis CI `_ 提供了一个 Linux 和一个 macOS 环境。" -"Linux 环境是 Ubuntu 12.04 LTS 服务器版 64 位,而在撰写本文时 macOS 的版本是 " -"10.9.2。" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." @@ -9651,26 +9655,26 @@ msgstr "" "`Appveyor `_ 提供一个 Windows 环境(Windows " "Server 2012)。" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -"`Travis CI`_ 和 Appveyor_ 都需要一个 `YAML `_ 格式的文件作" -"为测试的说明规范。如果任何测试失败,可以检查该特定配置的输出日志。" +"`GitHub Actions`_ 和 Appveyor_ 都需要一个 `YAML `_ 格式的文" +"件作为测试的说明规范。如果任何测试失败,可以检查该特定配置的输出日志。" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -9682,7 +9686,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -9691,15 +9695,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -9709,7 +9713,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -9718,11 +9722,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -9758,15 +9762,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -9775,11 +9770,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9787,25 +9782,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9813,7 +9807,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9824,24 +9818,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9852,7 +9846,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9861,19 +9855,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9885,7 +9879,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9893,17 +9887,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9911,7 +9905,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9923,17 +9917,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9944,25 +9938,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9970,7 +9964,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9978,23 +9972,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -10003,25 +9997,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -10029,7 +10023,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -10037,11 +10031,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -10049,7 +10043,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -10057,17 +10051,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -10077,15 +10071,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -11895,7 +11889,7 @@ msgid "" ":gh:`Source ` | :gh:`Issues ` | `PyPI " "`__" msgstr "" -":gh:`Source ` | :gh:`Issues ` | `PyPI " +":gh:`源码 ` | :gh:`问题 ` | `PyPI " "`__" #: ../source/key_projects.rst:470 @@ -12404,10 +12398,29 @@ msgstr "" "Spack 不在 PyPI 中(目前),但它不需要安装,从 GitHub 克隆后可以立即使用。" #: ../source/key_projects.rst:833 +msgid "uv" +msgstr "" + +#: ../source/key_projects.rst:835 +msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" +"`Docs `__ | `GitHub `__ | `PyPI `__" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 msgid "zest.releaser" msgstr "zest.releaser" -#: ../source/key_projects.rst:835 +#: ../source/key_projects.rst:848 msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__ | `PyPI `__" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -12425,15 +12438,15 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "ensurepip" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" @@ -12441,7 +12454,7 @@ msgstr "" "`文档 `__ | `问题 `__" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -12449,30 +12462,29 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "http.server" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -":doc:`Docs ` | :gh:`Issues `" +":doc:`文档 ` | :gh:`问题 `" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "venv" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" @@ -12480,7 +12492,7 @@ msgstr "" "`文档 `__ | `问题 `__" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -14496,10 +14508,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -14585,7 +14598,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "例子" @@ -18617,8 +18630,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -18698,6 +18711,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -20360,8 +20381,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 msgid "**Required?**: yes" msgstr "**必需吗?**: 是" @@ -20409,18 +20430,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -20448,19 +20469,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -20514,8 +20537,8 @@ msgid "``dependency-groups``" msgstr "``dependency-groups``" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 msgid "**Inspiration**: :ref:`pyproject-tool-table`" msgstr "**灵感**: :ref:`pyproject-tool-table`" @@ -20597,8 +20620,8 @@ msgstr "``[[packages]]``" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -20711,9 +20734,9 @@ msgstr "``[packages.vcs]``" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -20803,11 +20826,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20952,7 +20977,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20961,6 +20986,8 @@ msgid "``[packages.archive]``" msgstr "``[packages.archive]``" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20992,467 +21019,494 @@ msgstr "" msgid "``packages.archive.url``" msgstr "``packages.archive.url``" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "``packages.archive.path``" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "``packages.archive.size``" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "文件上传时间。" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 msgid "``packages.index``" msgstr "``packages.index``" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "``[packages.sdist]``" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "``packages.sdist.name``" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "``packages.sdist.upload-time``" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "``packages.sdist.url``" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "``packages.sdist.path``" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "``packages.sdist.size``" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "``packages.sdist.hashes``" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "``[[packages.wheels]]``" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "``packages.wheels.name``" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "``packages.wheels.url``" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "``packages.wheels.path``" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "``packages.wheels.size``" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "``packages.wheels.hashes``" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 msgid "**Inspiration**: :ref:`provenance-object`" msgstr "**灵感**: :ref:`provenance-object`" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "``[packages.tool]``" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -21461,43 +21515,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -26701,7 +26760,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -26715,39 +26774,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -26756,7 +26814,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -26765,33 +26823,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -26799,7 +26857,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -26808,39 +26866,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26848,22 +26906,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26874,35 +26932,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26911,7 +26969,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26919,40 +26977,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26963,7 +27021,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26972,7 +27030,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26984,70 +27042,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "从其他来源安装" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -27055,21 +27113,21 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 msgid "Installing \"Extras\"" msgstr "安装\"附加功能\"" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -27077,21 +27135,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0" @@ -27833,6 +27891,15 @@ msgid "" "the file is empty)." msgstr "" +#~ msgid "" +#~ "`Travis CI `_ provides both a Linux and a macOS " +#~ "environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 " +#~ "bit while the macOS is 10.9.2 at the time of writing." +#~ msgstr "" +#~ "`Travis CI `_ 提供了一个 Linux 和一个 macOS 环境。" +#~ "Linux 环境是 Ubuntu 12.04 LTS 服务器版 64 位,而在撰写本文时 macOS 的版本" +#~ "是 10.9.2。" + #~ msgid "" #~ "Refer to the `pkg_resources documentation \n" "Language-Team: Chinese (Traditional Han script) `_, `pypa/gh-action-pypi-publish`_ generates " @@ -8724,37 +8732,37 @@ msgid "" "default. No additional manual signing steps are required." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:172 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:179 msgid "Separate workflow for publishing to TestPyPI" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:174 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:181 msgid "" "Now, repeat these steps and create another job for publishing to the " "TestPyPI package index under the ``jobs`` section:" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:184 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:191 msgid "" "Requiring manual approvals in the ``testpypi`` GitHub Environment is " "typically unnecessary as it's designed to run on each commit to the main " "branch and is often used to indicate a healthy release publishing pipeline." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:188 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:195 msgid "The whole CI/CD workflow" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:190 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:197 msgid "" "This paragraph showcases the whole workflow after following the above guide." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:198 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:205 msgid "That's all, folks!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:200 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:207 msgid "" "Now, whenever you push a tagged commit to your Git repository remote on " "GitHub, this workflow will publish it to PyPI. And it'll publish any push to " @@ -8762,7 +8770,7 @@ msgid "" "well as making sure that your release pipeline remains healthy!" msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:208 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:215 msgid "" "If your repository has frequent commit activity and every push is uploaded " "to TestPyPI as described, the project might exceed the `PyPI project size " @@ -8771,7 +8779,7 @@ msgid "" "server like :ref:`pypiserver` in the CI for testing purposes." msgstr "" -#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:216 +#: ../source/guides/publishing-package-distribution-releases-using-github-actions-ci-cd-workflows.rst:223 msgid "" "It is recommended to keep the integrated GitHub Actions at their latest " "versions, updating them frequently." @@ -8786,7 +8794,7 @@ msgid "Hosting" msgstr "" #: ../source/guides/section-install.rst:3 -#: ../source/specifications/pylock-toml.rst:729 +#: ../source/specifications/pylock-toml.rst:744 #, fuzzy #| msgid "Translations" msgid "Installation" @@ -8859,35 +8867,34 @@ msgstr "" #: ../source/guides/supporting-multiple-python-versions.rst:65 msgid "" -"`Travis CI `_ provides both a Linux and a macOS " -"environment. The Linux environment is Ubuntu 12.04 LTS Server Edition 64 bit " -"while the macOS is 10.9.2 at the time of writing." +"`GitHub Actions `_ provides Windows, " +"Linux and a macOS environments." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:68 +#: ../source/guides/supporting-multiple-python-versions.rst:67 msgid "" "`Appveyor `_ provides a Windows environment " "(Windows Server 2012)." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:79 +#: ../source/guides/supporting-multiple-python-versions.rst:78 msgid "" -"Both `Travis CI`_ and Appveyor_ require a `YAML `_-" +"Both `GitHub Actions`_ and Appveyor_ require a `YAML `_-" "formatted file as specification for the instructions for testing. If any " "tests fail, the output log for that specific configuration can be inspected." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:84 +#: ../source/guides/supporting-multiple-python-versions.rst:83 msgid "" "For Python projects that are intended to be deployed on both Python 2 and 3 " "with a single-source strategy, there are a number of options." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:88 +#: ../source/guides/supporting-multiple-python-versions.rst:87 msgid "Tools for single-source Python packages" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:90 +#: ../source/guides/supporting-multiple-python-versions.rst:89 msgid "" "`six `_ is a tool developed by Benjamin " "Peterson for wrapping over the differences between Python 2 and Python 3. " @@ -8899,7 +8906,7 @@ msgid "" "provided by six_." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:99 +#: ../source/guides/supporting-multiple-python-versions.rst:98 msgid "" "Similar to six_, `python-future `_ " "is a package that provides a compatibility layer between Python 2 and Python " @@ -8908,15 +8915,15 @@ msgid "" "matches one of the two Python versions: one may use" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:106 +#: ../source/guides/supporting-multiple-python-versions.rst:105 msgid "a Python 2 (by syntax) module in a Python 3 project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:107 +#: ../source/guides/supporting-multiple-python-versions.rst:106 msgid "a Python 3 (by syntax) module in a *Python 2* project." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:109 +#: ../source/guides/supporting-multiple-python-versions.rst:108 msgid "" "Because of the bi-directionality, python-future_ offers a pathway to " "converting a Python 2 package to Python 3 syntax module-by-module. However, " @@ -8926,7 +8933,7 @@ msgid "" "module or a Python 3 module respectively." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:116 +#: ../source/guides/supporting-multiple-python-versions.rst:115 msgid "" "Use of six_ or python-future_ adds an additional runtime dependency to your " "package: with python-future_, the ``futurize`` script can be called with the " @@ -8935,11 +8942,11 @@ msgid "" "problems would require manual changes." msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:123 +#: ../source/guides/supporting-multiple-python-versions.rst:122 msgid "What's in which Python?" msgstr "" -#: ../source/guides/supporting-multiple-python-versions.rst:125 +#: ../source/guides/supporting-multiple-python-versions.rst:124 msgid "" "Ned Batchelder provides a list of changes in each Python release for `Python " "2 `__, " @@ -8975,15 +8982,6 @@ msgstr "" #: ../source/guides/supporting-windows-using-appveyor.rst:23 msgid "" -"The Appveyor service is a continuous integration service, much like the " -"better-known `Travis`_ service that is commonly used for testing by projects " -"hosted on `GitHub`_. However, unlike Travis, the build workers on Appveyor " -"are Windows hosts and have the necessary compilers installed to build Python " -"extensions." -msgstr "" - -#: ../source/guides/supporting-windows-using-appveyor.rst:29 -msgid "" "Windows users typically do not have access to a C compiler, and therefore " "are reliant on projects that use C extensions distributing binary wheels on " "PyPI in order for the distribution to be installable via ``python -m pip " @@ -8992,11 +8990,11 @@ msgid "" "environment to provide Windows-targeted binaries." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:37 +#: ../source/guides/supporting-windows-using-appveyor.rst:31 msgid "Setting up" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:39 +#: ../source/guides/supporting-windows-using-appveyor.rst:33 msgid "" "In order to use Appveyor to build Windows wheels for your project, you must " "have an account on the service. Instructions on setting up an account are " @@ -9004,25 +9002,24 @@ msgid "" "The free tier of account is perfectly adequate for open source projects." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:44 +#: ../source/guides/supporting-windows-using-appveyor.rst:38 msgid "" "Appveyor provides integration with `GitHub`_ and `Bitbucket`_, so as long as " "your project is hosted on one of those two services, setting up Appveyor " "integration is straightforward." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:48 +#: ../source/guides/supporting-windows-using-appveyor.rst:42 msgid "" "Once you have set up your Appveyor account and added your project, Appveyor " -"will automatically build your project each time a commit occurs. This " -"behaviour will be familiar to users of Travis." +"will automatically build your project each time a commit occurs." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:53 +#: ../source/guides/supporting-windows-using-appveyor.rst:46 msgid "Adding Appveyor support to your project" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:55 +#: ../source/guides/supporting-windows-using-appveyor.rst:48 msgid "" "In order to define how Appveyor should build your project, you need to add " "an :file:`appveyor.yml` file to your project. The full details of what can " @@ -9030,7 +9027,7 @@ msgid "" "guide will provide the details necessary to set up wheel builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:60 +#: ../source/guides/supporting-windows-using-appveyor.rst:53 msgid "" "Appveyor includes by default all of the compiler toolchains needed to build " "extensions for Python. For Python 2.7, 3.5+ and 32-bit versions of 3.3 and " @@ -9041,24 +9038,24 @@ msgid "" "setup)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:68 +#: ../source/guides/supporting-windows-using-appveyor.rst:61 msgid "appveyor.yml" msgstr "appveyor.yml" -#: ../source/guides/supporting-windows-using-appveyor.rst:74 +#: ../source/guides/supporting-windows-using-appveyor.rst:67 msgid "" "This file can be downloaded from `here `__." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:76 +#: ../source/guides/supporting-windows-using-appveyor.rst:69 msgid "" "The :file:`appveyor.yml` file must be located in the root directory of your " "project. It is in ``YAML`` format, and consists of a number of sections." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:79 +#: ../source/guides/supporting-windows-using-appveyor.rst:72 msgid "" "The ``environment`` section is the key to defining the Python versions for " "which your wheels will be created. Appveyor comes with Python 2.6, 2.7, 3.3, " @@ -9069,7 +9066,7 @@ msgid "" "generally able to move to Python 2.7 without too much difficulty)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:87 +#: ../source/guides/supporting-windows-using-appveyor.rst:80 msgid "" "The ``install`` section uses pip to install any additional software that the " "project may require. The only requirement for building wheels is the " @@ -9078,19 +9075,19 @@ msgid "" "``Cython``, or test tools such as ``tox``)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:93 +#: ../source/guides/supporting-windows-using-appveyor.rst:86 msgid "" "The ``build`` section simply switches off builds - there is no build step " "needed for Python, unlike languages like ``C#``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:96 +#: ../source/guides/supporting-windows-using-appveyor.rst:89 msgid "" "The main sections that will need to be tailored to your project are " "``test_script`` and ``after_test``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:99 +#: ../source/guides/supporting-windows-using-appveyor.rst:92 msgid "" "The ``test_script`` section is where you will run your project's tests. The " "supplied file runs your test suite using ``setup.py test``. If you are only " @@ -9102,7 +9099,7 @@ msgid "" "changes you will need to consider, which are described below." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:108 +#: ../source/guides/supporting-windows-using-appveyor.rst:101 msgid "" "The ``after_test`` runs once your tests have completed, and so is where the " "wheels should be built. Assuming your project uses the recommended tools " @@ -9110,17 +9107,17 @@ msgid "" "will build your wheels." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:113 +#: ../source/guides/supporting-windows-using-appveyor.rst:106 msgid "" "Note that wheels will only be built if your tests succeed. If you expect " "your tests to fail on Windows, you can skip them as described above." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:118 +#: ../source/guides/supporting-windows-using-appveyor.rst:111 msgid "Support script" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:120 +#: ../source/guides/supporting-windows-using-appveyor.rst:113 msgid "" "The :file:`appveyor.yml` file relies on a single support script, which sets " "up the environment to use the SDK compiler for 64-bit builds on Python 3.3 " @@ -9128,7 +9125,7 @@ msgid "" "3.3 or 3.4 on 64-bit Windows, only the :file:`appveyor.yml` file is needed." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:125 +#: ../source/guides/supporting-windows-using-appveyor.rst:118 msgid "" "`build.cmd `__ is a Windows batch " @@ -9140,17 +9137,17 @@ msgid "" "builds." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:132 +#: ../source/guides/supporting-windows-using-appveyor.rst:125 msgid "" "You can simply download the batch file and include it in your project " "unchanged." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:136 +#: ../source/guides/supporting-windows-using-appveyor.rst:129 msgid "Access to the built wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:138 +#: ../source/guides/supporting-windows-using-appveyor.rst:131 msgid "" "When your build completes, the built wheels will be available from the " "Appveyor control panel for your project. They can be found by going to the " @@ -9161,25 +9158,25 @@ msgid "" "of your release process." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:149 +#: ../source/guides/supporting-windows-using-appveyor.rst:142 msgid "Testing with tox" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:151 +#: ../source/guides/supporting-windows-using-appveyor.rst:144 msgid "" "Many projects use the :doc:`Tox ` tool to run their tests. It " "ensures that tests are run in an isolated environment using the exact files " "that will be distributed by the project." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:155 +#: ../source/guides/supporting-windows-using-appveyor.rst:148 msgid "" "In order to use ``tox`` on Appveyor there are a couple of additional " "considerations (in actual fact, these issues are not specific to Appveyor, " "and may well affect other CI systems)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:159 +#: ../source/guides/supporting-windows-using-appveyor.rst:152 msgid "" "By default, ``tox`` only passes a chosen subset of environment variables to " "the test processes. Because ``distutils`` uses environment variables to " @@ -9187,7 +9184,7 @@ msgid "" "to use the wrong compiler by default." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:164 +#: ../source/guides/supporting-windows-using-appveyor.rst:157 msgid "" "To force ``tox`` to pass the necessary environment variables to the " "subprocess, you need to set the ``tox`` configuration option ``passenv`` to " @@ -9195,23 +9192,23 @@ msgid "" "For the SDK compilers, you need" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:169 +#: ../source/guides/supporting-windows-using-appveyor.rst:162 msgid "``DISTUTILS_USE_SDK``" msgstr "``DISTUTILS_USE_SDK``" -#: ../source/guides/supporting-windows-using-appveyor.rst:170 +#: ../source/guides/supporting-windows-using-appveyor.rst:163 msgid "``MSSdk``" msgstr "``MSSdk``" -#: ../source/guides/supporting-windows-using-appveyor.rst:171 +#: ../source/guides/supporting-windows-using-appveyor.rst:164 msgid "``INCLUDE``" msgstr "``INCLUDE``" -#: ../source/guides/supporting-windows-using-appveyor.rst:172 +#: ../source/guides/supporting-windows-using-appveyor.rst:165 msgid "``LIB``" msgstr "``LIB``" -#: ../source/guides/supporting-windows-using-appveyor.rst:174 +#: ../source/guides/supporting-windows-using-appveyor.rst:167 msgid "" "The ``passenv`` option can be set in your :file:`tox.ini`, or if you prefer " "to avoid adding Windows-specific settings to your general project files, it " @@ -9220,25 +9217,25 @@ msgid "" "``DISTUTILS_USE_SDK`` is set." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:180 +#: ../source/guides/supporting-windows-using-appveyor.rst:173 msgid "" "When used interactively, ``tox`` allows you to run your tests against " "multiple environments (often, this means multiple Python versions). This " -"feature is not as useful in a CI environment like Travis or Appveyor, where " -"all tests are run in isolated environments for each configuration. As a " -"result, projects often supply an argument ``-e ENVNAME`` to ``tox`` to " -"specify which environment to use (there are default environments for most " -"versions of Python)." +"feature is not as useful in a CI environment like Appveyor, where all tests " +"are run in isolated environments for each configuration. As a result, " +"projects often supply an argument ``-e ENVNAME`` to ``tox`` to specify which " +"environment to use (there are default environments for most versions of " +"Python)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:187 +#: ../source/guides/supporting-windows-using-appveyor.rst:180 msgid "" "However, this does *not* work well with a Windows CI system like Appveyor, " "where there are (for example) two installations of Python 3.4 (32-bit and 64-" "bit) available, but only one ``py34`` environment in ``tox``." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:191 +#: ../source/guides/supporting-windows-using-appveyor.rst:184 msgid "" "In order to run tests using ``tox``, therefore, projects should probably use " "the default ``py`` environment in ``tox``, which uses the Python interpreter " @@ -9246,7 +9243,7 @@ msgid "" "tests, they will be run with the configured interpreter." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:196 +#: ../source/guides/supporting-windows-using-appveyor.rst:189 msgid "" "In order to support running under the ``py`` environment, it is possible " "that projects with complex ``tox`` configurations might need to modify " @@ -9254,11 +9251,11 @@ msgid "" "document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:202 +#: ../source/guides/supporting-windows-using-appveyor.rst:195 msgid "Automatically uploading wheels" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:204 +#: ../source/guides/supporting-windows-using-appveyor.rst:197 msgid "" "It is possible to request Appveyor to automatically upload wheels. There is " "a ``deployment`` step available in :file:`appveyor.yml` that can be used to " @@ -9266,7 +9263,7 @@ msgid "" "instance. Documentation on how to do this is included in the Appveyor guides." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:209 +#: ../source/guides/supporting-windows-using-appveyor.rst:202 msgid "" "Alternatively, it would be possible to add a ``twine upload`` step to the " "build. The supplied :file:`appveyor.yml` does not do this, as it is not " @@ -9274,17 +9271,17 @@ msgid "" "some projects may wish to do this)." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:215 +#: ../source/guides/supporting-windows-using-appveyor.rst:208 msgid "External dependencies" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:217 +#: ../source/guides/supporting-windows-using-appveyor.rst:210 msgid "" "The supplied scripts will successfully build any distribution that does not " "rely on 3rd party external libraries for the build." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:220 +#: ../source/guides/supporting-windows-using-appveyor.rst:213 msgid "" "It is possible to add steps to the :file:`appveyor.yml` configuration " "(typically in the \"install\" section) to download and/or build external " @@ -9294,15 +9291,15 @@ msgid "" "this document." msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:229 +#: ../source/guides/supporting-windows-using-appveyor.rst:222 msgid "Support scripts" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:231 +#: ../source/guides/supporting-windows-using-appveyor.rst:224 msgid "For reference, the SDK setup support script is listed here:" msgstr "" -#: ../source/guides/supporting-windows-using-appveyor.rst:233 +#: ../source/guides/supporting-windows-using-appveyor.rst:226 msgid "``appveyor-sample/build.cmd``" msgstr "``appveyor-sample/build.cmd``" @@ -11499,17 +11496,34 @@ msgid "" msgstr "" #: ../source/key_projects.rst:833 -msgid "zest.releaser" +msgid "uv" msgstr "" #: ../source/key_projects.rst:835 msgid "" +"`Docs `__ | `GitHub `__ | `PyPI `__" +msgstr "" + +#: ../source/key_projects.rst:839 +msgid "" +"A Python package and project manager, written in Rust for high performance. " +"It supports creating and managing virtual environments, installing packages, " +"locking dependencies, and managing Python versions and projects." +msgstr "" + +#: ../source/key_projects.rst:846 +msgid "zest.releaser" +msgstr "" + +#: ../source/key_projects.rst:848 +msgid "" "`Docs `__ | `GitHub `__ | `PyPI `__" msgstr "" -#: ../source/key_projects.rst:839 +#: ../source/key_projects.rst:852 msgid "" "``zest.releaser`` is a Python package release tool providing an abstraction " "layer on top of :ref:`twine`. Python developers use ``zest.releaser`` to " @@ -11517,21 +11531,21 @@ msgid "" "releases in source control, and uploading new packages to PyPI." msgstr "" -#: ../source/key_projects.rst:846 +#: ../source/key_projects.rst:859 msgid "Standard Library Projects" msgstr "" -#: ../source/key_projects.rst:851 +#: ../source/key_projects.rst:864 msgid "ensurepip" msgstr "" -#: ../source/key_projects.rst:853 +#: ../source/key_projects.rst:866 msgid "" "`Docs `__ | `Issues " "`__" msgstr "" -#: ../source/key_projects.rst:856 +#: ../source/key_projects.rst:869 msgid "" "A package in the Python Standard Library that provides support for " "bootstrapping :ref:`pip` into an existing Python installation or virtual " @@ -11539,34 +11553,34 @@ msgid "" "will be used during the build of the Python distribution." msgstr "" -#: ../source/key_projects.rst:864 +#: ../source/key_projects.rst:877 msgid "http.server" msgstr "" -#: ../source/key_projects.rst:866 +#: ../source/key_projects.rst:879 msgid "" ":doc:`Docs ` | :gh:`Issues `" msgstr "" -#: ../source/key_projects.rst:869 +#: ../source/key_projects.rst:882 msgid "" "A package and command-line interface which can host a directory as a " "website, for example as a :term:`package index ` " "(see :ref:`Hosting your Own Simple Repository`)." msgstr "" -#: ../source/key_projects.rst:876 +#: ../source/key_projects.rst:889 msgid "venv" msgstr "" -#: ../source/key_projects.rst:878 +#: ../source/key_projects.rst:891 msgid "" "`Docs `__ | `Issues `__" msgstr "" -#: ../source/key_projects.rst:881 +#: ../source/key_projects.rst:894 msgid "" "A package in the Python Standard Library (starting with Python 3.3) for " "creating :term:`Virtual Environments `. For more " @@ -13588,10 +13602,11 @@ msgstr "" #: ../source/specifications/direct-url.rst:67 #: ../source/specifications/entry-points.rst:164 #: ../source/specifications/externally-managed-environments.rst:472 +#: ../source/specifications/glob-patterns.rst:118 #: ../source/specifications/inline-script-metadata.rst:213 #: ../source/specifications/name-normalization.rst:50 #: ../source/specifications/platform-compatibility-tags.rst:440 -#: ../source/specifications/pylock-toml.rst:826 +#: ../source/specifications/pylock-toml.rst:841 #: ../source/specifications/pyproject-toml.rst:632 #: ../source/specifications/recording-installed-packages.rst:278 #: ../source/specifications/simple-repository-api.rst:974 @@ -13677,7 +13692,7 @@ msgstr "" #: ../source/specifications/build-details/index.rst:28 #: ../source/specifications/build-details/v1.0.rst:16 #: ../source/specifications/inline-script-metadata.rst:100 -#: ../source/specifications/pylock-toml.rst:722 +#: ../source/specifications/pylock-toml.rst:737 msgid "Example" msgstr "" @@ -17743,8 +17758,8 @@ msgstr "" #: ../source/specifications/glob-patterns.rst:18 msgid "" -"Alphanumeric characters, underscores (``_``), hyphens (``-``) and dots " -"(``.``) MUST be matched verbatim." +"Alphanumeric characters, spaces (`` ``), underscores (``_``), hyphens (``-" +"``), and dots (``.``) MUST be matched verbatim." msgstr "" #: ../source/specifications/glob-patterns.rst:21 @@ -17826,6 +17841,14 @@ msgstr "" msgid "The code below is as a simple reference implementation:" msgstr "" +#: ../source/specifications/glob-patterns.rst:120 +msgid "January 2025: Initial version" +msgstr "" + +#: ../source/specifications/glob-patterns.rst:121 +msgid "March 2026: Treat spaces as a verbatim character" +msgstr "" + #: ../source/specifications/index.rst:4 msgid "PyPA specifications" msgstr "" @@ -19502,8 +19525,8 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:298 #: ../source/specifications/pylock-toml.rst:348 #: ../source/specifications/pylock-toml.rst:397 -#: ../source/specifications/pylock-toml.rst:494 -#: ../source/specifications/pylock-toml.rst:689 +#: ../source/specifications/pylock-toml.rst:505 +#: ../source/specifications/pylock-toml.rst:704 #, fuzzy #| msgid "Requires" msgid "**Required?**: yes" @@ -19553,18 +19576,18 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:334 #: ../source/specifications/pylock-toml.rst:362 #: ../source/specifications/pylock-toml.rst:435 -#: ../source/specifications/pylock-toml.rst:469 -#: ../source/specifications/pylock-toml.rst:482 -#: ../source/specifications/pylock-toml.rst:519 -#: ../source/specifications/pylock-toml.rst:674 -#: ../source/specifications/pylock-toml.rst:700 +#: ../source/specifications/pylock-toml.rst:480 +#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:530 +#: ../source/specifications/pylock-toml.rst:689 #: ../source/specifications/pylock-toml.rst:715 +#: ../source/specifications/pylock-toml.rst:730 msgid "**Required?**: no" msgstr "" #: ../source/specifications/pylock-toml.rst:85 -#: ../source/specifications/pylock-toml.rst:520 -#: ../source/specifications/pylock-toml.rst:538 +#: ../source/specifications/pylock-toml.rst:531 +#: ../source/specifications/pylock-toml.rst:549 msgid "**Inspiration**: uv_" msgstr "" @@ -19592,19 +19615,21 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:347 #: ../source/specifications/pylock-toml.rst:361 #: ../source/specifications/pylock-toml.rst:396 -#: ../source/specifications/pylock-toml.rst:518 -#: ../source/specifications/pylock-toml.rst:551 -#: ../source/specifications/pylock-toml.rst:620 -#: ../source/specifications/pylock-toml.rst:688 +#: ../source/specifications/pylock-toml.rst:452 +#: ../source/specifications/pylock-toml.rst:463 +#: ../source/specifications/pylock-toml.rst:529 +#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:703 msgid "**Type**: string" msgstr "" #: ../source/specifications/pylock-toml.rst:99 #: ../source/specifications/pylock-toml.rst:190 #: ../source/specifications/pylock-toml.rst:256 -#: ../source/specifications/pylock-toml.rst:555 -#: ../source/specifications/pylock-toml.rst:608 -#: ../source/specifications/pylock-toml.rst:624 +#: ../source/specifications/pylock-toml.rst:566 +#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:637 msgid "**Inspiration**: PDM_, Poetry_, uv_" msgstr "" @@ -19658,8 +19683,8 @@ msgid "``dependency-groups``" msgstr "" #: ../source/specifications/pylock-toml.rst:134 -#: ../source/specifications/pylock-toml.rst:701 #: ../source/specifications/pylock-toml.rst:716 +#: ../source/specifications/pylock-toml.rst:731 #, fuzzy #| msgid "Project name" msgid "**Inspiration**: :ref:`pyproject-tool-table`" @@ -19745,8 +19770,8 @@ msgstr "套件索引" #: ../source/specifications/pylock-toml.rst:188 #: ../source/specifications/pylock-toml.rst:254 -#: ../source/specifications/pylock-toml.rst:605 -#: ../source/specifications/pylock-toml.rst:673 +#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:688 msgid "**Type**: array of tables" msgstr "" @@ -19863,9 +19888,9 @@ msgstr "" #: ../source/specifications/pylock-toml.rst:274 #: ../source/specifications/pylock-toml.rst:376 #: ../source/specifications/pylock-toml.rst:434 -#: ../source/specifications/pylock-toml.rst:535 -#: ../source/specifications/pylock-toml.rst:699 +#: ../source/specifications/pylock-toml.rst:546 #: ../source/specifications/pylock-toml.rst:714 +#: ../source/specifications/pylock-toml.rst:729 msgid "**Type**: table" msgstr "" @@ -19955,11 +19980,13 @@ msgid "The path to the local directory of the source tree." msgstr "" #: ../source/specifications/pylock-toml.rst:323 +#: ../source/specifications/pylock-toml.rst:467 msgid "" "If a relative path is used it MUST be relative to the location of this file." msgstr "" #: ../source/specifications/pylock-toml.rst:324 +#: ../source/specifications/pylock-toml.rst:468 msgid "" "If the path is relative it MAY use POSIX-style path separators explicitly " "for portability." @@ -20104,7 +20131,7 @@ msgid "``packages.directory.subdirectory``" msgstr "" #: ../source/specifications/pylock-toml.rst:426 -#: ../source/specifications/pylock-toml.rst:510 +#: ../source/specifications/pylock-toml.rst:521 msgid "See :ref:`pylock-packages-vcs-subdirectory`." msgstr "" @@ -20113,6 +20140,8 @@ msgid "``[packages.archive]``" msgstr "" #: ../source/specifications/pylock-toml.rst:436 +#: ../source/specifications/pylock-toml.rst:454 +#: ../source/specifications/pylock-toml.rst:465 msgid "**Inspiration**: :ref:`direct-url-data-structure-archive`" msgstr "" @@ -20144,471 +20173,498 @@ msgstr "" msgid "``packages.archive.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:452 -msgid "See :ref:`pylock-packages-vcs-url`." +#: ../source/specifications/pylock-toml.rst:453 +msgid "**Required?**: if :ref:`pylock-packages-archive-path` is not specified" +msgstr "" + +#: ../source/specifications/pylock-toml.rst:455 +msgid "The URL_ to the archive." msgstr "" -#: ../source/specifications/pylock-toml.rst:458 +#: ../source/specifications/pylock-toml.rst:461 msgid "``packages.archive.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:460 -msgid "See :ref:`pylock-packages-vcs-path`." +#: ../source/specifications/pylock-toml.rst:464 +msgid "**Required?**: if :ref:`pylock-packages-archive-url` is not specified" msgstr "" #: ../source/specifications/pylock-toml.rst:466 +msgid "The path to the archive." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:470 +msgid "" +"If :ref:`pylock-packages-archive-url` is also specified, the filename as " +"specified by this key takes precedence." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:477 msgid "``packages.archive.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:468 +#: ../source/specifications/pylock-toml.rst:479 msgid "**Type**: integer" msgstr "" -#: ../source/specifications/pylock-toml.rst:470 +#: ../source/specifications/pylock-toml.rst:481 msgid "**Inspiration**: uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:471 +#: ../source/specifications/pylock-toml.rst:482 msgid "The size of the archive file." msgstr "" -#: ../source/specifications/pylock-toml.rst:472 +#: ../source/specifications/pylock-toml.rst:483 msgid "" "Tools SHOULD provide the file size when reasonably possible (e.g. the file " "size is available via the Content-Length_ header from a HEAD_ HTTP request)." msgstr "" -#: ../source/specifications/pylock-toml.rst:479 +#: ../source/specifications/pylock-toml.rst:490 msgid "``packages.archive.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:481 +#: ../source/specifications/pylock-toml.rst:492 msgid "**Type**: datetime" msgstr "" -#: ../source/specifications/pylock-toml.rst:483 +#: ../source/specifications/pylock-toml.rst:494 msgid "**Inspiration**: :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:484 +#: ../source/specifications/pylock-toml.rst:495 msgid "The time the file was uploaded." msgstr "" -#: ../source/specifications/pylock-toml.rst:485 +#: ../source/specifications/pylock-toml.rst:496 msgid "The date and time MUST be recorded in UTC." msgstr "" -#: ../source/specifications/pylock-toml.rst:491 +#: ../source/specifications/pylock-toml.rst:502 msgid "``[packages.archive.hashes]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:493 +#: ../source/specifications/pylock-toml.rst:504 msgid "**Type**: Table of strings" msgstr "" -#: ../source/specifications/pylock-toml.rst:495 +#: ../source/specifications/pylock-toml.rst:506 msgid "**Inspiration**: PDM_, Poetry_, uv_, :ref:`simple-repository-api`" msgstr "" -#: ../source/specifications/pylock-toml.rst:496 +#: ../source/specifications/pylock-toml.rst:507 msgid "" "A table listing known hash values of the file where the key is the hash " "algorithm and the value is the hash value." msgstr "" -#: ../source/specifications/pylock-toml.rst:498 +#: ../source/specifications/pylock-toml.rst:509 msgid "The table MUST contain at least one entry." msgstr "" -#: ../source/specifications/pylock-toml.rst:499 +#: ../source/specifications/pylock-toml.rst:510 msgid "Hash algorithm keys SHOULD be lowercase." msgstr "" -#: ../source/specifications/pylock-toml.rst:500 +#: ../source/specifications/pylock-toml.rst:511 msgid "" "At least one secure algorithm from :py:data:`hashlib.algorithms_guaranteed` " "SHOULD always be included (at time of writing, sha256 specifically is " "recommended." msgstr "" -#: ../source/specifications/pylock-toml.rst:508 +#: ../source/specifications/pylock-toml.rst:519 msgid "``packages.archive.subdirectory``" msgstr "" -#: ../source/specifications/pylock-toml.rst:516 +#: ../source/specifications/pylock-toml.rst:527 #, fuzzy #| msgid "Package Index" msgid "``packages.index``" msgstr "套件索引" -#: ../source/specifications/pylock-toml.rst:521 +#: ../source/specifications/pylock-toml.rst:532 msgid "" "The base URL for the package index from :ref:`simple-repository-api` where " "the sdist and/or wheels were found (e.g. ``https://pypi.org/simple/``)." msgstr "" -#: ../source/specifications/pylock-toml.rst:523 +#: ../source/specifications/pylock-toml.rst:534 msgid "" "When possible, this SHOULD be specified to assist with generating `software " "bill of materials`_ -- aka SBOMs -- and to assist in finding a file if a URL " "ceases to be valid." msgstr "" -#: ../source/specifications/pylock-toml.rst:526 +#: ../source/specifications/pylock-toml.rst:537 msgid "" "Tools MAY support installing from an index if the URL recorded for a " "specific file is no longer valid (e.g. returns a 404 HTTP error code)." msgstr "" -#: ../source/specifications/pylock-toml.rst:533 +#: ../source/specifications/pylock-toml.rst:544 msgid "``[packages.sdist]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:536 -#: ../source/specifications/pylock-toml.rst:606 +#: ../source/specifications/pylock-toml.rst:547 +#: ../source/specifications/pylock-toml.rst:619 msgid "" "**Required?**: no; mutually-exclusive with :ref:`pylock-packages-" "vcs`, :ref:`pylock-packages-directory`, and :ref:`pylock-packages-archive`" msgstr "" -#: ../source/specifications/pylock-toml.rst:539 +#: ../source/specifications/pylock-toml.rst:550 msgid "Details of a :ref:`source-distribution-format-sdist` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:541 +#: ../source/specifications/pylock-toml.rst:552 msgid "" "Tools MAY choose to not support sdist files, both from a locking and/or " "installation perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:543 +#: ../source/specifications/pylock-toml.rst:554 msgid "" "Tools SHOULD provide a way for users to opt in/out of using sdist files." msgstr "" -#: ../source/specifications/pylock-toml.rst:549 +#: ../source/specifications/pylock-toml.rst:560 msgid "``packages.sdist.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:552 +#: ../source/specifications/pylock-toml.rst:563 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "sdist-path`/ :ref:`pylock-packages-sdist-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:556 +#: ../source/specifications/pylock-toml.rst:567 msgid "The file name of the :ref:`source-distribution-format-sdist` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:562 +#: ../source/specifications/pylock-toml.rst:568 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-sdist-url` or :ref:`pylock-packages-sdist-path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:575 msgid "``packages.sdist.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:564 -#: ../source/specifications/pylock-toml.rst:633 +#: ../source/specifications/pylock-toml.rst:577 +#: ../source/specifications/pylock-toml.rst:648 msgid "See :ref:`pylock-packages-archive-upload-time`." msgstr "" -#: ../source/specifications/pylock-toml.rst:570 +#: ../source/specifications/pylock-toml.rst:583 msgid "``packages.sdist.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:572 -#: ../source/specifications/pylock-toml.rst:641 +#: ../source/specifications/pylock-toml.rst:585 +#: ../source/specifications/pylock-toml.rst:656 msgid "See :ref:`pylock-packages-archive-url`." msgstr "" -#: ../source/specifications/pylock-toml.rst:578 +#: ../source/specifications/pylock-toml.rst:591 msgid "``packages.sdist.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:580 -#: ../source/specifications/pylock-toml.rst:649 +#: ../source/specifications/pylock-toml.rst:593 +#: ../source/specifications/pylock-toml.rst:664 msgid "See :ref:`pylock-packages-archive-path`." msgstr "" -#: ../source/specifications/pylock-toml.rst:586 +#: ../source/specifications/pylock-toml.rst:599 msgid "``packages.sdist.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:588 -#: ../source/specifications/pylock-toml.rst:657 +#: ../source/specifications/pylock-toml.rst:601 +#: ../source/specifications/pylock-toml.rst:672 msgid "See :ref:`pylock-packages-archive-size`." msgstr "" -#: ../source/specifications/pylock-toml.rst:594 +#: ../source/specifications/pylock-toml.rst:607 msgid "``packages.sdist.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:596 -#: ../source/specifications/pylock-toml.rst:665 +#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:680 msgid "See :ref:`pylock-packages-archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:603 +#: ../source/specifications/pylock-toml.rst:616 msgid "``[[packages.wheels]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:609 +#: ../source/specifications/pylock-toml.rst:622 msgid "" "For recording the wheel files as specified by :ref:`binary-distribution-" "format` for the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:611 +#: ../source/specifications/pylock-toml.rst:624 msgid "" "Tools MUST support wheel files, both from a locking and installation " "perspective." msgstr "" -#: ../source/specifications/pylock-toml.rst:618 +#: ../source/specifications/pylock-toml.rst:631 msgid "``packages.wheels.name``" msgstr "" -#: ../source/specifications/pylock-toml.rst:621 +#: ../source/specifications/pylock-toml.rst:634 msgid "" "**Required?**: no, not when the last component of :ref:`pylock-packages-" "wheels-path`/ :ref:`pylock-packages-wheels-url` would be the same value" msgstr "" -#: ../source/specifications/pylock-toml.rst:625 +#: ../source/specifications/pylock-toml.rst:638 msgid "The file name of the :ref:`binary-distribution-format` file." msgstr "" -#: ../source/specifications/pylock-toml.rst:631 +#: ../source/specifications/pylock-toml.rst:639 +msgid "" +"If specified, this key's value takes precedence over the file name found in " +"either :ref:`pylock-packages-wheels-url` or :ref:`pylock-packages-wheels-" +"path`." +msgstr "" + +#: ../source/specifications/pylock-toml.rst:646 msgid "``packages.wheels.upload-time``" msgstr "" -#: ../source/specifications/pylock-toml.rst:639 +#: ../source/specifications/pylock-toml.rst:654 msgid "``packages.wheels.url``" msgstr "" -#: ../source/specifications/pylock-toml.rst:647 +#: ../source/specifications/pylock-toml.rst:662 msgid "``packages.wheels.path``" msgstr "" -#: ../source/specifications/pylock-toml.rst:655 +#: ../source/specifications/pylock-toml.rst:670 msgid "``packages.wheels.size``" msgstr "" -#: ../source/specifications/pylock-toml.rst:663 +#: ../source/specifications/pylock-toml.rst:678 msgid "``packages.wheels.hashes``" msgstr "" -#: ../source/specifications/pylock-toml.rst:671 +#: ../source/specifications/pylock-toml.rst:686 msgid "``[[packages.attestation-identities]]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:675 #: ../source/specifications/pylock-toml.rst:690 +#: ../source/specifications/pylock-toml.rst:705 #, fuzzy #| msgid "Project name" msgid "**Inspiration**: :ref:`provenance-object`" msgstr "專案名稱" -#: ../source/specifications/pylock-toml.rst:676 +#: ../source/specifications/pylock-toml.rst:691 msgid "" "A recording of the attestations for **any** file recorded for this package." msgstr "" -#: ../source/specifications/pylock-toml.rst:677 +#: ../source/specifications/pylock-toml.rst:692 msgid "If available, tools SHOULD include the attestation identities found." msgstr "" -#: ../source/specifications/pylock-toml.rst:678 +#: ../source/specifications/pylock-toml.rst:693 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`." msgstr "" -#: ../source/specifications/pylock-toml.rst:686 +#: ../source/specifications/pylock-toml.rst:701 msgid "``packages.attestation-identities.kind``" msgstr "" -#: ../source/specifications/pylock-toml.rst:691 +#: ../source/specifications/pylock-toml.rst:706 msgid "The unique identity of the Trusted Publisher." msgstr "" -#: ../source/specifications/pylock-toml.rst:697 +#: ../source/specifications/pylock-toml.rst:712 msgid "``[packages.tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:702 +#: ../source/specifications/pylock-toml.rst:717 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 lock file level (which is also available via :ref:`pylock-tool`)." msgstr "" -#: ../source/specifications/pylock-toml.rst:705 +#: ../source/specifications/pylock-toml.rst:720 msgid "" "Data recorded in the table MUST be disposable (i.e. it MUST NOT affect " "installation)." msgstr "" -#: ../source/specifications/pylock-toml.rst:712 +#: ../source/specifications/pylock-toml.rst:727 msgid "``[tool]``" msgstr "" -#: ../source/specifications/pylock-toml.rst:717 +#: ../source/specifications/pylock-toml.rst:732 msgid "See :ref:`pylock-packages-tool`." msgstr "" -#: ../source/specifications/pylock-toml.rst:731 +#: ../source/specifications/pylock-toml.rst:746 msgid "" "The following outlines the steps to be taken to install from a lock file " "(while the requirements are prescriptive, the general steps and order are a " "suggestion):" msgstr "" -#: ../source/specifications/pylock-toml.rst:735 +#: ../source/specifications/pylock-toml.rst:750 msgid "" "Gather the extras and dependency groups to install and set ``extras`` and " "``dependency_groups`` for marker evaluation, respectively." msgstr "" -#: ../source/specifications/pylock-toml.rst:738 +#: ../source/specifications/pylock-toml.rst:753 msgid "``extras`` SHOULD be set to the empty set by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:739 +#: ../source/specifications/pylock-toml.rst:754 msgid "" "``dependency_groups`` SHOULD be the set created from :ref:`pylock-default-" "groups` by default." msgstr "" -#: ../source/specifications/pylock-toml.rst:742 +#: ../source/specifications/pylock-toml.rst:757 msgid "" "Check if the metadata version specified by :ref:`pylock-lock-version` is " "supported; an error or warning MUST be raised as appropriate." msgstr "" -#: ../source/specifications/pylock-toml.rst:744 +#: ../source/specifications/pylock-toml.rst:759 msgid "" "If :ref:`pylock-requires-python` is specified, check that the environment " "being installed for meets the requirement; an error MUST be raised if it is " "not met." msgstr "" -#: ../source/specifications/pylock-toml.rst:747 +#: ../source/specifications/pylock-toml.rst:762 msgid "" "If :ref:`pylock-environments` is specified, check that at least one of the " "environment marker expressions is satisfied; an error MUST be raised if no " "expression is satisfied." msgstr "" -#: ../source/specifications/pylock-toml.rst:750 +#: ../source/specifications/pylock-toml.rst:765 msgid "For each package listed in :ref:`pylock-packages`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:752 +#: ../source/specifications/pylock-toml.rst:767 msgid "" "If :ref:`pylock-packages-marker` is specified, check if it is satisfied; if " "it isn't, skip to the next package." msgstr "" -#: ../source/specifications/pylock-toml.rst:754 +#: ../source/specifications/pylock-toml.rst:769 msgid "" "If :ref:`pylock-packages-requires-python` is specified, check if it is " "satisfied; an error MUST be raised if it isn't." msgstr "" -#: ../source/specifications/pylock-toml.rst:756 +#: ../source/specifications/pylock-toml.rst:771 msgid "" "Check that no other conflicting instance of the package has been slated to " "be installed; an error about the ambiguity MUST be raised otherwise." msgstr "" -#: ../source/specifications/pylock-toml.rst:758 +#: ../source/specifications/pylock-toml.rst:773 msgid "" "Check that the source of the package is specified appropriately (i.e. there " "are no conflicting sources in the package entry); an error MUST be raised if " "any issues are found." msgstr "" -#: ../source/specifications/pylock-toml.rst:761 +#: ../source/specifications/pylock-toml.rst:776 msgid "Add the package to the set of packages to install." msgstr "" -#: ../source/specifications/pylock-toml.rst:763 +#: ../source/specifications/pylock-toml.rst:778 msgid "For each package to be installed:" msgstr "" -#: ../source/specifications/pylock-toml.rst:765 +#: ../source/specifications/pylock-toml.rst:780 msgid "If :ref:`pylock-packages-vcs` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:767 +#: ../source/specifications/pylock-toml.rst:782 msgid "" "Clone the repository to the commit ID specified in :ref:`pylock-packages-vcs-" "commit-id`." msgstr "" -#: ../source/specifications/pylock-toml.rst:769 +#: ../source/specifications/pylock-toml.rst:784 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-vcs-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:771 -#: ../source/specifications/pylock-toml.rst:777 #: ../source/specifications/pylock-toml.rst:786 -#: ../source/specifications/pylock-toml.rst:806 +#: ../source/specifications/pylock-toml.rst:792 +#: ../source/specifications/pylock-toml.rst:801 #: ../source/specifications/pylock-toml.rst:821 +#: ../source/specifications/pylock-toml.rst:836 msgid ":ref:`Install `." msgstr "" -#: ../source/specifications/pylock-toml.rst:773 +#: ../source/specifications/pylock-toml.rst:788 msgid "Else if :ref:`pylock-packages-directory` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:775 +#: ../source/specifications/pylock-toml.rst:790 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-directory-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:779 +#: ../source/specifications/pylock-toml.rst:794 msgid "Else if :ref:`pylock-packages-archive` is set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:781 -#: ../source/specifications/pylock-toml.rst:811 +#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:826 msgid "Get the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:782 +#: ../source/specifications/pylock-toml.rst:797 msgid "" "Validate using :ref:`pylock-packages-archive-size` and :ref:`pylock-packages-" "archive-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:784 +#: ../source/specifications/pylock-toml.rst:799 msgid "" ":ref:`Build ` the package, " "respecting :ref:`pylock-packages-archive-subdirectory`." msgstr "" -#: ../source/specifications/pylock-toml.rst:788 +#: ../source/specifications/pylock-toml.rst:803 msgid "Else if there are entries for :ref:`pylock-packages-wheels`:" msgstr "" -#: ../source/specifications/pylock-toml.rst:790 +#: ../source/specifications/pylock-toml.rst:805 msgid "" "Look for the appropriate wheel file based on :ref:`pylock-packages-wheels-" "name`; if one is not found then move on to :ref:`pylock-packages-sdist` or " "an error MUST be raised about a lack of source for the project." msgstr "" -#: ../source/specifications/pylock-toml.rst:794 +#: ../source/specifications/pylock-toml.rst:809 msgid "Get the file:" msgstr "" -#: ../source/specifications/pylock-toml.rst:796 +#: ../source/specifications/pylock-toml.rst:811 msgid "If :ref:`pylock-packages-wheels-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:797 +#: ../source/specifications/pylock-toml.rst:812 msgid "" "Else if :ref:`pylock-packages-wheels-url` is set, try to use it; optionally " "tools MAY use :ref:`pylock-packages-index` or some tool-specific mechanism " @@ -20617,43 +20673,48 @@ msgid "" "determined in an offline fashion for reproducibility)." msgstr "" -#: ../source/specifications/pylock-toml.rst:804 +#: ../source/specifications/pylock-toml.rst:819 msgid "" "Validate using :ref:`pylock-packages-wheels-size` and :ref:`pylock-packages-" "wheels-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:808 +#: ../source/specifications/pylock-toml.rst:823 msgid "" "Else if no :ref:`pylock-packages-wheels` file is found or :ref:`pylock-" "packages-sdist` is solely set:" msgstr "" -#: ../source/specifications/pylock-toml.rst:813 +#: ../source/specifications/pylock-toml.rst:828 msgid "If :ref:`pylock-packages-sdist-path` is set, use it." msgstr "" -#: ../source/specifications/pylock-toml.rst:814 +#: ../source/specifications/pylock-toml.rst:829 msgid "" "Else if :ref:`pylock-packages-sdist-url` is set, try to use it; tools MAY " "use :ref:`pylock-packages-index` or some tool-specific mechanism to download " "the file." msgstr "" -#: ../source/specifications/pylock-toml.rst:818 +#: ../source/specifications/pylock-toml.rst:833 msgid "" "Validate using :ref:`pylock-packages-sdist-size` and :ref:`pylock-packages-" "sdist-hashes`." msgstr "" -#: ../source/specifications/pylock-toml.rst:820 +#: ../source/specifications/pylock-toml.rst:835 msgid ":ref:`Build ` the package." msgstr "" -#: ../source/specifications/pylock-toml.rst:828 +#: ../source/specifications/pylock-toml.rst:843 msgid "April 2025: Initial version, approved via :pep:`751`." msgstr "" +#: ../source/specifications/pylock-toml.rst:844 +msgid "" +"March 2026: Clarify file name precedence for archives, sdists, and wheels." +msgstr "" + #: ../source/specifications/pypirc.rst:6 msgid "The :file:`.pypirc` file" msgstr "" @@ -25880,7 +25941,7 @@ msgstr "" #: ../source/tutorials/installing-packages.rst:139 msgid "" "Run ``python get-pip.py``. [2]_ This will install or upgrade pip. " -"Additionally, it will install :ref:`setuptools` and :ref:`wheel` if they're " +"Additionally, it may install :ref:`setuptools` and :ref:`wheel` if they're " "not installed already." msgstr "" @@ -25894,39 +25955,38 @@ msgid "" msgstr "" #: ../source/tutorials/installing-packages.rst:154 -msgid "Ensure pip, setuptools, and wheel are up to date" +msgid "Ensure pip is up to date" msgstr "" #: ../source/tutorials/installing-packages.rst:156 msgid "" -"While ``pip`` alone is sufficient to install from pre-built binary archives, " -"up to date copies of the ``setuptools`` and ``wheel`` projects are useful to " -"ensure you can also install from source archives:" +"Make sure you have the latest features and fixes, and support for the latest " +"Python packaging specifications." msgstr "" -#: ../source/tutorials/installing-packages.rst:173 +#: ../source/tutorials/installing-packages.rst:172 msgid "Optionally, create a virtual environment" msgstr "" -#: ../source/tutorials/installing-packages.rst:175 +#: ../source/tutorials/installing-packages.rst:174 msgid "" "See :ref:`section below ` for " "details, but here's the basic :doc:`venv ` [3]_ command " "to use on a typical Linux system:" msgstr "" -#: ../source/tutorials/installing-packages.rst:192 +#: ../source/tutorials/installing-packages.rst:191 msgid "" "This will create a new virtual environment in the ``tutorial_env`` " "subdirectory, and configure the current shell to use it as the default " "``python`` environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:199 +#: ../source/tutorials/installing-packages.rst:198 msgid "Creating Virtual Environments" msgstr "" -#: ../source/tutorials/installing-packages.rst:201 +#: ../source/tutorials/installing-packages.rst:200 msgid "" "Python \"Virtual Environments\" allow Python :term:`packages ` to be installed in an isolated location for a particular " @@ -25935,7 +25995,7 @@ msgid "" "alone-command-line-tools`." msgstr "" -#: ../source/tutorials/installing-packages.rst:207 +#: ../source/tutorials/installing-packages.rst:206 msgid "" "Imagine you have an application that needs version 1 of LibFoo, but another " "application requires version 2. How can you use both these applications? If " @@ -25944,33 +26004,33 @@ msgid "" "where you unintentionally upgrade an application that shouldn’t be upgraded." msgstr "" -#: ../source/tutorials/installing-packages.rst:213 +#: ../source/tutorials/installing-packages.rst:212 msgid "" "Or more generally, what if you want to install an application and leave it " "be? If an application works, any change in its libraries or the versions of " "those libraries can break the application." msgstr "" -#: ../source/tutorials/installing-packages.rst:217 +#: ../source/tutorials/installing-packages.rst:216 msgid "" "Also, what if you can’t install :term:`packages ` into " "the global site-packages directory? For instance, on a shared host." msgstr "" -#: ../source/tutorials/installing-packages.rst:220 +#: ../source/tutorials/installing-packages.rst:219 msgid "" "In all these cases, virtual environments can help you. They have their own " "installation directories and they don’t share libraries with other virtual " "environments." msgstr "" -#: ../source/tutorials/installing-packages.rst:224 +#: ../source/tutorials/installing-packages.rst:223 msgid "" "Currently, there are two common tools for creating Python virtual " "environments:" msgstr "" -#: ../source/tutorials/installing-packages.rst:226 +#: ../source/tutorials/installing-packages.rst:225 msgid "" ":doc:`venv ` is available by default in Python 3.3 and " "later, and installs :ref:`pip` into created virtual environments in Python " @@ -25978,7 +26038,7 @@ msgid "" "installed :ref:`setuptools`)." msgstr "" -#: ../source/tutorials/installing-packages.rst:229 +#: ../source/tutorials/installing-packages.rst:228 msgid "" ":ref:`virtualenv` needs to be installed separately, but supports Python 2.7+ " "and Python 3.3+, and :ref:`pip`, :ref:`setuptools` and :ref:`wheel` are " @@ -25987,39 +26047,39 @@ msgid "" "(and ``virtualenv`` follows this behavior)." msgstr "" -#: ../source/tutorials/installing-packages.rst:234 +#: ../source/tutorials/installing-packages.rst:233 msgid "The basic usage is like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:236 +#: ../source/tutorials/installing-packages.rst:235 msgid "Using :doc:`venv `:" msgstr "" -#: ../source/tutorials/installing-packages.rst:252 +#: ../source/tutorials/installing-packages.rst:251 msgid "Using :ref:`virtualenv`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:268 +#: ../source/tutorials/installing-packages.rst:267 msgid "" "For more information, see the :doc:`venv ` docs or " "the :doc:`virtualenv ` docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:271 +#: ../source/tutorials/installing-packages.rst:270 msgid "" "The use of :command:`source` under Unix shells ensures that the virtual " "environment's variables are set within the current shell, and not in a " "subprocess (which then disappears, having no useful effect)." msgstr "" -#: ../source/tutorials/installing-packages.rst:276 +#: ../source/tutorials/installing-packages.rst:275 msgid "" "In both of the above cases, Windows users should *not* use " "the :command:`source` command, but should rather run the :command:`activate` " "script directly from the command shell like so:" msgstr "" -#: ../source/tutorials/installing-packages.rst:286 +#: ../source/tutorials/installing-packages.rst:285 msgid "" "Managing multiple virtual environments directly can become tedious, so " "the :ref:`dependency management tutorial ` introduces " @@ -26027,22 +26087,22 @@ msgid "" "virtual environment for each project and application that you work on." msgstr "" -#: ../source/tutorials/installing-packages.rst:293 +#: ../source/tutorials/installing-packages.rst:292 msgid "Use pip for Installing" msgstr "" -#: ../source/tutorials/installing-packages.rst:295 +#: ../source/tutorials/installing-packages.rst:294 msgid "" ":ref:`pip` is the recommended installer. Below, we'll cover the most common " "usage scenarios. For more detail, see the :doc:`pip docs `, which " "includes a complete :doc:`Reference Guide `." msgstr "" -#: ../source/tutorials/installing-packages.rst:301 +#: ../source/tutorials/installing-packages.rst:300 msgid "Installing from PyPI" msgstr "" -#: ../source/tutorials/installing-packages.rst:303 +#: ../source/tutorials/installing-packages.rst:302 msgid "" "The most common usage of :ref:`pip` is to install from the :term:`Python " "Package Index ` using a :term:`requirement " @@ -26053,35 +26113,35 @@ msgid "" "specification `. Below are some examples." msgstr "" -#: ../source/tutorials/installing-packages.rst:311 +#: ../source/tutorials/installing-packages.rst:310 msgid "To install the latest version of \"SomeProject\":" msgstr "" -#: ../source/tutorials/installing-packages.rst:325 +#: ../source/tutorials/installing-packages.rst:324 msgid "To install a specific version:" msgstr "" -#: ../source/tutorials/installing-packages.rst:339 +#: ../source/tutorials/installing-packages.rst:338 msgid "To install greater than or equal to one version and less than another:" msgstr "" -#: ../source/tutorials/installing-packages.rst:354 +#: ../source/tutorials/installing-packages.rst:353 msgid "" "To install a version that's :ref:`compatible ` with a certain version: [4]_" msgstr "" -#: ../source/tutorials/installing-packages.rst:369 +#: ../source/tutorials/installing-packages.rst:368 msgid "" "In this case, this means to install any version \"==1.4.*\" version that's " "also \">=1.4.2\"." msgstr "" -#: ../source/tutorials/installing-packages.rst:374 +#: ../source/tutorials/installing-packages.rst:373 msgid "Source Distributions vs Wheels" msgstr "" -#: ../source/tutorials/installing-packages.rst:376 +#: ../source/tutorials/installing-packages.rst:375 msgid "" ":ref:`pip` can install from either :term:`Source Distributions (sdist) " "` or :term:`Wheels `, but if both " @@ -26090,7 +26150,7 @@ msgid "" "` option." msgstr "" -#: ../source/tutorials/installing-packages.rst:382 +#: ../source/tutorials/installing-packages.rst:381 msgid "" ":term:`Wheels ` are a pre-built :term:`distribution ` format that provides faster installation compared to :term:`Source " @@ -26098,40 +26158,40 @@ msgid "" "a project contains compiled extensions." msgstr "" -#: ../source/tutorials/installing-packages.rst:387 +#: ../source/tutorials/installing-packages.rst:386 msgid "" "If :ref:`pip` does not find a wheel to install, it will locally build a " "wheel and cache it for future installs, instead of rebuilding the source " "distribution in the future." msgstr "" -#: ../source/tutorials/installing-packages.rst:395 +#: ../source/tutorials/installing-packages.rst:394 msgid "Upgrade an already installed ``SomeProject`` to the latest from PyPI." msgstr "" -#: ../source/tutorials/installing-packages.rst:412 +#: ../source/tutorials/installing-packages.rst:411 msgid "Installing to the User Site" msgstr "" -#: ../source/tutorials/installing-packages.rst:414 +#: ../source/tutorials/installing-packages.rst:413 msgid "" "To install :term:`packages ` that are isolated to the " "current user, use the ``--user`` flag:" msgstr "" -#: ../source/tutorials/installing-packages.rst:429 +#: ../source/tutorials/installing-packages.rst:428 msgid "" "For more information see the `User Installs `_ section from the pip docs." msgstr "" -#: ../source/tutorials/installing-packages.rst:433 +#: ../source/tutorials/installing-packages.rst:432 msgid "" "Note that the ``--user`` flag has no effect when inside a virtual " "environment - all installation commands will affect the virtual environment." msgstr "" -#: ../source/tutorials/installing-packages.rst:436 +#: ../source/tutorials/installing-packages.rst:435 msgid "" "If ``SomeProject`` defines any command-line scripts or console entry points, " "``--user`` will cause them to be installed inside the `user base`_'s binary " @@ -26142,7 +26202,7 @@ msgid "" "add the directory to your :envvar:`PATH`:" msgstr "" -#: ../source/tutorials/installing-packages.rst:444 +#: ../source/tutorials/installing-packages.rst:443 msgid "" "On Linux and macOS you can find the user base binary directory by running " "``python -m site --user-base`` and adding ``bin`` to the end. For example, " @@ -26151,7 +26211,7 @@ msgid "" "``PATH``. You can set your ``PATH`` permanently by `modifying ~/.profile`_." msgstr "" -#: ../source/tutorials/installing-packages.rst:450 +#: ../source/tutorials/installing-packages.rst:449 msgid "" "On Windows you can find the user base binary directory by running ``py -m " "site --user-site`` and replacing ``site-packages`` with ``Scripts``. For " @@ -26163,70 +26223,70 @@ msgid "" "for the ``PATH`` changes to take effect." msgstr "" -#: ../source/tutorials/installing-packages.rst:466 +#: ../source/tutorials/installing-packages.rst:465 msgid "" "Install a list of requirements specified in a :ref:`Requirements File " "`." msgstr "" -#: ../source/tutorials/installing-packages.rst:482 +#: ../source/tutorials/installing-packages.rst:481 msgid "Installing from VCS" msgstr "" -#: ../source/tutorials/installing-packages.rst:484 +#: ../source/tutorials/installing-packages.rst:483 msgid "" "Install a project from VCS in \"editable\" mode. For a full breakdown of " "the syntax, see pip's section on :ref:`VCS Support `." msgstr "" -#: ../source/tutorials/installing-packages.rst:506 +#: ../source/tutorials/installing-packages.rst:505 msgid "Installing from other Indexes" msgstr "" -#: ../source/tutorials/installing-packages.rst:508 +#: ../source/tutorials/installing-packages.rst:507 msgid "Install from an alternate index" msgstr "" -#: ../source/tutorials/installing-packages.rst:522 +#: ../source/tutorials/installing-packages.rst:521 msgid "" "Search an additional index during install, in addition to :term:`PyPI " "`" msgstr "" -#: ../source/tutorials/installing-packages.rst:538 +#: ../source/tutorials/installing-packages.rst:537 msgid "Installing from a local src tree" msgstr "" -#: ../source/tutorials/installing-packages.rst:541 +#: ../source/tutorials/installing-packages.rst:540 msgid "" "Installing from local src in :doc:`Development Mode `, i.e. in such a way that the project appears to be " "installed, but yet is still editable from the src tree." msgstr "" -#: ../source/tutorials/installing-packages.rst:558 +#: ../source/tutorials/installing-packages.rst:557 msgid "You can also install normally from src" msgstr "" -#: ../source/tutorials/installing-packages.rst:573 +#: ../source/tutorials/installing-packages.rst:572 msgid "Installing from local archives" msgstr "" -#: ../source/tutorials/installing-packages.rst:575 +#: ../source/tutorials/installing-packages.rst:574 msgid "Install a particular source archive file." msgstr "" -#: ../source/tutorials/installing-packages.rst:589 +#: ../source/tutorials/installing-packages.rst:588 msgid "" "Install from a local directory containing archives (and don't " "check :term:`PyPI `)" msgstr "" -#: ../source/tutorials/installing-packages.rst:609 +#: ../source/tutorials/installing-packages.rst:608 msgid "Installing from other sources" msgstr "" -#: ../source/tutorials/installing-packages.rst:611 +#: ../source/tutorials/installing-packages.rst:610 msgid "" "To install from other data sources (for example Amazon S3 storage) you can " "create a helper application that presents the data in a format compliant " @@ -26234,22 +26294,22 @@ msgid "" "``--extra-index-url`` flag to direct pip to use that index." msgstr "" -#: ../source/tutorials/installing-packages.rst:623 +#: ../source/tutorials/installing-packages.rst:622 msgid "Installing Prereleases" msgstr "" -#: ../source/tutorials/installing-packages.rst:625 +#: ../source/tutorials/installing-packages.rst:624 msgid "" "Find pre-release and development versions, in addition to stable versions. " "By default, pip only finds stable versions." msgstr "" -#: ../source/tutorials/installing-packages.rst:641 +#: ../source/tutorials/installing-packages.rst:640 #, fuzzy msgid "Installing \"Extras\"" msgstr "安裝軟體套件" -#: ../source/tutorials/installing-packages.rst:643 +#: ../source/tutorials/installing-packages.rst:642 msgid "" "Extras are optional \"variants\" of a package, which may include additional " "dependencies, and thereby enable additional functionality from the package. " @@ -26257,21 +26317,21 @@ msgid "" "you can include it in the pip installation command:" msgstr "" -#: ../source/tutorials/installing-packages.rst:666 +#: ../source/tutorials/installing-packages.rst:665 msgid "" "\"Secure\" in this context means using a modern browser or a tool " "like :command:`curl` that verifies SSL certificates when downloading from " "https URLs." msgstr "" -#: ../source/tutorials/installing-packages.rst:675 +#: ../source/tutorials/installing-packages.rst:674 msgid "" "Beginning with Python 3.4, ``venv`` (a stdlib alternative " "to :ref:`virtualenv`) will create virtualenv environments with ``pip`` pre-" "installed, thereby making it an equal alternative to :ref:`virtualenv`." msgstr "" -#: ../source/tutorials/installing-packages.rst:680 +#: ../source/tutorials/installing-packages.rst:679 msgid "" "The compatible release specifier was accepted in :pep:`440` and support was " "released in :ref:`setuptools` v8.0 and :ref:`pip` v6.0"