Note
The best time to perform these changes is prior to adding the first
@@ -146,7 +146,7 @@ in app-portage/gpyu
-Porting initial packages
+Porting initial packages
The initial porting is quite hard due to a number of circular
dependencies. To ease the process, it is recommended to temporarily
limit testing of the packages that feature many additional test
@@ -233,9 +233,9 @@ on reenabling tests in the packages where they were skipped.
-Removing a Python implementation
+Removing a Python implementation
-Preparation
+Preparation
The obsolescence of the implementation needs to be announced on mailing
lists, along with request to proceed with porting packages to a newer
implementation. The package lists found on QA reports can be used
@@ -246,7 +246,7 @@ to the old implementation and used only conditionally to it) need to
be masked for removal.
-Eclass and profile changes
+Eclass and profile changes
Rather than being removed entirely, old targets are implicitly disabled
via the eclass. This ensures that old entries in PYTHON_COMPAT
do not trigger errors.
@@ -276,7 +276,7 @@ in app-portage/gpyu
-Python build system bootstrap
+Python build system bootstrap
Python build systems are often facing the bootstrap problem — that is,
the build system itself has some dependencies, while these dependencies
require the same build system to build. The common upstream way
@@ -391,7 +391,7 @@ dependencies will be added or vendored into flit_core.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/interpreter.html b/guide/interpreter.html
index ef2cc99..07df833 100644
--- a/guide/interpreter.html
+++ b/guide/interpreter.html
@@ -1,16 +1,16 @@
-
+
Python interpreters — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,9 +32,9 @@
-Python interpreters
+Python interpreters
-Versions of Python
+Versions of Python
By a version of Python we usually mean the variant of Python language
and standard library interface as used by a specific version
of CPython , the reference implementation of Python.
@@ -64,7 +64,7 @@ window of 3-4 versions of Python 3. They are provided as slots
of dev-lang/python
.
-Life cycle of a Python implementation
+Life cycle of a Python implementation
Every Python implementation (understood as a potential target) in Gentoo
follows roughly the following life cycle:
@@ -124,7 +124,7 @@ vulnerabilities or build failures).
-Stability guarantees of Python implementations
+Stability guarantees of Python implementations
The language and standard library API of every Python version is
expected to be stable since the first beta release of the matching
CPython version. However, historically there were cases of breaking
@@ -152,7 +152,7 @@ Gentoo switched to the next PyPy branch (i.e. the one corresponding
to the next Python language version).
-Alternative Python implementations
+Alternative Python implementations
CPython is the reference and most commonly used Python implementation.
However, there are other interpreters that aim to maintain reasonable
compatibility with it.
@@ -189,7 +189,7 @@ features and standard library modules while preserving backwards
compatibility with existing code. It is not packaged in Gentoo.
-Support for multiple implementations
+Support for multiple implementations
The support for simultaneously using multiple Python implementations
is implemented primarily through USE flags. The packages installing
or using Python files define either PYTHON_TARGETS
@@ -213,7 +213,7 @@ nor python3 <
also be modified to call specific version of Python directly.
-Backports
+Backports
A common method of improving compatibility with older versions of Python
is to backport new standard library modules or features. Packages doing
that are generally called backports .
@@ -360,7 +360,7 @@ syntax than native asyncio code.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/migration.html b/guide/migration.html
index cb4bb3b..3529cb6 100644
--- a/guide/migration.html
+++ b/guide/migration.html
@@ -1,16 +1,16 @@
-
+
Migration guides — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,9 +32,9 @@
-Migration guides
+Migration guides
-Migrating from old PYTHON_USEDEP syntax in python-single-r1
+Migrating from old PYTHON_USEDEP syntax in python-single-r1
Prior to February 2020, python-single-r1
used to provide a single
PYTHON_USEDEP
variable alike the two other eclasses. However,
getting it to work correctly both on single-impl and multi-impl packages
@@ -65,7 +65,7 @@ you probably got single-impl vs. multi-impl wrong.
method.
-Migrating from EAPI 7 to EAPI 8
+Migrating from EAPI 7 to EAPI 8
EAPI 8 has banned everything that’s been deprecated in EAPI 7, as well
as some other obsolete stuff. The following table lists all banned
things along with their suggested replacements.
@@ -190,7 +190,7 @@ of Python 2 support, it always evaluated to true.
All the aforementioned replacements are available in all EAPIs.
-Migrating to PEP 517 builds
+Migrating to PEP 517 builds
As of January 2022, the distutils-r1
can use PEP 517 build backends
instead of calling setuptools directly. The new mode is particularly
useful for:
@@ -310,7 +310,7 @@ necessary and tests should work out of the box.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/multi.html b/guide/multi.html
index 4ffe527..43a91af 100644
--- a/guide/multi.html
+++ b/guide/multi.html
@@ -1,16 +1,16 @@
-
+
python-r1 — multi-impl packages — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,7 +32,7 @@
-python-r1 — multi-impl packages
+python-r1 — multi-impl packages
The python-r1
eclass is used to install multi-impl packages.
It is considered an expert eclass — when possible, you should prefer
using python-single-r1
instead. For packages using distutils
@@ -40,7 +40,7 @@ or a similar Python build system,
Eclass reference: python-r1.eclass(5)
-Manual install
+Manual install
The simplest case of multi-impl package is a package without a specific
build system. The modules need to be installed manually here,
and python_foreach_impl
function is used to repeat the install step
@@ -108,7 +108,7 @@ need to be executed:
-Dependencies
+Dependencies
When depending on other Python packages, USE dependencies need to be
declared in order to ensure that the dependencies would be built against
all the Python implementations enabled for the package. This is easily
@@ -122,7 +122,7 @@ to the dependencies:
-Conditional Python use
+Conditional Python use
When the package installs Python components conditionally to a USE flag,
the respective USE conditional needs to be consistently used in metadata
variables and in python_foreach_impl
calls.
@@ -307,7 +307,7 @@ rules for installing Python files as they are suitable only for
single-impl installs.
-Additional build-time Python use
+Additional build-time Python use
Some packages additionally require Python at build time, independently
of Python components installed (i.e. outside python_foreach_impl
).
The eclass provides extensive API for this purpose but for now we’ll
@@ -453,7 +453,7 @@ flag, while parts affecting build time (Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/package-maintenance.html b/guide/package-maintenance.html
index 3e1ad21..b80dce1 100644
--- a/guide/package-maintenance.html
+++ b/guide/package-maintenance.html
@@ -1,16 +1,16 @@
-
+
Python package maintenance — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,9 +32,9 @@
-Python package maintenance
+Python package maintenance
-Package name policy
+Package name policy
All packages in dev-python/*
that are published on PyPI , must be
named to match their respective PyPI names. The package names must
match after normalization specified in PEP 503 , i.e. after replacing
@@ -107,7 +107,7 @@ may also suggest that upstream publishes to PyPI, or at least pushes
an empty package to reserve the name.
-Support for Python 2
+Support for Python 2
Since Python 2.7 reached EOL, Gentoo is currently phasing out support
for Python 2. Unless your package or its reverse dependencies really
need it, you should omit it from PYTHON_COMPAT
. If you’re adding
@@ -120,7 +120,7 @@ of reverse dependencies afterwards.
supporting it soon are being slowly removed.
-Which implementations to test new packages for?
+Which implementations to test new packages for?
The absolute minimum set of targets are the current default targets
found in profiles/base/make.defaults
. However, developers
are strongly encouraged to test at least the next Python 3 version
@@ -129,7 +129,7 @@ in order to ease future transition, and preferably all future versions.
coverage of PyPy3 support.
-Adding new Python implementations to existing packages
+Adding new Python implementations to existing packages
New Python implementations can generally be added to existing packages
without a revision bump. This is because the new dependencies are added
conditionally to new USE flags. Since the existing users can not have
@@ -141,7 +141,7 @@ will not be able to enable newly added flags and therefore the risk
of the change breaking stable systems is minimal.
-Which packages can be (co-)maintained by the Python project?
+Which packages can be (co-)maintained by the Python project?
A large part of the Python ecosystem is fairly consistent, making it
feasible for (co-)maintenance by the Gentoo Python team.
As a rule of thumb, Python team is ready to maintain packages specific
@@ -158,7 +158,7 @@ the package. However, if you are not a member of the project, please
do not add us without asking first.
-Porting packages to a new EAPI
+Porting packages to a new EAPI
When porting packages to a new EAPI, please take care not to port
the dependencies of Portage prematurely. This generally includes
app-portage/gemato
, dev-python/setuptools
and their recursive
@@ -173,9 +173,9 @@ e.g.:
necessary to install a new Portage version.
-Monitoring new package versions
+Monitoring new package versions
-PyPI release feeds
+PyPI release feeds
The most efficient way to follow new Python package releases are
the feeds found on PyPI . These can be found in the package’s
“Release history” tab, as “RSS feed”.
@@ -184,7 +184,7 @@ for packages in
-Checking via pip
+Checking via pip
The pip list --outdated command described in a followup section
can also be used to verify installed packages against their latest PyPI
releases. However, this is naturally limited to packages installed
@@ -192,7 +192,7 @@ on the particular system, and does not account for newer versions being
already available in the Gentoo repository.
-Repology
+Repology
Repology provides a comprehensive service for tracking distribution
package versions and upstream releases. The easiest ways to find Python
packages present in the Gentoo repository is to search by their
@@ -210,12 +210,12 @@ syntax (e.g. .post<
-Routine checks on installed Python packages
+Routine checks on installed Python packages
The following actions are recommended to be run periodically on systems
used to test Python packages. They could be run e.g. via post-sync
actions.
-pip check
+pip check
pip check
(provided by dev-python/pip
) can be used to check
installed packages for missing dependencies and version conflicts:
$ python3.10 -m pip check
@@ -246,7 +246,7 @@ requests 2.28.0 requires certifi, which is not installed.
-pip list --outdated
+pip list --outdated
pip list --outdated
(provided by dev-python/pip
) can be used
to check whether installed packages are up-to-date. This can help
checking for pending version bumps, as well as to detect wrong versions
@@ -283,7 +283,7 @@ older than the actual release, and therefore the respective options need
to be stripped.
-gpy-verify-deps
+gpy-verify-deps
gpy-verify-deps
(provided by app-portage/gpyutils
) compares
the ebuild dependencies of all installed Python packages against their
metadata. It reports the dependencies that are potentially missing
@@ -399,7 +399,7 @@ than to copy the mistakes into the ebuild.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/porting.html b/guide/porting.html
index 0b6a547..58d3d5e 100644
--- a/guide/porting.html
+++ b/guide/porting.html
@@ -1,16 +1,16 @@
-
+
Porting tips — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,7 +32,7 @@
-Porting tips
+Porting tips
This section highlights some of the known incompatible changes made
in Python that could break Python scripts and modules that used to work
in prior versions. The sections are split into retroactive changes made
@@ -42,9 +42,9 @@ to all Python releases, and information specific to every Python branch
of other problems you’ve hit while porting your packages, please let me
know and I will update it.
-Retroactive changes
+Retroactive changes
-bpo43882 : urlsplit now strips LF, CR and HT characters
+bpo43882 : urlsplit now strips LF, CR and HT characters
Changed in: 2.7.18_p9, 3.6.13_p3, 3.7.10_p3, 3.8.9_p2, 3.9.4_p1
Historically, various urllib.parse methods have passed special
characters such as LF, CR and HT through into the split URL components.
@@ -72,10 +72,10 @@ PR#14349 for an example of impact and a fix.
-Python 3.11
+Python 3.11
See also: what’s new in Python 3.11
-Generator-based coroutine removal (asyncio.coroutine)
+Generator-based coroutine removal (asyncio.coroutine)
Support for generator-based coroutines has been deprecated since
Python 3.8, and is finally removed in 3.11. This usually results
in the following error:
@@ -99,7 +99,7 @@ and yield
-Python 3.10
+Python 3.10
See also: what’s new in Python 3.10
-Porting to tomli-w
+Porting to tomli-w
tomli-w provides a minimal module for dumping TOML files.
The key differences between toml and tomli-w are:
@@ -564,7 +564,7 @@ modules need to be imported and used separately rather than one.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/preface.html b/guide/preface.html
index 797607c..b5398ee 100644
--- a/guide/preface.html
+++ b/guide/preface.html
@@ -1,16 +1,16 @@
-
+
Preface — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,7 +32,7 @@
-Preface
+Preface
Gentoo provides one of the best frameworks for providing Python support
in packages among operating systems. This includes support for
running multiple versions of Python (while most other distributions
@@ -133,7 +133,7 @@ and improvements are welcome.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/pypi.html b/guide/pypi.html
index d745b17..dae5bcc 100644
--- a/guide/pypi.html
+++ b/guide/pypi.html
@@ -1,16 +1,16 @@
-
+
pypi — helper eclass for PyPI archives — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,7 +32,7 @@
-pypi — helper eclass for PyPI archives
+pypi — helper eclass for PyPI archives
The pypi
eclass is a small eclass to facilitate fetching sources
from PyPI. It abstracts away the complexity of PyPI URLs, and makes it
easier to adapt SRC_URI
to their future changes.
@@ -43,9 +43,9 @@ other archives should be used. Read the pypi.eclass(5)
-PyPI URLs
+PyPI URLs
-Modern and legacy URLs
+Modern and legacy URLs
The modern form of PyPI URLs include a hash of the distribution file,
e.g.:
https://files.pythonhosted.org/packages/20/2e/36e46173a288c1c40853ffdb712c67e0e022df0e1ce50b7b1b50066b74d4/gpep517-13.tar.gz
@@ -76,7 +76,7 @@ guaranteed and using the canonical project name is recommended.
The filenames and ${pytag}
are described in the subsequent sections.
-Source distribution filenames
+Source distribution filenames
The filename of a source distribution (sdist) has the general form of:
${ name } -${ version } .tar.gz
@@ -101,7 +101,7 @@ name as the archive filename, minus
<
.zip
distributions were used as well.
-Binary distribution filenames
+Binary distribution filenames
The filename of a binary distribution (wheel) has the general form of:
${ name } -${ version } -${ pytag } -${ abitag } -${ platformtag } .whl
@@ -131,7 +131,7 @@ In this normalization, the example wheel is named:
-Packages with matching name and version
+Packages with matching name and version
In the most common case, the upstream package will have exactly the same
name as the Gentoo package, and the version numbers will be entirely
compatible. In this case, it is sufficient to inherit the eclass,
@@ -191,7 +191,7 @@ to the variable or the default will be overwritten, e.g.:
-Package with a different name
+Package with a different name
If the project name used on PyPI differs from the Gentoo package name,
the PYPI_PN
variable can be used to use another name. This is
especially useful for project that use uppercase letters or dots
@@ -214,7 +214,7 @@ inherit distutils-r1 pypi
-Customizing the generated URL
+Customizing the generated URL
The default value may not be suitable for your package if it uses
a different project name than the Gentoo package name, a version number
that needs to be translated differently or the legacy .zip
sdist
@@ -250,7 +250,7 @@ without SRC_URI
-Fetching wheels
+Fetching wheels
In very specific cases, it may be necessary to fetch wheels
(i.e. prebuilt Python packages) instead. The pypi_wheel_url
function is provided to aid this purpose. Its usage is:
@@ -364,7 +364,7 @@ the wheel filename. It has a matching synopsis:
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/pytest.html b/guide/pytest.html
index 85054e4..22299ce 100644
--- a/guide/pytest.html
+++ b/guide/pytest.html
@@ -1,16 +1,16 @@
-
+
pytest recipes — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,9 +32,9 @@
-pytest recipes
+pytest recipes
-Skipping tests based on markers
+Skipping tests based on markers
A few packages use custom pytest markers to indicate e.g. tests
requiring Internet access. These markers can be used to conveniently
disable whole test groups, e.g.:
@@ -45,7 +45,7 @@ disable whole test groups, e.g.:
-Skipping tests based on paths/names
+Skipping tests based on paths/names
There are two primary methods of skipping tests based on path (and name)
in pytest: using --ignore
and --deselect
.
--ignore
causes pytest to entirely ignore a file or a directory
@@ -87,7 +87,7 @@ requires using the local scope.
-Avoiding the dependency on pytest-runner
+Avoiding the dependency on pytest-runner
pytest-runner is a package providing pytest
command to setuptools.
While it might be convenient upstream, there is no real reason to use
it in Gentoo packages. It has no real advantage over calling pytest
@@ -105,7 +105,7 @@ tests. If this is the case, the dependency must be stripped.
-Using pytest-xdist to run tests in parallel
+Using pytest-xdist to run tests in parallel
pytest-xdist is a plugin that makes it possible to run multiple tests
in parallel. This is especially useful for programs with large test
suites that take significant time to run single-threaded.
@@ -143,7 +143,7 @@ tests are very slow while others are fast. Otherwise, the lengthy tests
may end up being executed on the same thread and become a bottleneck.
-Avoiding dependencies on other pytest plugins
+Avoiding dependencies on other pytest plugins
There is a number of pytest plugins that have little value to Gentoo
users. They include plugins for test coverage
(dev-python/pytest-cov
), coding style (dev-python/pytest-flake8
)
@@ -168,7 +168,7 @@ to strip options enabling them from <
-Explicitly disabling automatic pytest plugins
+Explicitly disabling automatic pytest plugins
Besides plugins explicitly used by the package, there are a few pytest
plugins that enable themselves automatically for all test suites
when installed. In some cases, their presence causes tests of packages
@@ -184,7 +184,7 @@ it explicitly:
-Expert: disabling plugin autoloading entirely
+Expert: disabling plugin autoloading entirely
If a test suite invokes pytest recursively (this is particularly
the case when packaging other pytest plugins), the -p
option
can be insufficient to disable problematic plugins, as it does not
@@ -209,7 +209,7 @@ the entry_points.tx
-TypeError: _make_test_flaky() got an unexpected keyword argument ‘reruns’
+TypeError: _make_test_flaky() got an unexpected keyword argument ‘reruns’
If you see a test error resembling the following:
TypeError: _make_test_flaky() got an unexpected keyword argument 'reruns'
@@ -232,7 +232,7 @@ python_test
() {
-ImportPathMismatchError
+ImportPathMismatchError
An ImportPathMismatchError
generally indicates that the same Python
module (or one that supposedly looks the same) has been loaded twice
using different paths, e.g.:
@@ -260,7 +260,7 @@ discovery to the actual test directories, e.g.:
-fixture ‘…’ not found
+fixture ‘…’ not found
Most of the time, a missing fixture indicates that some pytest plugin
is not installed. In rare cases, it can signify an incompatible pytest
version or package issue.
@@ -292,7 +292,7 @@ plugins.
-Warnings
+Warnings
pytest captures all warnings from the test suite by default, and prints
a summary of them at the end of the test suite run:
=============================== warnings summary ===============================
@@ -436,7 +436,7 @@ setting ignores Dep
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/qawarn.html b/guide/qawarn.html
index cefaf4a..e1333b3 100644
--- a/guide/qawarn.html
+++ b/guide/qawarn.html
@@ -1,16 +1,16 @@
-
+
QA checks and warnings — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,12 +32,12 @@
-QA checks and warnings
+QA checks and warnings
This section explains Python-related QA checks and the resulting QA
warnings that can be output while running the package manager or related
tooling.
-Improved QA warning reporting in Portage
+Improved QA warning reporting in Portage
Normally, Portage outputs QA warnings at specific phases of the build
process. They are usually interspersed with other verbose output,
and they are easy to miss, especially when building multiple packages
@@ -53,7 +53,7 @@ by default. To change that, set in your make.conf.example included in the Portage distribution.
-Modules are not byte-compiled
+Modules are not byte-compiled
The most common QA warning that can be noticed while building packages
indicates that at least some of the expected .pyc
files are missing.
For example:
@@ -135,7 +135,7 @@ another suffix. For example, the template triggering the QA warning
in trimesh package could be renamed from .py
to .py.tmpl
.
-Stray compiled bytecode
+Stray compiled bytecode
The following QA warning indicates that there are stray .pyc
files
that are not clearly matching any installed Python module-implementation
pair:
@@ -161,7 +161,7 @@ not to install them in the first place.
-Stray top-level files in site-packages
+Stray top-level files in site-packages
distutils-r1 checks for the common mistake of installing unexpected
files that are installed top-level into the site-packages directory.
An example error due to that looks like the following:
@@ -183,7 +183,7 @@ locally in the ebuild while waiting for a release with the fix.
The subsequent sections describe the common causes and the suggested
fixes.
-Documentation files installed by Poetry
+Documentation files installed by Poetry
It is a relatively common problem that packages using the Poetry build
system are installing documentation files (such as README
)
to the site-packages directory. This is because of incorrect
@@ -249,9 +249,9 @@ entry:
-Deprecated PEP 517 backends
+Deprecated PEP 517 backends
-flit.buildapi
+flit.buildapi
Some packages are still found using the historical flit build backend.
Their pyproject.toml
files contain a section similar
to the following:
@@ -273,7 +273,7 @@ reduces the build-time dependency footprint and therefore makes isolated
PEP 517 builds faster.
-poetry.masonry.api
+poetry.masonry.api
A similar problem applies to the packages using poetry. The respective
pyproject.toml
files contain:
[build-system]
@@ -292,7 +292,7 @@ PEP-517 documentation:
dependency footprint and makes isolated builds much faster.
-setuptools.build_meta:__legacy__
+setuptools.build_meta:__legacy__
Some packages using setuptools specify the following:
[build-system]
requires = [ "setuptools>=40.8.0" , "wheel" ]
@@ -400,7 +400,7 @@ and other packages tend to copy that mistake.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/search.html b/guide/search.html
index 576386a..fe5aff0 100644
--- a/guide/search.html
+++ b/guide/search.html
@@ -1,16 +1,16 @@
-
+
Search — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -130,7 +130,7 @@
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
diff --git a/guide/searchindex.js b/guide/searchindex.js
index ad73d01..ada37ae 100644
--- a/guide/searchindex.js
+++ b/guide/searchindex.js
@@ -1 +1 @@
-Search.setIndex({"docnames": ["any", "basic", "buildsys", "concept", "depend", "distutils", "distutils-legacy", "eclass", "expert-multi", "helper", "index", "interpreter", "interpreter-maintenance", "migration", "multi", "package-maintenance", "porting", "preface", "pypi", "pytest", "qawarn", "single", "test"], "filenames": ["any.rst", "basic.rst", "buildsys.rst", "concept.rst", "depend.rst", "distutils.rst", "distutils-legacy.rst", "eclass.rst", "expert-multi.rst", "helper.rst", "index.rst", "interpreter.rst", "interpreter-maintenance.rst", "migration.rst", "multi.rst", "package-maintenance.rst", "porting.rst", "preface.rst", "pypi.rst", "pytest.rst", "qawarn.rst", "single.rst", "test.rst"], "titles": ["python-any-r1 \u2014 build-time dependency", "Common basics", "Integration with build systems written in Python", "Advanced concepts", "Advanced dependencies", "distutils-r1 \u2014 standard Python build systems", "distutils-r1 legacy concepts", "Choosing between Python eclasses", "Expert python-r1 usage", "Common helper functions", "Gentoo Python Guide", "Python interpreters", "Maintenance of Python implementations", "Migration guides", "python-r1 \u2014 multi-impl packages", "Python package maintenance", "Porting tips", "Preface", "pypi \u2014 helper eclass for PyPI archives", "pytest recipes", "QA checks and warnings", "python-single-r1 \u2014 single-impl packages", "Tests in Python packages"], "terms": {"The": [0, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "eclass": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 17, 19, 21, 22], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "enabl": [0, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 19, 20, 22], "support": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 14, 16, 17, 18, 19, 20, 21, 22], "packag": [0, 8, 9, 10, 11, 13, 17, 19], "need": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "pure": [0, 5, 6, 7, 8, 10, 11, 15, 18, 22], "refer": [0, 1, 5, 9, 11, 13, 14, 17, 18, 20, 21], "5": [0, 2, 5, 7, 8, 9, 11, 14, 15, 16, 18, 19, 21, 22], "defin": [0, 1, 5, 6, 11, 21, 22], "featur": [0, 4, 5, 6, 7, 8, 11, 12, 13, 20, 21, 22], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "pkg_setup": [0, 1, 2, 8, 21], "phase": [0, 1, 3, 6, 7, 8, 9, 10, 13, 14, 15, 20, 21], "It": [0, 1, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "normal": [0, 3, 5, 8, 9, 14, 15, 16, 18, 20, 21, 22], "call": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 19, 20, 21, 22], "python_setup": [0, 1, 2, 10, 13, 14, 21], "function": [0, 1, 4, 6, 7, 8, 10, 11, 13, 14, 16, 18, 20, 21, 22], "order": [0, 1, 2, 4, 5, 7, 9, 12, 13, 14, 15, 21, 22], "find": [0, 2, 3, 4, 6, 14, 15, 19, 20, 22], "suitabl": [0, 7, 9, 14, 17, 18], "interpret": [0, 1, 2, 5, 6, 7, 9, 10, 13, 14, 15, 16, 19, 20, 21], "global": [0, 1, 5, 8, 13, 14, 19, 21, 22], "environ": [0, 5, 6, 10, 11, 13, 14, 16, 19, 21], "appropri": [0, 2, 4, 5, 6, 7, 9, 11, 12, 15, 18, 21, 22], "mean": [0, 1, 2, 5, 7, 8, 11, 15, 16, 18, 19, 21, 22], "most": [0, 3, 5, 6, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22], "trivial": [0, 5, 12, 16, 21], "an": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 22], "autotool": [0, 5, 6, 10, 16, 21], "compat": [0, 1, 2, 4, 5, 6, 7, 9, 11, 13, 16, 18, 21], "system": [0, 3, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 21, 22], "could": [0, 2, 3, 5, 6, 8, 9, 15, 16, 18, 20, 21, 22], "look": [0, 1, 6, 8, 16, 19, 20, 21, 22], "like": [0, 2, 4, 5, 6, 8, 11, 15, 16, 20, 21, 22], "follow": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22], "copyright": [0, 2, 4, 5, 6, 8, 14, 21, 22], "1999": [0, 2, 4, 5, 6, 8, 14, 21, 22], "2020": [0, 2, 4, 5, 6, 8, 13, 14, 16, 21, 22], "gentoo": [0, 1, 2, 4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22], "author": [0, 2, 4, 5, 6, 8, 9, 10, 12, 14, 20, 21, 22], "distribut": [0, 2, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22], "under": [0, 1, 2, 3, 4, 5, 6, 8, 14, 21, 22], "term": [0, 2, 4, 5, 6, 8, 14, 21, 22], "gnu": [0, 2, 4, 5, 6, 8, 14, 21, 22], "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 21, 22], "public": [0, 2, 4, 5, 6, 8, 11, 14, 21, 22], "licens": [0, 2, 4, 5, 6, 8, 10, 14, 20, 21, 22], "v2": [0, 2, 4, 5, 6, 8, 14, 21, 22], "eapi": [0, 2, 4, 5, 6, 8, 10, 14, 21, 22], "7": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "python_compat": [0, 2, 4, 5, 6, 8, 10, 11, 12, 14, 15, 21, 22], "python3_": [0, 1, 2, 4, 5, 6, 8, 12, 21, 22], "6": [0, 1, 2, 4, 5, 6, 8, 11, 12, 14, 15, 16, 19, 21, 22], "8": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 20, 21, 22], "inherit": [0, 1, 2, 4, 5, 6, 7, 8, 9, 13, 14, 16, 18, 19, 21, 22], "descript": [0, 2, 4, 5, 6, 8, 14, 21, 22], "A": [0, 1, 2, 4, 6, 7, 8, 10, 11, 15, 19, 20], "repositori": [0, 5, 6, 12, 15, 20], "data": [0, 2, 5, 6, 9, 16, 21, 22], "file": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 21], "describ": [0, 5, 6, 8, 9, 15, 18, 20], "media": [0, 2, 8], "player": [0, 4], "capabl": 0, "homepag": [0, 2, 4, 5, 6, 8, 14, 15, 21, 22], "http": [0, 2, 4, 5, 6, 8, 9, 12, 14, 16, 18, 20, 21, 22], "cgit": 0, "freedesktop": 0, "org": [0, 2, 4, 5, 6, 8, 9, 12, 14, 18, 20, 21, 22], "info": [0, 5, 6, 19], "src_uri": [0, 2, 4, 5, 6, 8, 14, 15, 18, 21, 22], "www": [0, 2, 8, 14, 21], "softwar": [0, 1, 4, 8, 14, 15, 16, 22], "pn": [0, 2, 4, 5, 6, 8, 9, 14, 18, 21, 22], "p": [0, 2, 4, 5, 6, 8, 14, 18, 19, 21, 22], "tar": [0, 2, 4, 5, 6, 8, 12, 14, 18, 21, 22], "gz": [0, 2, 4, 5, 6, 8, 14, 18, 21, 22], "bsd": [0, 2, 5, 6, 8, 14, 21], "slot": [0, 2, 4, 5, 6, 8, 11, 14, 21, 22], "0": [0, 2, 4, 5, 6, 8, 10, 11, 12, 14, 15, 16, 19, 20, 21, 22], "keyword": [0, 2, 4, 5, 6, 8, 10, 14, 16, 21, 22], "alpha": [0, 2, 4, 5, 6, 8, 11, 12, 14, 21, 22], "amd64": [0, 2, 4, 5, 6, 8, 12, 14, 21, 22], "arm": [0, 2, 4, 5, 6, 8, 21, 22], "arm64": [0, 2, 4, 5, 6, 8, 14, 21, 22], "hppa": [0, 2, 4, 5, 6, 8, 14, 21, 22], "ia64": [0, 2, 4, 5, 6, 8, 14, 21, 22], "mip": [0, 2, 4, 5, 6, 8, 21, 22], "ppc": [0, 2, 4, 5, 6, 8, 14, 21, 22], "ppc64": [0, 2, 4, 5, 6, 8, 14, 21, 22], "sh": [0, 2, 4, 5, 6, 8, 12, 21, 22], "sparc": [0, 2, 4, 5, 6, 8, 14, 21, 22], "x86": [0, 2, 4, 5, 6, 8, 12, 14, 21, 22], "ius": [0, 2, 4, 5, 8, 14, 21, 22], "rdepend": [0, 1, 2, 4, 5, 6, 8, 13, 14, 21, 22], "virtual": [0, 2, 8, 14], "udev": 0, "208": 0, "bdepend": [0, 1, 2, 4, 5, 6, 8, 12, 14, 19, 21, 22], "python_dep": [0, 2, 4, 5, 8, 10, 14, 21], "pkgconfig": [0, 2, 8, 14], "ebuild": [0, 1, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22], "demonstr": [0, 5, 21], "absolut": [0, 1, 9, 15, 21, 22], "minimum": [0, 15, 21], "work": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 19, 21, 22], "code": [0, 1, 3, 5, 6, 7, 8, 9, 11, 13, 14, 16, 19, 20, 21, 22], "onli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "three": [0, 1, 3, 9, 13, 16, 20], "highlight": [0, 16, 21], "line": [0, 3, 5, 13, 15, 16, 21, 22], "ar": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22], "specif": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 22], "plu": [0, 21], "implicitli": [0, 3, 5, 8, 12, 20, 21, 22], "export": [0, 1, 2, 5, 21], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22], "other": [0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22], "declar": [0, 1, 2, 5, 6, 8, 9, 11, 14, 19, 21, 22], "ensur": [0, 1, 4, 5, 6, 9, 12, 14, 20, 21], "would": [0, 2, 4, 5, 7, 11, 12, 14, 15, 16, 18, 21, 22], "built": [0, 1, 3, 5, 6, 7, 8, 11, 12, 14, 16, 17, 18, 21, 22], "against": [0, 4, 7, 9, 11, 12, 14, 15, 21, 22], "implement": [0, 1, 3, 4, 5, 6, 7, 10, 14, 16, 17, 19, 20, 21, 22], "specifi": [0, 1, 2, 5, 6, 7, 8, 14, 15, 18, 19, 20, 21, 22], "get": [0, 5, 6, 12, 13, 18, 19, 22], "replac": [0, 5, 6, 10, 11, 13, 15, 18], "python_gen_any_dep": [0, 2, 8], "match": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 15, 20, 21], "python_check_dep": [0, 2, 8], "accept": [0, 1, 4, 5, 6, 9, 12, 15, 16, 18, 19, 20], "templat": [0, 2, 4, 5, 15, 20, 21], "where": [0, 3, 5, 6, 9, 11, 12, 14, 16, 18, 21, 22], "liter": [0, 4, 21], "python_usedep": [0, 2, 4, 5, 8, 10, 12, 14, 15, 19, 21, 22], "substitut": [0, 4, 21], "requir": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "same": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "least": [0, 5, 8, 15, 20, 22], "one": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 16, 17, 19, 20, 21, 22], "test": [0, 1, 2, 3, 7, 8, 10, 11, 12, 13, 16, 17, 18, 21], "whether": [0, 1, 4, 5, 6, 7, 15, 19, 21, 22], "question": [0, 1, 5, 7, 14, 18, 19, 22], "In": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "particular": [0, 1, 4, 5, 6, 11, 15, 18, 22], "verifi": [0, 1, 5, 6, 8, 13, 20, 22], "branch": [0, 11, 16, 22], "wa": [0, 4, 5, 11, 12, 13, 16, 18, 19, 20, 22], "satisfi": [0, 1, 8, 12], "were": [0, 2, 3, 8, 11, 12, 13, 16, 18, 20], "instal": [0, 1, 3, 4, 7, 8, 10, 11, 12, 13, 16, 19], "current": [0, 5, 6, 11, 12, 13, 15, 19, 22], "For": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22], "purpos": [0, 5, 6, 9, 12, 14, 16, 18, 21, 22], "variabl": [0, 1, 5, 6, 8, 13, 14, 16, 18, 19, 21, 22], "string": [0, 1, 4, 5, 8, 14, 16, 21], "best": [0, 7, 12, 16, 17, 18, 19], "explain": [0, 1, 6, 20], "exampl": [0, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 17, 18, 19, 21, 22], "meson": [0, 4, 5, 7, 10, 15], "manag": [0, 4, 6, 8, 9, 18, 20, 22], "cinnamon": 0, "fork": [0, 11, 12, 15, 22], "from": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "nautilu": 0, "develop": [0, 1, 7, 11, 15, 17, 19, 22], "linuxmint": 0, "com": [0, 2, 4, 5, 6, 8, 12, 14, 16, 18, 22], "project": [0, 1, 5, 8, 9, 10, 14, 17, 18, 19, 20, 22], "html": [0, 5, 8, 20, 22], "github": [0, 2, 4, 5, 6, 8, 12, 14, 17, 18, 21, 22], "nemo": 0, "archiv": [0, 2, 4, 10, 21, 22], "pv": [0, 2, 4, 5, 8, 14, 18, 21, 22], "gpl": [0, 2, 4, 8, 14, 21], "2": [0, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22], "lgpl": [0, 2, 14, 21, 22], "fdl": [0, 21], "1": [0, 2, 3, 4, 5, 6, 8, 9, 15, 18, 19, 20, 21, 22], "dev": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22], "polib": 0, "pygobject": [0, 14], "3": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22], "python_has_vers": [0, 2, 8], "provid": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22], "its": [0, 1, 2, 5, 6, 7, 8, 11, 12, 15, 16, 18, 19, 22], "both": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 16, 17, 18, 19, 20, 21, 22], "have": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "dep": [0, 5, 13, 19], "true": [0, 1, 2, 5, 6, 8, 12, 13, 16, 22], "them": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 18, 19, 20, 21, 22], "while": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22], "which": [0, 6, 9, 10, 11, 14, 22], "wrapper": [0, 1, 6, 9, 13, 14, 22], "help": [0, 15, 17, 22], "take": [0, 1, 2, 4, 5, 6, 7, 8, 9, 15, 16, 19, 22], "singl": [0, 1, 4, 6, 9, 10, 14, 15, 16, 18, 19, 20, 22], "option": [0, 1, 3, 6, 8, 10, 13, 15, 18, 19, 20, 21, 22], "class": [0, 1, 5, 16, 19], "flag": [0, 1, 5, 7, 8, 9, 10, 11, 12, 14, 15, 21, 22], "more": [0, 1, 3, 4, 5, 7, 9, 11, 12, 13, 15, 16, 18, 19, 20, 21], "similarli": [0, 1, 5, 15, 18], "has_vers": [0, 4, 12], "root": [0, 5, 6, 13, 21, 22], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22], "b": [0, 18], "d": [0, 2, 3, 8, 9, 14, 18, 19], "r": [0, 2, 5, 9, 16, 22], "idepend": 0, "pdepend": [0, 2, 8, 12], "pass": [0, 6, 8, 9, 10, 12, 13, 16, 18, 19, 22], "assum": [0, 1, 4, 5, 6, 9, 13, 15, 21, 22], "verbos": [0, 15, 20, 22], "print": [0, 5, 8, 14, 19, 22], "check": [0, 5, 6, 9, 10, 12, 13, 16, 17, 22], "perform": [0, 2, 5, 6, 11, 12, 14, 18, 20, 21, 22], "result": [0, 5, 6, 8, 9, 12, 15, 16, 17, 18, 19, 20, 22], "return": [0, 2, 8, 16, 20, 22], "success": 0, "found": [0, 1, 3, 5, 6, 9, 10, 11, 12, 15, 18, 20, 22], "fals": [0, 2, 5, 8, 12, 15, 16], "otherwis": [0, 6, 7, 8, 9, 19], "note": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 22], "invoc": [0, 5, 19, 20], "chain": 0, "abov": [0, 1, 6, 8, 12, 13, 15, 20, 21, 22], "also": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22], "written": [0, 1, 5, 7, 10, 11, 16, 19], "import": [0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 18, 19], "understand": 0, "correctli": [0, 1, 5, 6, 7, 9, 11, 12, 13, 15, 16, 22], "exactli": [0, 7, 18], "furthermor": [0, 2, 5], "combin": [0, 2, 3, 5, 10, 11, 12, 13, 16, 17, 18, 19, 21, 22], "must": [0, 1, 2, 3, 5, 6, 7, 8, 11, 15, 16, 19, 21, 22], "onc": [0, 5, 8, 11, 12, 20], "invalid": [0, 16], "split": [0, 5, 13, 16], "some": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "necessari": [0, 2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 21, 22], "particularli": [0, 5, 6, 7, 11, 13, 15, 19, 22], "common": [0, 3, 5, 6, 7, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22], "suit": [0, 1, 2, 5, 6, 7, 8, 9, 10, 12, 19, 22], "case": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21], "wrap": [0, 5, 6, 9, 13, 22], "programm": [0, 15], "complet": [0, 5, 16, 17, 20, 22], "bash": [0, 5, 7, 8, 9, 21, 22], "scop": 0, "releas": [0, 2, 8, 11, 12, 14, 16, 20], "download": [0, 2, 5, 8, 14], "xz": [0, 4, 12, 14, 21], "s390": [0, 2, 4, 5, 6, 8, 21, 22], "linux": [0, 2, 4, 5, 6, 8, 9, 14, 16, 21, 22], "maco": [0, 4, 6, 8, 21, 22], "x64": [0, 4, 6, 8, 21, 22], "m68k": [0, 4, 5, 6, 8, 21, 22], "mint": 0, "solari": [0, 6, 21, 22], "sparc64": [0, 6], "restrict": [0, 2, 4, 5, 10, 19, 20, 21, 22], "app": [0, 2, 4, 5, 8, 12, 14, 15, 18, 20, 22], "shell": [0, 8, 14, 22], "4": [0, 3, 5, 8, 9, 10, 11, 12, 14, 15, 22], "3_p30": 0, "pexpect": [0, 22], "pytest": [0, 4, 5, 8, 10, 12, 15, 18], "r1_pkg_setup": [0, 2, 21], "anoth": [0, 8, 9, 14, 15, 16, 18, 19, 20, 22], "possibl": [0, 2, 4, 5, 8, 9, 12, 14, 16, 17, 19, 22], "uncondition": [0, 1, 2, 4, 5, 6, 8, 11, 20, 21, 22], "condition": [0, 1, 2, 4, 5, 11, 12, 14, 15, 19, 21], "simplest": [0, 2, 5, 7, 14, 19, 22], "wai": [0, 5, 6, 9, 12, 13, 15, 19, 22], "achiev": [0, 8, 11, 16], "block": [0, 8, 13, 22], "express": [0, 8, 13, 21], "similar": [0, 2, 5, 14, 15, 20, 21, 22], "cmake": [0, 5, 6, 21], "qt": 0, "bind": [0, 2, 5, 8, 14, 21], "telepathi": 0, "bu": 0, "protocol": [0, 2, 21], "dbu": [0, 2], "hardest": 0, "differ": [0, 1, 3, 5, 9, 10, 11, 15, 16, 19, 22], "do": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22], "error": [0, 2, 5, 9, 12, 13, 16, 19, 20, 22], "prone": 0, "move": [0, 4, 5, 12], "insid": [0, 1, 3, 5, 6, 9, 14, 18, 19, 21, 22], "python3_6": [0, 2, 4, 8, 14], "gnome2": [0, 4, 14], "gobject": 0, "librari": [0, 1, 2, 3, 4, 8, 9, 11, 14, 21, 22], "access": [0, 10, 11, 19], "secret": 0, "servic": [0, 15, 22], "api": [0, 2, 5, 9, 10, 11, 13, 14, 16], "wiki": [0, 4, 8, 9, 12, 14, 17], "gnome": [0, 4, 14], "libsecret": 0, "apach": [0, 2, 4, 5, 8, 22], "introspect": 0, "fail": [0, 1, 2, 5, 8, 9, 11, 12, 16, 19, 22], "bug": [0, 5, 6, 12, 20, 22], "655482": 0, "required_us": [0, 1, 2, 4, 5, 7, 8, 13, 14, 21], "mock": [0, 4, 8, 11, 12, 19, 22], "fi": [0, 2, 4, 5, 8, 12, 14, 21], "host": 0, "variou": [1, 5, 6, 9, 13, 16], "r1": [1, 4, 9, 10, 12, 15, 18, 20, 22], "try": [1, 6, 8, 9, 11, 16, 22], "design": [1, 21], "you": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "probabl": [1, 6, 8, 13, 21], "us": [1, 9, 10, 11, 12, 13, 15, 16, 18, 20], "than": [1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20, 22], "so": [1, 4, 5, 6, 11, 12, 15, 18, 19, 21, 22], "worthwhil": [1, 22], "shortli": 1, "bit": [1, 12, 17], "well": [1, 5, 7, 8, 11, 13, 15, 18, 20], "non": [1, 6, 7, 9, 12, 14, 16, 18, 19, 22], "obviou": [1, 22], "between": [1, 3, 5, 8, 10, 11, 13, 16, 18], "befor": [1, 4, 5, 8, 9, 10, 12, 14, 16], "thei": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "valid": [1, 5, 8, 15, 16, 20, 22], "valu": [1, 5, 6, 9, 13, 18, 19, 22], "pythonx_i": 1, "cpython": [1, 4, 5, 9, 11, 13, 18, 20], "x": [1, 5, 11, 16, 19, 22], "y": [1, 2, 11, 16], "pypy3": [1, 4, 5, 6, 8, 11, 12, 13, 15, 19, 20, 22], "typic": [1, 14], "ani": [1, 2, 3, 5, 6, 7, 10, 14, 16, 18, 19, 20, 22], "respons": [1, 5], "explicitli": [1, 5, 7, 8, 10, 13, 18, 20, 22], "put": [1, 8], "correct": [1, 5, 6, 7, 9, 10, 15, 18, 19, 20, 21], "meant": [1, 13, 20], "consist": [1, 6, 9, 12, 13, 14, 15], "cover": [1, 5, 6, 13, 22], "time": [1, 3, 4, 5, 6, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 22], "runtim": [1, 2, 3, 5, 8, 10, 13, 14, 15], "form": [1, 4, 12, 17, 18], "doe": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 22], "appli": [1, 4, 5, 6, 7, 12, 15, 19, 20, 21, 22], "distutil": [1, 3, 4, 9, 10, 13, 14, 18, 19, 20, 21, 22], "assign": 1, "default": [1, 2, 5, 6, 7, 8, 9, 11, 13, 14, 15, 18, 19, 20, 21, 22], "commonli": [1, 2, 3, 5, 6, 9, 11, 18], "concept": [1, 5, 10], "state": 1, "enforc": [1, 4, 5, 7, 8, 11, 19, 22], "whenev": [1, 4, 9, 11, 14, 15, 19, 21, 22], "run": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20], "two": [1, 5, 6, 8, 9, 11, 13, 16, 19, 20, 21], "being": [1, 3, 5, 6, 8, 9, 11, 12, 15, 16, 18, 19, 22], "epython": [1, 2, 5, 8, 9, 12, 13, 19, 22], "contain": [1, 3, 4, 5, 6, 7, 12, 13, 15, 20], "": [1, 2, 4, 5, 6, 7, 8, 9, 13, 14, 15, 16, 18, 19, 20, 21, 22], "basenam": 1, "identifi": 1, "e": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "g": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "python3": [1, 3, 5, 9, 11, 13, 15, 16, 19, 20, 22], "10": [1, 4, 5, 8, 10, 11, 12, 15, 20], "final": [1, 2, 4, 5, 9, 11, 13, 16, 21, 22], "path": [1, 3, 5, 6, 9, 10, 12, 13, 16, 18, 20, 22], "usr": [1, 2, 3, 5, 7, 8, 9, 19, 20, 22], "bin": [1, 2, 5, 7, 8, 9, 12, 21, 22], "full": [1, 2, 4, 5, 13, 22], "should": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "embed": [1, 2, 9, 11], "program": [1, 2, 5, 6, 11, 16, 19, 22], "shebang": [1, 10, 11, 22], "spawn": 1, "dure": [1, 5, 6, 7, 12, 13, 19, 20], "prefer": [1, 4, 5, 7, 8, 11, 12, 14, 15, 19, 22], "rather": [1, 5, 6, 8, 12, 15, 16, 17, 19, 20, 22], "bypass": 1, "virtualenv": [1, 6, 12, 22], "creat": [1, 3, 4, 5, 6, 12, 13, 15, 16, 20, 22], "pep": [1, 3, 6, 7, 10, 12, 15, 16, 18], "517": [1, 3, 6, 7, 10, 12], "mode": [1, 6, 7, 10, 13, 16, 20], "mai": [1, 3, 4, 5, 6, 8, 11, 12, 13, 15, 16, 18, 19, 22], "caus": [1, 4, 5, 8, 9, 13, 15, 18, 19, 20, 22], "failur": [1, 5, 10, 11, 12, 19], "modul": [1, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15, 16, 19, 22], "previou": [1, 5, 12, 13, 16], "version": [1, 2, 3, 5, 6, 7, 8, 10, 12, 13, 16, 17, 19, 22], "just": [1, 6, 11, 13, 22], "resolv": [1, 5, 6, 16, 19, 22], "problem": [1, 3, 4, 5, 6, 8, 12, 15, 16, 17, 19, 20, 22], "pythonn": 1, "tool": [1, 2, 5, 8, 14, 15, 16, 20, 22], "etc": 1, "via": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 22], "exec": [1, 8, 9, 11, 12, 22], "hardcod": [1, 12, 19], "either": [1, 2, 5, 8, 9, 11, 13, 19, 20, 22], "establish": [1, 13, 22], "local": [1, 2, 3, 4, 5, 8, 9, 12, 13, 14, 19, 20, 21, 22], "scope": [1, 4, 5, 8, 13, 19, 22], "multi": [1, 5, 10, 13, 21], "impl": [1, 5, 10, 13], "python_foreach_impl": [1, 2, 8, 14], "sub": [1, 3, 7, 8, 10, 22], "setup": [1, 3, 6, 7, 10, 13, 15, 19, 20, 22], "done": [1, 3, 5, 6, 8, 9, 14, 15, 19, 22], "directli": [1, 5, 6, 7, 9, 11, 13, 16, 19, 22], "section": [1, 5, 6, 7, 12, 15, 16, 18, 20, 22], "focu": [1, 7, 12, 14], "often": [1, 5, 12, 22], "extern": [1, 2, 5, 6, 7, 11, 12, 22], "languag": [1, 2, 5, 11, 15], "usual": [1, 3, 4, 5, 7, 11, 13, 15, 16, 19, 20, 22], "rule": [1, 2, 6, 7, 8, 13, 14, 15, 18], "classifi": [1, 6], "categori": [1, 15], "present": [1, 5, 6, 15, 20], "script": [1, 2, 5, 6, 7, 8, 10, 11, 12, 14, 16, 21], "usabl": [1, 11], "whose": [1, 5, 18], "therefor": [1, 2, 5, 6, 7, 8, 11, 12, 15, 19, 20, 22], "howev": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 19, 20, 21, 22], "modern": [1, 4, 5, 6, 11, 12, 19, 22], "base": [1, 4, 5, 7, 8, 10, 12, 14, 15, 21, 22], "entri": [1, 5, 12, 19, 20], "point": [1, 5, 11, 13, 15, 19, 22], "refus": [1, 4, 11], "place": [1, 6, 11, 12, 18, 20], "special": [1, 3, 4, 5, 6, 16, 22], "subclass": 1, "extra": [1, 5, 6, 10], "still": [1, 5, 6, 8, 11, 13, 16, 18, 20, 22], "meaningfulli": 1, "handl": [1, 4, 5, 6, 8, 13, 14, 15, 22], "gracefulli": [1, 4, 8], "subset": [1, 4, 5, 7, 8, 11, 12, 14, 15, 20, 22], "without": [1, 4, 10, 11, 13, 14, 15, 18, 19, 22], "There": [1, 3, 5, 8, 9, 15, 16, 19, 20, 22], "multipl": [1, 3, 4, 5, 7, 10, 14, 15, 17, 19, 20, 22], "approach": [1, 5, 7, 8, 12, 16, 22], "ad": [1, 5, 7, 10, 11, 13, 14, 19], "consid": [1, 2, 3, 5, 6, 7, 8, 11, 12, 14, 15, 16, 20], "light": 1, "enough": [1, 11, 22], "inform": [1, 3, 6, 10, 13, 16, 18, 20, 22], "messag": [1, 5, 22], "pkg_postinst": [1, 5], "util": [1, 2, 4, 5, 7, 8, 9, 12, 15, 19, 20, 21, 22], "optfeatur": 1, "cheap": 1, "rebuild": [1, 6, 11], "includ": [1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 15, 16, 17, 18, 19, 20, 21, 22], "__init__": [1, 3, 5, 9, 19, 20, 22], "py": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 22], "As": [1, 3, 5, 6, 7, 8, 11, 12, 13, 15, 16, 19, 21, 22], "thumb": [1, 6, 7, 13, 15], "belong": [1, 22], "care": [1, 2, 5, 7, 9, 15, 22], "addit": [1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 15, 18, 19, 22], "plugin": [1, 3, 5, 6, 8, 10, 22], "setuptools_scm": [1, 10, 22], "document": [1, 2, 7, 8, 10, 11, 14, 17, 22], "former": [1, 5, 7, 8, 13, 16, 22], "runner": [1, 5, 7, 10], "sinc": [1, 2, 3, 5, 6, 7, 11, 12, 13, 15, 16, 19, 22], "sometim": [1, 4, 5, 6, 7, 9, 11, 19, 22], "These": [1, 5, 6, 7, 11, 12, 13, 15, 19, 22], "go": [1, 2, 8, 17, 18, 19], "doc": [1, 2, 5, 8, 21], "respect": [1, 4, 5, 12, 14, 15, 19, 20], "maximum": [1, 5], "coverag": [1, 5, 15, 19, 22], "further": [1, 19], "guid": [1, 3, 5, 16, 17, 20], "linter": 1, "report": [1, 6, 9, 10, 12, 15, 22], "actual": [1, 5, 6, 8, 9, 11, 12, 15, 18, 19, 22], "undesir": [1, 5, 10, 19], "again": [1, 2, 15, 22], "conveni": [1, 4, 5, 6, 7, 19, 20, 22], "add": [1, 2, 5, 6, 8, 12, 15, 18, 20, 21, 22], "sphinx": [1, 3, 6, 7, 8, 10, 12, 15], "copi": [1, 3, 5, 6, 9, 11, 15, 20, 21, 22], "c": [1, 2, 6, 8, 9, 10, 11, 14], "extens": [1, 6, 7, 8, 9, 10, 11, 14, 15, 16], "header": [1, 9], "numpi": [1, 2, 22], "If": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "metadata": [1, 5, 6, 14, 15, 21], "pyproject": [1, 5, 7, 12, 20, 22], "toml": [1, 5, 7, 10, 12, 20, 22], "setuptool": [1, 3, 4, 5, 7, 8, 12, 13, 15, 18, 19, 22], "cfg": [1, 3, 5, 6, 15, 19, 20, 22], "custom": [1, 2, 3, 6, 10, 13, 15, 16, 19, 20], "read": [1, 5, 16, 18, 22], "name": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 16, 22], "uncondit": [1, 2, 5, 10, 13, 14, 15], "upstream": [1, 3, 4, 5, 6, 7, 9, 11, 12, 14, 15, 16, 18, 19, 20, 22], "spuriou": 1, "strip": [1, 3, 5, 11, 15, 19, 22], "ommit": 1, "kei": [1, 5, 16, 19, 20, 21], "kind": [1, 3, 7, 9, 11, 22], "621": 1, "older": [1, 11, 15, 18], "flit": [1, 5, 6, 12, 13], "poetri": [1, 5, 6, 13], "indic": [1, 5, 6, 11, 12, 13, 15, 18, 19, 20, 22], "install_requir": [1, 3, 5, 6], "group": [1, 2, 6, 13, 15, 19], "extras_requir": [1, 5], "setup_requir": [1, 5, 19], "deprec": [1, 3, 5, 10, 11, 13, 22], "tests_requir": [1, 5], "tox": [1, 5, 22], "ini": [1, 5, 19, 22], "noxfil": 1, "python_requir": 1, "besid": [2, 6, 11, 14, 19, 20], "few": [2, 4, 6, 12, 19, 22], "make": [2, 3, 4, 5, 6, 7, 11, 12, 13, 15, 16, 18, 19, 20, 21, 22], "proper": [2, 8], "fairli": [2, 15, 21], "recent": [2, 3, 5, 15, 22], "agnost": 2, "henc": [2, 5, 14], "treat": [2, 19], "arbitrari": [2, 13, 18, 22], "ha": [2, 3, 5, 6, 7, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22], "gain": [2, 19], "quit": [2, 4, 6, 11, 12], "At": [2, 5, 11, 15, 17, 20], "mani": [2, 5, 8, 12, 14, 15, 16, 20, 22], "old": [2, 4, 5, 6, 8, 10, 11, 12, 16, 22], "reason": [2, 4, 5, 6, 11, 18, 19, 22], "suffici": [2, 5, 6, 7, 11, 14, 18], "prior": [2, 3, 5, 6, 8, 11, 12, 13, 16, 20, 22], "happen": [2, 3, 4, 6, 7, 8, 11, 21, 22], "natur": [2, 3, 5, 8, 15], "sort": 2, "latter": [2, 5, 7, 8, 13, 15, 16, 19, 22], "set": [2, 4, 5, 6, 7, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "much": [2, 5, 20, 22], "compon": [2, 3, 8, 11, 14, 16], "account": [2, 8, 11, 15, 22], "detail": [2, 7, 9, 11, 13, 16, 20, 22], "choic": [2, 6, 7, 13, 18, 22], "chapter": [2, 5, 8, 9], "along": [2, 5, 6, 7, 11, 12, 13, 20, 21, 22], "toolchain": [2, 4, 8], "func": [2, 8], "commit": [2, 12, 18, 22], "6e5e8a57628095d8d0c8bbb38187afb0f3a42112": 2, "userspac": 2, "xbox": 2, "360": 2, "control": [2, 4, 5, 19], "driver": 2, "xboxdrv": 2, "gitlab": [2, 8], "io": [2, 4, 5, 8, 14, 21], "chewi": 2, "workdir": [2, 5, 18], "lib": [2, 3, 5, 7, 9, 16, 19, 20, 22], "boost": [2, 7], "glib": 2, "sy": [2, 5, 8, 11, 14, 15, 16, 22], "libudev": 2, "libusb": 2, "x11": 2, "libx11": 2, "src_compil": [2, 5, 6, 8, 14, 22], "escon": 2, "cxx": 2, "tc": [2, 9], "getcxx": 2, "getar": 2, "ranlib": 2, "getranlib": 2, "cxxflag": 2, "wall": 2, "linkflag": 2, "ldflag": [2, 5], "src_instal": [2, 5, 8, 9, 14, 21], "dobin": [2, 9], "doman": 2, "dodoc": [2, 5], "new": [2, 5, 6, 9, 10, 11, 13, 16, 19, 22], "readm": [2, 12, 20], "md": [2, 20], "todo": [2, 9, 12], "yourself": [2, 4, 22], "becaus": [2, 6, 11, 12, 15, 19, 20, 22], "cannot": [2, 3, 4, 5, 9, 11, 22], "my_p": 2, "src": [2, 5, 9, 22], "_rc": [2, 18], "rc": [2, 11, 18], "high": [2, 4, 11, 12, 15, 21], "open": [2, 16], "sourc": [2, 3, 10, 12, 14, 17, 20, 22], "schema": [2, 15], "free": [2, 15, 22], "orient": [2, 16], "databas": [2, 4], "mongodb": [2, 4], "fastdl": 2, "sspl": 2, "acct": 2, "user": [2, 3, 5, 6, 7, 8, 11, 12, 15, 19, 21, 22], "arch": [2, 5, 8, 11, 12, 18], "snappi": 2, "cpp": 2, "yaml": [2, 3], "70": 2, "thread": [2, 8, 19, 21, 22], "libpcr": 2, "42": 2, "zstd": 2, "snowbal": 2, "stemmer": 2, "net": [2, 8, 11, 14, 15, 21], "libpcap": 2, "zlib": 2, "11": [2, 5, 10, 12, 15, 22], "pymongo": 2, "cheetah3": 2, "psutil": 2, "pyyaml": 2, "type": [2, 3, 6, 13, 15, 16], "ncurs": [2, 14], "readlin": [2, 5, 8, 14], "admin": [2, 8], "mongo": 2, "src_configur": [2, 5, 8, 9, 13, 14, 21], "scons_opt": 2, "cc": [2, 9], "getcc": [2, 9], "disabl": [2, 5, 8, 10, 11, 12, 14, 18, 21, 22], "warn": [2, 5, 10, 16, 22], "pcre": 2, "core": [2, 5, 20, 22], "src_test": [2, 5, 6, 14, 22], "buildscript": 2, "resmok": 2, "dbpathprefix": 2, "job": [2, 5, 19], "makeopts_job": [2, 19], "die": [2, 3, 5, 8, 9, 14, 19, 22], "nostrip": [2, 8], "prefix": [2, 8, 9, 15, 16, 22], "ed": [2, 9, 15], "everyth": [2, 13, 20], "your": [2, 4, 5, 6, 7, 8, 11, 12, 15, 16, 18, 19, 20, 22], "python2_7": [2, 5, 6, 8, 13, 14, 21, 22], "eutil": 2, "molecular": 2, "dynam": 2, "nmr": 2, "analysi": [2, 21], "relax": [2, 19], "gna": 2, "bz2": [2, 8, 21], "python_required_us": [2, 4, 5, 8, 10, 14, 21], "python_gen_cond_dep": [2, 4, 5, 8, 12, 13, 21, 22], "numdifftool": 2, "matplotlib": [2, 5, 21], "python2": [2, 8, 9, 13, 21], "wxpython": [2, 21], "wx_gtk_ver": [2, 21], "sci": [2, 5, 21], "chemistri": 2, "pymol": 2, "bmrblib": 2, "minfx": 2, "scipi": 2, "molmol": 2, "vmd": 2, "visual": 2, "grace": 2, "opendx": 2, "gfx": 2, "pngcrush": 2, "python_moduleinto": [2, 5, 9, 14], "python_domodul": [2, 5, 9, 12, 14, 21], "make_wrapp": [2, 9], "python_get_sitedir": [2, 3, 8, 9, 22], "part": [2, 3, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22], "That": [2, 16, 22], "fortran_need": 2, "fortran": 2, "fortran_standard": 2, "90": [2, 14], "object": [2, 11, 16, 21], "chemic": 2, "kinet": 2, "thermodynam": 2, "transport": 2, "cantera": 2, "v": [2, 4, 5, 10, 13, 14, 22], "pch": 2, "sundial": 2, "eigen": 2, "libfmt": 2, "cython": [2, 10, 14, 21], "2_pkg_setup": 2, "scons_var": 2, "cc_flag": 2, "cxx_flag": 2, "std": [2, 3], "debug": [2, 5], "getfc": 2, "fortranflag": 2, "optimize_flag": 2, "wno": 2, "inlin": [2, 7, 14, 18], "renamed_shared_librari": 2, "use_pch": 2, "usex": [2, 5, 21], "system_fmt": 2, "system_sundi": 2, "system_eigen": 2, "env_var": 2, "extra_inc_dir": 2, "eigen3": 2, "scons_target": 2, "f90_interfac": 2, "n": [2, 16, 19], "python2_packag": 2, "none": [2, 5, 6, 16, 18], "python3_packag": 2, "python3_cmd": 2, "els": [2, 8, 11, 16], "stage_dir": 2, "libdirnam": 2, "get_libdir": [2, 8], "python_optim": [2, 8, 9, 20], "deal": [2, 7, 8, 10, 15], "sens": 2, "plain": [2, 5, 6, 13], "loop": [2, 5, 19], "autom": 2, "pipelin": [2, 22], "poisson": 2, "boltzmann": 2, "electrostat": 2, "calcul": 2, "poissonboltzmann": 2, "apb": 2, "opal": 2, "openbabel": 2, "zsi": 2, "lang": [2, 8, 11, 12, 21], "swig": [2, 21], "src_prepar": [2, 3, 5, 8, 9, 14, 16, 19, 20], "f": [2, 9, 16], "pyc": [2, 9, 20], "o": [2, 5, 20], "pyo": [2, 9, 20], "delet": [2, 14], "eappli": 2, "patch": [2, 4, 5, 6, 8, 11, 12, 18, 20, 22], "eapply_us": 2, "rm": [2, 3, 5, 9, 22], "rf": [2, 22], "python_copy_sourc": [2, 14], "python_configur": 2, "cat": [2, 5], "build_dir": [2, 3, 9, 14, 22], "build_config": 2, "eof": [2, 5], "eprefix": [2, 5, 8, 9], "max_atom": 2, "10000": 2, "build_pdb2pka": 2, "rebuild_swig": 2, "run_in_build_dir": [2, 8, 14], "python_instal": [2, 14], "cd": [2, 5, 9, 12, 22], "let": [2, 4, 8, 16, 21], "independ": [2, 4, 5, 6, 7, 14, 21], "separ": [2, 5, 6, 7, 8, 11, 14, 15, 16, 19, 22], "presum": 2, "manual": [2, 3, 6, 10, 11, 12, 18, 20], "wider": 2, "target": [2, 8, 9, 11, 12, 15, 21, 22], "rang": [2, 5, 12], "recommend": [2, 5, 7, 12, 13, 14, 15, 16, 18, 19, 21, 22], "gp": [2, 8], "daemon": [2, 8], "usb": [2, 8], "serial": [2, 5, 8, 15], "devic": [2, 8], "map": [2, 5, 6, 8, 15, 19], "client": [2, 8, 9, 11, 14], "gpsd": [2, 8], "mirror": [2, 4, 5, 6, 8, 14, 21, 22], "nongnu": [2, 8], "24": [2, 8, 19, 22], "misc": [2, 8], "pp": [2, 8], "20120407": [2, 8], "myesconsarg": [2, 8], "libdir": [2, 8, 9], "udevdir": [2, 8], "get_udevdir": [2, 8], "chrpath": [2, 8], "gpsd_user": [2, 8], "gpsd_group": [2, 8], "uucp": [2, 8], "manbuild": [2, 8], "use_scon": [2, 8], "sconstruct": [2, 8], "py2": [2, 8, 18, 22], "construct": [2, 4, 8, 21], "pkg_config": 2, "shlinkflag": 2, "destdir": [2, 8, 9, 20], "bundl": [2, 5, 12], "simpl": [2, 5, 7, 13, 14, 17], "impli": [2, 9, 11], "python_req_us": [2, 4, 5, 6, 8, 14, 21], "individu": [2, 5, 11, 19], "applic": [2, 9, 11], "had": 2, "instead": [2, 3, 5, 6, 7, 8, 9, 13, 14, 16, 18, 19, 20, 21, 22], "no_waf_libdir": 2, "ye": 2, "unit": 2, "framework": [2, 3, 5, 11, 17], "mrzechonek": 2, "tut": 2, "roughli": [2, 9, 11, 13, 18], "ldap": 2, "ldb": 2, "samba": [2, 21], "ftp": [2, 21], "pub": 2, "elibc_freebsd": 2, "libbsd": 2, "popt": 2, "talloc": [2, 21], "tevent": 2, "9": [2, 5, 10, 12, 15, 18, 20, 22], "31": [2, 15], "tdb": 2, "12": [2, 8, 15, 16, 19, 20], "nd": 2, "openldap": 2, "libxslt": 2, "waf_binari": [2, 21], "buildtool": [2, 21], "filesdir": 2, "27": [2, 8], "optional_packag": 2, "myconf": [2, 8], "rpath": 2, "modulesdir": 2, "builtin": 2, "utils_src_configur": [2, 21], "tradition": 3, "python": [3, 6, 17, 18, 19, 20], "organ": 3, "subpackag": [3, 20], "locat": [3, 5, 20], "parent": [3, 9], "directori": [3, 5, 6, 9, 11, 12, 13, 14, 16, 18, 19, 20, 22], "submodul": 3, "repres": [3, 5, 22], "attribut": [3, 10, 16], "session": [3, 22], "addnod": 3, "site": [3, 5, 6, 9, 10, 11, 16, 19, 22], "fine": [3, 12, 16], "start": [3, 4, 5, 6, 11, 12, 15, 16, 18, 22], "problemat": [3, 6, 10, 19], "top": [3, 5, 9, 10, 18, 19, 22], "level": [3, 9, 10, 11, 22], "layout": [3, 6, 13, 22], "wish": [3, 6, 22], "zope": [3, 15], "share": [3, 5], "interfac": [3, 6, 11, 15, 16], "event": [3, 11, 19], "depend": [3, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20], "far": [3, 12, 21], "concern": 3, "entir": [3, 5, 9, 10, 12, 13, 14, 18, 22], "doabl": 3, "real": [3, 19, 20, 22], "we": [3, 4, 6, 8, 11, 12, 14, 15, 17, 20], "freshli": 3, "build": [3, 9, 10, 11, 15, 16, 18, 20, 22], "abl": [3, 15], "tmp": [3, 5, 9, 19, 20, 22], "portag": [3, 5, 8, 10, 12, 14, 15, 19, 22], "python3_8": 3, "traceback": [3, 5, 22], "last": [3, 5, 16], "stdin": 3, "modulenotfounderror": 3, "No": [3, 22], "now": [3, 5, 6, 8, 13, 14, 22], "around": [3, 5, 6, 11, 12, 22], "back": [3, 6, 16, 22], "better": [3, 6, 11, 12, 13, 14, 20], "solut": [3, 15, 16, 20, 22], "unlik": [3, 5, 6, 11, 15], "tradit": 3, "act": 3, "proxi": [3, 14], "strictli": [3, 5, 6, 15, 22], "bound": [3, 11, 16], "permit": [3, 4, 5, 6, 11, 15, 22], "load": [3, 7, 9, 16, 19, 20, 22], "search": [3, 10, 15], "method": [3, 5, 11, 13, 16, 19, 20, 22], "420": 3, "newer": [3, 4, 5, 6, 11, 12, 15, 16, 20], "pkgutil": 3, "standard": [3, 4, 6, 7, 9, 10, 11, 14, 16, 22], "discourag": [3, 6], "earlier": [3, 13], "ignor": [3, 4, 5, 8, 15, 19, 22], "did": [3, 13, 16, 22], "within": [3, 5, 6, 12, 15, 17, 22], "content": [3, 5, 7], "__path__": 3, "__import__": 3, "extend_path": 3, "__name__": 3, "pkg_resourc": [3, 6], "declare_namespac": 3, "altern": [3, 5, 6, 8, 10, 16, 17, 18, 22], "pth": 3, "automat": [3, 4, 5, 6, 10, 12, 15, 18, 20, 22], "inject": [3, 21, 22], "portabl": 3, "topic": [3, 17], "exact": [3, 5, 11, 21], "detect": [3, 5, 9, 15, 22], "recogn": [3, 5, 15, 16], "lack": [3, 9, 22], "action": [3, 15, 22], "distinguish": [3, 5, 13], "veri": [3, 4, 5, 6, 9, 11, 15, 17, 18, 19, 20, 22], "through": [3, 4, 5, 6, 8, 11, 16, 19], "suspici": 3, "less": [3, 15, 22], "ruamel": 3, "miss": [3, 4, 5, 6, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20], "learn": 3, "about": [3, 5, 6, 13, 15, 22], "collid": [3, 19, 22], "namespace_packag": 3, "per": [3, 20], "regular": [3, 7, 20, 22], "python3_11": [3, 12], "r1_run_phas": 3, "r1_python_instal": [3, 5], "style": [3, 4, 5, 13, 16, 17, 19, 22], "remov": [3, 4, 5, 6, 10, 11, 13, 14, 15, 19, 20, 22], "after": [3, 6, 9, 11, 12, 13, 15, 16, 18, 20, 22], "python_compil": 3, "r1_python_compil": [3, 5], "jaraco": [3, 5, 12, 19], "extrem": [3, 5, 6], "good": [3, 11, 15, 17, 19, 22], "been": [3, 5, 6, 8, 11, 12, 13, 14, 16, 19, 20], "yet": [3, 5, 8, 11, 21], "explicit": [3, 4, 5, 6, 18, 21, 22], "rdep": 3, "sed": [3, 5, 8, 14, 15, 19, 22], "r1_src_prepar": [3, 5, 19], "histor": [3, 6, 11, 13, 16, 18, 20, 22], "process": [3, 5, 7, 12, 16, 20, 21], "retir": 3, "major": [4, 5, 6, 11, 15, 22], "avail": [4, 5, 6, 8, 11, 13, 15, 16, 17], "sqlite3": 4, "sqlite": [4, 8], "xdg": 4, "music": 4, "lollypop": 4, "adishatz": 4, "syntax": [4, 10, 11, 15, 20], "lightweight": [4, 20], "password": 4, "backend": [4, 10, 12, 13], "pwman3": 4, "mysql": [4, 14], "postgr": 4, "fulli": [4, 5, 7, 11], "solv": [4, 17], "python_gen_impl_dep": 4, "helper": [4, 5, 7, 10, 14, 21, 22], "2_7": [4, 22], "3_": 4, "travel": 4, "spulec": 4, "freezegun": [4, 19, 22], "pypi": [4, 5, 6, 8, 10, 11, 13], "dateutil": 4, "six": [4, 8, 22], "nose": [4, 22], "distutils_enable_test": [4, 5, 10, 13, 19], "ll": [4, 14], "backport": [4, 6, 10, 12], "zero": [4, 15], "argument": [4, 6, 10, 13, 16, 22], "output": [4, 5, 6, 9, 16, 20, 22], "everi": [4, 5, 6, 8, 11, 14, 15, 16, 18, 20, 22], "escap": [4, 13, 21], "quot": [4, 21], "partial": [4, 5, 9, 10, 13], "python_single_usedep": [4, 5, 13, 21], "cli": [4, 5], "black": 4, "click": 4, "fnmatch": 4, "wildcard": 4, "stdlib": [4, 13, 16], "rememb": [4, 12, 18], "pattern": [4, 12, 13, 21], "prevent": [4, 5, 11, 21, 22], "filenam": [4, 5], "expans": 4, "expand": 4, "zoneinfo": 4, "advantag": [4, 5, 7, 19, 22], "adjust": [4, 9, 11, 16], "switch": [4, 7, 9, 11, 12, 13, 15, 22], "list": [4, 5, 8, 12, 13, 19, 20, 22], "longer": [4, 6, 11, 13, 18, 22], "silent": [4, 22], "updat": [4, 6, 9, 11, 12, 16, 18], "immedi": [4, 5, 12, 21], "becam": [4, 11], "empti": [4, 5, 15, 18], "importlib_metadata": [4, 6, 15, 22], "python3_7": [4, 8], "profil": [4, 6, 15], "feasibl": [4, 11, 15], "mask": [4, 11, 12, 15], "architectur": [4, 11], "skip": [4, 8, 10, 12, 16, 20], "merg": [4, 5], "deselect": [4, 12, 19, 22], "python_test": [4, 6, 8, 9, 12, 19, 22], "epytest_deselect": [4, 12, 19], "trustm": 4, "test_request": 4, "testrequest": 4, "test_https_warn": 4, "epytest": [4, 5, 6, 8, 12, 19, 22], "outer": 4, "whole": [4, 19, 22], "convinc": [4, 22], "signific": [4, 12, 19], "tl": 4, "pull": 4, "forc": [4, 5, 6, 8, 9, 12, 13, 19, 22], "remain": [4, 11, 12, 13], "facilit": [5, 9, 18], "deriv": [5, 6], "notabl": [5, 15, 16, 18], "effici": [5, 15], "oper": [5, 11, 17, 18], "backward": [5, 11, 16], "incompat": [5, 6, 11, 16, 19, 22], "greater": [5, 7], "number": [5, 7, 12, 15, 18, 19, 20, 22], "cost": [5, 11], "flexibl": [5, 7], "wheel": [5, 10, 11, 12, 15, 19, 20], "zip": [5, 6, 18], "stage": [5, 11, 20, 22], "compil": [5, 6, 10, 11, 22], "mere": [5, 7], "imag": [5, 9, 20], "compliant": [5, 7, 18], "invok": [5, 19, 22], "popul": [5, 15], "addition": [5, 9, 11, 14], "pyproject2setuppi": [5, 6, 13], "hack": [5, 6, 7, 13], "reli": [5, 6, 11, 22], "distutils_use_pep517": [5, 13], "legal": 5, "unset": [5, 6], "By": [5, 6, 11], "2022": [5, 13, 19], "xml": [5, 6], "feel": [5, 15], "json": 5, "martinblech": 5, "xmltodict": 5, "mit": [5, 6, 22], "vast": 5, "index": [5, 10], "sdist": [5, 15, 18, 20, 22], "binari": [5, 9, 12, 16], "mechan": [5, 7, 11], "especi": [5, 7, 18, 19, 20, 22], "pregener": 5, "nodej": 5, "fetch": [5, 10, 12], "own": [5, 22], "append": [5, 14, 15, 18, 22], "uniqu": [5, 14], "suffix": [5, 15, 18, 20], "gh": [5, 22], "request": [5, 8, 10, 12, 15], "distfil": [5, 16, 18, 21], "clearli": [5, 20, 22], "tarbal": [5, 12, 22], "textual": 5, "rich": 5, "implic": 5, "cf": [5, 12], "regener": [5, 12], "anywai": [5, 16], "underli": [5, 6, 7], "txt": [5, 6, 12, 19], "ci": [5, 22], "travi": 5, "yml": 5, "grep": 5, "statement": [5, 20], "indirect": 5, "relev": [5, 6, 13, 17, 19, 22], "unnecessarili": 5, "logic": [5, 6, 12, 22], "long": [5, 11, 12], "quickli": 5, "widest": 5, "avoid": [5, 6, 8, 10, 15, 16, 17, 22], "unpredict": 5, "who": [5, 17, 22], "distutils_single_impl": [5, 7], "aim": [5, 11, 15, 17, 20], "exist": [5, 10, 11, 12, 16, 20], "rewritten": [5, 21, 22], "layer": [5, 14], "pyroot": 5, "rootpi": 5, "physic": [5, 21], "root_numpi": 5, "pytabl": 5, "termcolor": 5, "determin": [5, 6, 7, 11, 21, 22], "flit_cor": [5, 12, 20], "buildapi": 5, "maintain": [5, 10, 11, 12, 16, 19], "suggest": [5, 8, 13, 15, 17, 19, 20, 22], "tabl": [5, 12, 13, 15, 16, 19], "summar": [5, 16], "use_pep517": 5, "hatchl": 5, "jupyt": 5, "jupyter_packag": 5, "build_api": 5, "maturin": 5, "mesonpi": 5, "see": [5, 9, 16, 19, 20, 22], "below": [5, 8], "pbr": [5, 6], "pep517": [5, 20], "masonri": 5, "scikit": 5, "scikit_build_cor": 5, "build_meta": 5, "__legacy__": 5, "sip": [5, 8, 15], "sipbuild": 5, "standalon": [5, 12], "itself": [5, 6, 8, 9, 12, 15, 19], "checkout": [5, 12, 22], "abil": [5, 6], "tag": [5, 12, 18, 22], "execut": [5, 6, 7, 9, 11, 12, 13, 14, 19, 22], "143": 5, "_install_setup_requir": 5, "attr": [5, 12, 22], "131": 5, "dist": [5, 19], "dict": [5, 21], "425": 5, "_distribut": 5, "self": [5, 16, 19, 22], "292": 5, "finalize_opt": 5, "717": 5, "ep": 5, "48": 5, "infer_vers": 5, "_get_vers": 5, "config": [5, 9, 12], "148": 5, "parsed_vers": 5, "_do_pars": 5, "110": 5, "rais": [5, 16], "lookuperror": 5, "scm": 5, "unabl": [5, 15, 22], "sure": [5, 15, 19, 22], "re": [5, 8, 15, 22], "intact": 5, "git": [5, 12, 22], "folder": 5, "don": [5, 13], "t": [5, 7, 8, 11, 13], "pip": [5, 12, 22], "proj": 5, "master": [5, 22], "egg": [5, 6, 19], "setuptools_scm_pretend_vers": 5, "incomplet": 5, "pleas": [5, 6, 8, 9, 12, 15, 16, 18, 19, 20, 21, 22], "reinvent": 5, "throw": [5, 16], "overrid": [5, 9, 14, 18, 22], "pdm_build_scm_vers": 5, "loadabl": 5, "presenc": [5, 8, 19], "distutils_ext": 5, "relat": [5, 10, 12, 13, 15, 22], "cross": 5, "unless": [5, 6, 8, 15, 18], "distutils_opt": 5, "assert": [5, 10, 20], "among": [5, 17], "esetup": [5, 8], "build_ext": [5, 6, 22], "2023": 5, "even": [5, 8, 9, 11, 19, 22], "isn": 5, "worth": 5, "complex": [5, 7, 16, 18, 21], "worri": 5, "qa": [5, 6, 9, 10, 12, 17], "static": [5, 8], "write": [5, 6, 7, 12, 16, 17, 20], "hybrid": [5, 10], "expos": [5, 6, 22], "alwai": [5, 6, 8, 11, 13, 16, 17, 18, 20], "guarante": [5, 6, 10, 18], "fix": [5, 6, 10, 11, 12, 15, 16, 19, 20, 22], "taken": [5, 16, 22], "ship": [5, 20], "issu": [5, 6, 13, 15, 16, 19, 22], "frobnic": 5, "makefil": [5, 14], "jq": 5, "pyx": 5, "unresolv": 5, "regard": 5, "simultan": [5, 11, 17, 22], "link": [5, 7, 9, 16], "editor": 5, "broken": [5, 6, 19, 22], "cryptic": 5, "revers": [5, 7, 12, 15], "miscompil": 5, "panda": 5, "breakag": [5, 22], "dask": [5, 19], "29": 5, "_lib": 5, "hashtabl": 5, "_hashtabl": 5, "tslib": 5, "_tslib": 5, "13": [5, 15, 18, 19, 22], "interv": 5, "init": 5, "30": [5, 11], "convers": [5, 6], "outofboundstimedelta": 5, "localize_pydatetim": 5, "importerror": [5, 6, 10, 11, 16], "38": [5, 20], "x86_64": 5, "undefin": 5, "symbol": 5, "pandas_datetime_to_datetimestruct": 5, "easiest": [5, 15, 21], "workaround": [5, 20], "j1": 5, "origin": [5, 9, 11, 12, 16, 22], "extend": [5, 11], "introduc": [5, 11], "src_": 5, "python_": [5, 8], "_all": [5, 8], "compris": 5, "behav": [5, 8], "r1_": 5, "correspond": [5, 11, 12, 15], "python_prepare_al": [5, 19], "each": [5, 6, 7, 11, 14], "python_configure_al": 5, "python_compile_al": [5, 8], "python_test_al": 5, "python_install_al": 5, "dedic": [5, 6, 12, 14], "chang": [5, 6, 8, 9, 10, 11, 13, 14, 15, 18, 20, 22], "task": [5, 8, 12], "default_src_prepar": 5, "ez_setup": 5, "bootstrap": [5, 6, 10], "end": [5, 6, 7, 9, 11, 14, 19, 22], "dir": [5, 14], "extran": 5, "fixm": 5, "test_pytest_plugin": 5, "test_testcase_no_app": 5, "_": [5, 12, 15, 18, 22], "test_test_util": 5, "pointless": 5, "cov": [5, 19, 22], "addopt": 5, "aiohttp": [5, 19], "r1_python_prepare_al": [5, 19], "duplic": [5, 14, 22], "moment": [5, 11, 13, 15], "modif": 5, "keep": [5, 15, 17], "why": [5, 6, 10], "console_script": [5, 6], "configur": [5, 6, 8, 13, 14, 20, 22], "step": [5, 6, 7, 8, 14], "mpi": 5, "distutils_arg": [5, 13], "resourcepath": 5, "compress": 5, "manpag": 5, "distutils_enable_sphinx": [5, 8], "emak": [5, 8, 9], "strongli": [5, 6, 15], "encourag": [5, 15], "testbitvector": 5, "redefin": [5, 19], "too": [5, 11, 22], "collada": 5, "einstalldoc": [5, 8, 14], "docinto": 5, "sample_cod": 5, "docompress": 5, "pf": 5, "r1_python_install_al": 5, "main": [5, 9], "manipul": [5, 22], "arrai": 5, "futur": [5, 15, 18], "pillow": 5, "tiff": 5, "webp": 5, "dash": 5, "underscor": [5, 15, 18, 22], "boolean": 5, "disable_tiff": 5, "enable_tiff": 5, "disable_webp": 5, "enable_webp": 5, "modifi": [5, 6, 11, 15, 20, 22], "beforehand": 5, "econf": [5, 21], "paremet": 5, "come": [5, 13, 19], "theme": [5, 6, 8], "larg": [5, 12, 15, 19, 20], "text": [5, 8, 16, 22], "hard": [5, 8, 12], "across": [5, 11, 22], "To": [5, 6, 8, 9, 12, 15, 16, 19, 20, 21], "those": [5, 6, 8, 9, 19, 22], "easili": [5, 14, 19, 22], "conf": [5, 6, 20], "ext": 5, "distutils_use_setuptool": [5, 13], "color": 5, "stream": 5, "handler": 5, "log": [5, 20], "coloredlog": 5, "xolox": 5, "readthedoc": 5, "en": 5, "latest": [5, 15], "humanfriendli": 5, "expert": [5, 10, 14, 22], "uncommon": [5, 15], "third": [5, 7, 13, 20], "parti": 5, "inflect": 5, "word": 5, "jazzband": 5, "rst": 5, "linker": [5, 9], "alabast": [5, 6], "python_target": [5, 7, 8, 11, 12], "inspect": 5, "omit": [5, 15, 16], "port": [5, 8, 10], "pyseri": 5, "psf": 5, "tri": 5, "incorrect": [5, 6, 20], "assumpt": 5, "consum": [5, 6, 22], "alter": [5, 19], "distutils_dep": 5, "dependneci": 5, "r1_src_compil": 5, "r1_src_instal": 5, "collis": [5, 15, 22], "r1_src_test": [5, 22], "primari": [5, 19, 22], "alongsid": [5, 6], "libfoo": 5, "setuptools_rust": 5, "ecosystem": [5, 15, 17], "over": [5, 7, 11, 12, 19, 21, 22], "internet": [5, 10, 19], "bump": [5, 12, 15, 18], "lock": 5, "pycargoebuild": 5, "cargo_opt": 5, "crate": 5, "url": [5, 10, 11, 15, 16], "cargo_crate_uri": 5, "qa_flags_ignor": 5, "posit": [5, 15], "cflag": [5, 9, 22], "cargo_src_unpack": 5, "inflector": 5, "alias": [5, 16], "asn1": 5, "asn1_der": 5, "_rust": 5, "src_unpack": 5, "benefit": [5, 7], "cyclic": 5, "suppos": [5, 16], "overlap": 5, "machineri": 5, "op": 5, "temporari": [5, 6, 22], "venv": [5, 6, 13, 22], "toward": 5, "tree": [5, 12, 13, 20, 22], "effect": [5, 8, 11, 20], "pick": [5, 12], "up": [5, 6, 9, 11, 13, 14, 15, 17, 19, 20, 22], "hukkin": 5, "tomli": [5, 12, 15], "pythonhost": [5, 18], "py3": [5, 18, 19], "whl": [5, 18], "unzip": [5, 18], "unittest": [5, 11, 22], "deliber": 5, "unpack": [5, 18], "gpep517": [5, 18, 20], "python_newscript": [5, 9], "__main__": [5, 22], "exit": [5, 16, 20, 22], "fragment": [5, 16], "emesonarg": 5, "dlint": 5, "meson_src_configur": 5, "meson_src_compil": 5, "meson_src_test": 5, "meson_src_instal": 5, "here": [6, 8, 14, 21], "direct": [6, 14], "first": [6, 10, 11, 12, 15, 16, 19, 20, 22], "convert": [6, 8, 13], "facil": 6, "right": [6, 7], "fit": [6, 22], "pyproject2toml": 6, "misbehav": 6, "subsequ": [6, 18, 20], "post": [6, 13, 15, 18, 22], "expect": [6, 11, 16, 19, 20, 22], "sidebar": 6, "bitprophet": 6, "Their": [6, 9, 20], "possibli": [6, 22], "snippet": [6, 16, 20], "except": [6, 7, 9, 11, 12, 16], "pm": 6, "cleanli": [6, 12], "condit": [6, 10, 12, 19, 22], "leav": 6, "fallback": [6, 20], "never": [6, 11, 13, 16], "want": [6, 8, 22], "clean": [6, 11, 13], "requier": 6, "With": [6, 22], "themselv": [6, 19, 20, 22], "entry_point": [6, 19], "dictionari": [6, 21], "our": [6, 19, 22], "interest": [6, 8, 22], "gui_script": 6, "meaning": 6, "importlib": [6, 11, 22], "fall": [6, 16, 22], "remind": 6, "distutils_strict_entry_point": 6, "trigger": [6, 12, 19, 20, 22], "wrong": [6, 13, 15], "leftov": 6, "resourc": [6, 11, 12, 20], "submit": [6, 20], "suppli": 6, "heavi": 6, "thin": [6, 22], "speak": [6, 11], "known": [6, 16, 22], "limit": [6, 12, 15, 17], "address": [6, 11, 16], "definit": 6, "subdirectori": [6, 9], "interspers": [6, 20], "closest": 6, "equival": [6, 8, 9, 13, 18], "inplac": 6, "shift": [6, 11], "littl": [6, 19, 22], "throughout": 6, "2to3": 6, "distutils_in_source_build": 6, "collect": [6, 19, 22], "pypa": 6, "riscv": [6, 8, 21], "cygwin": [6, 22], "pythonpath": [6, 22], "properli": [6, 13], "distutils_install_for_test": [6, 13, 19, 22], "alik": [6, 7, 11, 13], "preserv": [6, 11, 15, 16], "home": [6, 12, 13], "went": 6, "awai": [6, 7, 18], "network": [6, 19, 22], "total": 7, "rare": [7, 9, 19, 22], "simpler": 7, "primarili": [7, 11], "involv": [7, 8, 13], "graph": [7, 11, 12], "meet": 7, "potenti": [7, 11, 15, 16, 19], "basi": 7, "occur": [7, 11, 19], "libpython": [7, 11, 16], "aforement": [7, 13, 16, 18], "foo": [7, 16], "wise": 7, "abstract": [7, 14, 18], "scon": [7, 8, 10, 20], "second": [7, 13, 20], "easier": [7, 18, 20, 22], "earli": [7, 8, 12, 19, 22], "select": [7, 8, 19, 21], "allow": [7, 22], "repeat": [7, 14, 15, 20], "model": 7, "libboost_python": 7, "python_single_target": [7, 11, 12], "Its": [7, 12, 18], "legaci": [7, 10, 13, 16, 20, 22], "power": 8, "harder": [8, 15], "ninja": [8, 15], "train": 8, "opposit": [8, 11, 13], "investig": 8, "paramet": [8, 16, 20, 22], "human": 8, "beings": 8, "socks5": 8, "ssl": 8, "certifi": [8, 15], "2017": 8, "17": 8, "chardet": [8, 22], "idna": 8, "urllib3": [8, 12], "26": 8, "pysock": 8, "cryptographi": [8, 15], "pyopenssl": 8, "14": [8, 22], "httpbin": [8, 19], "hang": 8, "continu": [8, 12, 22], "python_gen_useflag": 8, "out": [8, 9, 10, 11, 12, 13, 14, 15, 16], "toolkit": 8, "translat": [8, 18], "format": [8, 12, 15, 16, 18, 20], "subtitl": 8, "pydiff": 8, "iso": 8, "lxml": 8, "pycountri": 8, "18": 8, "levenshtein": 8, "devel": 8, "gettext": 8, "video": 8, "gaupol": 8, "riverbankcomput": 8, "intro": 8, "sip_api_major_nr": 8, "siplib": 8, "h": [8, 9, 21], "bison": 8, "flex": 8, "prepar": [8, 9, 20, 21], "bindir": 8, "incdir": 8, "python_get_includedir": [8, 9, 13], "echo": [8, 20], "distutils_all_subphase_impl": 8, "python3_5": 8, "bzip2": 8, "epydoc": 8, "eselect": 8, "elibc_glibc": 8, "sandbox": [8, 20, 22], "kernel_linux": 8, "pax": 8, "rsync": 8, "userland_gnu": 8, "coreutil": 8, "sphinx_rtd_them": 8, "practic": [8, 11, 12], "big": 8, "imagin": 8, "anymor": [8, 11], "downgrad": 8, "though": [8, 11], "resembl": [8, 19], "activ": [8, 17], "behavior": [8, 11, 16, 18], "goal": [8, 12, 22], "side": [8, 11], "someth": [8, 9, 22], "accord": [8, 18], "integr": [8, 9, 10, 11], "won": 8, "precis": [8, 9, 22], "reject": [8, 15, 16], "unsupport": [8, 11], "python_is_python3": [8, 13], "basic": [9, 10], "reus": [9, 15], "four": [9, 13, 21], "python_doex": 9, "python_newex": 9, "python_doscript": [9, 14, 21], "recurs": [9, 15, 19], "python_dohead": 9, "python_scriptinto": 9, "affect": [9, 11, 14, 18], "symlink": 9, "onto": 9, "improv": [9, 10, 11, 17], "cropgtk": 9, "sbin": 9, "pynslcd": 9, "anyth": 9, "land": 9, "my_pn": 9, "doin": 9, "libimag": 9, "env": [9, 12], "python_fix_shebang": 9, "sphinxtrain": 9, "openvpn": 9, "vulnkei": 9, "insinto": 9, "kitti": 9, "speed": 9, "nowadai": [9, 12, 13], "pypy2": [9, 11], "_feedparser_sgmllib": 9, "lib64": 9, "byte_compil": 9, "cmake_src_instal": 9, "entropi": 9, "ocassion": 9, "bad": [9, 16], "seri": 9, "getter": [9, 13, 16], "python_get_scriptdir": 9, "python_get_library_path": [9, 13], "python_get_cflag": 9, "preprocessor": 9, "pkg": 9, "python_get_lib": 9, "python_get_python_config": 9, "offset": 9, "alreadi": [9, 12, 14, 15, 16, 20, 22], "mycmakearg": [9, 13, 21], "dpython_dest": 9, "dpython_execut": 9, "dpython_include_dir": 9, "dpython_librari": 9, "cmake_src_configur": [9, 21], "pyinc": 9, "pylib": 9, "micha\u0142": 10, "g\u00f3rny": 10, "creativ": 10, "intern": 10, "prefac": 10, "life": 10, "cycl": [10, 12], "stabil": 10, "choos": [10, 11, 14], "overview": 10, "variant": [10, 11, 16, 19, 22], "flit_scm": 10, "hatch": 10, "vc": [10, 22], "pdm": [10, 13], "snapshot": [10, 22], "rust": 10, "parallel": 10, "race": 10, "command": [10, 14, 15, 19, 20, 22], "usag": [10, 18], "cargo": 10, "checklist": 10, "abort": 10, "due": [10, 12, 14, 18, 19, 20], "variat": 10, "byte": [10, 16], "queri": [10, 16], "advanc": 10, "cffi": 10, "greenlet": [10, 19], "recip": 10, "marker": [10, 22], "xdist": [10, 12, 22], "autoload": 10, "typeerror": 10, "_make_test_flaki": 10, "got": [10, 13], "unexpect": [10, 20], "rerun": 10, "importpathmismatcherror": 10, "fixtur": [10, 12], "namespac": [10, 19], "disjoint": 10, "waf": [10, 21], "tip": [10, 22], "retroact": 10, "migrat": [10, 18], "bytecod": 10, "strai": 10, "mainten": 10, "polici": 10, "co": [10, 22], "monitor": [10, 20], "routin": [10, 14], "page": [10, 16, 17], "increment": 11, "minor": [11, 22], "plan": 11, "On": 11, "hand": [11, 13], "platform": [11, 16, 18, 22], "linux_distribut": 11, "window": 11, "understood": 11, "initi": [11, 22], "enter": 11, "stabl": [11, 12, 15], "prematur": [11, 15], "beta": [11, 12], "made": [11, 13, 14, 16, 21], "regress": 11, "readi": [11, 12, 15], "dai": 11, "inconsist": [11, 15, 22], "mark": [11, 15, 19, 22], "clear": [11, 15], "depenend": 11, "repeatedli": 11, "ask": [11, 15], "push": [11, 12, 15], "forward": 11, "eventu": [11, 12], "becom": [11, 16, 19], "slowli": [11, 15], "discontinu": 11, "next": [11, 12, 15, 19], "june": 11, "juli": 11, "year": 11, "predict": [11, 21], "nears": 11, "great": 11, "obsolet": [11, 13], "vulner": 11, "break": [11, 15, 16], "revert": 11, "enum": 11, "urlsplit": 11, "sanit": [11, 16, 22], "secur": [11, 12], "abi": [11, 18], "bugfix": 11, "occasion": 11, "contrari": [11, 16], "hold": [11, 16], "subslot": 11, "fortun": 11, "late": 11, "hous": 11, "rpython": 11, "lot": [11, 15], "gc": 11, "jython": 11, "java": 11, "stand": 11, "alon": 11, "bidirect": 11, "interact": 11, "slow": [11, 19], "pace": 11, "ironpython": 11, "brython": 11, "web": 11, "javascript": 11, "dom": 11, "micropython": 11, "microcontrol": 11, "down": 11, "hardwar": 11, "tauthon": 11, "accompani": 11, "nor": [11, 17, 20], "ideal": [11, 15, 22], "minim": [11, 15, 16, 22], "funcsig": 11, "signatur": [11, 16], "afterward": [11, 14, 15, 22], "later": 11, "lzma": 11, "compet": 11, "amount": [11, 12, 22], "ipaddress": 11, "drop": [11, 16], "box": [11, 13], "hexvers": [11, 22], "0x03030000": 11, "trolliu": 11, "asyncio": [11, 19, 22], "nativ": 11, "workflow": 12, "clone": 12, "remot": [12, 15, 22], "rebas": 12, "v3": 12, "cherri": 12, "upload": 12, "mkdir": 12, "scp": 12, "precompil": [12, 20], "unusu": 12, "structur": [12, 22], "ex": 12, "Then": 12, "technic": [12, 18], "docker": 12, "binpkg": 12, "produc": [12, 15, 20], "diff": 12, "mgorni": 12, "depgraph": 12, "desc": 12, "_python_all_impl": 12, "_python_verify_pattern": 12, "_python_set_impl": 12, "_python_impl_match": 12, "python_pkg_dep": 12, "gpyutil": [12, 15], "circular": 12, "eas": [12, 15], "temporarili": [12, 13], "20": [12, 18], "pwd": 12, "round": 12, "remaind": 12, "pydant": 12, "test_comparison": 12, "test_close_to_now_": 12, "lenient": 12, "unblock": 12, "100": 12, "40": [12, 20], "emerg": [12, 20], "previous": 12, "reinstal": 12, "batch": [12, 20], "focus": 12, "reenabl": [12, 19], "obsolesc": 12, "announc": 12, "mail": [12, 15], "proce": 12, "track": [12, 15], "progress": 12, "show": 12, "sign": [12, 15], "effort": 12, "revis": [12, 15], "hint": [12, 22], "_python_historical_impl": 12, "statu": 12, "dead": 12, "face": [12, 22], "goe": [12, 22], "unbundl": 12, "obligatori": [12, 15], "baselin": 12, "ones": 12, "chosen": 12, "fewest": 12, "vendor": [12, 13], "februari": 13, "gross": 13, "serv": 13, "placehold": 13, "transit": [13, 15], "period": [13, 15], "ban": 13, "python_multi_usedep": 13, "instanc": [13, 16, 18], "know": [13, 16, 22], "given": 13, "repoman": 13, "pkgcheck": [13, 15], "tell": 13, "chose": 13, "reorder": 13, "desir": [13, 16, 20, 22], "scan": [13, 15], "unmatch": 13, "trial": 13, "stuff": 13, "thing": [13, 17, 19], "privat": 13, "python_export": 13, "python_wrapper_setup": 13, "python_gen_usedep": 13, "mydistutilsarg": 13, "renam": [13, 15, 16, 18, 20], "cleanup": 13, "python_gen": 13, "march": 13, "grab": [13, 20], "python_get": 13, "python_includedir": 13, "python_libpath": 13, "dpython3_include_dir": 13, "dpython3_librari": 13, "sundri": 13, "stop": [13, 16, 18], "realli": [13, 15, 19, 22], "ugli": 13, "sole": 13, "uppercas": [13, 15, 16, 18], "fourth": 13, "cruft": 13, "short": [13, 19], "evalu": 13, "januari": 13, "safe": 13, "streamlin": 13, "unfortun": [13, 15, 16, 19, 20, 22], "inde": 13, "foundat": 14, "fionet": 14, "psql": 14, "cach": 14, "sourceforg": [14, 21], "replic": 14, "tgz": 14, "libcangji": 14, "cangjian": 14, "i18n": 14, "eautoreconf": [14, 16], "econf_sourc": 14, "la": 14, "multibuild": 14, "unnecessari": [14, 15, 21, 22], "implicit": [14, 20, 22], "libtool": 14, "buggi": 14, "canva": 14, "widget": 14, "gtk": 14, "cairo": 14, "2d": 14, "draw": 14, "goocanva": 14, "subdir": 14, "am": 14, "gnome2_src_prepar": 14, "gnome2_src_configur": 14, "gnome2_src_instal": 14, "sub_instal": 14, "gi": 14, "_overridesdir": 14, "outsid": [14, 21], "3_6": [14, 22], "3_7": [14, 22], "qemu": 14, "kernel": 14, "machin": [14, 20], "userland": 14, "kvm": 14, "qemu_python_instal": 14, "vmxcap": 14, "qmp": 14, "ga": 14, "publish": 15, "503": 15, "dot": [15, 18], "hyphen": 15, "charact": [15, 18], "insensit": 15, "letter": [15, 18], "turn": [15, 22], "lowercas": [15, 18], "crucial": 15, "conform": [15, 18], "conflict": 15, "bugzilla": 15, "illustr": 15, "flask": [15, 18], "babel": 15, "github3": 15, "sphinx_pytest": 15, "tab": [15, 22], "titl": [15, 18], "idea": [15, 22], "423": 15, "redirect": 15, "canon": [15, 18], "id": 15, "bear": 15, "mind": 15, "doubt": 15, "reserv": 15, "reach": 15, "eol": [15, 16], "proactiv": 15, "anticip": 15, "soon": 15, "wide": [15, 22], "newli": 15, "risk": 15, "team": 15, "manpow": 15, "member": 15, "u": 15, "gemato": 15, "carri": 15, "histori": 15, "rss": 15, "comprehens": 15, "opml": 15, "followup": 15, "suscept": 15, "simpli": [15, 16, 17, 22], "confus": [15, 19], "sync": [15, 19], "m": [15, 19, 20, 22], "cx": 15, "freez": 15, "patchelf": 15, "openapi": 15, "spec": [15, 16], "60": 15, "59": 15, "62": 15, "pin": 15, "httpcore": 15, "15": 15, "httpx": 15, "23": [15, 22], "sphobjinv": 15, "28": 15, "date": [15, 17, 20, 22], "pend": 15, "pip3": 15, "dirti": 15, "equal": [15, 22], "filetyp": 15, "mercuri": 15, "node": 15, "semver": 15, "pyqt": 15, "builder": 15, "pyqt5": 15, "pyqtwebengin": 15, "rout": 15, "dev20220522": 15, "selenium": 15, "141": 15, "sphinxcontrib": 15, "websupport": 15, "dev20220515": 15, "uri": 15, "watchfil": 15, "watchgod": 15, "dev0": 15, "tag_build": 15, "compar": [15, 16], "tempest": 15, "oslo": 15, "stestr": 15, "versioningit": 15, "wstool": 15, "mistak": [15, 20], "think": 16, "ve": 16, "hit": 16, "me": 16, "18_p9": 16, "13_p3": 16, "10_p3": 16, "9_p2": 16, "4_p1": 16, "urllib": 16, "pars": 16, "exploit": 16, "verbatim": 16, "attempt": [16, 20, 22], "worm": 16, "danger": 16, "worst": [16, 22], "unpars": 16, "django": [16, 22], "pr": 16, "14349": 16, "impact": [16, 20], "urlpars": 16, "nurl": 16, "parseresult": 16, "scheme": 16, "netloc": 16, "param": [16, 19], "badurl": 16, "what": 16, "attributeerror": 16, "492": 16, "decor": [16, 22], "async": [16, 19], "def": [16, 19, 22], "yield": 16, "await": 16, "sleep": 16, "callabl": 16, "mostli": [16, 17], "getfullargspec": 16, "p1": 16, "p2": 16, "kp3": 16, "kp4": 16, "kp5": 16, "arg": 16, "kwarg": 16, "argspec": 16, "vararg": 16, "fullargspec": 16, "varkw": 16, "kwonlyarg": 16, "kwonlydefault": 16, "annot": 16, "tupl": 16, "int": 16, "str": 16, "float": 16, "k6": 16, "k7": 16, "k8": 16, "One": [16, 22], "prototyp": 16, "bar": 16, "pretti": 16, "stringif": 16, "automak": 16, "16": 16, "wrongli": [16, 20, 22], "exec_prefix": 16, "met": 16, "pkg_config_path": 16, "python_cflag": 16, "python_lib": 16, "man": 16, "autoreconf": 16, "intend": [16, 20, 22], "easi": [16, 20, 22], "get_python_inc": 16, "get_path": 16, "platinclud": 16, "get_python_lib": 16, "purelib": 16, "platlib": 16, "platstdlib": 16, "todai": 16, "encodebyt": 16, "decodebyt": 16, "ought": 16, "unicod": 16, "version_info": 16, "b64_encodebyt": 16, "b64encod": 16, "b64decod": 16, "insert": 16, "newlin": 16, "encod": [16, 22], "length": 16, "until": 16, "emb": 16, "lpython3": 16, "7m": 16, "novemb": 16, "tomlkit": 16, "edit": 16, "wherea": [16, 18], "input": 16, "tomldecodeerror": 16, "d1": 16, "in1": 16, "in2": 16, "d2": 16, "d3": 16, "rb": 16, "python_vers": 16, "insist": 16, "incompatibilit": 16, "consider": 16, "dump": [16, 22], "tomli_w": 16, "wb": 16, "beyond": 17, "reliabl": [17, 22], "deep": 17, "beginn": 17, "peopl": 17, "suboptim": 17, "improp": 17, "fill": 17, "gap": 17, "welcom": 17, "small": 18, "adapt": 18, "frequent": [18, 19, 22], "hash": 18, "2e": 18, "36e46173a288c1c40853ffdb712c67e0e022df0e1ce50b7b1b50066b74d4": 18, "inconveni": 18, "settl": 18, "pytag": 18, "625": 18, "440": 18, "transform": 18, "contigu": 18, "babelex": 18, "flask_babelex": 18, "predat": 18, "minu": 18, "abitag": 18, "platformtag": 18, "cp39": 18, "427": 18, "alphanumer": 18, "w": 18, "left": 18, "_alpha": 18, "_beta": 18, "_p": 18, "pypi_no_norm": 18, "overwritten": 18, "execnet": 18, "c0459b92bc4a42b08281e69b8802d24c5d3415d4": 18, "pypi_pn": 18, "pypi_sdist_url": 18, "markup": 18, "overriden": 18, "prebuilt": 18, "pypi_wheel_url": 18, "aid": 18, "ensurepip": 18, "pypi_wheel_filenam": 18, "synopsi": 18, "parametr": 19, "epytest_ignor": 19, "test_client": 19, "test_gener": 19, "test_filenam": 19, "test_transport": 19, "test_transport_work": 19, "eventlet": 19, "test_contextvar": 19, "test_leak": 19, "might": 19, "intent": 19, "Not": [19, 22], "instabl": 19, "unstabl": 19, "discret": 19, "decid": 19, "justifi": 19, "semi": 19, "random": 19, "multiprocess": 19, "worksteal": 19, "finish": 19, "reschedul": 19, "worker": 19, "fast": 19, "lengthi": 19, "bottleneck": 19, "flake8": [19, 22], "01": 19, "chanc": 19, "experienc": 19, "insuffici": 19, "nest": 19, "envvar": 19, "pytest_disable_plugin_autoload": 19, "pytest_plugin": 19, "comma": 19, "looponfail": 19, "pytest_fork": 19, "flaki": [19, 22], "rerunfailur": 19, "supposedli": 19, "twice": 19, "_pytest": [19, 22], "pathlib": [19, 22], "posixpath": 19, "discoveri": [19, 20, 22], "rel": [19, 20, 22], "signifi": 19, "event_loop": 19, "freezer": 19, "mocker": 19, "captur": [19, 22], "summari": 19, "asgiref": 19, "135": 19, "test_loc": 19, "test_sync": 19, "test_sync_contextvar": 19, "deprecationwarn": 19, "main_event_loop": 19, "get_event_loop": 19, "filterwarn": 19, "fatal": [19, 22], "_____________________": 19, "______________________": 19, "577": 19, "asgitest": 19, "testcas": 19, "583": 19, "test_wrapped_case_is_collect": 19, "interrupt": 19, "world": 19, "catch": [20, 22], "elog": 20, "portage_elog_class": 20, "optim": 20, "size": 20, "oo": 20, "docstr": 20, "store": 20, "disk": [20, 22], "permiss": 20, "uninstal": 20, "violat": 20, "auxiliari": 20, "readabl": [20, 22], "trimesh": 20, "__pycache__": 20, "blender_boolean": 20, "310": 20, "opt": 20, "notic": 20, "blueman": 20, "constant": 20, "deviceclass": 20, "sdp": 20, "tmpl": 20, "pair": 20, "docbook": 20, "35": 20, "36": 20, "changelog": 20, "qawarn": 20, "wait": 20, "find_packag": 20, "exclud": 20, "ident": 20, "artifact": 20, "reduc": 20, "footprint": 20, "isol": 20, "faster": 20, "poetry_cor": 20, "smaller": 20, "prolong": 20, "tend": 20, "plot": 21, "voacap": 21, "propag": 21, "qsl": 21, "hz1jw": 21, "pythonprop": 21, "basemap": 21, "gtk2": 21, "context": [21, 22], "doubl": 21, "energi": 21, "yoda": 21, "hepforg": 21, "use_en": 21, "pyext": 21, "extra_opt": 21, "give": 21, "sound": 21, "signal": [21, 22], "composit": 21, "csound": 21, "fordfrog": 21, "dbuild_python_interfac": 21, "dbuild_python_opcod": 21, "superset": 21, "arab": 21, "arabey": 21, "duali": 21, "pyduali": 21, "dict2db": 21, "trans2arab": 21, "arabic2tran": 21, "whitelist": 22, "mozilla": 22, "bleach": 22, "webencod": 22, "univers": 22, "detector": 22, "hypothesi": 22, "bottom": 22, "pre": 22, "cmd": 22, "cmd2": 22, "colorama": 22, "pyperclip": 22, "wcwidth": 22, "column": 22, "80": 22, "fact": 22, "3_8": 22, "argpars": 22, "argcomplet": 22, "fish": 22, "tcsh": 22, "displai": 22, "appeas": 22, "usng": 22, "xvfb": 22, "server": 22, "virtx": 22, "nonfat": 22, "termin": 22, "domain": 22, "firstli": 22, "nosetest": 22, "secondli": 22, "strict": 22, "thirdli": 22, "wholli": 22, "spew": 22, "irrelev": 22, "seem": 22, "ceas": 22, "downstream": 22, "how": 22, "statist": 22, "pep8": 22, "pycodestyl": 22, "close": 22, "preced": 22, "area": 22, "____________________": 22, "systemd": 22, "test_login": 22, "234": 22, "578": 22, "_importtestmodul": 22, "mod": 22, "import_path": 22, "fspath": 22, "importmod": 22, "524": 22, "import_modul": 22, "module_nam": 22, "127": 22, "_bootstrap": 22, "_gcd_import": 22, "frozen": 22, "1014": 22, "991": 22, "_find_and_load": 22, "975": 22, "_find_and_load_unlock": 22, "671": 22, "_load_unlock": 22, "rewrit": 22, "170": 22, "exec_modul": 22, "__dict__": 22, "login": 22, "r2": 22, "discov": [], "pyarg": 22, "guess": 22, "quick": 22, "mayb": 22, "eunittest": 22, "aris": 22, "confirm": 22, "whom": 22, "myself": 22, "subtl": 22, "lead": 22, "But": 22, "bewar": 22, "unexpectedli": 22, "test_start_params_bug": 22, "xfail": 22, "statsmodel": 22, "tsa": 22, "test_arima": 22, "horrend": 22, "space": 22, "mayhem": 22, "5a": 22, "test_null_byt": 22, "skipif": 22, "0x03000000": 22, "unconditioanlli": 22, "test_babel_with_language_": 22, "test_build_latex": 22, "test_polyglossia_with_language_": 22, "altogeth": 22, "replai": 22, "devmanu": 22, "explan": 22, "connect": 22, "pygit2": 22, "no_network": 22, "properti": 22, "test_network": 22, "allow_test": 22, "unclear": 22, "backtrac": 22, "pluggi": 22, "cachedir": 22, "pytest_cach": 22, "rootdir": 22, "var": 22, "sabyenc": 22, "configfil": 22, "item": 22, "test_decod": 22, "test_crc_pickl": 22, "54": 22, "test_empty_size_pickl": 22, "0x00007f748bc47740": 22, "testsupport": 22, "74": 22, "sabyenc3_wrapp": 22, "119": 22, "180": 22, "pytest_pyfunc_cal": 22, "caller": 22, "187": 22, "_multical": 22, "temp": 22, "2934": 22, "66": 22, "vv": 22, "34": 22, "timeout": 22, "25": 22, "sabyenc3": 22, "596": 22, "decode_usenet_chunk": 22, "pybytearray_check": 22, "pylist_getitem": 22, "py_input_list": 22, "lp": 22, "0x00007fb5db746740": 22, "73": 22, "117": 22, "87": 22, "lambda": 22, "runpi": 22, "85": 22, "_run_cod": 22, "193": 22, "_run_module_as_main": 22, "reproduc": 22, "ubuntu": 22, "dndebug": 22, "leak": 22, "o0": 22, "isort": 22, "distutils_pep517_instal": 22, "destin": 22, "cp": 22, "pushd": 22, "null": 22, "popd": 22, "caution": 22, "advis": 22, "frozendict": 22, "lookup": 22, "ppp": [], "mislead": 22}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"python": [0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 22], "ani": [0, 8], "r1": [0, 2, 5, 6, 7, 8, 13, 14, 21], "build": [0, 1, 2, 5, 6, 7, 8, 12, 13, 14, 21], "time": [0, 2, 7, 8, 14, 21], "depend": [0, 1, 2, 4, 5, 8, 14, 19, 21, 22], "basic": [0, 1, 5, 21, 22], "us": [0, 2, 3, 4, 5, 6, 7, 8, 14, 19, 21, 22], "uncondit": [0, 21], "condit": [0, 2, 4, 5, 14, 21], "addit": [0, 5, 14], "multipl": [0, 11, 21], "set": [0, 8], "common": [1, 9], "python_compat": 1, "python_dep": 1, "python_required_us": 1, "environ": [1, 22], "packag": [1, 2, 3, 4, 5, 6, 7, 12, 14, 15, 16, 18, 20, 21, 22], "The": [1, 5], "most": 1, "type": 1, "find": 1, "list": [1, 15, 16], "from": [1, 13], "system": [1, 2, 5, 6, 12], "integr": [2, 5], "written": 2, "meson": 2, "scon": 2, "extra": [2, 22], "singl": [2, 5, 7, 13, 21], "impl": [2, 7, 14, 21], "instal": [2, 5, 6, 9, 14, 15, 20, 21, 22], "pure": [2, 14], "multi": [2, 7, 14], "hybrid": [2, 21], "waf": 2, "advanc": [3, 4], "concept": [3, 6], "namespac": 3, "hierarch": 3, "structur": 3, "determin": 3, "whether": 3, "ar": [3, 20], "ad": [3, 12, 15, 22], "new": [3, 12, 15], "gentoo": [3, 10], "legaci": [3, 5, 6, 18], "request": 4, "flag": 4, "interpret": [4, 8, 11, 12], "version": [4, 11, 15, 18], "cffi": 4, "greenlet": 4, "option": [4, 5], "test": [4, 5, 6, 15, 19, 20, 22], "suit": 4, "rust": [4, 5], "distutil": [5, 6, 7, 8, 16], "standard": 5, "pep": [5, 13, 20, 22], "517": [5, 13, 20, 22], "mode": [5, 22], "sourc": [5, 6, 18], "archiv": [5, 18], "variant": 5, "setuptools_scm": 5, "flit_scm": 5, "hatch": 5, "vc": 5, "pdm": 5, "backend": [5, 20], "snapshot": 5, "extens": [5, 22], "c": [5, 22], "cython": 5, "parallel": [5, 19], "race": 5, "sub": 5, "phase": [5, 22], "function": [5, 9], "python_prepar": 5, "python_configur": 5, "python_compil": 5, "python_test": 5, "python_instal": 5, "pass": 5, "argument": [5, 19], "setup": 5, "py": 5, "call": 5, "custom": [5, 18, 22], "command": 5, "enabl": 5, "document": [5, 20], "via": [5, 15], "sphinx": 5, "autodoc": 5, "without": [5, 16], "usag": [5, 8], "cargo": 5, "manual": [5, 14, 21], "build_dir": 5, "d": 5, "non": 5, "differ": [6, 8, 18], "variat": 6, "distutils_use_setuptool": 6, "setuptool": [6, 20], "entri": 6, "point": 6, "other": [6, 19], "runtim": [6, 7, 21], "pyproject": 6, "toml": [6, 16], "base": [6, 16, 19], "project": [6, 15], "In": 6, "v": [6, 7], "out": 6, "befor": [6, 22], "choos": [7, 22], "between": 7, "eclass": [7, 12, 18], "overview": 7, "first": 7, "expert": [8, 19], "partial": 8, "restrict": 8, "implement": [8, 9, 11, 12, 15], "python_setup": 8, "disjoint": 8, "api": [8, 20], "regular": 8, "combin": 8, "helper": [9, 18], "fix": 9, "shebang": 9, "script": 9, "byte": [9, 20], "compil": [9, 20], "modul": [9, 20], "queri": 9, "inform": 9, "guid": [10, 13], "content": 10, "indic": 10, "tabl": 10, "life": 11, "cycl": 11, "stabil": 11, "guarante": 11, "altern": 11, "support": [11, 15], "backport": 11, "mainten": [12, 15], "note": 12, "specif": 12, "cpython": 12, "patchset": 12, "pypi": [12, 15, 18, 22], "profil": 12, "chang": [12, 16], "port": [12, 15, 16], "initi": 12, "remov": [12, 16], "prepar": 12, "bootstrap": 12, "migrat": 13, "old": 13, "python_usedep": 13, "syntax": 13, "eapi": [13, 15], "7": 13, "8": [13, 16], "autotool": 14, "name": [15, 18, 19], "polici": 15, "2": 15, "which": 15, "exist": 15, "can": 15, "co": 15, "maintain": 15, "monitor": 15, "releas": 15, "feed": 15, "check": [15, 20], "pip": 15, "repologi": 15, "routin": 15, "outdat": 15, "gpy": 15, "verifi": 15, "dep": 15, "tip": 16, "retroact": 16, "bpo43882": 16, "urlsplit": 16, "now": 16, "strip": 16, "lf": 16, "cr": 16, "ht": 16, "charact": 16, "3": 16, "11": 16, "gener": [16, 18], "coroutin": 16, "asyncio": 16, "inspect": 16, "getargspec": 16, "formatargspec": 16, "10": 16, "configur": 16, "No": 16, "1": 16, "found": [16, 19], "sysconfig": 16, "deprec": [16, 20], "9": 16, "base64": 16, "encodestr": 16, "decodestr": 16, "config": 16, "pkg": 16, "longer": 16, "librari": 16, "default": 16, "replac": 16, "tomllib": 16, "tomli": 16, "fallback": 16, "w": 16, "prefac": 17, "url": 18, "modern": 18, "distribut": 18, "filenam": 18, "binari": 18, "match": 18, "fetch": 18, "wheel": 18, "pytest": [19, 22], "recip": 19, "skip": [19, 22], "marker": 19, "path": 19, "avoid": 19, "runner": [19, 22], "xdist": 19, "run": [19, 22], "plugin": 19, "explicitli": 19, "disabl": 19, "automat": 19, "autoload": 19, "entir": 19, "typeerror": 19, "_make_test_flaki": 19, "got": 19, "an": 19, "unexpect": 19, "keyword": 19, "rerun": 19, "importpathmismatcherror": 19, "fixtur": 19, "warn": [19, 20], "qa": 20, "improv": 20, "report": 20, "portag": 20, "bytecod": 20, "relat": 20, "strai": 20, "top": 20, "level": 20, "file": [20, 22], "site": 20, "exampl": 20, "poetri": 20, "flit": 20, "buildapi": 20, "masonri": 20, "build_meta": 20, "__legacy__": 20, "A": 21, "why": 22, "i": 22, "import": 22, "distutils_enable_test": 22, "case": 22, "more": 22, "virtualx": 22, "correct": 22, "undesir": 22, "miss": 22, "importerror": 22, "checklist": 22, "deal": 22, "failur": 22, "problemat": 22, "requir": 22, "internet": 22, "access": 22, "abort": 22, "due": 22, "assert": 22}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 58}, "alltitles": {"python-any-r1 \u2014 build-time dependency": [[0, "python-any-r1-build-time-dependency"]], "Basic use for unconditional Python": [[0, "basic-use-for-unconditional-python"], [21, "basic-use-for-unconditional-python"]], "Dependencies": [[0, "dependencies"], [5, "dependencies"], [14, "dependencies"], [21, "dependencies"]], "Conditional Python use": [[0, "conditional-python-use"], [14, "conditional-python-use"], [21, "conditional-python-use"]], "Additional conditional dependencies": [[0, "additional-conditional-dependencies"]], "Multiple sets of conditional dependencies": [[0, "multiple-sets-of-conditional-dependencies"]], "Common basics": [[1, "common-basics"]], "PYTHON_COMPAT": [[1, "python-compat"]], "PYTHON_DEPS and PYTHON_REQUIRED_USE": [[1, "python-deps-and-python-required-use"]], "Python environment": [[1, "python-environment"]], "Dependencies in Python packages": [[1, "dependencies-in-python-packages"]], "The most common dependency types": [[1, "the-most-common-dependency-types"]], "Finding dependency lists from build systems": [[1, "finding-dependency-lists-from-build-systems"]], "Integration with build systems written in Python": [[2, "integration-with-build-systems-written-in-python"]], "Meson": [[2, "meson"]], "SCons": [[2, "scons"]], "Build-time use with no extra dependencies": [[2, "build-time-use-with-no-extra-dependencies"]], "Build-time use with extra dependencies": [[2, "build-time-use-with-extra-dependencies"]], "Single-impl package": [[2, "single-impl-package"], [2, "id1"]], "Single-impl package with conditional Python install": [[2, "single-impl-package-with-conditional-python-install"]], "Pure Python multi-impl package": [[2, "pure-python-multi-impl-package"]], "Hybrid python-r1 + SCons package": [[2, "hybrid-python-r1-scons-package"]], "waf": [[2, "waf"]], "Build-time use": [[2, "build-time-use"]], "Advanced concepts": [[3, "advanced-concepts"]], "Namespace packages": [[3, "namespace-packages"]], "Hierarchical package structure": [[3, "hierarchical-package-structure"]], "Namespace package structure": [[3, "namespace-package-structure"]], "Determining whether namespaces are used": [[3, "determining-whether-namespaces-are-used"]], "Adding new namespace packages to Gentoo": [[3, "adding-new-namespace-packages-to-gentoo"]], "Legacy namespace packages in Gentoo": [[3, "legacy-namespace-packages-in-gentoo"]], "Advanced dependencies": [[4, "advanced-dependencies"]], "Requesting USE flags on the Python interpreter": [[4, "requesting-use-flags-on-the-python-interpreter"]], "Dependencies conditional to Python version": [[4, "dependencies-conditional-to-python-version"]], "Dependencies on CFFI and greenlet": [[4, "dependencies-on-cffi-and-greenlet"]], "Optional test suite dependencies on Rust packages": [[4, "optional-test-suite-dependencies-on-rust-packages"]], "distutils-r1 \u2014 standard Python build systems": [[5, "distutils-r1-standard-python-build-systems"]], "The PEP 517 and legacy modes": [[5, "the-pep-517-and-legacy-modes"]], "Basic use (PEP 517 mode)": [[5, "basic-use-pep-517-mode"]], "Source archives": [[5, "source-archives"]], "python-single-r1 variant": [[5, "python-single-r1-variant"]], "PEP 517 build systems": [[5, "pep-517-build-systems"]], "setuptools_scm (flit_scm, hatch-vcs, pdm-backend) and snapshots": [[5, "setuptools-scm-flit-scm-hatch-vcs-pdm-backend-and-snapshots"]], "Packages installing extensions (C, Rust\u2026)": [[5, "packages-installing-extensions-c-rust"]], "Packages using Cython": [[5, "packages-using-cython"]], "Parallel build race conditions": [[5, "parallel-build-race-conditions"]], "Sub-phase functions": [[5, "sub-phase-functions"]], "python_prepare": [[5, "python-prepare"]], "python_configure": [[5, "python-configure"]], "python_compile": [[5, "python-compile"]], "python_test": [[5, "python-test"]], "python_install": [[5, "python-install"]], "Passing arguments to setup.py": [[5, "passing-arguments-to-setup-py"]], "Calling custom setup.py commands": [[5, "calling-custom-setup-py-commands"]], "Enabling tests": [[5, "enabling-tests"]], "Building documentation via Sphinx": [[5, "building-documentation-via-sphinx"]], "Basic documentation with autodoc": [[5, "basic-documentation-with-autodoc"]], "Additional Sphinx extensions": [[5, "additional-sphinx-extensions"]], "Sphinx without autodoc or extensions": [[5, "sphinx-without-autodoc-or-extensions"]], "Packages with optional Python build system usage": [[5, "packages-with-optional-python-build-system-usage"]], "Packages with Rust extensions (using Cargo)": [[5, "packages-with-rust-extensions-using-cargo"]], "Installing packages without a PEP 517 build backend": [[5, "installing-packages-without-a-pep-517-build-backend"]], "Installing packages manually into BUILD_DIR": [[5, "installing-packages-manually-into-build-dir"]], "Installing packages manually into D": [[5, "installing-packages-manually-into-d"]], "Integrating with a non-PEP 517 build system": [[5, "integrating-with-a-non-pep-517-build-system"]], "distutils-r1 legacy concepts": [[6, "distutils-r1-legacy-concepts"]], "Different build system variations": [[6, "different-build-system-variations"]], "DISTUTILS_USE_SETUPTOOLS": [[6, "distutils-use-setuptools"]], "distutils and setuptools build systems": [[6, "distutils-and-setuptools-build-systems"]], "Setuptools\u2019 entry points": [[6, "setuptools-entry-points"]], "Other runtime uses of setuptools": [[6, "other-runtime-uses-of-setuptools"]], "pyproject.toml-based projects": [[6, "pyproject-toml-based-projects"]], "In-source vs out-of-source builds": [[6, "in-source-vs-out-of-source-builds"]], "Installing the package before testing": [[6, "installing-the-package-before-testing"]], "Choosing between Python eclasses": [[7, "choosing-between-python-eclasses"]], "Overview": [[7, "overview"]], "Build time vs runtime use": [[7, "build-time-vs-runtime-use"]], "Single-impl vs multi-impl": [[7, "single-impl-vs-multi-impl"]], "Python-first packages (distutils-r1 eclass)": [[7, "python-first-packages-distutils-r1-eclass"]], "Expert python-r1 usage": [[8, "expert-python-r1-usage"]], "Partially restricting Python implementation": [[8, "partially-restricting-python-implementation"]], "Restricting interpreters for python_setup": [[8, "restricting-interpreters-for-python-setup"]], "Disjoint build dependencies (any-r1 API)": [[8, "disjoint-build-dependencies-any-r1-api"]], "Using regular python-r1 API": [[8, "using-regular-python-r1-api"]], "Using any-r1 API with python-r1": [[8, "using-any-r1-api-with-python-r1"]], "Different sets of build-time dependencies": [[8, "different-sets-of-build-time-dependencies"]], "Using any-r1 API with distutils-r1": [[8, "using-any-r1-api-with-distutils-r1"]], "Combining any-r1 API with implementation restrictions": [[8, "combining-any-r1-api-with-implementation-restrictions"]], "Common helper functions": [[9, "common-helper-functions"]], "Install helpers": [[9, "install-helpers"]], "Fixing shebangs on installed scripts": [[9, "fixing-shebangs-on-installed-scripts"]], "Byte-compiling Python modules": [[9, "byte-compiling-python-modules"]], "Querying the implementation information": [[9, "querying-the-implementation-information"]], "Gentoo Python Guide": [[10, "gentoo-python-guide"]], "Contents:": [[10, null]], "Indices and tables": [[10, "indices-and-tables"]], "Python interpreters": [[11, "python-interpreters"]], "Versions of Python": [[11, "versions-of-python"]], "Life cycle of a Python implementation": [[11, "life-cycle-of-a-python-implementation"]], "Stability guarantees of Python implementations": [[11, "stability-guarantees-of-python-implementations"]], "Alternative Python implementations": [[11, "alternative-python-implementations"]], "Support for multiple implementations": [[11, "support-for-multiple-implementations"]], "Backports": [[11, "backports"]], "Maintenance of Python implementations": [[12, "maintenance-of-python-implementations"]], "Notes specific to Python interpreters": [[12, "notes-specific-to-python-interpreters"]], "CPython patchsets": [[12, "cpython-patchsets"]], "PyPy": [[12, "pypy"]], "Adding a new Python implementation": [[12, "adding-a-new-python-implementation"]], "Eclass and profile changes": [[12, "eclass-and-profile-changes"], [12, "id1"]], "Porting initial packages": [[12, "porting-initial-packages"]], "Removing a Python implementation": [[12, "removing-a-python-implementation"]], "Preparation": [[12, "preparation"]], "Python build system bootstrap": [[12, "python-build-system-bootstrap"]], "Migration guides": [[13, "migration-guides"]], "Migrating from old PYTHON_USEDEP syntax in python-single-r1": [[13, "migrating-from-old-python-usedep-syntax-in-python-single-r1"]], "Migrating from EAPI 7 to EAPI 8": [[13, "migrating-from-eapi-7-to-eapi-8"]], "Migrating to PEP 517 builds": [[13, "migrating-to-pep-517-builds"]], "python-r1 \u2014 multi-impl packages": [[14, "python-r1-multi-impl-packages"]], "Manual install": [[14, "manual-install"], [21, "manual-install"]], "Pure Python autotools package": [[14, "pure-python-autotools-package"]], "Additional build-time Python use": [[14, "additional-build-time-python-use"]], "Python package maintenance": [[15, "python-package-maintenance"]], "Package name policy": [[15, "package-name-policy"]], "Support for Python 2": [[15, "support-for-python-2"]], "Which implementations to test new packages for?": [[15, "which-implementations-to-test-new-packages-for"]], "Adding new Python implementations to existing packages": [[15, "adding-new-python-implementations-to-existing-packages"]], "Which packages can be (co-)maintained by the Python project?": [[15, "which-packages-can-be-co-maintained-by-the-python-project"]], "Porting packages to a new EAPI": [[15, "porting-packages-to-a-new-eapi"]], "Monitoring new package versions": [[15, "monitoring-new-package-versions"]], "PyPI release feeds": [[15, "pypi-release-feeds"]], "Checking via pip": [[15, "checking-via-pip"]], "Repology": [[15, "repology"]], "Routine checks on installed Python packages": [[15, "routine-checks-on-installed-python-packages"]], "pip check": [[15, "pip-check"]], "pip list --outdated": [[15, "pip-list-outdated"]], "gpy-verify-deps": [[15, "gpy-verify-deps"]], "Porting tips": [[16, "porting-tips"]], "Retroactive changes": [[16, "retroactive-changes"]], "bpo43882: urlsplit now strips LF, CR and HT characters": [[16, "bpo43882-urlsplit-now-strips-lf-cr-and-ht-characters"]], "Python 3.11": [[16, "python-3-11"]], "Generator-based coroutine removal (asyncio.coroutine)": [[16, "generator-based-coroutine-removal-asyncio-coroutine"]], "inspect.getargspec() and inspect.formatargspec() removal": [[16, "inspect-getargspec-and-inspect-formatargspec-removal"]], "Python 3.10": [[16, "python-3-10"]], "configure: No package \u2018python-3.1\u2019 found": [[16, "configure-no-package-python-3-1-found"]], "distutils.sysconfig deprecation": [[16, "distutils-sysconfig-deprecation"]], "Python 3.9": [[16, "python-3-9"]], "base64.encodestring / base64.decodestring removal": [[16, "base64-encodestring-base64-decodestring-removal"]], "Python 3.8": [[16, "python-3-8"]], "python-config and pkg-config no longer list Python library by default": [[16, "python-config-and-pkg-config-no-longer-list-python-library-by-default"]], "Replacing the toml package": [[16, "replacing-the-toml-package"]], "Porting to tomllib/tomli without toml fallback": [[16, "porting-to-tomllib-tomli-without-toml-fallback"]], "Porting to tomllib/tomli with toml fallback": [[16, "porting-to-tomllib-tomli-with-toml-fallback"]], "Porting to tomli-w": [[16, "porting-to-tomli-w"]], "Preface": [[17, "preface"]], "pypi \u2014 helper eclass for PyPI archives": [[18, "pypi-helper-eclass-for-pypi-archives"]], "PyPI URLs": [[18, "pypi-urls"]], "Modern and legacy URLs": [[18, "modern-and-legacy-urls"]], "Source distribution filenames": [[18, "source-distribution-filenames"]], "Binary distribution filenames": [[18, "binary-distribution-filenames"]], "Packages with matching name and version": [[18, "packages-with-matching-name-and-version"]], "Package with a different name": [[18, "package-with-a-different-name"]], "Customizing the generated URL": [[18, "customizing-the-generated-url"]], "Fetching wheels": [[18, "fetching-wheels"]], "QA checks and warnings": [[20, "qa-checks-and-warnings"]], "Improved QA warning reporting in Portage": [[20, "improved-qa-warning-reporting-in-portage"]], "Compiled bytecode-related warnings": [[20, "compiled-bytecode-related-warnings"]], "Modules are not byte-compiled": [[20, "modules-are-not-byte-compiled"]], "Stray compiled bytecode": [[20, "stray-compiled-bytecode"]], "Stray top-level files in site-packages": [[20, "stray-top-level-files-in-site-packages"]], "Example for test packages installed by setuptools": [[20, "example-for-test-packages-installed-by-setuptools"]], "Documentation files installed by Poetry": [[20, "documentation-files-installed-by-poetry"]], "Deprecated PEP 517 backends": [[20, "deprecated-pep-517-backends"]], "flit.buildapi": [[20, "flit-buildapi"]], "poetry.masonry.api": [[20, "poetry-masonry-api"]], "setuptools.build_meta:__legacy__": [[20, "setuptools-build-meta-legacy"]], "python-single-r1 \u2014 single-impl packages": [[21, "python-single-r1-single-impl-packages"]], "A hybrid: build-time + conditional runtime": [[21, "a-hybrid-build-time-conditional-runtime"]], "Multiple USE conditions": [[21, "multiple-use-conditions"]], "pytest recipes": [[19, "pytest-recipes"]], "Skipping tests based on markers": [[19, "skipping-tests-based-on-markers"]], "Skipping tests based on paths/names": [[19, "skipping-tests-based-on-paths-names"]], "Avoiding the dependency on pytest-runner": [[19, "avoiding-the-dependency-on-pytest-runner"]], "Using pytest-xdist to run tests in parallel": [[19, "using-pytest-xdist-to-run-tests-in-parallel"]], "Avoiding dependencies on other pytest plugins": [[19, "avoiding-dependencies-on-other-pytest-plugins"]], "Explicitly disabling automatic pytest plugins": [[19, "explicitly-disabling-automatic-pytest-plugins"]], "Expert: disabling plugin autoloading entirely": [[19, "expert-disabling-plugin-autoloading-entirely"]], "TypeError: _make_test_flaky() got an unexpected keyword argument \u2018reruns\u2019": [[19, "typeerror-make-test-flaky-got-an-unexpected-keyword-argument-reruns"]], "ImportPathMismatchError": [[19, "importpathmismatcherror"]], "fixture \u2018\u2026\u2019 not found": [[19, "fixture-not-found"]], "Warnings": [[19, "warnings"]], "Tests in Python packages": [[22, "tests-in-python-packages"]], "Why is running tests important?": [[22, "why-is-running-tests-important"]], "Using distutils_enable_tests": [[22, "using-distutils-enable-tests"]], "Basic use case": [[22, "basic-use-case"]], "Adding more test dependencies": [[22, "adding-more-test-dependencies"]], "Installing the package before running tests": [[22, "installing-the-package-before-running-tests"]], "Customizing the test phase": [[22, "customizing-the-test-phase"]], "Customizing the test phase for pytest": [[22, "customizing-the-test-phase-for-pytest"]], "Running tests with virtualx": [[22, "running-tests-with-virtualx"]], "Choosing the correct test runner": [[22, "choosing-the-correct-test-runner"]], "Undesirable test dependencies": [[22, "undesirable-test-dependencies"]], "Missing test files in PyPI packages": [[22, "missing-test-files-in-pypi-packages"]], "ImportErrors for C extensions": [[22, "importerrors-for-c-extensions"]], "Checklist for dealing with test failures": [[22, "checklist-for-dealing-with-test-failures"]], "Skipping problematic tests": [[22, "skipping-problematic-tests"]], "Tests requiring Internet access": [[22, "tests-requiring-internet-access"]], "Tests aborting (due to assertions)": [[22, "tests-aborting-due-to-assertions"]], "Installing extra dependencies in test environment (PEP 517 mode)": [[22, "installing-extra-dependencies-in-test-environment-pep-517-mode"]]}, "indexentries": {"distutils_enable_tests": [[22, "index-0"]], "epytest": [[22, "index-1"]], "virtx": [[22, "index-2"]]}})
\ No newline at end of file
+Search.setIndex({"docnames": ["any", "basic", "buildsys", "concept", "depend", "distutils", "distutils-legacy", "eclass", "expert-multi", "helper", "index", "interpreter", "interpreter-maintenance", "migration", "multi", "package-maintenance", "porting", "preface", "pypi", "pytest", "qawarn", "single", "test"], "filenames": ["any.rst", "basic.rst", "buildsys.rst", "concept.rst", "depend.rst", "distutils.rst", "distutils-legacy.rst", "eclass.rst", "expert-multi.rst", "helper.rst", "index.rst", "interpreter.rst", "interpreter-maintenance.rst", "migration.rst", "multi.rst", "package-maintenance.rst", "porting.rst", "preface.rst", "pypi.rst", "pytest.rst", "qawarn.rst", "single.rst", "test.rst"], "titles": ["python-any-r1 \u2014 build-time dependency", "Common basics", "Integration with build systems written in Python", "Advanced concepts", "Advanced dependencies", "distutils-r1 \u2014 standard Python build systems", "distutils-r1 legacy concepts", "Choosing between Python eclasses", "Expert python-r1 usage", "Common helper functions", "Gentoo Python Guide", "Python interpreters", "Maintenance of Python implementations", "Migration guides", "python-r1 \u2014 multi-impl packages", "Python package maintenance", "Porting tips", "Preface", "pypi \u2014 helper eclass for PyPI archives", "pytest recipes", "QA checks and warnings", "python-single-r1 \u2014 single-impl packages", "Tests in Python packages"], "terms": {"The": [0, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "eclass": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 17, 19, 21, 22], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21], "enabl": [0, 3, 4, 6, 7, 8, 10, 11, 12, 14, 15, 19, 20, 22], "support": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 13, 14, 16, 17, 18, 19, 20, 21, 22], "packag": [0, 8, 9, 10, 11, 13, 17, 19], "need": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "pure": [0, 5, 6, 7, 8, 10, 11, 15, 18, 22], "refer": [0, 1, 5, 9, 11, 13, 14, 17, 18, 20, 21], "5": [0, 2, 5, 7, 8, 9, 11, 14, 15, 16, 18, 19, 21, 22], "defin": [0, 1, 5, 6, 11, 21, 22], "featur": [0, 4, 5, 6, 7, 8, 11, 12, 13, 20, 21, 22], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "pkg_setup": [0, 1, 2, 8, 21], "phase": [0, 1, 3, 6, 7, 8, 9, 10, 13, 14, 15, 20, 21], "It": [0, 1, 3, 4, 5, 6, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "normal": [0, 3, 5, 8, 9, 14, 15, 16, 18, 20, 21, 22], "call": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 13, 14, 16, 18, 19, 20, 21, 22], "python_setup": [0, 1, 2, 10, 13, 14, 21], "function": [0, 1, 4, 6, 7, 8, 10, 11, 13, 14, 16, 18, 20, 21, 22], "order": [0, 1, 2, 4, 5, 7, 9, 12, 13, 14, 15, 21, 22], "find": [0, 2, 3, 4, 6, 14, 15, 19, 20, 22], "suitabl": [0, 7, 9, 14, 17, 18], "interpret": [0, 1, 2, 5, 6, 7, 9, 10, 13, 14, 15, 16, 19, 20, 21], "global": [0, 1, 5, 8, 13, 14, 19, 21, 22], "environ": [0, 5, 6, 10, 11, 13, 14, 16, 19, 21], "appropri": [0, 2, 4, 5, 6, 7, 9, 11, 12, 15, 18, 21, 22], "mean": [0, 1, 2, 5, 7, 8, 11, 15, 16, 18, 19, 21, 22], "most": [0, 3, 5, 6, 9, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22], "trivial": [0, 5, 12, 16, 21], "an": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 18, 20, 21, 22], "autotool": [0, 5, 6, 10, 16, 21], "compat": [0, 1, 2, 4, 5, 6, 7, 9, 11, 13, 16, 18, 21], "system": [0, 3, 7, 8, 9, 10, 13, 14, 15, 17, 18, 20, 21, 22], "could": [0, 2, 3, 5, 6, 8, 9, 15, 16, 18, 20, 21, 22], "look": [0, 1, 6, 8, 16, 19, 20, 21, 22], "like": [0, 2, 4, 5, 6, 8, 11, 15, 16, 20, 21, 22], "follow": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22], "copyright": [0, 2, 4, 5, 6, 8, 14, 21, 22], "1999": [0, 2, 4, 5, 6, 8, 14, 21, 22], "2020": [0, 2, 4, 5, 6, 8, 13, 14, 16, 21, 22], "gentoo": [0, 1, 2, 4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22], "author": [0, 2, 4, 5, 6, 8, 9, 10, 12, 14, 20, 21, 22], "distribut": [0, 2, 4, 5, 6, 8, 14, 15, 16, 17, 20, 21, 22], "under": [0, 1, 2, 3, 4, 5, 6, 8, 14, 21, 22], "term": [0, 2, 4, 5, 6, 8, 14, 21, 22], "gnu": [0, 2, 4, 5, 6, 8, 14, 21, 22], "gener": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 21, 22], "public": [0, 2, 4, 5, 6, 8, 11, 14, 21, 22], "licens": [0, 2, 4, 5, 6, 8, 10, 14, 20, 21, 22], "v2": [0, 2, 4, 5, 6, 8, 14, 21, 22], "eapi": [0, 2, 4, 5, 6, 8, 10, 14, 21, 22], "7": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "python_compat": [0, 2, 4, 5, 6, 8, 10, 11, 12, 14, 15, 21, 22], "python3_": [0, 1, 2, 4, 5, 6, 8, 12, 21, 22], "6": [0, 1, 2, 4, 5, 6, 8, 11, 12, 14, 15, 16, 19, 21, 22], "8": [0, 1, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 15, 20, 21, 22], "inherit": [0, 1, 2, 4, 5, 6, 7, 8, 9, 13, 14, 16, 18, 19, 21, 22], "descript": [0, 2, 4, 5, 6, 8, 14, 21, 22], "A": [0, 1, 2, 4, 6, 7, 8, 10, 11, 15, 19, 20], "repositori": [0, 5, 6, 12, 15, 20], "data": [0, 2, 5, 6, 9, 16, 21, 22], "file": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 21], "describ": [0, 5, 6, 8, 9, 15, 18, 20], "media": [0, 2, 8], "player": [0, 4], "capabl": 0, "homepag": [0, 2, 4, 5, 6, 8, 14, 15, 21, 22], "http": [0, 2, 4, 5, 6, 8, 9, 12, 14, 16, 18, 20, 21, 22], "cgit": 0, "freedesktop": 0, "org": [0, 2, 4, 5, 6, 8, 9, 12, 14, 18, 20, 21, 22], "info": [0, 5, 6, 19], "src_uri": [0, 2, 4, 5, 6, 8, 14, 15, 18, 21, 22], "www": [0, 2, 8, 14, 21], "softwar": [0, 1, 4, 8, 14, 15, 16, 22], "pn": [0, 2, 4, 5, 6, 8, 9, 14, 18, 21, 22], "p": [0, 2, 4, 5, 6, 8, 14, 18, 19, 21, 22], "tar": [0, 2, 4, 5, 6, 8, 12, 14, 18, 21, 22], "gz": [0, 2, 4, 5, 6, 8, 14, 18, 21, 22], "bsd": [0, 2, 5, 6, 8, 14, 21], "slot": [0, 2, 4, 5, 6, 8, 11, 14, 21, 22], "0": [0, 2, 4, 5, 6, 8, 10, 11, 12, 14, 15, 16, 19, 20, 21, 22], "keyword": [0, 2, 4, 5, 6, 8, 10, 14, 16, 21, 22], "alpha": [0, 2, 4, 5, 6, 8, 11, 12, 14, 21, 22], "amd64": [0, 2, 4, 5, 6, 8, 12, 14, 21, 22], "arm": [0, 2, 4, 5, 6, 8, 21, 22], "arm64": [0, 2, 4, 5, 6, 8, 14, 21, 22], "hppa": [0, 2, 4, 5, 6, 8, 14, 21, 22], "ia64": [0, 2, 4, 5, 6, 8, 14, 21, 22], "mip": [0, 2, 4, 5, 6, 8, 21, 22], "ppc": [0, 2, 4, 5, 6, 8, 14, 21, 22], "ppc64": [0, 2, 4, 5, 6, 8, 14, 21, 22], "sh": [0, 2, 4, 5, 6, 8, 12, 21, 22], "sparc": [0, 2, 4, 5, 6, 8, 14, 21, 22], "x86": [0, 2, 4, 5, 6, 8, 12, 14, 21, 22], "ius": [0, 2, 4, 5, 8, 14, 21, 22], "rdepend": [0, 1, 2, 4, 5, 6, 8, 13, 14, 21, 22], "virtual": [0, 2, 8, 14], "udev": 0, "208": 0, "bdepend": [0, 1, 2, 4, 5, 6, 8, 12, 14, 19, 21, 22], "python_dep": [0, 2, 4, 5, 8, 10, 14, 21], "pkgconfig": [0, 2, 8, 14], "ebuild": [0, 1, 4, 5, 6, 7, 9, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22], "demonstr": [0, 5, 21], "absolut": [0, 1, 9, 15, 21, 22], "minimum": [0, 15, 21], "work": [0, 3, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 19, 21, 22], "code": [0, 1, 3, 5, 6, 7, 8, 9, 11, 13, 14, 16, 19, 20, 21, 22], "onli": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "three": [0, 1, 3, 9, 13, 16, 20], "highlight": [0, 16, 21], "line": [0, 3, 5, 13, 15, 16, 21, 22], "ar": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22], "specif": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 22], "plu": [0, 21], "implicitli": [0, 3, 5, 8, 12, 20, 21, 22], "export": [0, 1, 2, 5, 21], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22], "other": [0, 1, 2, 3, 4, 5, 7, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 20, 21, 22], "declar": [0, 1, 2, 5, 6, 8, 9, 11, 14, 19, 21, 22], "ensur": [0, 1, 4, 5, 6, 9, 12, 14, 20, 21], "would": [0, 2, 4, 5, 7, 11, 12, 14, 15, 16, 18, 21, 22], "built": [0, 1, 3, 5, 6, 7, 8, 11, 12, 14, 16, 17, 18, 21, 22], "against": [0, 4, 7, 9, 11, 12, 14, 15, 21, 22], "implement": [0, 1, 3, 4, 5, 6, 7, 10, 14, 16, 17, 19, 20, 21, 22], "specifi": [0, 1, 2, 5, 6, 7, 8, 14, 15, 18, 19, 20, 21, 22], "get": [0, 5, 6, 12, 13, 18, 19, 22], "replac": [0, 5, 6, 10, 11, 13, 15, 18], "python_gen_any_dep": [0, 2, 8], "match": [0, 2, 4, 5, 6, 8, 9, 10, 11, 12, 15, 20, 21], "python_check_dep": [0, 2, 8], "accept": [0, 1, 4, 5, 6, 9, 12, 15, 16, 18, 19, 20], "templat": [0, 2, 4, 5, 15, 20, 21], "where": [0, 3, 5, 6, 9, 11, 12, 14, 16, 18, 21, 22], "liter": [0, 4, 21], "python_usedep": [0, 2, 4, 5, 8, 10, 12, 14, 15, 19, 21, 22], "substitut": [0, 4, 21], "requir": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13, 14, 15, 16, 19, 20, 21], "all": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "same": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "least": [0, 5, 8, 15, 20, 22], "one": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 16, 17, 19, 20, 21, 22], "test": [0, 1, 2, 3, 7, 8, 10, 11, 12, 13, 16, 17, 18, 21], "whether": [0, 1, 4, 5, 6, 7, 15, 19, 21, 22], "question": [0, 1, 5, 7, 14, 18, 19, 22], "In": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "particular": [0, 1, 4, 5, 6, 11, 15, 18, 22], "verifi": [0, 1, 5, 6, 8, 13, 20, 22], "branch": [0, 11, 16, 22], "wa": [0, 4, 5, 11, 12, 13, 16, 18, 19, 20, 22], "satisfi": [0, 1, 8, 12], "were": [0, 2, 3, 8, 11, 12, 13, 16, 18, 20], "instal": [0, 1, 3, 4, 7, 8, 10, 11, 12, 13, 16, 19], "current": [0, 5, 6, 11, 12, 13, 15, 19, 22], "For": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22], "purpos": [0, 5, 6, 9, 12, 14, 16, 18, 21, 22], "variabl": [0, 1, 5, 6, 8, 13, 14, 16, 18, 19, 21, 22], "string": [0, 1, 4, 5, 8, 14, 16, 21], "best": [0, 7, 12, 16, 17, 18, 19], "explain": [0, 1, 6, 20], "exampl": [0, 4, 5, 6, 7, 8, 9, 11, 12, 15, 16, 17, 18, 19, 21, 22], "meson": [0, 4, 5, 7, 10, 15], "manag": [0, 4, 6, 8, 9, 18, 20, 22], "cinnamon": 0, "fork": [0, 11, 12, 15, 22], "from": [0, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "nautilu": 0, "develop": [0, 1, 7, 11, 15, 17, 19, 22], "linuxmint": 0, "com": [0, 2, 4, 5, 6, 8, 12, 14, 16, 18, 22], "project": [0, 1, 5, 8, 9, 10, 14, 17, 18, 19, 20, 22], "html": [0, 5, 8, 20, 22], "github": [0, 2, 4, 5, 6, 8, 12, 14, 17, 18, 21, 22], "nemo": 0, "archiv": [0, 2, 4, 10, 21, 22], "pv": [0, 2, 4, 5, 8, 14, 18, 21, 22], "gpl": [0, 2, 4, 8, 14, 21], "2": [0, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 14, 16, 17, 18, 20, 21, 22], "lgpl": [0, 2, 14, 21, 22], "fdl": [0, 21], "1": [0, 2, 3, 4, 5, 6, 8, 9, 15, 18, 19, 20, 21, 22], "dev": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22], "polib": 0, "pygobject": [0, 14], "3": [0, 2, 3, 4, 5, 6, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 19, 20, 21, 22], "python_has_vers": [0, 2, 8], "provid": [0, 1, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 22], "its": [0, 1, 2, 5, 6, 7, 8, 11, 12, 15, 16, 18, 19, 22], "both": [0, 1, 3, 4, 5, 6, 7, 8, 12, 13, 16, 17, 18, 19, 20, 21, 22], "have": [0, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "dep": [0, 5, 13, 19], "true": [0, 1, 2, 5, 6, 8, 12, 13, 16, 22], "them": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 12, 15, 16, 18, 19, 20, 21, 22], "while": [0, 2, 3, 4, 5, 6, 7, 8, 11, 12, 14, 15, 16, 17, 19, 20, 21, 22], "which": [0, 6, 9, 10, 11, 14, 22], "wrapper": [0, 1, 6, 9, 13, 14, 22], "help": [0, 15, 17, 22], "take": [0, 1, 2, 4, 5, 6, 7, 8, 9, 15, 16, 19, 22], "singl": [0, 1, 4, 6, 9, 10, 14, 15, 16, 18, 19, 20, 22], "option": [0, 1, 3, 6, 8, 10, 13, 15, 18, 19, 20, 21, 22], "class": [0, 1, 5, 16, 19], "flag": [0, 1, 5, 7, 8, 9, 10, 11, 12, 14, 15, 21, 22], "more": [0, 1, 3, 4, 5, 7, 9, 11, 12, 13, 15, 16, 18, 19, 20, 21], "similarli": [0, 1, 5, 15, 18], "has_vers": [0, 4, 12], "root": [0, 5, 6, 13, 21, 22], "can": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 18, 19, 20, 21, 22], "b": [0, 18], "d": [0, 2, 3, 8, 9, 14, 18, 19], "r": [0, 2, 5, 9, 16, 22], "idepend": 0, "pdepend": [0, 2, 8, 12], "pass": [0, 6, 8, 9, 10, 12, 13, 16, 18, 19, 22], "assum": [0, 1, 4, 5, 6, 9, 13, 15, 21, 22], "verbos": [0, 15, 20, 22], "print": [0, 5, 8, 14, 19, 22], "check": [0, 5, 6, 9, 10, 12, 13, 16, 17, 22], "perform": [0, 2, 5, 6, 11, 12, 14, 18, 20, 21, 22], "result": [0, 5, 6, 8, 9, 12, 15, 16, 17, 18, 19, 20, 22], "return": [0, 2, 8, 16, 20, 22], "success": 0, "found": [0, 1, 3, 5, 6, 9, 10, 11, 12, 15, 18, 20, 22], "fals": [0, 2, 5, 8, 12, 15, 16], "otherwis": [0, 6, 7, 8, 9, 19], "note": [0, 1, 3, 4, 5, 6, 8, 9, 10, 11, 13, 14, 15, 16, 18, 19, 20, 21, 22], "invoc": [0, 5, 19, 20], "chain": 0, "abov": [0, 1, 6, 8, 12, 13, 15, 20, 21, 22], "also": [0, 1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22], "written": [0, 1, 5, 7, 10, 11, 16, 19], "import": [0, 1, 3, 4, 5, 6, 7, 10, 11, 12, 13, 14, 15, 16, 18, 19], "understand": 0, "correctli": [0, 1, 5, 6, 7, 9, 11, 12, 13, 15, 16, 22], "exactli": [0, 7, 18], "furthermor": [0, 2, 5], "combin": [0, 2, 3, 5, 10, 11, 12, 13, 16, 17, 18, 19, 21, 22], "must": [0, 1, 2, 3, 5, 6, 7, 8, 11, 15, 16, 19, 21, 22], "onc": [0, 5, 8, 11, 12, 20], "invalid": [0, 16], "split": [0, 5, 13, 16], "some": [0, 1, 2, 3, 4, 5, 6, 7, 8, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "necessari": [0, 2, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 21, 22], "particularli": [0, 5, 6, 7, 11, 13, 15, 19, 22], "common": [0, 3, 5, 6, 7, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 21, 22], "suit": [0, 1, 2, 5, 6, 7, 8, 9, 10, 12, 19, 22], "case": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21], "wrap": [0, 5, 6, 9, 13, 22], "programm": [0, 15], "complet": [0, 5, 16, 17, 20, 22], "bash": [0, 5, 7, 8, 9, 21, 22], "scop": 0, "releas": [0, 2, 8, 11, 12, 14, 16, 20], "download": [0, 2, 5, 8, 14], "xz": [0, 4, 12, 14, 21], "s390": [0, 2, 4, 5, 6, 8, 21, 22], "linux": [0, 2, 4, 5, 6, 8, 9, 14, 16, 21, 22], "maco": [0, 4, 6, 8, 21, 22], "x64": [0, 4, 6, 8, 21, 22], "m68k": [0, 4, 5, 6, 8, 21, 22], "mint": 0, "solari": [0, 6, 21, 22], "sparc64": [0, 6], "restrict": [0, 2, 4, 5, 10, 19, 20, 21, 22], "app": [0, 2, 4, 5, 8, 12, 14, 15, 18, 20, 22], "shell": [0, 8, 14, 22], "4": [0, 3, 5, 8, 9, 10, 11, 12, 14, 15, 22], "3_p30": 0, "pexpect": [0, 22], "pytest": [0, 4, 5, 8, 10, 12, 15, 18], "r1_pkg_setup": [0, 2, 21], "anoth": [0, 8, 9, 14, 15, 16, 18, 19, 20, 22], "possibl": [0, 2, 4, 5, 8, 9, 12, 14, 16, 17, 19, 22], "uncondition": [0, 1, 2, 4, 5, 6, 8, 11, 20, 21, 22], "condition": [0, 1, 2, 4, 5, 11, 12, 14, 15, 19, 21], "simplest": [0, 2, 5, 7, 14, 19, 22], "wai": [0, 5, 6, 9, 12, 13, 15, 19, 22], "achiev": [0, 8, 11, 16], "block": [0, 8, 13, 22], "express": [0, 8, 13, 21], "similar": [0, 2, 5, 14, 15, 20, 21, 22], "cmake": [0, 5, 6, 21], "qt": 0, "bind": [0, 2, 5, 8, 14, 21], "telepathi": 0, "bu": 0, "protocol": [0, 2, 21], "dbu": [0, 2], "hardest": 0, "differ": [0, 1, 3, 5, 9, 10, 11, 15, 16, 19, 22], "do": [0, 1, 3, 4, 5, 6, 8, 9, 11, 12, 14, 15, 16, 17, 18, 19, 20, 21, 22], "error": [0, 2, 5, 9, 12, 13, 16, 19, 20, 22], "prone": 0, "move": [0, 4, 5, 12], "insid": [0, 1, 3, 5, 6, 9, 14, 18, 19, 21, 22], "python3_6": [0, 2, 4, 8, 14], "gnome2": [0, 4, 14], "gobject": 0, "librari": [0, 1, 2, 3, 4, 8, 9, 11, 14, 21, 22], "access": [0, 10, 11, 19], "secret": 0, "servic": [0, 15, 22], "api": [0, 2, 5, 9, 10, 11, 13, 14, 16], "wiki": [0, 4, 8, 9, 12, 14, 17], "gnome": [0, 4, 14], "libsecret": 0, "apach": [0, 2, 4, 5, 8, 22], "introspect": 0, "fail": [0, 1, 2, 5, 8, 9, 11, 12, 16, 19, 22], "bug": [0, 5, 6, 12, 20, 22], "655482": 0, "required_us": [0, 1, 2, 4, 5, 7, 8, 13, 14, 21], "mock": [0, 4, 8, 11, 12, 19, 22], "fi": [0, 2, 4, 5, 8, 12, 14, 21], "host": 0, "variou": [1, 5, 6, 9, 13, 16], "r1": [1, 4, 9, 10, 12, 15, 18, 20, 22], "try": [1, 6, 8, 9, 11, 16, 22], "design": [1, 21], "you": [1, 2, 3, 4, 5, 6, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "probabl": [1, 6, 8, 13, 21], "us": [1, 9, 10, 11, 12, 13, 15, 16, 18, 20], "than": [1, 2, 3, 5, 6, 7, 8, 11, 12, 15, 16, 17, 18, 19, 20, 22], "so": [1, 4, 5, 6, 11, 12, 15, 18, 19, 21, 22], "worthwhil": [1, 22], "shortli": 1, "bit": [1, 12, 17], "well": [1, 5, 7, 8, 11, 13, 15, 18, 20], "non": [1, 6, 7, 9, 12, 14, 16, 18, 19, 22], "obviou": [1, 22], "between": [1, 3, 5, 8, 10, 11, 13, 16, 18], "befor": [1, 4, 5, 8, 9, 10, 12, 14, 16], "thei": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 22], "valid": [1, 5, 8, 15, 16, 20, 22], "valu": [1, 5, 6, 9, 13, 18, 19, 22], "pythonx_i": 1, "cpython": [1, 4, 5, 9, 11, 13, 18, 20], "x": [1, 5, 11, 16, 19, 22], "y": [1, 2, 11, 16], "pypy3": [1, 4, 5, 6, 8, 11, 12, 13, 15, 19, 20, 22], "typic": [1, 14], "ani": [1, 2, 3, 5, 6, 7, 10, 14, 16, 18, 19, 20, 22], "respons": [1, 5], "explicitli": [1, 5, 7, 8, 10, 13, 18, 20, 22], "put": [1, 8], "correct": [1, 5, 6, 7, 9, 10, 15, 18, 19, 20, 21], "meant": [1, 13, 20], "consist": [1, 6, 9, 12, 13, 14, 15], "cover": [1, 5, 6, 13, 22], "time": [1, 3, 4, 5, 6, 9, 10, 11, 12, 13, 15, 16, 17, 18, 19, 20, 22], "runtim": [1, 2, 3, 5, 8, 10, 13, 14, 15], "form": [1, 4, 12, 17, 18], "doe": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 14, 15, 16, 18, 19, 20, 22], "appli": [1, 4, 5, 6, 7, 12, 15, 19, 20, 21, 22], "distutil": [1, 3, 4, 9, 10, 13, 14, 18, 19, 20, 21, 22], "assign": 1, "default": [1, 2, 5, 6, 7, 8, 9, 11, 13, 14, 15, 18, 19, 20, 21, 22], "commonli": [1, 2, 3, 5, 6, 9, 11, 18], "concept": [1, 5, 10], "state": 1, "enforc": [1, 4, 5, 7, 8, 11, 19, 22], "whenev": [1, 4, 9, 11, 14, 15, 19, 21, 22], "run": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 17, 18, 20], "two": [1, 5, 6, 8, 9, 11, 13, 16, 19, 20, 21], "being": [1, 3, 5, 6, 8, 9, 11, 12, 15, 16, 18, 19, 22], "epython": [1, 2, 5, 8, 9, 12, 13, 19, 22], "contain": [1, 3, 4, 5, 6, 7, 12, 13, 15, 20], "": [1, 2, 4, 5, 6, 7, 8, 9, 13, 14, 15, 16, 18, 19, 20, 21, 22], "basenam": 1, "identifi": 1, "e": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "g": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "python3": [1, 3, 5, 9, 11, 13, 15, 16, 19, 20, 22], "10": [1, 4, 5, 8, 10, 11, 12, 15, 20], "final": [1, 2, 4, 5, 9, 11, 13, 16, 21, 22], "path": [1, 3, 5, 6, 9, 10, 12, 13, 16, 18, 20, 22], "usr": [1, 2, 3, 5, 7, 8, 9, 19, 20, 22], "bin": [1, 2, 5, 7, 8, 9, 12, 21, 22], "full": [1, 2, 4, 5, 13, 22], "should": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22], "embed": [1, 2, 9, 11], "program": [1, 2, 5, 6, 11, 16, 19, 22], "shebang": [1, 10, 11, 22], "spawn": 1, "dure": [1, 5, 6, 7, 12, 13, 19, 20], "prefer": [1, 4, 5, 7, 8, 11, 12, 14, 15, 19, 22], "rather": [1, 5, 6, 8, 12, 15, 16, 17, 19, 20, 22], "bypass": 1, "virtualenv": [1, 6, 12, 22], "creat": [1, 3, 4, 5, 6, 12, 13, 15, 16, 20, 22], "pep": [1, 3, 6, 7, 10, 12, 15, 16, 18], "517": [1, 3, 6, 7, 10, 12], "mode": [1, 6, 7, 10, 13, 16, 20], "mai": [1, 3, 4, 5, 6, 8, 11, 12, 13, 15, 16, 18, 19, 22], "caus": [1, 4, 5, 8, 9, 13, 15, 18, 19, 20, 22], "failur": [1, 5, 10, 11, 12, 19], "modul": [1, 3, 4, 5, 6, 7, 8, 10, 11, 14, 15, 16, 19, 22], "previou": [1, 5, 12, 13, 16], "version": [1, 2, 3, 5, 6, 7, 8, 10, 12, 13, 16, 17, 19, 22], "just": [1, 6, 11, 13, 22], "resolv": [1, 5, 6, 16, 19, 22], "problem": [1, 3, 4, 5, 6, 8, 12, 15, 16, 17, 19, 20, 22], "pythonn": 1, "tool": [1, 2, 5, 8, 14, 15, 16, 20, 22], "etc": 1, "via": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 19, 21, 22], "exec": [1, 8, 9, 11, 12, 22], "hardcod": [1, 12, 19], "either": [1, 2, 5, 8, 9, 11, 13, 19, 20, 22], "establish": [1, 13, 22], "local": [1, 2, 3, 4, 5, 8, 9, 12, 13, 14, 19, 20, 21, 22], "scope": [1, 4, 5, 8, 13, 19, 22], "multi": [1, 5, 10, 13, 21], "impl": [1, 5, 10, 13], "python_foreach_impl": [1, 2, 8, 14], "sub": [1, 3, 7, 8, 10, 22], "setup": [1, 3, 6, 7, 10, 13, 15, 19, 20, 22], "done": [1, 3, 5, 6, 8, 9, 14, 15, 19, 22], "directli": [1, 5, 6, 7, 9, 11, 13, 16, 19, 22], "section": [1, 5, 6, 7, 12, 15, 16, 18, 20, 22], "focu": [1, 7, 12, 14], "often": [1, 5, 12, 22], "extern": [1, 2, 5, 6, 7, 11, 12, 22], "languag": [1, 2, 5, 11, 15], "usual": [1, 3, 4, 5, 7, 11, 13, 15, 16, 19, 20, 22], "rule": [1, 2, 6, 7, 8, 13, 14, 15, 18], "classifi": [1, 6], "categori": [1, 15], "present": [1, 5, 6, 15, 20], "script": [1, 2, 5, 6, 7, 8, 10, 11, 12, 14, 16, 21], "usabl": [1, 11], "whose": [1, 5, 18], "therefor": [1, 2, 5, 6, 7, 8, 11, 12, 15, 19, 20, 22], "howev": [1, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 15, 16, 18, 19, 20, 21, 22], "modern": [1, 4, 5, 6, 11, 12, 19, 22], "base": [1, 4, 5, 7, 8, 10, 12, 14, 15, 21, 22], "entri": [1, 5, 12, 19, 20], "point": [1, 5, 11, 13, 15, 19, 22], "refus": [1, 4, 11], "place": [1, 6, 11, 12, 18, 20], "special": [1, 3, 4, 5, 6, 16, 22], "subclass": 1, "extra": [1, 5, 6, 10], "still": [1, 5, 6, 8, 11, 13, 16, 18, 20, 22], "meaningfulli": 1, "handl": [1, 4, 5, 6, 8, 13, 14, 15, 22], "gracefulli": [1, 4, 8], "subset": [1, 4, 5, 7, 8, 11, 12, 14, 15, 20, 22], "without": [1, 4, 10, 11, 13, 14, 15, 18, 19, 22], "There": [1, 3, 5, 8, 9, 15, 16, 19, 20, 22], "multipl": [1, 3, 4, 5, 7, 10, 14, 15, 17, 19, 20, 22], "approach": [1, 5, 7, 8, 12, 16, 22], "ad": [1, 5, 7, 10, 11, 13, 14, 19], "consid": [1, 2, 3, 5, 6, 7, 8, 11, 12, 14, 15, 16, 20], "light": 1, "enough": [1, 11, 22], "inform": [1, 3, 6, 10, 13, 16, 18, 20, 22], "messag": [1, 5, 22], "pkg_postinst": [1, 5], "util": [1, 2, 4, 5, 7, 8, 9, 12, 15, 19, 20, 21, 22], "optfeatur": 1, "cheap": 1, "rebuild": [1, 6, 11], "includ": [1, 2, 3, 4, 5, 6, 7, 9, 11, 12, 15, 16, 17, 18, 19, 20, 21, 22], "__init__": [1, 3, 5, 9, 19, 20, 22], "py": [1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 19, 20, 22], "As": [1, 3, 5, 6, 7, 8, 11, 12, 13, 15, 16, 19, 21, 22], "thumb": [1, 6, 7, 13, 15], "belong": [1, 22], "care": [1, 2, 5, 7, 9, 15, 22], "addit": [1, 2, 4, 6, 8, 9, 10, 11, 12, 13, 15, 18, 19, 22], "plugin": [1, 3, 5, 6, 8, 10, 22], "setuptools_scm": [1, 10, 22], "document": [1, 2, 7, 8, 10, 11, 14, 17, 22], "former": [1, 5, 7, 8, 13, 16, 22], "runner": [1, 5, 7, 10], "sinc": [1, 2, 3, 5, 6, 7, 11, 12, 13, 15, 16, 19, 22], "sometim": [1, 4, 5, 6, 7, 9, 11, 19, 22], "These": [1, 5, 6, 7, 11, 12, 13, 15, 19, 22], "go": [1, 2, 8, 17, 18, 19], "doc": [1, 2, 5, 8, 21], "respect": [1, 4, 5, 12, 14, 15, 19, 20], "maximum": [1, 5], "coverag": [1, 5, 15, 19, 22], "further": [1, 19], "guid": [1, 3, 5, 16, 17, 20], "linter": 1, "report": [1, 6, 9, 10, 12, 15, 22], "actual": [1, 5, 6, 8, 9, 11, 12, 15, 18, 19, 22], "undesir": [1, 5, 10, 19], "again": [1, 2, 15, 22], "conveni": [1, 4, 5, 6, 7, 19, 20, 22], "add": [1, 2, 5, 6, 8, 12, 15, 18, 20, 21, 22], "sphinx": [1, 3, 6, 7, 8, 10, 12, 15], "copi": [1, 3, 5, 6, 9, 11, 15, 20, 21, 22], "c": [1, 2, 6, 8, 9, 10, 11, 14], "extens": [1, 6, 7, 8, 9, 10, 11, 14, 15, 16], "header": [1, 9], "numpi": [1, 2, 22], "If": [1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 12, 13, 14, 15, 16, 18, 19, 20, 21, 22], "metadata": [1, 5, 6, 14, 15, 21], "pyproject": [1, 5, 7, 12, 20, 22], "toml": [1, 5, 7, 10, 12, 20, 22], "setuptool": [1, 3, 4, 5, 7, 8, 12, 13, 15, 18, 19, 22], "cfg": [1, 3, 5, 6, 15, 19, 20, 22], "custom": [1, 2, 3, 6, 10, 13, 15, 16, 19, 20], "read": [1, 5, 16, 18, 22], "name": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 14, 16, 22], "uncondit": [1, 2, 5, 10, 13, 14, 15], "upstream": [1, 3, 4, 5, 6, 7, 9, 11, 12, 14, 15, 16, 18, 19, 20, 22], "spuriou": 1, "strip": [1, 3, 5, 11, 15, 19, 22], "ommit": 1, "kei": [1, 5, 16, 19, 20, 21], "kind": [1, 3, 7, 9, 11, 22], "621": 1, "older": [1, 11, 15, 18], "flit": [1, 5, 6, 12, 13], "poetri": [1, 5, 6, 13], "indic": [1, 5, 6, 11, 12, 13, 15, 18, 19, 20, 22], "install_requir": [1, 3, 5, 6], "group": [1, 2, 6, 13, 15, 19], "extras_requir": [1, 5], "setup_requir": [1, 5, 19], "deprec": [1, 3, 5, 10, 11, 13, 22], "tests_requir": [1, 5], "tox": [1, 5, 22], "ini": [1, 5, 19, 22], "noxfil": 1, "python_requir": 1, "besid": [2, 6, 11, 14, 19, 20], "few": [2, 4, 6, 12, 19, 22], "make": [2, 3, 4, 5, 6, 7, 11, 12, 13, 15, 16, 18, 19, 20, 21, 22], "proper": [2, 8], "fairli": [2, 15, 21], "recent": [2, 3, 5, 15, 22], "agnost": 2, "henc": [2, 5, 14], "treat": [2, 19], "arbitrari": [2, 13, 18, 22], "ha": [2, 3, 5, 6, 7, 11, 12, 13, 14, 15, 16, 18, 19, 20, 22], "gain": [2, 19], "quit": [2, 4, 6, 11, 12], "At": [2, 5, 11, 15, 17, 20], "mani": [2, 5, 8, 12, 14, 15, 16, 20, 22], "old": [2, 4, 5, 6, 8, 10, 11, 12, 16, 22], "reason": [2, 4, 5, 6, 11, 18, 19, 22], "suffici": [2, 5, 6, 7, 11, 14, 18], "prior": [2, 3, 5, 6, 8, 11, 12, 13, 16, 20, 22], "happen": [2, 3, 4, 6, 7, 8, 11, 21, 22], "natur": [2, 3, 5, 8, 15], "sort": 2, "latter": [2, 5, 7, 8, 13, 15, 16, 19, 22], "set": [2, 4, 5, 6, 7, 10, 11, 12, 14, 15, 16, 18, 19, 20, 21, 22], "much": [2, 5, 20, 22], "compon": [2, 3, 8, 11, 14, 16], "account": [2, 8, 11, 15, 22], "detail": [2, 7, 9, 11, 13, 16, 20, 22], "choic": [2, 6, 7, 13, 18, 22], "chapter": [2, 5, 8, 9], "along": [2, 5, 6, 7, 11, 12, 13, 20, 21, 22], "toolchain": [2, 4, 8], "func": [2, 8], "commit": [2, 12, 18, 22], "6e5e8a57628095d8d0c8bbb38187afb0f3a42112": 2, "userspac": 2, "xbox": 2, "360": 2, "control": [2, 4, 5, 19], "driver": 2, "xboxdrv": 2, "gitlab": [2, 8], "io": [2, 4, 5, 8, 14, 21], "chewi": 2, "workdir": [2, 5, 18], "lib": [2, 3, 5, 7, 9, 16, 19, 20, 22], "boost": [2, 7], "glib": 2, "sy": [2, 5, 8, 11, 14, 15, 16, 22], "libudev": 2, "libusb": 2, "x11": 2, "libx11": 2, "src_compil": [2, 5, 6, 8, 14, 22], "escon": 2, "cxx": 2, "tc": [2, 9], "getcxx": 2, "getar": 2, "ranlib": 2, "getranlib": 2, "cxxflag": 2, "wall": 2, "linkflag": 2, "ldflag": [2, 5], "src_instal": [2, 5, 8, 9, 14, 21], "dobin": [2, 9], "doman": 2, "dodoc": [2, 5], "new": [2, 5, 6, 9, 10, 11, 13, 16, 19, 22], "readm": [2, 12, 20], "md": [2, 20], "todo": [2, 9, 12], "yourself": [2, 4, 22], "becaus": [2, 6, 11, 12, 15, 19, 20, 22], "cannot": [2, 3, 4, 5, 9, 11, 22], "my_p": 2, "src": [2, 5, 9, 22], "_rc": [2, 18], "rc": [2, 11, 18], "high": [2, 4, 11, 12, 15, 21], "open": [2, 16], "sourc": [2, 3, 10, 12, 14, 17, 20, 22], "schema": [2, 15], "free": [2, 15, 22], "orient": [2, 16], "databas": [2, 4], "mongodb": [2, 4], "fastdl": 2, "sspl": 2, "acct": 2, "user": [2, 3, 5, 6, 7, 8, 11, 12, 15, 19, 21, 22], "arch": [2, 5, 8, 11, 12, 18], "snappi": 2, "cpp": 2, "yaml": [2, 3], "70": 2, "thread": [2, 8, 19, 21, 22], "libpcr": 2, "42": 2, "zstd": 2, "snowbal": 2, "stemmer": 2, "net": [2, 8, 11, 14, 15, 21], "libpcap": 2, "zlib": 2, "11": [2, 5, 10, 12, 15, 22], "pymongo": 2, "cheetah3": 2, "psutil": 2, "pyyaml": 2, "type": [2, 3, 6, 13, 15, 16], "ncurs": [2, 14], "readlin": [2, 5, 8, 14], "admin": [2, 8], "mongo": 2, "src_configur": [2, 5, 8, 9, 13, 14, 21], "scons_opt": 2, "cc": [2, 9], "getcc": [2, 9], "disabl": [2, 5, 8, 10, 11, 12, 14, 18, 21, 22], "warn": [2, 5, 10, 16, 22], "pcre": 2, "core": [2, 5, 20, 22], "src_test": [2, 5, 6, 14, 22], "buildscript": 2, "resmok": 2, "dbpathprefix": 2, "job": [2, 5, 19], "makeopts_job": [2, 19], "die": [2, 3, 5, 8, 9, 14, 19, 22], "nostrip": [2, 8], "prefix": [2, 8, 9, 15, 16, 22], "ed": [2, 9, 15], "everyth": [2, 13, 20], "your": [2, 4, 5, 6, 7, 8, 11, 12, 15, 16, 18, 19, 20, 22], "python2_7": [2, 5, 6, 8, 13, 14, 21, 22], "eutil": 2, "molecular": 2, "dynam": 2, "nmr": 2, "analysi": [2, 21], "relax": [2, 19], "gna": 2, "bz2": [2, 8, 21], "python_required_us": [2, 4, 5, 8, 10, 14, 21], "python_gen_cond_dep": [2, 4, 5, 8, 12, 13, 21, 22], "numdifftool": 2, "matplotlib": [2, 5, 21], "python2": [2, 8, 9, 13, 21], "wxpython": [2, 21], "wx_gtk_ver": [2, 21], "sci": [2, 5, 21], "chemistri": 2, "pymol": 2, "bmrblib": 2, "minfx": 2, "scipi": 2, "molmol": 2, "vmd": 2, "visual": 2, "grace": 2, "opendx": 2, "gfx": 2, "pngcrush": 2, "python_moduleinto": [2, 5, 9, 14], "python_domodul": [2, 5, 9, 12, 14, 21], "make_wrapp": [2, 9], "python_get_sitedir": [2, 3, 8, 9, 22], "part": [2, 3, 4, 5, 8, 9, 12, 13, 14, 15, 18, 19, 22], "That": [2, 16, 22], "fortran_need": 2, "fortran": 2, "fortran_standard": 2, "90": [2, 14], "object": [2, 11, 16, 21], "chemic": 2, "kinet": 2, "thermodynam": 2, "transport": 2, "cantera": 2, "v": [2, 4, 5, 10, 13, 14, 22], "pch": 2, "sundial": 2, "eigen": 2, "libfmt": 2, "cython": [2, 10, 14, 21], "2_pkg_setup": 2, "scons_var": 2, "cc_flag": 2, "cxx_flag": 2, "std": [2, 3], "debug": [2, 5], "getfc": 2, "fortranflag": 2, "optimize_flag": 2, "wno": 2, "inlin": [2, 7, 14, 18], "renamed_shared_librari": 2, "use_pch": 2, "usex": [2, 5, 21], "system_fmt": 2, "system_sundi": 2, "system_eigen": 2, "env_var": 2, "extra_inc_dir": 2, "eigen3": 2, "scons_target": 2, "f90_interfac": 2, "n": [2, 16, 19], "python2_packag": 2, "none": [2, 5, 6, 16, 18], "python3_packag": 2, "python3_cmd": 2, "els": [2, 8, 11, 16], "stage_dir": 2, "libdirnam": 2, "get_libdir": [2, 8], "python_optim": [2, 8, 9, 20], "deal": [2, 7, 8, 10, 15], "sens": 2, "plain": [2, 5, 6, 13], "loop": [2, 5, 19], "autom": 2, "pipelin": [2, 22], "poisson": 2, "boltzmann": 2, "electrostat": 2, "calcul": 2, "poissonboltzmann": 2, "apb": 2, "opal": 2, "openbabel": 2, "zsi": 2, "lang": [2, 8, 11, 12, 21], "swig": [2, 21], "src_prepar": [2, 3, 5, 8, 9, 14, 16, 19, 20], "f": [2, 9, 16], "pyc": [2, 9, 20], "o": [2, 5, 20], "pyo": [2, 9, 20], "delet": [2, 14], "eappli": 2, "patch": [2, 4, 5, 6, 8, 11, 12, 18, 20, 22], "eapply_us": 2, "rm": [2, 3, 5, 9, 22], "rf": [2, 22], "python_copy_sourc": [2, 14], "python_configur": 2, "cat": [2, 5], "build_dir": [2, 3, 9, 14, 22], "build_config": 2, "eof": [2, 5], "eprefix": [2, 5, 8, 9], "max_atom": 2, "10000": 2, "build_pdb2pka": 2, "rebuild_swig": 2, "run_in_build_dir": [2, 8, 14], "python_instal": [2, 14], "cd": [2, 5, 9, 12, 22], "let": [2, 4, 8, 16, 21], "independ": [2, 4, 5, 6, 7, 14, 21], "separ": [2, 5, 6, 7, 8, 11, 14, 15, 16, 19, 22], "presum": 2, "manual": [2, 3, 6, 10, 11, 12, 18, 20], "wider": 2, "target": [2, 8, 9, 11, 12, 15, 21, 22], "rang": [2, 5, 12], "recommend": [2, 5, 7, 12, 13, 14, 15, 16, 18, 19, 21, 22], "gp": [2, 8], "daemon": [2, 8], "usb": [2, 8], "serial": [2, 5, 8, 15], "devic": [2, 8], "map": [2, 5, 6, 8, 15, 19], "client": [2, 8, 9, 11, 14], "gpsd": [2, 8], "mirror": [2, 4, 5, 6, 8, 14, 21, 22], "nongnu": [2, 8], "24": [2, 8, 19, 22], "misc": [2, 8], "pp": [2, 8], "20120407": [2, 8], "myesconsarg": [2, 8], "libdir": [2, 8, 9], "udevdir": [2, 8], "get_udevdir": [2, 8], "chrpath": [2, 8], "gpsd_user": [2, 8], "gpsd_group": [2, 8], "uucp": [2, 8], "manbuild": [2, 8], "use_scon": [2, 8], "sconstruct": [2, 8], "py2": [2, 8, 18, 22], "construct": [2, 4, 8, 21], "pkg_config": 2, "shlinkflag": 2, "destdir": [2, 8, 9, 20], "bundl": [2, 5, 12], "simpl": [2, 5, 7, 13, 14, 17], "impli": [2, 9, 11], "python_req_us": [2, 4, 5, 6, 8, 14, 21], "individu": [2, 5, 11, 19], "applic": [2, 9, 11], "had": 2, "instead": [2, 3, 5, 6, 7, 8, 9, 13, 14, 16, 18, 19, 20, 21, 22], "no_waf_libdir": 2, "ye": 2, "unit": 2, "framework": [2, 3, 5, 11, 17], "mrzechonek": 2, "tut": 2, "roughli": [2, 9, 11, 13, 18], "ldap": 2, "ldb": 2, "samba": [2, 21], "ftp": [2, 21], "pub": 2, "elibc_freebsd": 2, "libbsd": 2, "popt": 2, "talloc": [2, 21], "tevent": 2, "9": [2, 5, 10, 12, 15, 18, 20, 22], "31": [2, 15], "tdb": 2, "12": [2, 8, 15, 16, 19, 20], "nd": 2, "openldap": 2, "libxslt": 2, "waf_binari": [2, 21], "buildtool": [2, 21], "filesdir": 2, "27": [2, 8], "optional_packag": 2, "myconf": [2, 8], "rpath": 2, "modulesdir": 2, "builtin": 2, "utils_src_configur": [2, 21], "tradition": 3, "python": [3, 6, 17, 18, 19, 20], "organ": 3, "subpackag": [3, 20], "locat": [3, 5, 20], "parent": [3, 9], "directori": [3, 5, 6, 9, 11, 12, 13, 14, 16, 18, 19, 20, 22], "submodul": 3, "repres": [3, 5, 22], "attribut": [3, 10, 16], "session": [3, 22], "addnod": 3, "site": [3, 5, 6, 9, 10, 11, 16, 19, 22], "fine": [3, 12, 16], "start": [3, 4, 5, 6, 11, 12, 15, 16, 18, 22], "problemat": [3, 6, 10, 19], "top": [3, 5, 9, 10, 18, 19, 22], "level": [3, 9, 10, 11, 22], "layout": [3, 6, 13, 22], "wish": [3, 6, 22], "zope": [3, 15], "share": [3, 5], "interfac": [3, 6, 11, 15, 16], "event": [3, 11, 19], "depend": [3, 6, 7, 9, 10, 11, 12, 13, 15, 16, 17, 18, 20], "far": [3, 12, 21], "concern": 3, "entir": [3, 5, 9, 10, 12, 13, 14, 18, 22], "doabl": 3, "real": [3, 19, 20, 22], "we": [3, 4, 6, 8, 11, 12, 14, 15, 17, 20], "freshli": 3, "build": [3, 9, 10, 11, 15, 16, 18, 20, 22], "abl": [3, 15], "tmp": [3, 5, 9, 19, 20, 22], "portag": [3, 5, 8, 10, 12, 14, 15, 19, 22], "python3_8": 3, "traceback": [3, 5, 22], "last": [3, 5, 16], "stdin": 3, "modulenotfounderror": 3, "No": [3, 22], "now": [3, 5, 6, 8, 13, 14, 22], "around": [3, 5, 6, 11, 12, 22], "back": [3, 6, 16, 22], "better": [3, 6, 11, 12, 13, 14, 20], "solut": [3, 15, 16, 20, 22], "unlik": [3, 5, 6, 11, 15], "tradit": 3, "act": 3, "proxi": [3, 14], "strictli": [3, 5, 6, 15, 22], "bound": [3, 11, 16], "permit": [3, 4, 5, 6, 11, 15, 22], "load": [3, 7, 9, 16, 19, 20, 22], "search": [3, 10, 15], "method": [3, 5, 11, 13, 16, 19, 20, 22], "420": 3, "newer": [3, 4, 5, 6, 11, 12, 15, 16, 20], "pkgutil": 3, "standard": [3, 4, 6, 7, 9, 10, 11, 14, 16, 22], "discourag": [3, 6], "earlier": [3, 13], "ignor": [3, 4, 5, 8, 15, 19, 22], "did": [3, 13, 16, 22], "within": [3, 5, 6, 12, 15, 17, 22], "content": [3, 5, 7], "__path__": 3, "__import__": 3, "extend_path": 3, "__name__": 3, "pkg_resourc": [3, 6], "declare_namespac": 3, "altern": [3, 5, 6, 8, 10, 16, 17, 18, 22], "pth": 3, "automat": [3, 4, 5, 6, 10, 12, 15, 18, 20, 22], "inject": [3, 21, 22], "portabl": 3, "topic": [3, 17], "exact": [3, 5, 11, 21], "detect": [3, 5, 9, 15, 22], "recogn": [3, 5, 15, 16], "lack": [3, 9, 22], "action": [3, 15, 22], "distinguish": [3, 5, 13], "veri": [3, 4, 5, 6, 9, 11, 15, 17, 18, 19, 20, 22], "through": [3, 4, 5, 6, 8, 11, 16, 19], "suspici": 3, "less": [3, 15, 22], "ruamel": 3, "miss": [3, 4, 5, 6, 9, 10, 11, 12, 13, 15, 17, 18, 19, 20], "learn": 3, "about": [3, 5, 6, 13, 15, 22], "collid": [3, 19, 22], "namespace_packag": 3, "per": [3, 20], "regular": [3, 7, 20, 22], "python3_11": [3, 12], "r1_run_phas": 3, "r1_python_instal": [3, 5], "style": [3, 4, 5, 13, 16, 17, 19, 22], "remov": [3, 4, 5, 6, 10, 11, 13, 14, 15, 19, 20, 22], "after": [3, 6, 9, 11, 12, 13, 15, 16, 18, 20, 22], "python_compil": 3, "r1_python_compil": [3, 5], "jaraco": [3, 5, 12, 19], "extrem": [3, 5, 6], "good": [3, 11, 15, 17, 19, 22], "been": [3, 5, 6, 8, 11, 12, 13, 14, 16, 19, 20], "yet": [3, 5, 8, 11, 21], "explicit": [3, 4, 5, 6, 18, 21, 22], "rdep": 3, "sed": [3, 5, 8, 14, 15, 19, 22], "r1_src_prepar": [3, 5, 19], "histor": [3, 6, 11, 13, 16, 18, 20, 22], "process": [3, 5, 7, 12, 16, 20, 21], "retir": 3, "major": [4, 5, 6, 11, 15, 22], "avail": [4, 5, 6, 8, 11, 13, 15, 16, 17], "sqlite3": 4, "sqlite": [4, 8], "xdg": 4, "music": 4, "lollypop": 4, "adishatz": 4, "syntax": [4, 10, 11, 15, 20], "lightweight": [4, 20], "password": 4, "backend": [4, 10, 12, 13], "pwman3": 4, "mysql": [4, 14], "postgr": 4, "fulli": [4, 5, 7, 11], "solv": [4, 17], "python_gen_impl_dep": 4, "helper": [4, 5, 7, 10, 14, 21, 22], "2_7": [4, 22], "3_": 4, "travel": 4, "spulec": 4, "freezegun": [4, 19, 22], "pypi": [4, 5, 6, 8, 10, 11, 13], "dateutil": 4, "six": [4, 8, 22], "nose": [4, 22], "distutils_enable_test": [4, 5, 10, 13, 19], "ll": [4, 14], "backport": [4, 6, 10, 12], "zero": [4, 15], "argument": [4, 6, 10, 13, 16, 22], "output": [4, 5, 6, 9, 16, 20, 22], "everi": [4, 5, 6, 8, 11, 14, 15, 16, 18, 20, 22], "escap": [4, 13, 21], "quot": [4, 21], "partial": [4, 5, 9, 10, 13], "python_single_usedep": [4, 5, 13, 21], "cli": [4, 5], "black": 4, "click": 4, "fnmatch": 4, "wildcard": 4, "stdlib": [4, 13, 16], "rememb": [4, 12, 18], "pattern": [4, 12, 13, 21], "prevent": [4, 5, 11, 21, 22], "filenam": [4, 5], "expans": 4, "expand": 4, "zoneinfo": 4, "advantag": [4, 5, 7, 19, 22], "adjust": [4, 9, 11, 16], "switch": [4, 7, 9, 11, 12, 13, 15, 22], "list": [4, 5, 8, 12, 13, 19, 20, 22], "longer": [4, 6, 11, 13, 18, 22], "silent": [4, 22], "updat": [4, 6, 9, 11, 12, 16, 18], "immedi": [4, 5, 12, 21], "becam": [4, 11], "empti": [4, 5, 15, 18], "importlib_metadata": [4, 6, 15, 22], "python3_7": [4, 8], "profil": [4, 6, 15], "feasibl": [4, 11, 15], "mask": [4, 11, 12, 15], "architectur": [4, 11], "skip": [4, 8, 10, 12, 16, 20], "merg": [4, 5], "deselect": [4, 12, 19, 22], "python_test": [4, 6, 8, 9, 12, 19, 22], "epytest_deselect": [4, 12, 19], "trustm": 4, "test_request": 4, "testrequest": 4, "test_https_warn": 4, "epytest": [4, 5, 6, 8, 12, 19, 22], "outer": 4, "whole": [4, 19, 22], "convinc": [4, 22], "signific": [4, 12, 19], "tl": 4, "pull": 4, "forc": [4, 5, 6, 8, 9, 12, 13, 19, 22], "remain": [4, 11, 12, 13], "facilit": [5, 9, 18], "deriv": [5, 6], "notabl": [5, 15, 16, 18], "effici": [5, 15], "oper": [5, 11, 17, 18], "backward": [5, 11, 16], "incompat": [5, 6, 11, 16, 19, 22], "greater": [5, 7], "number": [5, 7, 12, 15, 18, 19, 20, 22], "cost": [5, 11], "flexibl": [5, 7], "wheel": [5, 10, 11, 12, 15, 19, 20], "zip": [5, 6, 18], "stage": [5, 11, 20, 22], "compil": [5, 6, 10, 11, 22], "mere": [5, 7], "imag": [5, 9, 20], "compliant": [5, 7, 18], "invok": [5, 19, 22], "popul": [5, 15], "addition": [5, 9, 11, 14], "pyproject2setuppi": [5, 6, 13], "hack": [5, 6, 7, 13], "reli": [5, 6, 11, 22], "distutils_use_pep517": [5, 13], "legal": 5, "unset": [5, 6], "By": [5, 6, 11], "2022": [5, 13, 19], "xml": [5, 6], "feel": [5, 15], "json": 5, "martinblech": 5, "xmltodict": 5, "mit": [5, 6, 22], "vast": 5, "index": [5, 10], "sdist": [5, 15, 18, 20, 22], "binari": [5, 9, 12, 16], "mechan": [5, 7, 11], "especi": [5, 7, 18, 19, 20, 22], "pregener": 5, "nodej": 5, "fetch": [5, 10, 12], "own": [5, 22], "append": [5, 14, 15, 18, 22], "uniqu": [5, 14], "suffix": [5, 15, 18, 20], "gh": [5, 22], "request": [5, 8, 10, 12, 15], "distfil": [5, 16, 18, 21], "clearli": [5, 20, 22], "tarbal": [5, 12, 22], "textual": 5, "rich": 5, "implic": 5, "cf": [5, 12], "regener": [5, 12], "anywai": [5, 16], "underli": [5, 6, 7], "txt": [5, 6, 12, 19], "ci": [5, 22], "travi": 5, "yml": 5, "grep": 5, "statement": [5, 20], "indirect": 5, "relev": [5, 6, 13, 17, 19, 22], "unnecessarili": 5, "logic": [5, 6, 12, 22], "long": [5, 11, 12], "quickli": 5, "widest": 5, "avoid": [5, 6, 8, 10, 15, 16, 17, 22], "unpredict": 5, "who": [5, 17, 22], "distutils_single_impl": [5, 7], "aim": [5, 11, 15, 17, 20], "exist": [5, 10, 11, 12, 16, 20], "rewritten": [5, 21, 22], "layer": [5, 14], "pyroot": 5, "rootpi": 5, "physic": [5, 21], "root_numpi": 5, "pytabl": 5, "termcolor": 5, "determin": [5, 6, 7, 11, 21, 22], "flit_cor": [5, 12, 20], "buildapi": 5, "maintain": [5, 10, 11, 12, 16, 19], "suggest": [5, 8, 13, 15, 17, 19, 20, 22], "tabl": [5, 12, 13, 15, 16, 19], "summar": [5, 16], "use_pep517": 5, "hatchl": 5, "jupyt": 5, "jupyter_packag": 5, "build_api": 5, "maturin": 5, "mesonpi": 5, "see": [5, 9, 16, 19, 20, 22], "below": [5, 8], "pbr": [5, 6], "pep517": [5, 20], "masonri": 5, "scikit": 5, "scikit_build_cor": 5, "build_meta": 5, "__legacy__": 5, "sip": [5, 8, 15], "sipbuild": 5, "standalon": [5, 12], "itself": [5, 6, 8, 9, 12, 15, 19], "checkout": [5, 12, 22], "abil": [5, 6], "tag": [5, 12, 18, 22], "execut": [5, 6, 7, 9, 11, 12, 13, 14, 19, 22], "143": 5, "_install_setup_requir": 5, "attr": [5, 12, 22], "131": 5, "dist": [5, 19], "dict": [5, 21], "425": 5, "_distribut": 5, "self": [5, 16, 19, 22], "292": 5, "finalize_opt": 5, "717": 5, "ep": 5, "48": 5, "infer_vers": 5, "_get_vers": 5, "config": [5, 9, 12], "148": 5, "parsed_vers": 5, "_do_pars": 5, "110": 5, "rais": [5, 16], "lookuperror": 5, "scm": 5, "unabl": [5, 15, 22], "sure": [5, 15, 19, 22], "re": [5, 8, 15, 22], "intact": 5, "git": [5, 12, 22], "folder": 5, "don": [5, 13], "t": [5, 7, 8, 11, 13], "pip": [5, 12, 22], "proj": 5, "master": [5, 22], "egg": [5, 6, 19], "setuptools_scm_pretend_vers": 5, "incomplet": 5, "pleas": [5, 6, 8, 9, 12, 15, 16, 18, 19, 20, 21, 22], "reinvent": 5, "throw": [5, 16], "overrid": [5, 9, 14, 18, 22], "pdm_build_scm_vers": 5, "loadabl": 5, "presenc": [5, 8, 19], "distutils_ext": 5, "relat": [5, 10, 12, 13, 15, 22], "cross": 5, "unless": [5, 6, 8, 15, 18], "distutils_opt": 5, "assert": [5, 10, 20], "among": [5, 17], "esetup": [5, 8], "build_ext": [5, 6, 22], "2023": 5, "even": [5, 8, 9, 11, 19, 22], "isn": 5, "worth": 5, "complex": [5, 7, 16, 18, 21], "worri": 5, "qa": [5, 6, 9, 10, 12, 17], "static": [5, 8], "write": [5, 6, 7, 12, 16, 17, 20], "hybrid": [5, 10], "expos": [5, 6, 22], "alwai": [5, 6, 8, 11, 13, 16, 17, 18, 20], "guarante": [5, 6, 10, 18], "fix": [5, 6, 10, 11, 12, 15, 16, 19, 20, 22], "taken": [5, 16, 22], "ship": [5, 20], "issu": [5, 6, 13, 15, 16, 19, 22], "frobnic": 5, "makefil": [5, 14], "jq": 5, "pyx": 5, "unresolv": 5, "regard": 5, "simultan": [5, 11, 17, 22], "link": [5, 7, 9, 16], "editor": 5, "broken": [5, 6, 19, 22], "cryptic": 5, "revers": [5, 7, 12, 15], "miscompil": 5, "panda": 5, "breakag": [5, 22], "dask": [5, 19], "29": 5, "_lib": 5, "hashtabl": 5, "_hashtabl": 5, "tslib": 5, "_tslib": 5, "13": [5, 15, 18, 19, 22], "interv": 5, "init": 5, "30": [5, 11], "convers": [5, 6], "outofboundstimedelta": 5, "localize_pydatetim": 5, "importerror": [5, 6, 10, 11, 16], "38": [5, 20], "x86_64": 5, "undefin": 5, "symbol": 5, "pandas_datetime_to_datetimestruct": 5, "easiest": [5, 15, 21], "workaround": [5, 20], "j1": 5, "origin": [5, 9, 11, 12, 16, 22], "extend": [5, 11], "introduc": [5, 11], "src_": 5, "python_": [5, 8], "_all": [5, 8], "compris": 5, "behav": [5, 8], "r1_": 5, "correspond": [5, 11, 12, 15], "python_prepare_al": [5, 19], "each": [5, 6, 7, 11, 14], "python_configure_al": 5, "python_compile_al": [5, 8], "python_test_al": 5, "python_install_al": 5, "dedic": [5, 6, 12, 14], "chang": [5, 6, 8, 9, 10, 11, 13, 14, 15, 18, 20, 22], "task": [5, 8, 12], "default_src_prepar": 5, "ez_setup": 5, "bootstrap": [5, 6, 10], "end": [5, 6, 7, 9, 11, 14, 19, 22], "dir": [5, 14], "extran": 5, "fixm": 5, "test_pytest_plugin": 5, "test_testcase_no_app": 5, "_": [5, 12, 15, 18, 22], "test_test_util": 5, "pointless": 5, "cov": [5, 19, 22], "addopt": 5, "aiohttp": [5, 19], "r1_python_prepare_al": [5, 19], "duplic": [5, 14, 22], "moment": [5, 11, 13, 15], "modif": 5, "keep": [5, 15, 17], "why": [5, 6, 10], "console_script": [5, 6], "configur": [5, 6, 8, 13, 14, 20, 22], "step": [5, 6, 7, 8, 14], "mpi": 5, "distutils_arg": [5, 13], "resourcepath": 5, "compress": 5, "manpag": 5, "distutils_enable_sphinx": [5, 8], "emak": [5, 8, 9], "strongli": [5, 6, 15], "encourag": [5, 15], "testbitvector": 5, "redefin": [5, 19], "too": [5, 11, 22], "collada": 5, "einstalldoc": [5, 8, 14], "docinto": 5, "sample_cod": 5, "docompress": 5, "pf": 5, "r1_python_install_al": 5, "main": [5, 9], "manipul": [5, 22], "arrai": 5, "futur": [5, 15, 18], "pillow": 5, "tiff": 5, "webp": 5, "dash": 5, "underscor": [5, 15, 18, 22], "boolean": 5, "disable_tiff": 5, "enable_tiff": 5, "disable_webp": 5, "enable_webp": 5, "modifi": [5, 6, 11, 15, 20, 22], "beforehand": 5, "econf": [5, 21], "paremet": 5, "come": [5, 13, 19], "theme": [5, 6, 8], "larg": [5, 12, 15, 19, 20], "text": [5, 8, 16, 22], "hard": [5, 8, 12], "across": [5, 11, 22], "To": [5, 6, 8, 9, 12, 15, 16, 19, 20, 21], "those": [5, 6, 8, 9, 19, 22], "easili": [5, 14, 19, 22], "conf": [5, 6, 20], "ext": 5, "distutils_use_setuptool": [5, 13], "color": 5, "stream": 5, "handler": 5, "log": [5, 20], "coloredlog": 5, "xolox": 5, "readthedoc": 5, "en": 5, "latest": [5, 15], "humanfriendli": 5, "expert": [5, 10, 14, 22], "uncommon": [5, 15], "third": [5, 7, 13, 20], "parti": 5, "inflect": 5, "word": 5, "jazzband": 5, "rst": 5, "linker": [5, 9], "alabast": [5, 6], "python_target": [5, 7, 8, 11, 12], "inspect": 5, "omit": [5, 15, 16], "port": [5, 8, 10], "pyseri": 5, "psf": 5, "tri": 5, "incorrect": [5, 6, 20], "assumpt": 5, "consum": [5, 6, 22], "alter": [5, 19], "distutils_dep": 5, "dependneci": 5, "r1_src_compil": 5, "r1_src_instal": 5, "collis": [5, 15, 22], "r1_src_test": [5, 22], "primari": [5, 19, 22], "alongsid": [5, 6], "libfoo": 5, "setuptools_rust": 5, "ecosystem": [5, 15, 17], "over": [5, 7, 11, 12, 19, 21, 22], "internet": [5, 10, 19], "bump": [5, 12, 15, 18], "lock": 5, "pycargoebuild": 5, "cargo_opt": 5, "crate": 5, "url": [5, 10, 11, 15, 16], "cargo_crate_uri": 5, "qa_flags_ignor": 5, "posit": [5, 15], "cflag": [5, 9, 22], "cargo_src_unpack": 5, "inflector": 5, "alias": [5, 16], "asn1": 5, "asn1_der": 5, "_rust": 5, "src_unpack": 5, "benefit": [5, 7], "cyclic": 5, "suppos": [5, 16], "overlap": 5, "machineri": 5, "op": 5, "temporari": [5, 6, 22], "venv": [5, 6, 13, 22], "toward": 5, "tree": [5, 12, 13, 20, 22], "effect": [5, 8, 11, 20], "pick": [5, 12], "up": [5, 6, 9, 11, 13, 14, 15, 17, 19, 20, 22], "hukkin": 5, "tomli": [5, 12, 15], "pythonhost": [5, 18], "py3": [5, 18, 19], "whl": [5, 18], "unzip": [5, 18], "unittest": [5, 11, 22], "deliber": 5, "unpack": [5, 18], "gpep517": [5, 18, 20], "python_newscript": [5, 9], "__main__": [5, 22], "exit": [5, 16, 20, 22], "fragment": [5, 16], "emesonarg": 5, "dlint": 5, "meson_src_configur": 5, "meson_src_compil": 5, "meson_src_test": 5, "meson_src_instal": 5, "here": [6, 8, 14, 21], "direct": [6, 14], "first": [6, 10, 11, 12, 15, 16, 19, 20, 22], "convert": [6, 8, 13], "facil": 6, "right": [6, 7], "fit": [6, 22], "pyproject2toml": 6, "misbehav": 6, "subsequ": [6, 18, 20], "post": [6, 13, 15, 18, 22], "expect": [6, 11, 16, 19, 20, 22], "sidebar": 6, "bitprophet": 6, "Their": [6, 9, 20], "possibli": [6, 22], "snippet": [6, 16, 20], "except": [6, 7, 9, 11, 12, 16], "pm": 6, "cleanli": [6, 12], "condit": [6, 10, 12, 19, 22], "leav": 6, "fallback": [6, 20], "never": [6, 11, 13, 16], "want": [6, 8, 22], "clean": [6, 11, 13], "requier": 6, "With": [6, 22], "themselv": [6, 19, 20, 22], "entry_point": [6, 19], "dictionari": [6, 21], "our": [6, 19, 22], "interest": [6, 8, 22], "gui_script": 6, "meaning": 6, "importlib": [6, 11, 22], "fall": [6, 16, 22], "remind": 6, "distutils_strict_entry_point": 6, "trigger": [6, 12, 19, 20, 22], "wrong": [6, 13, 15], "leftov": 6, "resourc": [6, 11, 12, 20], "submit": [6, 20], "suppli": 6, "heavi": 6, "thin": [6, 22], "speak": [6, 11], "known": [6, 16, 22], "limit": [6, 12, 15, 17], "address": [6, 11, 16], "definit": 6, "subdirectori": [6, 9], "interspers": [6, 20], "closest": 6, "equival": [6, 8, 9, 13, 18], "inplac": 6, "shift": [6, 11], "littl": [6, 19, 22], "throughout": 6, "2to3": 6, "distutils_in_source_build": 6, "collect": [6, 19, 22], "pypa": 6, "riscv": [6, 8, 21], "cygwin": [6, 22], "pythonpath": [6, 22], "properli": [6, 13], "distutils_install_for_test": [6, 13, 19, 22], "alik": [6, 7, 11, 13], "preserv": [6, 11, 15, 16], "home": [6, 12, 13], "went": 6, "awai": [6, 7, 18], "network": [6, 19, 22], "total": 7, "rare": [7, 9, 19, 22], "simpler": 7, "primarili": [7, 11], "involv": [7, 8, 13], "graph": [7, 11, 12], "meet": 7, "potenti": [7, 11, 15, 16, 19], "basi": 7, "occur": [7, 11, 19], "libpython": [7, 11, 16], "aforement": [7, 13, 16, 18], "foo": [7, 16], "wise": 7, "abstract": [7, 14, 18], "scon": [7, 8, 10, 20], "second": [7, 13, 20], "easier": [7, 18, 20, 22], "earli": [7, 8, 12, 19, 22], "select": [7, 8, 19, 21], "allow": [7, 22], "repeat": [7, 14, 15, 20], "model": 7, "libboost_python": 7, "python_single_target": [7, 11, 12], "Its": [7, 12, 18], "legaci": [7, 10, 13, 16, 20, 22], "power": 8, "harder": [8, 15], "ninja": [8, 15], "train": 8, "opposit": [8, 11, 13], "investig": 8, "paramet": [8, 16, 20, 22], "human": 8, "beings": 8, "socks5": 8, "ssl": 8, "certifi": [8, 15], "2017": 8, "17": 8, "chardet": [8, 22], "idna": 8, "urllib3": [8, 12], "26": 8, "pysock": 8, "cryptographi": [8, 15], "pyopenssl": 8, "14": [8, 22], "httpbin": [8, 19], "hang": 8, "continu": [8, 12, 22], "python_gen_useflag": 8, "out": [8, 9, 10, 11, 12, 13, 14, 15, 16], "toolkit": 8, "translat": [8, 18], "format": [8, 12, 15, 16, 18, 20], "subtitl": 8, "pydiff": 8, "iso": 8, "lxml": 8, "pycountri": 8, "18": 8, "levenshtein": 8, "devel": 8, "gettext": 8, "video": 8, "gaupol": 8, "riverbankcomput": 8, "intro": 8, "sip_api_major_nr": 8, "siplib": 8, "h": [8, 9, 21], "bison": 8, "flex": 8, "prepar": [8, 9, 20, 21], "bindir": 8, "incdir": 8, "python_get_includedir": [8, 9, 13], "echo": [8, 20], "distutils_all_subphase_impl": 8, "python3_5": 8, "bzip2": 8, "epydoc": 8, "eselect": 8, "elibc_glibc": 8, "sandbox": [8, 20, 22], "kernel_linux": 8, "pax": 8, "rsync": 8, "userland_gnu": 8, "coreutil": 8, "sphinx_rtd_them": 8, "practic": [8, 11, 12], "big": 8, "imagin": 8, "anymor": [8, 11], "downgrad": 8, "though": [8, 11], "resembl": [8, 19], "activ": [8, 17], "behavior": [8, 11, 16, 18], "goal": [8, 12, 22], "side": [8, 11], "someth": [8, 9, 22], "accord": [8, 18], "integr": [8, 9, 10, 11], "won": 8, "precis": [8, 9, 22], "reject": [8, 15, 16], "unsupport": [8, 11], "python_is_python3": [8, 13], "basic": [9, 10], "reus": [9, 15], "four": [9, 13, 21], "python_doex": 9, "python_newex": 9, "python_doscript": [9, 14, 21], "recurs": [9, 15, 19], "python_dohead": 9, "python_scriptinto": 9, "affect": [9, 11, 14, 18], "symlink": 9, "onto": 9, "improv": [9, 10, 11, 17], "cropgtk": 9, "sbin": 9, "pynslcd": 9, "anyth": 9, "land": 9, "my_pn": 9, "doin": 9, "libimag": 9, "env": [9, 12], "python_fix_shebang": 9, "sphinxtrain": 9, "openvpn": 9, "vulnkei": 9, "insinto": 9, "kitti": 9, "speed": 9, "nowadai": [9, 12, 13], "pypy2": [9, 11], "_feedparser_sgmllib": 9, "lib64": 9, "byte_compil": 9, "cmake_src_instal": 9, "entropi": 9, "ocassion": 9, "bad": [9, 16], "seri": 9, "getter": [9, 13, 16], "python_get_scriptdir": 9, "python_get_library_path": [9, 13], "python_get_cflag": 9, "preprocessor": 9, "pkg": 9, "python_get_lib": 9, "python_get_python_config": 9, "offset": 9, "alreadi": [9, 12, 14, 15, 16, 20, 22], "mycmakearg": [9, 13, 21], "dpython_dest": 9, "dpython_execut": 9, "dpython_include_dir": 9, "dpython_librari": 9, "cmake_src_configur": [9, 21], "pyinc": 9, "pylib": 9, "micha\u0142": 10, "g\u00f3rny": 10, "creativ": 10, "intern": 10, "prefac": 10, "life": 10, "cycl": [10, 12], "stabil": 10, "choos": [10, 11, 14], "overview": 10, "variant": [10, 11, 16, 19, 22], "flit_scm": 10, "hatch": 10, "vc": [10, 22], "pdm": [10, 13], "snapshot": [10, 22], "rust": 10, "parallel": 10, "race": 10, "command": [10, 14, 15, 19, 20, 22], "usag": [10, 18], "cargo": 10, "checklist": 10, "abort": 10, "due": [10, 12, 14, 18, 19, 20], "variat": 10, "byte": [10, 16], "queri": [10, 16], "advanc": 10, "cffi": 10, "greenlet": [10, 19], "recip": 10, "marker": [10, 22], "xdist": [10, 12, 22], "flaki": [19, 22], "autoload": 10, "typeerror": 10, "_make_test_flaki": 10, "got": [10, 13], "unexpect": [10, 20], "rerun": 10, "importpathmismatcherror": 10, "fixtur": [10, 12], "namespac": [10, 19], "disjoint": 10, "waf": [10, 21], "tip": [10, 22], "retroact": 10, "migrat": [10, 18], "bytecod": 10, "strai": 10, "mainten": 10, "polici": 10, "co": [10, 22], "monitor": [10, 20], "routin": [10, 14], "page": [10, 16, 17], "increment": 11, "minor": [11, 22], "plan": 11, "On": 11, "hand": [11, 13], "platform": [11, 16, 18, 22], "linux_distribut": 11, "window": 11, "understood": 11, "initi": [11, 22], "enter": 11, "stabl": [11, 12, 15], "prematur": [11, 15], "beta": [11, 12], "made": [11, 13, 14, 16, 21], "regress": 11, "readi": [11, 12, 15], "dai": 11, "inconsist": [11, 15, 22], "mark": [11, 15, 19, 22], "clear": [11, 15], "depenend": 11, "repeatedli": 11, "ask": [11, 15], "push": [11, 12, 15], "forward": 11, "eventu": [11, 12], "becom": [11, 16, 19], "slowli": [11, 15], "discontinu": 11, "next": [11, 12, 15, 19], "june": 11, "juli": 11, "year": 11, "predict": [11, 21], "nears": 11, "great": 11, "obsolet": [11, 13], "vulner": 11, "break": [11, 15, 16], "revert": 11, "enum": 11, "urlsplit": 11, "sanit": [11, 16, 22], "secur": [11, 12], "abi": [11, 18], "bugfix": 11, "occasion": 11, "contrari": [11, 16], "hold": [11, 16], "subslot": 11, "fortun": 11, "late": 11, "hous": 11, "rpython": 11, "lot": [11, 15], "gc": 11, "jython": 11, "java": 11, "stand": 11, "alon": 11, "bidirect": 11, "interact": 11, "slow": [11, 19], "pace": 11, "ironpython": 11, "brython": 11, "web": 11, "javascript": 11, "dom": 11, "micropython": 11, "microcontrol": 11, "down": 11, "hardwar": 11, "tauthon": 11, "accompani": 11, "nor": [11, 17, 20], "ideal": [11, 15, 22], "minim": [11, 15, 16, 22], "funcsig": 11, "signatur": [11, 16], "afterward": [11, 14, 15, 22], "later": 11, "lzma": 11, "compet": 11, "amount": [11, 12, 22], "ipaddress": 11, "drop": [11, 16], "box": [11, 13], "hexvers": [11, 22], "0x03030000": 11, "trolliu": 11, "asyncio": [11, 19, 22], "nativ": 11, "workflow": 12, "clone": 12, "remot": [12, 15, 22], "rebas": 12, "v3": 12, "cherri": 12, "upload": 12, "mkdir": 12, "scp": 12, "precompil": [12, 20], "unusu": 12, "structur": [12, 22], "ex": 12, "Then": 12, "technic": [12, 18], "docker": 12, "binpkg": 12, "produc": [12, 15, 20], "diff": 12, "mgorni": 12, "depgraph": 12, "desc": 12, "_python_all_impl": 12, "_python_verify_pattern": 12, "_python_set_impl": 12, "_python_impl_match": 12, "python_pkg_dep": 12, "gpyutil": [12, 15], "circular": 12, "eas": [12, 15], "temporarili": [12, 13], "20": [12, 18], "pwd": 12, "round": 12, "remaind": 12, "pydant": 12, "test_comparison": 12, "test_close_to_now_": 12, "lenient": 12, "unblock": 12, "100": 12, "40": [12, 20], "emerg": [12, 20], "previous": 12, "reinstal": 12, "batch": [12, 20], "focus": 12, "reenabl": [12, 19], "obsolesc": 12, "announc": 12, "mail": [12, 15], "proce": 12, "track": [12, 15], "progress": 12, "show": 12, "sign": [12, 15], "effort": 12, "revis": [12, 15], "hint": [12, 22], "_python_historical_impl": 12, "statu": 12, "dead": 12, "face": [12, 22], "goe": [12, 22], "unbundl": 12, "obligatori": [12, 15], "baselin": 12, "ones": 12, "chosen": 12, "fewest": 12, "vendor": [12, 13], "februari": 13, "gross": 13, "serv": 13, "placehold": 13, "transit": [13, 15], "period": [13, 15], "ban": 13, "python_multi_usedep": 13, "instanc": [13, 16, 18], "know": [13, 16, 22], "given": 13, "repoman": 13, "pkgcheck": [13, 15], "tell": 13, "chose": 13, "reorder": 13, "desir": [13, 16, 20, 22], "scan": [13, 15], "unmatch": 13, "trial": 13, "stuff": 13, "thing": [13, 17, 19], "privat": 13, "python_export": 13, "python_wrapper_setup": 13, "python_gen_usedep": 13, "mydistutilsarg": 13, "renam": [13, 15, 16, 18, 20], "cleanup": 13, "python_gen": 13, "march": 13, "grab": [13, 20], "python_get": 13, "python_includedir": 13, "python_libpath": 13, "dpython3_include_dir": 13, "dpython3_librari": 13, "sundri": 13, "stop": [13, 16, 18], "realli": [13, 15, 19, 22], "ugli": 13, "sole": 13, "uppercas": [13, 15, 16, 18], "fourth": 13, "cruft": 13, "short": [13, 19], "evalu": 13, "januari": 13, "safe": 13, "streamlin": 13, "unfortun": [13, 15, 16, 19, 20, 22], "inde": 13, "foundat": 14, "fionet": 14, "psql": 14, "cach": 14, "sourceforg": [14, 21], "replic": 14, "tgz": 14, "libcangji": 14, "cangjian": 14, "i18n": 14, "eautoreconf": [14, 16], "econf_sourc": 14, "la": 14, "multibuild": 14, "unnecessari": [14, 15, 21, 22], "implicit": [14, 20, 22], "libtool": 14, "buggi": 14, "canva": 14, "widget": 14, "gtk": 14, "cairo": 14, "2d": 14, "draw": 14, "goocanva": 14, "subdir": 14, "am": 14, "gnome2_src_prepar": 14, "gnome2_src_configur": 14, "gnome2_src_instal": 14, "sub_instal": 14, "gi": 14, "_overridesdir": 14, "outsid": [14, 21], "3_6": [14, 22], "3_7": [14, 22], "qemu": 14, "kernel": 14, "machin": [14, 20], "userland": 14, "kvm": 14, "qemu_python_instal": 14, "vmxcap": 14, "qmp": 14, "ga": 14, "publish": 15, "503": 15, "dot": [15, 18], "hyphen": 15, "charact": [15, 18], "insensit": 15, "letter": [15, 18], "turn": [15, 22], "lowercas": [15, 18], "crucial": 15, "conform": [15, 18], "conflict": 15, "bugzilla": 15, "illustr": 15, "flask": [15, 18], "babel": 15, "github3": 15, "sphinx_pytest": 15, "tab": [15, 22], "titl": [15, 18], "idea": [15, 22], "423": 15, "redirect": 15, "canon": [15, 18], "id": 15, "bear": 15, "mind": 15, "doubt": 15, "reserv": 15, "reach": 15, "eol": [15, 16], "proactiv": 15, "anticip": 15, "soon": 15, "wide": [15, 22], "newli": 15, "risk": 15, "team": 15, "manpow": 15, "member": 15, "u": 15, "gemato": 15, "carri": 15, "histori": 15, "rss": 15, "comprehens": 15, "opml": 15, "followup": 15, "suscept": 15, "simpli": [15, 16, 17, 22], "confus": [15, 19], "sync": [15, 19], "m": [15, 19, 20, 22], "cx": 15, "freez": 15, "patchelf": 15, "openapi": 15, "spec": [15, 16], "60": 15, "59": 15, "62": 15, "pin": 15, "httpcore": 15, "15": 15, "httpx": 15, "23": [15, 22], "sphobjinv": 15, "28": 15, "date": [15, 17, 20, 22], "pend": 15, "pip3": 15, "dirti": 15, "equal": [15, 22], "filetyp": 15, "mercuri": 15, "node": 15, "semver": 15, "pyqt": 15, "builder": 15, "pyqt5": 15, "pyqtwebengin": 15, "rout": 15, "dev20220522": 15, "selenium": 15, "141": 15, "sphinxcontrib": 15, "websupport": 15, "dev20220515": 15, "uri": 15, "watchfil": 15, "watchgod": 15, "dev0": 15, "tag_build": 15, "compar": [15, 16], "tempest": 15, "oslo": 15, "stestr": 15, "versioningit": 15, "wstool": 15, "mistak": [15, 20], "think": 16, "ve": 16, "hit": 16, "me": 16, "18_p9": 16, "13_p3": 16, "10_p3": 16, "9_p2": 16, "4_p1": 16, "urllib": 16, "pars": 16, "exploit": 16, "verbatim": 16, "attempt": [16, 20, 22], "worm": 16, "danger": 16, "worst": [16, 22], "unpars": 16, "django": [16, 22], "pr": 16, "14349": 16, "impact": [16, 20], "urlpars": 16, "nurl": 16, "parseresult": 16, "scheme": 16, "netloc": 16, "param": [16, 19], "badurl": 16, "what": 16, "attributeerror": 16, "492": 16, "decor": [16, 22], "async": [16, 19], "def": [16, 19, 22], "yield": 16, "await": 16, "sleep": 16, "callabl": 16, "mostli": [16, 17], "getfullargspec": 16, "p1": 16, "p2": 16, "kp3": 16, "kp4": 16, "kp5": 16, "arg": 16, "kwarg": 16, "argspec": 16, "vararg": 16, "fullargspec": 16, "varkw": 16, "kwonlyarg": 16, "kwonlydefault": 16, "annot": 16, "tupl": 16, "int": 16, "str": 16, "float": 16, "k6": 16, "k7": 16, "k8": 16, "One": [16, 22], "prototyp": 16, "bar": 16, "pretti": 16, "stringif": 16, "automak": 16, "16": 16, "wrongli": [16, 20, 22], "exec_prefix": 16, "met": 16, "pkg_config_path": 16, "python_cflag": 16, "python_lib": 16, "man": 16, "autoreconf": 16, "intend": [16, 20, 22], "easi": [16, 20, 22], "get_python_inc": 16, "get_path": 16, "platinclud": 16, "get_python_lib": 16, "purelib": 16, "platlib": 16, "platstdlib": 16, "todai": 16, "encodebyt": 16, "decodebyt": 16, "ought": 16, "unicod": 16, "version_info": 16, "b64_encodebyt": 16, "b64encod": 16, "b64decod": 16, "insert": 16, "newlin": 16, "encod": [16, 22], "length": 16, "until": 16, "emb": 16, "lpython3": 16, "7m": 16, "novemb": 16, "tomlkit": 16, "edit": 16, "wherea": [16, 18], "input": 16, "tomldecodeerror": 16, "d1": 16, "in1": 16, "in2": 16, "d2": 16, "d3": 16, "rb": 16, "python_vers": 16, "insist": 16, "incompatibilit": 16, "consider": 16, "dump": [16, 22], "tomli_w": 16, "wb": 16, "beyond": 17, "reliabl": [17, 22], "deep": 17, "beginn": 17, "peopl": 17, "suboptim": 17, "improp": 17, "fill": 17, "gap": 17, "welcom": 17, "small": 18, "adapt": 18, "frequent": [18, 19, 22], "hash": 18, "2e": 18, "36e46173a288c1c40853ffdb712c67e0e022df0e1ce50b7b1b50066b74d4": 18, "inconveni": 18, "settl": 18, "pytag": 18, "625": 18, "440": 18, "transform": 18, "contigu": 18, "babelex": 18, "flask_babelex": 18, "predat": 18, "minu": 18, "abitag": 18, "platformtag": 18, "cp39": 18, "427": 18, "alphanumer": 18, "w": 18, "left": 18, "_alpha": 18, "_beta": 18, "_p": 18, "pypi_no_norm": 18, "overwritten": 18, "execnet": 18, "c0459b92bc4a42b08281e69b8802d24c5d3415d4": 18, "pypi_pn": 18, "pypi_sdist_url": 18, "markup": 18, "overriden": 18, "prebuilt": 18, "pypi_wheel_url": 18, "aid": 18, "ensurepip": 18, "pypi_wheel_filenam": 18, "synopsi": 18, "parametr": 19, "epytest_ignor": 19, "test_client": 19, "test_gener": 19, "test_filenam": 19, "test_transport": 19, "test_transport_work": 19, "eventlet": 19, "test_contextvar": 19, "test_leak": 19, "might": 19, "intent": 19, "Not": [19, 22], "instabl": 19, "unstabl": 19, "discret": 19, "decid": 19, "justifi": 19, "semi": 19, "random": 19, "multiprocess": 19, "worksteal": 19, "finish": 19, "reschedul": 19, "worker": 19, "fast": 19, "lengthi": 19, "bottleneck": 19, "steep": [], "increas": [], "timeout": 22, "rerunfailur": 19, "minut": [], "slower": [], "fragil": [], "pytest_disable_plugin_autoload": 19, "delai": [], "reduc": 20, "randomli": [], "flake8": [19, 22], "01": 19, "chanc": 19, "experienc": 19, "insuffici": 19, "nest": 19, "envvar": 19, "pytest_plugin": 19, "comma": 19, "looponfail": 19, "pytest_fork": 19, "supposedli": 19, "twice": 19, "_pytest": [19, 22], "pathlib": [19, 22], "posixpath": 19, "discoveri": [19, 20, 22], "rel": [19, 20, 22], "signifi": 19, "event_loop": 19, "freezer": 19, "mocker": 19, "captur": [19, 22], "summari": 19, "asgiref": 19, "135": 19, "test_loc": 19, "test_sync": 19, "test_sync_contextvar": 19, "deprecationwarn": 19, "main_event_loop": 19, "get_event_loop": 19, "filterwarn": 19, "fatal": [19, 22], "_____________________": 19, "______________________": 19, "577": 19, "asgitest": 19, "testcas": 19, "583": 19, "test_wrapped_case_is_collect": 19, "interrupt": 19, "world": 19, "catch": [20, 22], "elog": 20, "portage_elog_class": 20, "optim": 20, "size": 20, "oo": 20, "docstr": 20, "store": 20, "disk": [20, 22], "permiss": 20, "uninstal": 20, "violat": 20, "auxiliari": 20, "readabl": [20, 22], "trimesh": 20, "__pycache__": 20, "blender_boolean": 20, "310": 20, "opt": 20, "notic": 20, "blueman": 20, "constant": 20, "deviceclass": 20, "sdp": 20, "tmpl": 20, "pair": 20, "docbook": 20, "35": 20, "36": 20, "changelog": 20, "qawarn": 20, "wait": 20, "find_packag": 20, "exclud": 20, "ident": 20, "artifact": 20, "footprint": 20, "isol": 20, "faster": 20, "poetry_cor": 20, "smaller": 20, "prolong": 20, "tend": 20, "plot": 21, "voacap": 21, "propag": 21, "qsl": 21, "hz1jw": 21, "pythonprop": 21, "basemap": 21, "gtk2": 21, "context": [21, 22], "doubl": 21, "energi": 21, "yoda": 21, "hepforg": 21, "use_en": 21, "pyext": 21, "extra_opt": 21, "give": 21, "sound": 21, "signal": [21, 22], "composit": 21, "csound": 21, "fordfrog": 21, "dbuild_python_interfac": 21, "dbuild_python_opcod": 21, "superset": 21, "arab": 21, "arabey": 21, "duali": 21, "pyduali": 21, "dict2db": 21, "trans2arab": 21, "arabic2tran": 21, "whitelist": 22, "mozilla": 22, "bleach": 22, "webencod": 22, "univers": 22, "detector": 22, "hypothesi": 22, "bottom": 22, "pre": 22, "cmd": 22, "cmd2": 22, "colorama": 22, "pyperclip": 22, "wcwidth": 22, "column": 22, "80": 22, "fact": 22, "3_8": 22, "argpars": 22, "argcomplet": 22, "fish": 22, "tcsh": 22, "displai": 22, "appeas": 22, "usng": 22, "xvfb": 22, "server": 22, "virtx": 22, "nonfat": 22, "termin": 22, "domain": 22, "firstli": 22, "nosetest": 22, "secondli": 22, "strict": 22, "thirdli": 22, "wholli": 22, "spew": 22, "irrelev": 22, "seem": 22, "ceas": 22, "downstream": 22, "how": 22, "statist": 22, "pep8": 22, "pycodestyl": 22, "close": 22, "preced": 22, "area": 22, "caution": 22, "advis": 22, "____________________": 22, "systemd": 22, "test_login": 22, "234": 22, "578": 22, "_importtestmodul": 22, "mod": 22, "import_path": 22, "fspath": 22, "importmod": 22, "524": 22, "import_modul": 22, "module_nam": 22, "127": 22, "_bootstrap": 22, "_gcd_import": 22, "frozen": 22, "1014": 22, "991": 22, "_find_and_load": 22, "975": 22, "_find_and_load_unlock": 22, "671": 22, "_load_unlock": 22, "rewrit": 22, "170": 22, "exec_modul": 22, "__dict__": 22, "login": 22, "r2": 22, "frozendict": 22, "pyarg": 22, "lookup": 22, "lead": 22, "mislead": 22, "guess": 22, "quick": 22, "mayb": 22, "eunittest": 22, "aris": 22, "confirm": 22, "whom": 22, "myself": 22, "subtl": 22, "But": 22, "bewar": 22, "unexpectedli": 22, "test_start_params_bug": 22, "xfail": 22, "statsmodel": 22, "tsa": 22, "test_arima": 22, "horrend": 22, "space": 22, "mayhem": 22, "5a": 22, "test_null_byt": 22, "skipif": 22, "0x03000000": 22, "unconditioanlli": 22, "test_babel_with_language_": 22, "test_build_latex": 22, "test_polyglossia_with_language_": 22, "altogeth": 22, "replai": 22, "devmanu": 22, "explan": 22, "connect": 22, "pygit2": 22, "no_network": 22, "properti": 22, "test_network": 22, "allow_test": 22, "unclear": 22, "backtrac": 22, "pluggi": 22, "cachedir": 22, "pytest_cach": 22, "rootdir": 22, "var": 22, "sabyenc": 22, "configfil": 22, "item": 22, "test_decod": 22, "test_crc_pickl": 22, "54": 22, "test_empty_size_pickl": 22, "0x00007f748bc47740": 22, "testsupport": 22, "74": 22, "sabyenc3_wrapp": 22, "119": 22, "180": 22, "pytest_pyfunc_cal": 22, "caller": 22, "187": 22, "_multical": 22, "temp": 22, "2934": 22, "66": 22, "vv": 22, "34": 22, "25": 22, "sabyenc3": 22, "596": 22, "decode_usenet_chunk": 22, "pybytearray_check": 22, "pylist_getitem": 22, "py_input_list": 22, "lp": 22, "0x00007fb5db746740": 22, "73": 22, "117": 22, "87": 22, "lambda": 22, "runpi": 22, "85": 22, "_run_cod": 22, "193": 22, "_run_module_as_main": 22, "reproduc": 22, "ubuntu": 22, "dndebug": 22, "leak": 22, "o0": 22, "isort": 22, "distutils_pep517_instal": 22, "destin": 22, "cp": 22, "pushd": 22, "null": 22, "popd": 22}, "objects": {}, "objtypes": {}, "objnames": {}, "titleterms": {"python": [0, 1, 2, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 21, 22], "ani": [0, 8], "r1": [0, 2, 5, 6, 7, 8, 13, 14, 21], "build": [0, 1, 2, 5, 6, 7, 8, 12, 13, 14, 21], "time": [0, 2, 7, 8, 14, 21], "depend": [0, 1, 2, 4, 5, 8, 14, 19, 21, 22], "basic": [0, 1, 5, 21, 22], "us": [0, 2, 3, 4, 5, 6, 7, 8, 14, 19, 21, 22], "uncondit": [0, 21], "condit": [0, 2, 4, 5, 14, 21], "addit": [0, 5, 14], "multipl": [0, 11, 21], "set": [0, 8], "common": [1, 9], "python_compat": 1, "python_dep": 1, "python_required_us": 1, "environ": [1, 22], "packag": [1, 2, 3, 4, 5, 6, 7, 12, 14, 15, 16, 18, 20, 21, 22], "The": [1, 5], "most": 1, "type": 1, "find": 1, "list": [1, 15, 16], "from": [1, 13], "system": [1, 2, 5, 6, 12], "integr": [2, 5], "written": 2, "meson": 2, "scon": 2, "extra": [2, 22], "singl": [2, 5, 7, 13, 21], "impl": [2, 7, 14, 21], "instal": [2, 5, 6, 9, 14, 15, 20, 21, 22], "pure": [2, 14], "multi": [2, 7, 14], "hybrid": [2, 21], "waf": 2, "advanc": [3, 4], "concept": [3, 6], "namespac": 3, "hierarch": 3, "structur": 3, "determin": 3, "whether": 3, "ar": [3, 20], "ad": [3, 12, 15, 22], "new": [3, 12, 15], "gentoo": [3, 10], "legaci": [3, 5, 6, 18], "request": 4, "flag": 4, "interpret": [4, 8, 11, 12], "version": [4, 11, 15, 18], "cffi": 4, "greenlet": 4, "option": [4, 5], "test": [4, 5, 6, 15, 19, 20, 22], "suit": 4, "rust": [4, 5], "distutil": [5, 6, 7, 8, 16], "standard": 5, "pep": [5, 13, 20, 22], "517": [5, 13, 20, 22], "mode": [5, 22], "sourc": [5, 6, 18], "archiv": [5, 18], "variant": 5, "setuptools_scm": 5, "flit_scm": 5, "hatch": 5, "vc": 5, "pdm": 5, "backend": [5, 20], "snapshot": 5, "extens": [5, 22], "c": [5, 22], "cython": 5, "parallel": [5, 19], "race": 5, "sub": 5, "phase": [5, 22], "function": [5, 9], "python_prepar": 5, "python_configur": 5, "python_compil": 5, "python_test": 5, "python_instal": 5, "pass": 5, "argument": [5, 19], "setup": 5, "py": 5, "call": 5, "custom": [5, 18, 22], "command": 5, "enabl": 5, "document": [5, 20], "via": [5, 15], "sphinx": 5, "autodoc": 5, "without": [5, 16], "usag": [5, 8], "cargo": 5, "manual": [5, 14, 21], "build_dir": 5, "d": 5, "non": 5, "differ": [6, 8, 18], "variat": 6, "distutils_use_setuptool": 6, "setuptool": [6, 20], "entri": 6, "point": 6, "other": [6, 19], "runtim": [6, 7, 21], "pyproject": 6, "toml": [6, 16], "base": [6, 16, 19], "project": [6, 15], "In": 6, "v": [6, 7], "out": 6, "befor": [6, 22], "choos": [7, 22], "between": 7, "eclass": [7, 12, 18], "overview": 7, "first": 7, "expert": [8, 19], "partial": 8, "restrict": 8, "implement": [8, 9, 11, 12, 15], "python_setup": 8, "disjoint": 8, "api": [8, 20], "regular": 8, "combin": 8, "helper": [9, 18], "fix": 9, "shebang": 9, "script": 9, "byte": [9, 20], "compil": [9, 20], "modul": [9, 20], "queri": 9, "inform": 9, "guid": [10, 13], "content": 10, "indic": 10, "tabl": 10, "life": 11, "cycl": 11, "stabil": 11, "guarante": 11, "altern": 11, "support": [11, 15], "backport": 11, "mainten": [12, 15], "note": 12, "specif": 12, "cpython": 12, "patchset": 12, "pypi": [12, 15, 18, 22], "profil": 12, "chang": [12, 16], "port": [12, 15, 16], "initi": 12, "remov": [12, 16], "prepar": 12, "bootstrap": 12, "migrat": 13, "old": 13, "python_usedep": 13, "syntax": 13, "eapi": [13, 15], "7": 13, "8": [13, 16], "autotool": 14, "name": [15, 18, 19], "polici": 15, "2": 15, "which": 15, "exist": 15, "can": 15, "co": 15, "maintain": 15, "monitor": 15, "releas": 15, "feed": 15, "check": [15, 20], "pip": 15, "repologi": 15, "routin": 15, "outdat": 15, "gpy": 15, "verifi": 15, "dep": 15, "tip": 16, "retroact": 16, "bpo43882": 16, "urlsplit": 16, "now": 16, "strip": 16, "lf": 16, "cr": 16, "ht": 16, "charact": 16, "3": 16, "11": 16, "gener": [16, 18], "coroutin": 16, "asyncio": 16, "inspect": 16, "getargspec": 16, "formatargspec": 16, "10": 16, "configur": 16, "No": 16, "1": 16, "found": [16, 19], "sysconfig": 16, "deprec": [16, 20], "9": 16, "base64": 16, "encodestr": 16, "decodestr": 16, "config": 16, "pkg": 16, "longer": 16, "librari": 16, "default": 16, "replac": 16, "tomllib": 16, "tomli": 16, "fallback": 16, "w": 16, "prefac": 17, "url": 18, "modern": 18, "distribut": 18, "filenam": 18, "binari": 18, "match": 18, "fetch": 18, "wheel": 18, "pytest": [19, 22], "recip": 19, "skip": [19, 22], "marker": 19, "path": 19, "avoid": 19, "runner": [19, 22], "xdist": 19, "run": [19, 22], "deal": 22, "flaki": [], "plugin": 19, "explicitli": 19, "disabl": 19, "automat": 19, "autoload": 19, "entir": 19, "typeerror": 19, "_make_test_flaki": 19, "got": 19, "an": 19, "unexpect": 19, "keyword": 19, "rerun": 19, "importpathmismatcherror": 19, "fixtur": 19, "warn": [19, 20], "qa": 20, "improv": 20, "report": 20, "portag": 20, "bytecod": 20, "relat": 20, "strai": 20, "top": 20, "level": 20, "file": [20, 22], "site": 20, "exampl": 20, "poetri": 20, "flit": 20, "buildapi": 20, "masonri": 20, "build_meta": 20, "__legacy__": 20, "A": 21, "why": 22, "i": 22, "import": 22, "distutils_enable_test": 22, "case": 22, "more": 22, "virtualx": 22, "correct": 22, "undesir": 22, "miss": 22, "importerror": 22, "checklist": 22, "failur": 22, "problemat": 22, "requir": 22, "internet": 22, "access": 22, "abort": 22, "due": 22, "assert": 22}, "envversion": {"sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 60}, "alltitles": {"python-any-r1 \u2014 build-time dependency": [[0, "python-any-r1-build-time-dependency"]], "Basic use for unconditional Python": [[0, "basic-use-for-unconditional-python"], [21, "basic-use-for-unconditional-python"]], "Dependencies": [[0, "dependencies"], [5, "dependencies"], [14, "dependencies"], [21, "dependencies"]], "Conditional Python use": [[0, "conditional-python-use"], [14, "conditional-python-use"], [21, "conditional-python-use"]], "Additional conditional dependencies": [[0, "additional-conditional-dependencies"]], "Multiple sets of conditional dependencies": [[0, "multiple-sets-of-conditional-dependencies"]], "Common basics": [[1, "common-basics"]], "PYTHON_COMPAT": [[1, "python-compat"]], "PYTHON_DEPS and PYTHON_REQUIRED_USE": [[1, "python-deps-and-python-required-use"]], "Python environment": [[1, "python-environment"]], "Dependencies in Python packages": [[1, "dependencies-in-python-packages"]], "The most common dependency types": [[1, "the-most-common-dependency-types"]], "Finding dependency lists from build systems": [[1, "finding-dependency-lists-from-build-systems"]], "Integration with build systems written in Python": [[2, "integration-with-build-systems-written-in-python"]], "Meson": [[2, "meson"]], "SCons": [[2, "scons"]], "Build-time use with no extra dependencies": [[2, "build-time-use-with-no-extra-dependencies"]], "Build-time use with extra dependencies": [[2, "build-time-use-with-extra-dependencies"]], "Single-impl package": [[2, "single-impl-package"], [2, "id1"]], "Single-impl package with conditional Python install": [[2, "single-impl-package-with-conditional-python-install"]], "Pure Python multi-impl package": [[2, "pure-python-multi-impl-package"]], "Hybrid python-r1 + SCons package": [[2, "hybrid-python-r1-scons-package"]], "waf": [[2, "waf"]], "Build-time use": [[2, "build-time-use"]], "Advanced concepts": [[3, "advanced-concepts"]], "Namespace packages": [[3, "namespace-packages"]], "Hierarchical package structure": [[3, "hierarchical-package-structure"]], "Namespace package structure": [[3, "namespace-package-structure"]], "Determining whether namespaces are used": [[3, "determining-whether-namespaces-are-used"]], "Adding new namespace packages to Gentoo": [[3, "adding-new-namespace-packages-to-gentoo"]], "Legacy namespace packages in Gentoo": [[3, "legacy-namespace-packages-in-gentoo"]], "Advanced dependencies": [[4, "advanced-dependencies"]], "Requesting USE flags on the Python interpreter": [[4, "requesting-use-flags-on-the-python-interpreter"]], "Dependencies conditional to Python version": [[4, "dependencies-conditional-to-python-version"]], "Dependencies on CFFI and greenlet": [[4, "dependencies-on-cffi-and-greenlet"]], "Optional test suite dependencies on Rust packages": [[4, "optional-test-suite-dependencies-on-rust-packages"]], "distutils-r1 \u2014 standard Python build systems": [[5, "distutils-r1-standard-python-build-systems"]], "The PEP 517 and legacy modes": [[5, "the-pep-517-and-legacy-modes"]], "Basic use (PEP 517 mode)": [[5, "basic-use-pep-517-mode"]], "Source archives": [[5, "source-archives"]], "python-single-r1 variant": [[5, "python-single-r1-variant"]], "PEP 517 build systems": [[5, "pep-517-build-systems"]], "setuptools_scm (flit_scm, hatch-vcs, pdm-backend) and snapshots": [[5, "setuptools-scm-flit-scm-hatch-vcs-pdm-backend-and-snapshots"]], "Packages installing extensions (C, Rust\u2026)": [[5, "packages-installing-extensions-c-rust"]], "Packages using Cython": [[5, "packages-using-cython"]], "Parallel build race conditions": [[5, "parallel-build-race-conditions"]], "Sub-phase functions": [[5, "sub-phase-functions"]], "python_prepare": [[5, "python-prepare"]], "python_configure": [[5, "python-configure"]], "python_compile": [[5, "python-compile"]], "python_test": [[5, "python-test"]], "python_install": [[5, "python-install"]], "Passing arguments to setup.py": [[5, "passing-arguments-to-setup-py"]], "Calling custom setup.py commands": [[5, "calling-custom-setup-py-commands"]], "Enabling tests": [[5, "enabling-tests"]], "Building documentation via Sphinx": [[5, "building-documentation-via-sphinx"]], "Basic documentation with autodoc": [[5, "basic-documentation-with-autodoc"]], "Additional Sphinx extensions": [[5, "additional-sphinx-extensions"]], "Sphinx without autodoc or extensions": [[5, "sphinx-without-autodoc-or-extensions"]], "Packages with optional Python build system usage": [[5, "packages-with-optional-python-build-system-usage"]], "Packages with Rust extensions (using Cargo)": [[5, "packages-with-rust-extensions-using-cargo"]], "Installing packages without a PEP 517 build backend": [[5, "installing-packages-without-a-pep-517-build-backend"]], "Installing packages manually into BUILD_DIR": [[5, "installing-packages-manually-into-build-dir"]], "Installing packages manually into D": [[5, "installing-packages-manually-into-d"]], "Integrating with a non-PEP 517 build system": [[5, "integrating-with-a-non-pep-517-build-system"]], "distutils-r1 legacy concepts": [[6, "distutils-r1-legacy-concepts"]], "Different build system variations": [[6, "different-build-system-variations"]], "DISTUTILS_USE_SETUPTOOLS": [[6, "distutils-use-setuptools"]], "distutils and setuptools build systems": [[6, "distutils-and-setuptools-build-systems"]], "Setuptools\u2019 entry points": [[6, "setuptools-entry-points"]], "Other runtime uses of setuptools": [[6, "other-runtime-uses-of-setuptools"]], "pyproject.toml-based projects": [[6, "pyproject-toml-based-projects"]], "In-source vs out-of-source builds": [[6, "in-source-vs-out-of-source-builds"]], "Installing the package before testing": [[6, "installing-the-package-before-testing"]], "Choosing between Python eclasses": [[7, "choosing-between-python-eclasses"]], "Overview": [[7, "overview"]], "Build time vs runtime use": [[7, "build-time-vs-runtime-use"]], "Single-impl vs multi-impl": [[7, "single-impl-vs-multi-impl"]], "Python-first packages (distutils-r1 eclass)": [[7, "python-first-packages-distutils-r1-eclass"]], "Expert python-r1 usage": [[8, "expert-python-r1-usage"]], "Partially restricting Python implementation": [[8, "partially-restricting-python-implementation"]], "Restricting interpreters for python_setup": [[8, "restricting-interpreters-for-python-setup"]], "Disjoint build dependencies (any-r1 API)": [[8, "disjoint-build-dependencies-any-r1-api"]], "Using regular python-r1 API": [[8, "using-regular-python-r1-api"]], "Using any-r1 API with python-r1": [[8, "using-any-r1-api-with-python-r1"]], "Different sets of build-time dependencies": [[8, "different-sets-of-build-time-dependencies"]], "Using any-r1 API with distutils-r1": [[8, "using-any-r1-api-with-distutils-r1"]], "Combining any-r1 API with implementation restrictions": [[8, "combining-any-r1-api-with-implementation-restrictions"]], "Common helper functions": [[9, "common-helper-functions"]], "Install helpers": [[9, "install-helpers"]], "Fixing shebangs on installed scripts": [[9, "fixing-shebangs-on-installed-scripts"]], "Byte-compiling Python modules": [[9, "byte-compiling-python-modules"]], "Querying the implementation information": [[9, "querying-the-implementation-information"]], "Gentoo Python Guide": [[10, "gentoo-python-guide"]], "Contents:": [[10, null]], "Indices and tables": [[10, "indices-and-tables"]], "Python interpreters": [[11, "python-interpreters"]], "Versions of Python": [[11, "versions-of-python"]], "Life cycle of a Python implementation": [[11, "life-cycle-of-a-python-implementation"]], "Stability guarantees of Python implementations": [[11, "stability-guarantees-of-python-implementations"]], "Alternative Python implementations": [[11, "alternative-python-implementations"]], "Support for multiple implementations": [[11, "support-for-multiple-implementations"]], "Backports": [[11, "backports"]], "Maintenance of Python implementations": [[12, "maintenance-of-python-implementations"]], "Notes specific to Python interpreters": [[12, "notes-specific-to-python-interpreters"]], "CPython patchsets": [[12, "cpython-patchsets"]], "PyPy": [[12, "pypy"]], "Adding a new Python implementation": [[12, "adding-a-new-python-implementation"]], "Eclass and profile changes": [[12, "eclass-and-profile-changes"], [12, "id1"]], "Porting initial packages": [[12, "porting-initial-packages"]], "Removing a Python implementation": [[12, "removing-a-python-implementation"]], "Preparation": [[12, "preparation"]], "Python build system bootstrap": [[12, "python-build-system-bootstrap"]], "Migration guides": [[13, "migration-guides"]], "Migrating from old PYTHON_USEDEP syntax in python-single-r1": [[13, "migrating-from-old-python-usedep-syntax-in-python-single-r1"]], "Migrating from EAPI 7 to EAPI 8": [[13, "migrating-from-eapi-7-to-eapi-8"]], "Migrating to PEP 517 builds": [[13, "migrating-to-pep-517-builds"]], "python-r1 \u2014 multi-impl packages": [[14, "python-r1-multi-impl-packages"]], "Manual install": [[14, "manual-install"], [21, "manual-install"]], "Pure Python autotools package": [[14, "pure-python-autotools-package"]], "Additional build-time Python use": [[14, "additional-build-time-python-use"]], "Python package maintenance": [[15, "python-package-maintenance"]], "Package name policy": [[15, "package-name-policy"]], "Support for Python 2": [[15, "support-for-python-2"]], "Which implementations to test new packages for?": [[15, "which-implementations-to-test-new-packages-for"]], "Adding new Python implementations to existing packages": [[15, "adding-new-python-implementations-to-existing-packages"]], "Which packages can be (co-)maintained by the Python project?": [[15, "which-packages-can-be-co-maintained-by-the-python-project"]], "Porting packages to a new EAPI": [[15, "porting-packages-to-a-new-eapi"]], "Monitoring new package versions": [[15, "monitoring-new-package-versions"]], "PyPI release feeds": [[15, "pypi-release-feeds"]], "Checking via pip": [[15, "checking-via-pip"]], "Repology": [[15, "repology"]], "Routine checks on installed Python packages": [[15, "routine-checks-on-installed-python-packages"]], "pip check": [[15, "pip-check"]], "pip list --outdated": [[15, "pip-list-outdated"]], "gpy-verify-deps": [[15, "gpy-verify-deps"]], "Porting tips": [[16, "porting-tips"]], "Retroactive changes": [[16, "retroactive-changes"]], "bpo43882: urlsplit now strips LF, CR and HT characters": [[16, "bpo43882-urlsplit-now-strips-lf-cr-and-ht-characters"]], "Python 3.11": [[16, "python-3-11"]], "Generator-based coroutine removal (asyncio.coroutine)": [[16, "generator-based-coroutine-removal-asyncio-coroutine"]], "inspect.getargspec() and inspect.formatargspec() removal": [[16, "inspect-getargspec-and-inspect-formatargspec-removal"]], "Python 3.10": [[16, "python-3-10"]], "configure: No package \u2018python-3.1\u2019 found": [[16, "configure-no-package-python-3-1-found"]], "distutils.sysconfig deprecation": [[16, "distutils-sysconfig-deprecation"]], "Python 3.9": [[16, "python-3-9"]], "base64.encodestring / base64.decodestring removal": [[16, "base64-encodestring-base64-decodestring-removal"]], "Python 3.8": [[16, "python-3-8"]], "python-config and pkg-config no longer list Python library by default": [[16, "python-config-and-pkg-config-no-longer-list-python-library-by-default"]], "Replacing the toml package": [[16, "replacing-the-toml-package"]], "Porting to tomllib/tomli without toml fallback": [[16, "porting-to-tomllib-tomli-without-toml-fallback"]], "Porting to tomllib/tomli with toml fallback": [[16, "porting-to-tomllib-tomli-with-toml-fallback"]], "Porting to tomli-w": [[16, "porting-to-tomli-w"]], "Preface": [[17, "preface"]], "pypi \u2014 helper eclass for PyPI archives": [[18, "pypi-helper-eclass-for-pypi-archives"]], "PyPI URLs": [[18, "pypi-urls"]], "Modern and legacy URLs": [[18, "modern-and-legacy-urls"]], "Source distribution filenames": [[18, "source-distribution-filenames"]], "Binary distribution filenames": [[18, "binary-distribution-filenames"]], "Packages with matching name and version": [[18, "packages-with-matching-name-and-version"]], "Package with a different name": [[18, "package-with-a-different-name"]], "Customizing the generated URL": [[18, "customizing-the-generated-url"]], "Fetching wheels": [[18, "fetching-wheels"]], "QA checks and warnings": [[20, "qa-checks-and-warnings"]], "Improved QA warning reporting in Portage": [[20, "improved-qa-warning-reporting-in-portage"]], "Compiled bytecode-related warnings": [[20, "compiled-bytecode-related-warnings"]], "Modules are not byte-compiled": [[20, "modules-are-not-byte-compiled"]], "Stray compiled bytecode": [[20, "stray-compiled-bytecode"]], "Stray top-level files in site-packages": [[20, "stray-top-level-files-in-site-packages"]], "Example for test packages installed by setuptools": [[20, "example-for-test-packages-installed-by-setuptools"]], "Documentation files installed by Poetry": [[20, "documentation-files-installed-by-poetry"]], "Deprecated PEP 517 backends": [[20, "deprecated-pep-517-backends"]], "flit.buildapi": [[20, "flit-buildapi"]], "poetry.masonry.api": [[20, "poetry-masonry-api"]], "setuptools.build_meta:__legacy__": [[20, "setuptools-build-meta-legacy"]], "python-single-r1 \u2014 single-impl packages": [[21, "python-single-r1-single-impl-packages"]], "A hybrid: build-time + conditional runtime": [[21, "a-hybrid-build-time-conditional-runtime"]], "Multiple USE conditions": [[21, "multiple-use-conditions"]], "Tests in Python packages": [[22, "tests-in-python-packages"]], "Why is running tests important?": [[22, "why-is-running-tests-important"]], "Using distutils_enable_tests": [[22, "using-distutils-enable-tests"]], "Basic use case": [[22, "basic-use-case"]], "Adding more test dependencies": [[22, "adding-more-test-dependencies"]], "Installing the package before running tests": [[22, "installing-the-package-before-running-tests"]], "Customizing the test phase": [[22, "customizing-the-test-phase"]], "Customizing the test phase for pytest": [[22, "customizing-the-test-phase-for-pytest"]], "Running tests with virtualx": [[22, "running-tests-with-virtualx"]], "Choosing the correct test runner": [[22, "choosing-the-correct-test-runner"]], "Undesirable test dependencies": [[22, "undesirable-test-dependencies"]], "Missing test files in PyPI packages": [[22, "missing-test-files-in-pypi-packages"]], "ImportErrors for C extensions": [[22, "importerrors-for-c-extensions"]], "Checklist for dealing with test failures": [[22, "checklist-for-dealing-with-test-failures"]], "Skipping problematic tests": [[22, "skipping-problematic-tests"]], "Tests requiring Internet access": [[22, "tests-requiring-internet-access"]], "Tests aborting (due to assertions)": [[22, "tests-aborting-due-to-assertions"]], "Installing extra dependencies in test environment (PEP 517 mode)": [[22, "installing-extra-dependencies-in-test-environment-pep-517-mode"]], "pytest recipes": [[19, "pytest-recipes"]], "Skipping tests based on markers": [[19, "skipping-tests-based-on-markers"]], "Skipping tests based on paths/names": [[19, "skipping-tests-based-on-paths-names"]], "Avoiding the dependency on pytest-runner": [[19, "avoiding-the-dependency-on-pytest-runner"]], "Using pytest-xdist to run tests in parallel": [[19, "using-pytest-xdist-to-run-tests-in-parallel"]], "Avoiding dependencies on other pytest plugins": [[19, "avoiding-dependencies-on-other-pytest-plugins"]], "Explicitly disabling automatic pytest plugins": [[19, "explicitly-disabling-automatic-pytest-plugins"]], "Expert: disabling plugin autoloading entirely": [[19, "expert-disabling-plugin-autoloading-entirely"]], "TypeError: _make_test_flaky() got an unexpected keyword argument \u2018reruns\u2019": [[19, "typeerror-make-test-flaky-got-an-unexpected-keyword-argument-reruns"]], "ImportPathMismatchError": [[19, "importpathmismatcherror"]], "fixture \u2018\u2026\u2019 not found": [[19, "fixture-not-found"]], "Warnings": [[19, "warnings"]]}, "indexentries": {}})
\ No newline at end of file
diff --git a/guide/single.html b/guide/single.html
index ae36a98..0f88384 100644
--- a/guide/single.html
+++ b/guide/single.html
@@ -1,16 +1,16 @@
-
+
python-single-r1 — single-impl packages — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,7 +32,7 @@
-python-single-r1 — single-impl packages
+python-single-r1 — single-impl packages
The python-single-r1
eclass is used to install single-impl packages.
It is probably the easiest eclass to use, and it is recommended over
python-r1
whenever multi-impl support would add unnecessary
@@ -40,7 +40,7 @@ complexity. However, for packages using distutils or a similar Python
build system, distutils-r1
eclass should be used instead.
Eclass reference: python-single-r1.eclass(5)
-Basic use for unconditional Python
+Basic use for unconditional Python
The defining feature of this eclass is that it defines a pkg_setup
phase. It normally calls python_setup
function in order
to determine the interpreter selected by user, and set the global
@@ -76,9 +76,9 @@ like the following:
This ebuild demonstrates the absolute minimum working code. Only
the four highlighted lines are specific to Python eclasses, plus
the implicitly exported pkg_setup
phase.
-
+
-Dependencies
+Dependencies
When depending on other Python packages, USE dependencies need to be
declared in order to ensure that the dependencies would be built against
the Python implementation used for the package. The exact dependency
@@ -124,7 +124,7 @@ inside and outside
inside it.
-Conditional Python use
+Conditional Python use
The examples so far assumed that Python is used unconditionally.
If Python support is conditional to a USE flag, appropriate USE
conditionals need to be used in metadata variables, and pkg_setup
@@ -170,7 +170,7 @@ needs to be rewritten to call the default implementation conditionally:
-A hybrid: build-time + conditional runtime
+A hybrid: build-time + conditional runtime
A fairly common pattern is for Python to be required unconditionally
at build time but only conditionally at runtime. This happens e.g. when
the package is calling some helper scripts at build time, and optionally
@@ -217,7 +217,7 @@ USE-conditional:
Note that eclass-exported pkg_setup
is used unconditionally here.
-Multiple USE conditions
+Multiple USE conditions
Finally, let’s give an example of a package where Python is needed
for two independent conditions. To make it more complex, one of them
applies to build time (tests) while the other to runtime (bindings).
@@ -271,7 +271,7 @@ the one in REQUIRED
used in dependencies.
-Manual install
+Manual install
Some packages do not include Python files in their build systems,
or do not install all of them. In this case, the necessary files
can be installed via one of the installation helpers.
@@ -391,7 +391,7 @@ can be installed via one of the installation helpers.
©2020, Michał Górny, license: CC BY 4.0.
|
- Powered by Sphinx 7.1.2
+ Powered by Sphinx 7.2.6
& Alabaster 0.7.13
|
diff --git a/guide/test.html b/guide/test.html
index 0090c43..8b3a162 100644
--- a/guide/test.html
+++ b/guide/test.html
@@ -1,16 +1,16 @@
-
+
Tests in Python packages — Gentoo Python Guide documentation
-
+
-
+
-
+
@@ -32,9 +32,9 @@
-Tests in Python packages
+Tests in Python packages
-Why is running tests important?
+Why is running tests important?
Since Python performs only minimal build-time (or more precisely,
import-time) checking of correctness, it is important to run tests
of Python packages in order to catch any problems early. This is
@@ -42,9 +42,9 @@ especially important for permitting others to verify support for new
Python implementations.
-Using distutils_enable_tests
+Using distutils_enable_tests
-Basic use case
+Basic use case
The simplest way of enabling tests is to call distutils_enable_tests
in global scope, passing the test runner name as the first argument.
This function takes care of declaring test phase, setting appropriate
@@ -84,7 +84,7 @@ setting RDEPENDSee choosing the correct test runner for more information.
-Adding more test dependencies
+Adding more test dependencies
Additional test dependencies can be specified in test?
conditional.
The flag normally does not need to be explicitly declared,
as distutils_enable_tests
does that in the majority of cases.
@@ -125,7 +125,7 @@ can be rewritten as:
-Installing the package before running tests
+Installing the package before running tests
In PEP 517 mode, the eclass automatically exposes a venv-style install
tree to the test phase. No explicit action in necessary.
In the legacy mode, distutils_enable_tests
has an optional
@@ -134,7 +134,7 @@ to a temporary directory. More information can be found in the legacy
section.
-Customizing the test phase
+Customizing the test phase
If additional pre-/post-test phase actions need to be performed,
they can be easily injected via overriding src_test()
and making
it call distutils-r1_src_test
:
@@ -222,7 +222,7 @@ of its logic.
so you must make sure to call it if you override src_test
.
-Customizing the test phase for pytest
+Customizing the test phase for pytest
For the relatively frequent case of pytest-based packages needing
additional customization, a epytest
helper is provided. The helper
runs pytest
with a standard set of options and automatic handling
@@ -239,7 +239,7 @@ python_test() {
-Running tests with virtualx
+Running tests with virtualx
Test suites requiring a display to work correctly can often be appeased
usng Xvfb. If the package in question does not start Xvfb directly,
virtualx.eclass
can be used to do that. Whenever possible, it is
@@ -275,7 +275,7 @@ this. In other contexts,
-Choosing the correct test runner
+Choosing the correct test runner
There are a few modules used to run tests in Python packages. The most
common include the built-in unittest module, pytest and nose . There
are also some rarely used test tools and domain-specific solutions,
@@ -312,7 +312,7 @@ If you have some free time, convincing upstream to switch from nose
to pytest is a worthwhile goal.
-Undesirable test dependencies
+Undesirable test dependencies
There is a number of packages that are frequently listed as test
dependencies upstream but have little to no value for Gentoo users.
It is recommended to skip those test dependencies whenever possible.
@@ -337,7 +337,7 @@ for the former, and an environment close enough to the latter. Do not
use tox in ebuilds.
-Missing test files in PyPI packages
+Missing test files in PyPI packages
One of the more common test-related problems is that PyPI packages
(generated via setup.py sdist
) often miss some or all test files.
The latter results in no tests being run, the former in test failures
@@ -351,7 +351,7 @@ tarball:
-ImportErrors for C extensions
+ImportErrors for C extensions
Tests are often invoked in such a way that the Python packages
and modules from the current directory take precedence over these found
in the staging area or build directory. In fact, this is often
@@ -440,7 +440,7 @@ missing its configuration (
-Checklist for dealing with test failures
+Checklist for dealing with test failures
If you see some test failures but do not have a guess as to why they
would be happening, try the following for a start:
@@ -493,7 +493,7 @@ be skipped.
-Skipping problematic tests
+Skipping problematic tests
While generally it is preferable to fix tests, sometimes you will face
failures that cannot be easily resolved. This especially applies
to tests that are broken themselves rather than indicating real problems
@@ -544,7 +544,7 @@ simply remove that file. If all tests belonging to the package
are broken, you can use RESTRICT=test
to disable testing altogether.
-Tests requiring Internet access
+Tests requiring Internet access
One of more common causes of test failures are attempts to use Internet.
With Portage blocking network access by default, packages performing
tests against remote servers often fail.
@@ -584,7 +584,7 @@ distutils_enable_tests pytest
-Tests aborting (due to assertions)
+Tests aborting (due to assertions)
There are cases of package’s tests terminating with an unclear error
message and backtrace similar to the following:
============================= test session starts ==============================
@@ -611,27 +611,27 @@ Current thread 0x00007f748bc47740<
an assertion. Since pytest does not print captured output when exiting
due to a signal, you need to disable output capture (using -s
)
to get a more useful error, e.g.:
- $ python3.7 -m pytest -s
-=============================================================== test session starts ===============================================================
-platform linux -- Python 3.7.8, pytest-6.0.1, py-1.9.0, pluggy-0.13.1
-rootdir: /tmp/sabyenc, configfile: pytest.ini
-plugins: asyncio-0.14.0, forked-1.3.0, xdist-1.34.0, hypothesis-5.23.9, mock-3.2.0, flaky-3.7.0, timeout-1.4.2, freezegun-0.4.2
-collected 25 items
-
-tests/test_decoder.py .............python3.7: src/sabyenc3.c:596: decode_usenet_chunks: Assertion `PyByteArray_Check(PyList_GetItem(Py_input_list, lp))' failed.
-Fatal Python error: Aborted
-
-Current thread 0x00007fb5db746740 (most recent call first):
- File "/tmp/sabyenc/tests/testsupport.py", line 73 in sabyenc3_wrapper
- File "/tmp/sabyenc/tests/test_decoder.py", line 117 in test_empty_size_pickles
- File "/usr/lib/python3.7/site-packages/_pytest/python.py", line 180 in pytest_pyfunc_call
- File "/usr/lib/python3.7/site-packages/pluggy/callers.py", line 187 in _multicall
- File "/usr/lib/python3.7/site-packages/pluggy/manager.py", line 87 in <lambda>
- [...]
- File "/usr/lib/python3.7/site-packages/pytest/__main__.py", line 7 in <module>
- File "/usr/lib/python3.7/runpy.py", line 85 in _run_code
- File "/usr/lib/python3.7/runpy.py", line 193 in _run_module_as_main
-Aborted (core dumped)
+ $ python3.7 -m pytest -s
+=============================================================== test session starts ===============================================================
+platform linux -- Python 3 .7.8, pytest-6.0.1, py-1.9.0, pluggy-0.13.1
+rootdir: /tmp/sabyenc, configfile: pytest.ini
+plugins: asyncio-0.14.0, forked-1.3.0, xdist-1.34.0, hypothesis-5.23.9, mock-3.2.0, flaky-3.7.0, timeout-1.4.2, freezegun-0.4.2
+collected 25 items
+
+tests/test_decoder.py .............python3.7: src/sabyenc3.c:596: decode_usenet_chunks: Assertion ` PyByteArray_Check( PyList_GetItem( Py_input_list, lp)) ' failed.
+Fatal Python error: Aborted
+
+Current thread 0x00007fb5db746740 ( most recent call first) :
+ File "/tmp/sabyenc/tests/testsupport.py" , line 73 in sabyenc3_wrapper
+ File "/tmp/sabyenc/tests/test_decoder.py" , line 117 in test_empty_size_pickles
+ File "/usr/lib/python3.7/site-packages/_pytest/python.py" , line 180 in pytest_pyfunc_call
+ File "/usr/lib/python3.7/site-packages/pluggy/callers.py" , line 187 in _multicall
+ File "/usr/lib/python3.7/site-packages/pluggy/manager.py" , line 87 in <lambda>
+ [ ...]
+ File "/usr/lib/python3.7/site-packages/pytest/__main__.py" , line 7 in <module>
+ File "/usr/lib/python3.7/runpy.py" , line 85 in _run_code
+ File "/usr/lib/python3.7/runpy.py" , line 193 in _run_module_as_main
+Aborted ( core dumped)
Now the message clearly indicates the failed assertion.
@@ -647,7 +647,7 @@ $ pytest -s