Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package python-hatchling for
openSUSE:Factory checked in at 2022-08-16 17:06:53
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-hatchling (Old)
and /work/SRC/openSUSE:Factory/.python-hatchling.new.1521 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-hatchling"
Tue Aug 16 17:06:53 2022 rev:5 rq:995126 version:1.7.1
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-hatchling/python-hatchling.changes
2022-08-04 13:23:35.728521131 +0200
+++
/work/SRC/openSUSE:Factory/.python-hatchling.new.1521/python-hatchling.changes
2022-08-16 17:07:02.279751478 +0200
@@ -1,0 +2,25 @@
+Sat Aug 13 19:23:18 UTC 2022 - Beno??t Monin <[email protected]>
+
+- update to version 1.7.1:
+ * Fixed:
+ + Fix the value the relative_path attribute of included files,
+ that some build plugins may use, when selecting explicit
+ paths
+
+-------------------------------------------------------------------
+Sat Aug 13 14:17:00 UTC 2022 - Beno??t Monin <[email protected]>
+
+- update to version 1.7.0:
+ * Added:
+ + Add require-runtime-features option for builders and build
+ hooks
+ + Check for unknown trove classifiers
+ + Update SPDX license information to version 3.18
+ * Fixed:
+ + Add better error message for wheel target dev mode
+ installations that define path rewrites with the sources
+ option
+ + Note the allow-direct-references option in the relevant error
+ messages
+
+-------------------------------------------------------------------
Old:
----
hatchling-1.6.0.tar.gz
New:
----
hatchling-1.7.1.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-hatchling.spec ++++++
--- /var/tmp/diff_new_pack.NdwEtO/_old 2022-08-16 17:07:03.355754696 +0200
+++ /var/tmp/diff_new_pack.NdwEtO/_new 2022-08-16 17:07:03.359754707 +0200
@@ -19,7 +19,7 @@
%define skip_python2 1
%{?!python_module:%define python_module() python-%{**} python3-%{**}}
Name: python-hatchling
-Version: 1.6.0
+Version: 1.7.1
Release: 0
Summary: Build backend used by Hatch
License: MIT
++++++ hatchling-1.6.0.tar.gz -> hatchling-1.7.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/PKG-INFO new/hatchling-1.7.1/PKG-INFO
--- old/hatchling-1.6.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.1
Name: hatchling
-Version: 1.6.0
+Version: 1.7.1
Summary: Modern, extensible Python build backend
Project-URL: Homepage, https://hatch.pypa.io/latest/
Project-URL: Sponsor, https://github.com/sponsors/ofek
@@ -14,11 +14,11 @@
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
-Classifier: Programming Language :: Python :: 3.10
-Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Software Development :: Build Tools
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/scripts/update_classifiers.py
new/hatchling-1.7.1/scripts/update_classifiers.py
--- old/hatchling-1.6.0/scripts/update_classifiers.py 1970-01-01
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/scripts/update_classifiers.py 2020-02-02
01:00:00.000000000 +0100
@@ -0,0 +1,28 @@
+import pathlib
+from contextlib import closing
+from importlib.metadata import version
+from io import StringIO
+
+import trove_classifiers
+
+
+def main():
+ project_root = pathlib.Path(__file__).resolve().parent.parent
+ data_file = project_root / 'src' / 'hatchling' / 'metadata' /
'classifiers.py'
+
+ with closing(StringIO()) as file_contents:
+ file_contents.write(f'VERSION =
{version("trove-classifiers")!r}\n\nSORTED_CLASSIFIERS = [\n')
+
+ for classifier in trove_classifiers.sorted_classifiers:
+ file_contents.write(f' {classifier!r},\n')
+
+ file_contents.write(']\nKNOWN_CLASSIFIERS =
set(SORTED_CLASSIFIERS)\n\n\n')
+ file_contents.write('def is_private(classifier):\n')
+ file_contents.write(" return classifier.lower().startswith('private
::')\n")
+
+ with data_file.open('w', encoding='utf-8') as f:
+ f.write(file_contents.getvalue())
+
+
+if __name__ == '__main__':
+ main()
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/scripts/update_licenses.py
new/hatchling-1.7.1/scripts/update_licenses.py
--- old/hatchling-1.6.0/scripts/update_licenses.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/scripts/update_licenses.py 2020-02-02
01:00:00.000000000 +0100
@@ -6,10 +6,9 @@
import httpx
-VERSION = '3.17'
-
-LICENSES_URL =
f'https://raw.githubusercontent.com/spdx/license-list-data/v{VERSION}/json/licenses.json'
-EXCEPTIONS_URL =
f'https://raw.githubusercontent.com/spdx/license-list-data/v{VERSION}/json/exceptions.json'
+LATEST_API =
'https://api.github.com/repos/spdx/license-list-data/releases/latest'
+LICENSES_URL =
'https://raw.githubusercontent.com/spdx/license-list-data/v{}/json/licenses.json'
+EXCEPTIONS_URL =
'https://raw.githubusercontent.com/spdx/license-list-data/v{}/json/exceptions.json'
def download_data(url):
@@ -27,14 +26,16 @@
def main():
+ latest_version = download_data(LATEST_API)['tag_name'][1:]
+
licenses = {}
- for license_data in download_data(LICENSES_URL)['licenses']:
+ for license_data in
download_data(LICENSES_URL.format(latest_version))['licenses']:
license_id = license_data['licenseId']
deprecated = license_data['isDeprecatedLicenseId']
licenses[license_id.lower()] = {'id': license_id, 'deprecated':
deprecated}
exceptions = {}
- for exception_data in download_data(EXCEPTIONS_URL)['exceptions']:
+ for exception_data in
download_data(EXCEPTIONS_URL.format(latest_version))['exceptions']:
exception_id = exception_data['licenseExceptionId']
deprecated = exception_data['isDeprecatedLicenseId']
exceptions[exception_id.lower()] = {'id': exception_id, 'deprecated':
deprecated}
@@ -43,7 +44,7 @@
data_file = project_root / 'src' / 'hatchling' / 'licenses' /
'supported.py'
with closing(StringIO()) as file_contents:
- file_contents.write(f'VERSION = {VERSION!r}\n\nLICENSES = {{\n')
+ file_contents.write(f'VERSION = {latest_version!r}\n\nLICENSES = {{\n')
for normalized_name, data in sorted(licenses.items()):
file_contents.write(f' {normalized_name!r}: {data!r},\n')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/src/hatchling/__about__.py
new/hatchling-1.7.1/src/hatchling/__about__.py
--- old/hatchling-1.6.0/src/hatchling/__about__.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/__about__.py 2020-02-02
01:00:00.000000000 +0100
@@ -1 +1 @@
-__version__ = '1.6.0'
+__version__ = '1.7.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/src/hatchling/bridge/app.py
new/hatchling-1.7.1/src/hatchling/bridge/app.py
--- old/hatchling-1.6.0/src/hatchling/bridge/app.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/bridge/app.py 2020-02-02
01:00:00.000000000 +0100
@@ -36,6 +36,10 @@
class Application:
"""
The way output is displayed can be
[configured](../config/hatch.md#terminal) by users.
+
+ !!! important
+ Never import this directly; Hatch judiciously decides if a type of
plugin requires
+ the capabilities herein and will grant access via an attribute.
"""
def __init__(self):
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/src/hatchling/builders/config.py
new/hatchling-1.7.1/src/hatchling/builders/config.py
--- old/hatchling-1.6.0/src/hatchling/builders/config.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/builders/config.py 2020-02-02
01:00:00.000000000 +0100
@@ -5,6 +5,7 @@
from hatchling.builders.constants import DEFAULT_BUILD_DIRECTORY,
EXCLUDED_DIRECTORIES, BuildEnvVars
from hatchling.builders.utils import normalize_inclusion_map,
normalize_relative_directory, normalize_relative_path
+from hatchling.metadata.utils import normalize_project_name
from hatchling.utils.fs import locate_file
@@ -48,6 +49,7 @@
self.__dev_mode_dirs = None
self.__dev_mode_exact = None
self.__require_runtime_dependencies = None
+ self.__require_runtime_features = None
@property
def builder(self):
@@ -338,6 +340,40 @@
return self.__require_runtime_dependencies
@property
+ def require_runtime_features(self):
+ if self.__require_runtime_features is None:
+ if 'require-runtime-features' in self.target_config:
+ features_config = self.target_config
+ features_location =
f'tool.hatch.build.targets.{self.plugin_name}.require-runtime-features'
+ else:
+ features_config = self.build_config
+ features_location = 'tool.hatch.build.require-runtime-features'
+
+ require_runtime_features =
features_config.get('require-runtime-features', [])
+ if not isinstance(require_runtime_features, list):
+ raise TypeError(f'Field `{features_location}` must be an
array')
+
+ all_features = {}
+ for i, feature in enumerate(require_runtime_features, 1):
+ if not isinstance(feature, str):
+ raise TypeError(f'Feature #{i} of field
`{features_location}` must be a string')
+ elif not feature:
+ raise ValueError(f'Feature #{i} of field
`{features_location}` cannot be an empty string')
+
+ feature = normalize_project_name(feature)
+ if feature not in
self.builder.metadata.core.optional_dependencies:
+ raise ValueError(
+ f'Feature `{feature}` of field `{features_location}`
is not defined in '
+ f'field `project.optional-dependencies`'
+ )
+
+ all_features[feature] = None
+
+ self.__require_runtime_features = list(all_features)
+
+ return self.__require_runtime_features
+
+ @property
def only_packages(self):
"""
Whether or not the target should ignore non-artifact files that do not
reside within a Python package.
@@ -500,6 +536,7 @@
dependencies[dependency] = None
require_runtime_dependencies = self.require_runtime_dependencies
+ require_runtime_features = {feature: None for feature in
self.require_runtime_features}
for hook_name, config in self.hook_config.items():
hook_require_runtime_dependencies =
config.get('require-runtime-dependencies', False)
if not isinstance(hook_require_runtime_dependencies, bool):
@@ -509,6 +546,31 @@
elif hook_require_runtime_dependencies:
require_runtime_dependencies = True
+ hook_require_runtime_features =
config.get('require-runtime-features', [])
+ if not isinstance(hook_require_runtime_features, list):
+ raise TypeError(f'Option `require-runtime-features` of
build hook `{hook_name}` must be an array')
+
+ for i, feature in enumerate(hook_require_runtime_features, 1):
+ if not isinstance(feature, str):
+ raise TypeError(
+ f'Feature #{i} of option
`require-runtime-features` of build hook `{hook_name}` '
+ f'must be a string'
+ )
+ elif not feature:
+ raise ValueError(
+ f'Feature #{i} of option
`require-runtime-features` of build hook `{hook_name}` '
+ f'cannot be an empty string'
+ )
+
+ feature = normalize_project_name(feature)
+ if feature not in
self.builder.metadata.core.optional_dependencies:
+ raise ValueError(
+ f'Feature `{feature}` of option
`require-runtime-features` of build hook `{hook_name}` '
+ f'is not defined in field
`project.optional-dependencies`'
+ )
+
+ require_runtime_features[feature] = None
+
hook_dependencies = config.get('dependencies', [])
if not isinstance(hook_dependencies, list):
raise TypeError(f'Option `dependencies` of build hook
`{hook_name}` must be an array')
@@ -525,6 +587,11 @@
for dependency in self.builder.metadata.core.dependencies:
dependencies[dependency] = None
+ if require_runtime_features:
+ for feature in require_runtime_features:
+ for dependency in
self.builder.metadata.core.optional_dependencies[feature]:
+ dependencies[dependency] = None
+
self.__dependencies = list(dependencies)
return self.__dependencies
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/hatchling-1.6.0/src/hatchling/builders/plugin/interface.py
new/hatchling-1.7.1/src/hatchling/builders/plugin/interface.py
--- old/hatchling-1.6.0/src/hatchling/builders/plugin/interface.py
2020-02-02 01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/builders/plugin/interface.py
2020-02-02 01:00:00.000000000 +0100
@@ -195,19 +195,18 @@
)
elif os.path.isdir(source):
for root, dirs, files in safe_walk(source):
- relative_path = get_relative_path(root, source)
+ relative_directory = get_relative_path(root, source)
dirs[:] = sorted(d for d in dirs if d not in
EXCLUDED_DIRECTORIES)
files.sort()
for f in files:
- relative_file_path = os.path.join(relative_path, f)
- distribution_path = os.path.join(target_path,
relative_file_path)
- if not self.config.path_is_reserved(distribution_path):
+ relative_file_path = os.path.join(target_path,
relative_directory, f)
+ if not
self.config.path_is_reserved(relative_file_path):
yield IncludedFile(
os.path.join(root, f),
- '' if external else
os.path.relpath(relative_file_path, self.root),
-
self.config.get_distribution_path(distribution_path),
+ '' if external else relative_file_path,
+
self.config.get_distribution_path(relative_file_path),
)
def recurse_explicit_files(self, inclusion_map) -> Generator[IncludedFile,
None, None]:
@@ -221,20 +220,19 @@
)
elif os.path.isdir(source):
for root, dirs, files in safe_walk(source):
- relative_path = get_relative_path(root, source)
+ relative_directory = get_relative_path(root, source)
dirs[:] = sorted(d for d in dirs if d not in
EXCLUDED_DIRECTORIES)
files.sort()
is_package = '__init__.py' in files
for f in files:
- relative_file_path = os.path.join(relative_path, f)
- distribution_path = os.path.join(target_path,
relative_file_path)
- if self.config.include_path(distribution_path,
explicit=True, is_package=is_package):
+ relative_file_path = os.path.join(target_path,
relative_directory, f)
+ if self.config.include_path(relative_file_path,
explicit=True, is_package=is_package):
yield IncludedFile(
os.path.join(root, f),
- '' if external else
os.path.relpath(relative_file_path, self.root),
-
self.config.get_distribution_path(distribution_path),
+ '' if external else relative_file_path,
+
self.config.get_distribution_path(relative_file_path),
)
@property
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/src/hatchling/builders/wheel.py
new/hatchling-1.7.1/src/hatchling/builders/wheel.py
--- old/hatchling-1.6.0/src/hatchling/builders/wheel.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/builders/wheel.py 2020-02-02
01:00:00.000000000 +0100
@@ -353,10 +353,17 @@
exposed_packages[root_module] = os.path.join(self.root,
root_module)
else:
distribution_module = distribution_path.split(os.sep)[0]
- exposed_packages[distribution_module] = os.path.join(
- self.root,
-
f'{relative_path[:relative_path.index(distribution_path)]}{distribution_module}',
- )
+ try:
+ exposed_packages[distribution_module] = os.path.join(
+ self.root,
+
f'{relative_path[:relative_path.index(distribution_path)]}{distribution_module}',
+ )
+ except ValueError:
+ raise ValueError(
+ 'Dev mode installations are unsupported when any
path rewrite in the `sources` option '
+ 'changes a prefix rather than removes it, see: '
+ 'https://github.com/pfmoore/editables/issues/20'
+ ) from None
editable_project = EditableProject(self.metadata.core.name,
self.root)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/src/hatchling/licenses/supported.py
new/hatchling-1.7.1/src/hatchling/licenses/supported.py
--- old/hatchling-1.6.0/src/hatchling/licenses/supported.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/licenses/supported.py 2020-02-02
01:00:00.000000000 +0100
@@ -1,4 +1,4 @@
-VERSION = '3.17'
+VERSION = '3.18'
LICENSES = {
'0bsd': {'id': '0BSD', 'deprecated': False},
@@ -87,6 +87,7 @@
'cc-by-3.0': {'id': 'CC-BY-3.0', 'deprecated': False},
'cc-by-3.0-at': {'id': 'CC-BY-3.0-AT', 'deprecated': False},
'cc-by-3.0-de': {'id': 'CC-BY-3.0-DE', 'deprecated': False},
+ 'cc-by-3.0-igo': {'id': 'CC-BY-3.0-IGO', 'deprecated': False},
'cc-by-3.0-nl': {'id': 'CC-BY-3.0-NL', 'deprecated': False},
'cc-by-3.0-us': {'id': 'CC-BY-3.0-US', 'deprecated': False},
'cc-by-4.0': {'id': 'CC-BY-4.0', 'deprecated': False},
@@ -268,7 +269,6 @@
'jasper-2.0': {'id': 'JasPer-2.0', 'deprecated': False},
'jpnic': {'id': 'JPNIC', 'deprecated': False},
'json': {'id': 'JSON', 'deprecated': False},
- 'kicad-libraries-exception': {'id': 'KiCad-libraries-exception',
'deprecated': False},
'lal-1.2': {'id': 'LAL-1.2', 'deprecated': False},
'lal-1.3': {'id': 'LAL-1.3', 'deprecated': False},
'latex2e': {'id': 'Latex2e', 'deprecated': False},
@@ -302,7 +302,10 @@
'lppl-1.2': {'id': 'LPPL-1.2', 'deprecated': False},
'lppl-1.3a': {'id': 'LPPL-1.3a', 'deprecated': False},
'lppl-1.3c': {'id': 'LPPL-1.3c', 'deprecated': False},
+ 'lzma-sdk-9.11-to-9.20': {'id': 'LZMA-SDK-9.11-to-9.20', 'deprecated':
False},
+ 'lzma-sdk-9.22': {'id': 'LZMA-SDK-9.22', 'deprecated': False},
'makeindex': {'id': 'MakeIndex', 'deprecated': False},
+ 'minpack': {'id': 'Minpack', 'deprecated': False},
'miros': {'id': 'MirOS', 'deprecated': False},
'mit': {'id': 'MIT', 'deprecated': False},
'mit-0': {'id': 'MIT-0', 'deprecated': False},
@@ -314,12 +317,14 @@
'mit-open-group': {'id': 'MIT-open-group', 'deprecated': False},
'mitnfa': {'id': 'MITNFA', 'deprecated': False},
'motosoto': {'id': 'Motosoto', 'deprecated': False},
+ 'mpi-permissive': {'id': 'mpi-permissive', 'deprecated': False},
'mpich2': {'id': 'mpich2', 'deprecated': False},
'mpl-1.0': {'id': 'MPL-1.0', 'deprecated': False},
'mpl-1.1': {'id': 'MPL-1.1', 'deprecated': False},
'mpl-2.0': {'id': 'MPL-2.0', 'deprecated': False},
'mpl-2.0-no-copyleft-exception': {'id': 'MPL-2.0-no-copyleft-exception',
'deprecated': False},
'mplus': {'id': 'mplus', 'deprecated': False},
+ 'ms-lpl': {'id': 'MS-LPL', 'deprecated': False},
'ms-pl': {'id': 'MS-PL', 'deprecated': False},
'ms-rl': {'id': 'MS-RL', 'deprecated': False},
'mtll': {'id': 'MTLL', 'deprecated': False},
@@ -337,6 +342,7 @@
'netcdf': {'id': 'NetCDF', 'deprecated': False},
'newsletr': {'id': 'Newsletr', 'deprecated': False},
'ngpl': {'id': 'NGPL', 'deprecated': False},
+ 'nicta-1.0': {'id': 'NICTA-1.0', 'deprecated': False},
'nist-pd': {'id': 'NIST-PD', 'deprecated': False},
'nist-pd-fallback': {'id': 'NIST-PD-fallback', 'deprecated': False},
'nlod-1.0': {'id': 'NLOD-1.0', 'deprecated': False},
@@ -409,6 +415,7 @@
'psfrag': {'id': 'psfrag', 'deprecated': False},
'psutils': {'id': 'psutils', 'deprecated': False},
'python-2.0': {'id': 'Python-2.0', 'deprecated': False},
+ 'python-2.0.1': {'id': 'Python-2.0.1', 'deprecated': False},
'qhull': {'id': 'Qhull', 'deprecated': False},
'qpl-1.0': {'id': 'QPL-1.0', 'deprecated': False},
'rdisc': {'id': 'Rdisc', 'deprecated': False},
@@ -512,7 +519,10 @@
'gpl-3.0-linking-exception': {'id': 'GPL-3.0-linking-exception',
'deprecated': False},
'gpl-3.0-linking-source-exception': {'id':
'GPL-3.0-linking-source-exception', 'deprecated': False},
'gpl-cc-1.0': {'id': 'GPL-CC-1.0', 'deprecated': False},
+ 'gstreamer-exception-2005': {'id': 'GStreamer-exception-2005',
'deprecated': False},
+ 'gstreamer-exception-2008': {'id': 'GStreamer-exception-2008',
'deprecated': False},
'i2p-gpl-java-exception': {'id': 'i2p-gpl-java-exception', 'deprecated':
False},
+ 'kicad-libraries-exception': {'id': 'KiCad-libraries-exception',
'deprecated': False},
'lgpl-3.0-linking-exception': {'id': 'LGPL-3.0-linking-exception',
'deprecated': False},
'libtool-exception': {'id': 'Libtool-exception', 'deprecated': False},
'linux-syscall-note': {'id': 'Linux-syscall-note', 'deprecated': False},
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/hatchling-1.6.0/src/hatchling/metadata/classifiers.py
new/hatchling-1.7.1/src/hatchling/metadata/classifiers.py
--- old/hatchling-1.6.0/src/hatchling/metadata/classifiers.py 1970-01-01
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/metadata/classifiers.py 2020-02-02
01:00:00.000000000 +0100
@@ -0,0 +1,814 @@
+VERSION = '2022.8.7'
+
+SORTED_CLASSIFIERS = [
+ 'Development Status :: 1 - Planning',
+ 'Development Status :: 2 - Pre-Alpha',
+ 'Development Status :: 3 - Alpha',
+ 'Development Status :: 4 - Beta',
+ 'Development Status :: 5 - Production/Stable',
+ 'Development Status :: 6 - Mature',
+ 'Development Status :: 7 - Inactive',
+ 'Environment :: Console',
+ 'Environment :: Console :: Curses',
+ 'Environment :: Console :: Framebuffer',
+ 'Environment :: Console :: Newt',
+ 'Environment :: Console :: svgalib',
+ 'Environment :: GPU',
+ 'Environment :: GPU :: NVIDIA CUDA',
+ 'Environment :: GPU :: NVIDIA CUDA :: 1.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 1.1',
+ 'Environment :: GPU :: NVIDIA CUDA :: 2.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 2.1',
+ 'Environment :: GPU :: NVIDIA CUDA :: 2.2',
+ 'Environment :: GPU :: NVIDIA CUDA :: 2.3',
+ 'Environment :: GPU :: NVIDIA CUDA :: 3.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 3.1',
+ 'Environment :: GPU :: NVIDIA CUDA :: 3.2',
+ 'Environment :: GPU :: NVIDIA CUDA :: 4.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 4.1',
+ 'Environment :: GPU :: NVIDIA CUDA :: 4.2',
+ 'Environment :: GPU :: NVIDIA CUDA :: 5.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 5.5',
+ 'Environment :: GPU :: NVIDIA CUDA :: 6.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 6.5',
+ 'Environment :: GPU :: NVIDIA CUDA :: 7.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 7.5',
+ 'Environment :: GPU :: NVIDIA CUDA :: 8.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 9.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 9.1',
+ 'Environment :: GPU :: NVIDIA CUDA :: 9.2',
+ 'Environment :: GPU :: NVIDIA CUDA :: 10.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 10.1',
+ 'Environment :: GPU :: NVIDIA CUDA :: 10.2',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.0',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.1',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.2',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.3',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.4',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.5',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.6',
+ 'Environment :: GPU :: NVIDIA CUDA :: 11.7',
+ "Environment :: Handhelds/PDA's",
+ 'Environment :: MacOS X',
+ 'Environment :: MacOS X :: Aqua',
+ 'Environment :: MacOS X :: Carbon',
+ 'Environment :: MacOS X :: Cocoa',
+ 'Environment :: No Input/Output (Daemon)',
+ 'Environment :: OpenStack',
+ 'Environment :: Other Environment',
+ 'Environment :: Plugins',
+ 'Environment :: Web Environment',
+ 'Environment :: Web Environment :: Buffet',
+ 'Environment :: Web Environment :: Mozilla',
+ 'Environment :: Web Environment :: ToscaWidgets',
+ 'Environment :: Win32 (MS Windows)',
+ 'Environment :: X11 Applications',
+ 'Environment :: X11 Applications :: GTK',
+ 'Environment :: X11 Applications :: Gnome',
+ 'Environment :: X11 Applications :: KDE',
+ 'Environment :: X11 Applications :: Qt',
+ 'Framework :: AWS CDK',
+ 'Framework :: AWS CDK :: 1',
+ 'Framework :: AWS CDK :: 2',
+ 'Framework :: AiiDA',
+ 'Framework :: Ansible',
+ 'Framework :: AnyIO',
+ 'Framework :: Apache Airflow',
+ 'Framework :: Apache Airflow :: Provider',
+ 'Framework :: AsyncIO',
+ 'Framework :: BEAT',
+ 'Framework :: BFG',
+ 'Framework :: Bob',
+ 'Framework :: Bottle',
+ 'Framework :: Buildout',
+ 'Framework :: Buildout :: Extension',
+ 'Framework :: Buildout :: Recipe',
+ 'Framework :: CastleCMS',
+ 'Framework :: CastleCMS :: Theme',
+ 'Framework :: Celery',
+ 'Framework :: Chandler',
+ 'Framework :: CherryPy',
+ 'Framework :: CubicWeb',
+ 'Framework :: Dash',
+ 'Framework :: Datasette',
+ 'Framework :: Django',
+ 'Framework :: Django :: 1',
+ 'Framework :: Django :: 1.4',
+ 'Framework :: Django :: 1.5',
+ 'Framework :: Django :: 1.6',
+ 'Framework :: Django :: 1.7',
+ 'Framework :: Django :: 1.8',
+ 'Framework :: Django :: 1.9',
+ 'Framework :: Django :: 1.10',
+ 'Framework :: Django :: 1.11',
+ 'Framework :: Django :: 2',
+ 'Framework :: Django :: 2.0',
+ 'Framework :: Django :: 2.1',
+ 'Framework :: Django :: 2.2',
+ 'Framework :: Django :: 3',
+ 'Framework :: Django :: 3.0',
+ 'Framework :: Django :: 3.1',
+ 'Framework :: Django :: 3.2',
+ 'Framework :: Django :: 4',
+ 'Framework :: Django :: 4.0',
+ 'Framework :: Django :: 4.1',
+ 'Framework :: Django CMS',
+ 'Framework :: Django CMS :: 3.4',
+ 'Framework :: Django CMS :: 3.5',
+ 'Framework :: Django CMS :: 3.6',
+ 'Framework :: Django CMS :: 3.7',
+ 'Framework :: Django CMS :: 3.8',
+ 'Framework :: Django CMS :: 3.9',
+ 'Framework :: Django CMS :: 3.10',
+ 'Framework :: FastAPI',
+ 'Framework :: Flake8',
+ 'Framework :: Flask',
+ 'Framework :: Hatch',
+ 'Framework :: Hypothesis',
+ 'Framework :: IDLE',
+ 'Framework :: IPython',
+ 'Framework :: Jupyter',
+ 'Framework :: Jupyter :: JupyterLab',
+ 'Framework :: Jupyter :: JupyterLab :: 1',
+ 'Framework :: Jupyter :: JupyterLab :: 2',
+ 'Framework :: Jupyter :: JupyterLab :: 3',
+ 'Framework :: Jupyter :: JupyterLab :: 4',
+ 'Framework :: Jupyter :: JupyterLab :: Extensions',
+ 'Framework :: Jupyter :: JupyterLab :: Extensions :: Mime Renderers',
+ 'Framework :: Jupyter :: JupyterLab :: Extensions :: Prebuilt',
+ 'Framework :: Jupyter :: JupyterLab :: Extensions :: Themes',
+ 'Framework :: Kedro',
+ 'Framework :: Lektor',
+ 'Framework :: Masonite',
+ 'Framework :: Matplotlib',
+ 'Framework :: Nengo',
+ 'Framework :: Odoo',
+ 'Framework :: Odoo :: 8.0',
+ 'Framework :: Odoo :: 9.0',
+ 'Framework :: Odoo :: 10.0',
+ 'Framework :: Odoo :: 11.0',
+ 'Framework :: Odoo :: 12.0',
+ 'Framework :: Odoo :: 13.0',
+ 'Framework :: Odoo :: 14.0',
+ 'Framework :: Odoo :: 15.0',
+ 'Framework :: Opps',
+ 'Framework :: Paste',
+ 'Framework :: Pelican',
+ 'Framework :: Pelican :: Plugins',
+ 'Framework :: Pelican :: Themes',
+ 'Framework :: Plone',
+ 'Framework :: Plone :: 3.2',
+ 'Framework :: Plone :: 3.3',
+ 'Framework :: Plone :: 4.0',
+ 'Framework :: Plone :: 4.1',
+ 'Framework :: Plone :: 4.2',
+ 'Framework :: Plone :: 4.3',
+ 'Framework :: Plone :: 5.0',
+ 'Framework :: Plone :: 5.1',
+ 'Framework :: Plone :: 5.2',
+ 'Framework :: Plone :: 5.3',
+ 'Framework :: Plone :: 6.0',
+ 'Framework :: Plone :: Addon',
+ 'Framework :: Plone :: Core',
+ 'Framework :: Plone :: Theme',
+ 'Framework :: Pylons',
+ 'Framework :: Pyramid',
+ 'Framework :: Pytest',
+ 'Framework :: Review Board',
+ 'Framework :: Robot Framework',
+ 'Framework :: Robot Framework :: Library',
+ 'Framework :: Robot Framework :: Tool',
+ 'Framework :: Scrapy',
+ 'Framework :: Setuptools Plugin',
+ 'Framework :: Sphinx',
+ 'Framework :: Sphinx :: Extension',
+ 'Framework :: Sphinx :: Theme',
+ 'Framework :: Trac',
+ 'Framework :: Trio',
+ 'Framework :: Tryton',
+ 'Framework :: TurboGears',
+ 'Framework :: TurboGears :: Applications',
+ 'Framework :: TurboGears :: Widgets',
+ 'Framework :: Twisted',
+ 'Framework :: Wagtail',
+ 'Framework :: Wagtail :: 1',
+ 'Framework :: Wagtail :: 2',
+ 'Framework :: Wagtail :: 3',
+ 'Framework :: ZODB',
+ 'Framework :: Zope',
+ 'Framework :: Zope2',
+ 'Framework :: Zope3',
+ 'Framework :: Zope :: 2',
+ 'Framework :: Zope :: 3',
+ 'Framework :: Zope :: 4',
+ 'Framework :: Zope :: 5',
+ 'Framework :: aiohttp',
+ 'Framework :: cocotb',
+ 'Framework :: napari',
+ 'Framework :: tox',
+ 'Intended Audience :: Customer Service',
+ 'Intended Audience :: Developers',
+ 'Intended Audience :: Education',
+ 'Intended Audience :: End Users/Desktop',
+ 'Intended Audience :: Financial and Insurance Industry',
+ 'Intended Audience :: Healthcare Industry',
+ 'Intended Audience :: Information Technology',
+ 'Intended Audience :: Legal Industry',
+ 'Intended Audience :: Manufacturing',
+ 'Intended Audience :: Other Audience',
+ 'Intended Audience :: Religion',
+ 'Intended Audience :: Science/Research',
+ 'Intended Audience :: System Administrators',
+ 'Intended Audience :: Telecommunications Industry',
+ 'License :: Aladdin Free Public License (AFPL)',
+ 'License :: CC0 1.0 Universal (CC0 1.0) Public Domain Dedication',
+ 'License :: CeCILL-B Free Software License Agreement (CECILL-B)',
+ 'License :: CeCILL-C Free Software License Agreement (CECILL-C)',
+ 'License :: DFSG approved',
+ 'License :: Eiffel Forum License (EFL)',
+ 'License :: Free For Educational Use',
+ 'License :: Free For Home Use',
+ 'License :: Free To Use But Restricted',
+ 'License :: Free for non-commercial use',
+ 'License :: Freely Distributable',
+ 'License :: Freeware',
+ 'License :: GUST Font License 1.0',
+ 'License :: GUST Font License 2006-09-30',
+ 'License :: Netscape Public License (NPL)',
+ 'License :: Nokia Open Source License (NOKOS)',
+ 'License :: OSI Approved',
+ 'License :: OSI Approved :: Academic Free License (AFL)',
+ 'License :: OSI Approved :: Apache Software License',
+ 'License :: OSI Approved :: Apple Public Source License',
+ 'License :: OSI Approved :: Artistic License',
+ 'License :: OSI Approved :: Attribution Assurance License',
+ 'License :: OSI Approved :: BSD License',
+ 'License :: OSI Approved :: Boost Software License 1.0 (BSL-1.0)',
+ 'License :: OSI Approved :: CEA CNRS Inria Logiciel Libre License, version
2.1 (CeCILL-2.1)',
+ 'License :: OSI Approved :: Common Development and Distribution License
1.0 (CDDL-1.0)',
+ 'License :: OSI Approved :: Common Public License',
+ 'License :: OSI Approved :: Eclipse Public License 1.0 (EPL-1.0)',
+ 'License :: OSI Approved :: Eclipse Public License 2.0 (EPL-2.0)',
+ 'License :: OSI Approved :: Eiffel Forum License',
+ 'License :: OSI Approved :: European Union Public Licence 1.0 (EUPL 1.0)',
+ 'License :: OSI Approved :: European Union Public Licence 1.1 (EUPL 1.1)',
+ 'License :: OSI Approved :: European Union Public Licence 1.2 (EUPL 1.2)',
+ 'License :: OSI Approved :: GNU Affero General Public License v3',
+ 'License :: OSI Approved :: GNU Affero General Public License v3 or later
(AGPLv3+)',
+ 'License :: OSI Approved :: GNU Free Documentation License (FDL)',
+ 'License :: OSI Approved :: GNU General Public License (GPL)',
+ 'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',
+ 'License :: OSI Approved :: GNU General Public License v2 or later
(GPLv2+)',
+ 'License :: OSI Approved :: GNU General Public License v3 (GPLv3)',
+ 'License :: OSI Approved :: GNU General Public License v3 or later
(GPLv3+)',
+ 'License :: OSI Approved :: GNU Lesser General Public License v2 (LGPLv2)',
+ 'License :: OSI Approved :: GNU Lesser General Public License v2 or later
(LGPLv2+)',
+ 'License :: OSI Approved :: GNU Lesser General Public License v3 (LGPLv3)',
+ 'License :: OSI Approved :: GNU Lesser General Public License v3 or later
(LGPLv3+)',
+ 'License :: OSI Approved :: GNU Library or Lesser General Public License
(LGPL)',
+ 'License :: OSI Approved :: Historical Permission Notice and Disclaimer
(HPND)',
+ 'License :: OSI Approved :: IBM Public License',
+ 'License :: OSI Approved :: ISC License (ISCL)',
+ 'License :: OSI Approved :: Intel Open Source License',
+ 'License :: OSI Approved :: Jabber Open Source License',
+ 'License :: OSI Approved :: MIT License',
+ 'License :: OSI Approved :: MIT No Attribution License (MIT-0)',
+ 'License :: OSI Approved :: MITRE Collaborative Virtual Workspace License
(CVW)',
+ 'License :: OSI Approved :: MirOS License (MirOS)',
+ 'License :: OSI Approved :: Motosoto License',
+ 'License :: OSI Approved :: Mozilla Public License 1.0 (MPL)',
+ 'License :: OSI Approved :: Mozilla Public License 1.1 (MPL 1.1)',
+ 'License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0)',
+ 'License :: OSI Approved :: Mulan Permissive Software License v2
(MulanPSL-2.0)',
+ 'License :: OSI Approved :: Nethack General Public License',
+ 'License :: OSI Approved :: Nokia Open Source License',
+ 'License :: OSI Approved :: Open Group Test Suite License',
+ 'License :: OSI Approved :: Open Software License 3.0 (OSL-3.0)',
+ 'License :: OSI Approved :: PostgreSQL License',
+ 'License :: OSI Approved :: Python License (CNRI Python License)',
+ 'License :: OSI Approved :: Python Software Foundation License',
+ 'License :: OSI Approved :: Qt Public License (QPL)',
+ 'License :: OSI Approved :: Ricoh Source Code Public License',
+ 'License :: OSI Approved :: SIL Open Font License 1.1 (OFL-1.1)',
+ 'License :: OSI Approved :: Sleepycat License',
+ 'License :: OSI Approved :: Sun Industry Standards Source License (SISSL)',
+ 'License :: OSI Approved :: Sun Public License',
+ 'License :: OSI Approved :: The Unlicense (Unlicense)',
+ 'License :: OSI Approved :: Universal Permissive License (UPL)',
+ 'License :: OSI Approved :: University of Illinois/NCSA Open Source
License',
+ 'License :: OSI Approved :: Vovida Software License 1.0',
+ 'License :: OSI Approved :: W3C License',
+ 'License :: OSI Approved :: X.Net License',
+ 'License :: OSI Approved :: Zope Public License',
+ 'License :: OSI Approved :: zlib/libpng License',
+ 'License :: Other/Proprietary License',
+ 'License :: Public Domain',
+ 'License :: Repoze Public License',
+ 'Natural Language :: Afrikaans',
+ 'Natural Language :: Arabic',
+ 'Natural Language :: Basque',
+ 'Natural Language :: Bengali',
+ 'Natural Language :: Bosnian',
+ 'Natural Language :: Bulgarian',
+ 'Natural Language :: Cantonese',
+ 'Natural Language :: Catalan',
+ 'Natural Language :: Chinese (Simplified)',
+ 'Natural Language :: Chinese (Traditional)',
+ 'Natural Language :: Croatian',
+ 'Natural Language :: Czech',
+ 'Natural Language :: Danish',
+ 'Natural Language :: Dutch',
+ 'Natural Language :: English',
+ 'Natural Language :: Esperanto',
+ 'Natural Language :: Finnish',
+ 'Natural Language :: French',
+ 'Natural Language :: Galician',
+ 'Natural Language :: German',
+ 'Natural Language :: Greek',
+ 'Natural Language :: Hebrew',
+ 'Natural Language :: Hindi',
+ 'Natural Language :: Hungarian',
+ 'Natural Language :: Icelandic',
+ 'Natural Language :: Indonesian',
+ 'Natural Language :: Irish',
+ 'Natural Language :: Italian',
+ 'Natural Language :: Japanese',
+ 'Natural Language :: Javanese',
+ 'Natural Language :: Korean',
+ 'Natural Language :: Latin',
+ 'Natural Language :: Latvian',
+ 'Natural Language :: Lithuanian',
+ 'Natural Language :: Macedonian',
+ 'Natural Language :: Malay',
+ 'Natural Language :: Marathi',
+ 'Natural Language :: Nepali',
+ 'Natural Language :: Norwegian',
+ 'Natural Language :: Panjabi',
+ 'Natural Language :: Persian',
+ 'Natural Language :: Polish',
+ 'Natural Language :: Portuguese',
+ 'Natural Language :: Portuguese (Brazilian)',
+ 'Natural Language :: Romanian',
+ 'Natural Language :: Russian',
+ 'Natural Language :: Serbian',
+ 'Natural Language :: Slovak',
+ 'Natural Language :: Slovenian',
+ 'Natural Language :: Spanish',
+ 'Natural Language :: Swedish',
+ 'Natural Language :: Tamil',
+ 'Natural Language :: Telugu',
+ 'Natural Language :: Thai',
+ 'Natural Language :: Tibetan',
+ 'Natural Language :: Turkish',
+ 'Natural Language :: Ukrainian',
+ 'Natural Language :: Urdu',
+ 'Natural Language :: Vietnamese',
+ 'Operating System :: Android',
+ 'Operating System :: BeOS',
+ 'Operating System :: MacOS',
+ 'Operating System :: MacOS :: MacOS 9',
+ 'Operating System :: MacOS :: MacOS X',
+ 'Operating System :: Microsoft',
+ 'Operating System :: Microsoft :: MS-DOS',
+ 'Operating System :: Microsoft :: Windows',
+ 'Operating System :: Microsoft :: Windows :: Windows 3.1 or Earlier',
+ 'Operating System :: Microsoft :: Windows :: Windows 7',
+ 'Operating System :: Microsoft :: Windows :: Windows 8',
+ 'Operating System :: Microsoft :: Windows :: Windows 8.1',
+ 'Operating System :: Microsoft :: Windows :: Windows 10',
+ 'Operating System :: Microsoft :: Windows :: Windows 11',
+ 'Operating System :: Microsoft :: Windows :: Windows 95/98/2000',
+ 'Operating System :: Microsoft :: Windows :: Windows CE',
+ 'Operating System :: Microsoft :: Windows :: Windows NT/2000',
+ 'Operating System :: Microsoft :: Windows :: Windows Server 2003',
+ 'Operating System :: Microsoft :: Windows :: Windows Server 2008',
+ 'Operating System :: Microsoft :: Windows :: Windows Vista',
+ 'Operating System :: Microsoft :: Windows :: Windows XP',
+ 'Operating System :: OS Independent',
+ 'Operating System :: OS/2',
+ 'Operating System :: Other OS',
+ 'Operating System :: PDA Systems',
+ 'Operating System :: POSIX',
+ 'Operating System :: POSIX :: AIX',
+ 'Operating System :: POSIX :: BSD',
+ 'Operating System :: POSIX :: BSD :: BSD/OS',
+ 'Operating System :: POSIX :: BSD :: FreeBSD',
+ 'Operating System :: POSIX :: BSD :: NetBSD',
+ 'Operating System :: POSIX :: BSD :: OpenBSD',
+ 'Operating System :: POSIX :: GNU Hurd',
+ 'Operating System :: POSIX :: HP-UX',
+ 'Operating System :: POSIX :: IRIX',
+ 'Operating System :: POSIX :: Linux',
+ 'Operating System :: POSIX :: Other',
+ 'Operating System :: POSIX :: SCO',
+ 'Operating System :: POSIX :: SunOS/Solaris',
+ 'Operating System :: PalmOS',
+ 'Operating System :: RISC OS',
+ 'Operating System :: Unix',
+ 'Operating System :: iOS',
+ 'Programming Language :: APL',
+ 'Programming Language :: ASP',
+ 'Programming Language :: Ada',
+ 'Programming Language :: Assembly',
+ 'Programming Language :: Awk',
+ 'Programming Language :: Basic',
+ 'Programming Language :: C',
+ 'Programming Language :: C#',
+ 'Programming Language :: C++',
+ 'Programming Language :: Cold Fusion',
+ 'Programming Language :: Cython',
+ 'Programming Language :: D',
+ 'Programming Language :: Delphi/Kylix',
+ 'Programming Language :: Dylan',
+ 'Programming Language :: Eiffel',
+ 'Programming Language :: Emacs-Lisp',
+ 'Programming Language :: Erlang',
+ 'Programming Language :: Euler',
+ 'Programming Language :: Euphoria',
+ 'Programming Language :: F#',
+ 'Programming Language :: Forth',
+ 'Programming Language :: Fortran',
+ 'Programming Language :: Haskell',
+ 'Programming Language :: Java',
+ 'Programming Language :: JavaScript',
+ 'Programming Language :: Kotlin',
+ 'Programming Language :: Lisp',
+ 'Programming Language :: Logo',
+ 'Programming Language :: ML',
+ 'Programming Language :: Modula',
+ 'Programming Language :: OCaml',
+ 'Programming Language :: Object Pascal',
+ 'Programming Language :: Objective C',
+ 'Programming Language :: Other',
+ 'Programming Language :: Other Scripting Engines',
+ 'Programming Language :: PHP',
+ 'Programming Language :: PL/SQL',
+ 'Programming Language :: PROGRESS',
+ 'Programming Language :: Pascal',
+ 'Programming Language :: Perl',
+ 'Programming Language :: Pike',
+ 'Programming Language :: Pliant',
+ 'Programming Language :: Prolog',
+ 'Programming Language :: Python',
+ 'Programming Language :: Python :: 2',
+ 'Programming Language :: Python :: 2 :: Only',
+ 'Programming Language :: Python :: 2.3',
+ 'Programming Language :: Python :: 2.4',
+ 'Programming Language :: Python :: 2.5',
+ 'Programming Language :: Python :: 2.6',
+ 'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: 3',
+ 'Programming Language :: Python :: 3 :: Only',
+ 'Programming Language :: Python :: 3.0',
+ 'Programming Language :: Python :: 3.1',
+ 'Programming Language :: Python :: 3.2',
+ 'Programming Language :: Python :: 3.3',
+ 'Programming Language :: Python :: 3.4',
+ 'Programming Language :: Python :: 3.5',
+ 'Programming Language :: Python :: 3.6',
+ 'Programming Language :: Python :: 3.7',
+ 'Programming Language :: Python :: 3.8',
+ 'Programming Language :: Python :: 3.9',
+ 'Programming Language :: Python :: 3.10',
+ 'Programming Language :: Python :: 3.11',
+ 'Programming Language :: Python :: 3.12',
+ 'Programming Language :: Python :: Implementation',
+ 'Programming Language :: Python :: Implementation :: CPython',
+ 'Programming Language :: Python :: Implementation :: IronPython',
+ 'Programming Language :: Python :: Implementation :: Jython',
+ 'Programming Language :: Python :: Implementation :: MicroPython',
+ 'Programming Language :: Python :: Implementation :: PyPy',
+ 'Programming Language :: Python :: Implementation :: Stackless',
+ 'Programming Language :: R',
+ 'Programming Language :: REBOL',
+ 'Programming Language :: Rexx',
+ 'Programming Language :: Ruby',
+ 'Programming Language :: Rust',
+ 'Programming Language :: SQL',
+ 'Programming Language :: Scheme',
+ 'Programming Language :: Simula',
+ 'Programming Language :: Smalltalk',
+ 'Programming Language :: Tcl',
+ 'Programming Language :: Unix Shell',
+ 'Programming Language :: Visual Basic',
+ 'Programming Language :: XBasic',
+ 'Programming Language :: YACC',
+ 'Programming Language :: Zope',
+ 'Topic :: Adaptive Technologies',
+ 'Topic :: Artistic Software',
+ 'Topic :: Communications',
+ 'Topic :: Communications :: BBS',
+ 'Topic :: Communications :: Chat',
+ 'Topic :: Communications :: Chat :: ICQ',
+ 'Topic :: Communications :: Chat :: Internet Relay Chat',
+ 'Topic :: Communications :: Chat :: Unix Talk',
+ 'Topic :: Communications :: Conferencing',
+ 'Topic :: Communications :: Email',
+ 'Topic :: Communications :: Email :: Address Book',
+ 'Topic :: Communications :: Email :: Email Clients (MUA)',
+ 'Topic :: Communications :: Email :: Filters',
+ 'Topic :: Communications :: Email :: Mail Transport Agents',
+ 'Topic :: Communications :: Email :: Mailing List Servers',
+ 'Topic :: Communications :: Email :: Post-Office',
+ 'Topic :: Communications :: Email :: Post-Office :: IMAP',
+ 'Topic :: Communications :: Email :: Post-Office :: POP3',
+ 'Topic :: Communications :: FIDO',
+ 'Topic :: Communications :: Fax',
+ 'Topic :: Communications :: File Sharing',
+ 'Topic :: Communications :: File Sharing :: Gnutella',
+ 'Topic :: Communications :: File Sharing :: Napster',
+ 'Topic :: Communications :: Ham Radio',
+ 'Topic :: Communications :: Internet Phone',
+ 'Topic :: Communications :: Telephony',
+ 'Topic :: Communications :: Usenet News',
+ 'Topic :: Database',
+ 'Topic :: Database :: Database Engines/Servers',
+ 'Topic :: Database :: Front-Ends',
+ 'Topic :: Desktop Environment',
+ 'Topic :: Desktop Environment :: File Managers',
+ 'Topic :: Desktop Environment :: GNUstep',
+ 'Topic :: Desktop Environment :: Gnome',
+ 'Topic :: Desktop Environment :: K Desktop Environment (KDE)',
+ 'Topic :: Desktop Environment :: K Desktop Environment (KDE) :: Themes',
+ 'Topic :: Desktop Environment :: PicoGUI',
+ 'Topic :: Desktop Environment :: PicoGUI :: Applications',
+ 'Topic :: Desktop Environment :: PicoGUI :: Themes',
+ 'Topic :: Desktop Environment :: Screen Savers',
+ 'Topic :: Desktop Environment :: Window Managers',
+ 'Topic :: Desktop Environment :: Window Managers :: Afterstep',
+ 'Topic :: Desktop Environment :: Window Managers :: Afterstep :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: Applets',
+ 'Topic :: Desktop Environment :: Window Managers :: Blackbox',
+ 'Topic :: Desktop Environment :: Window Managers :: Blackbox :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: CTWM',
+ 'Topic :: Desktop Environment :: Window Managers :: CTWM :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: Enlightenment',
+ 'Topic :: Desktop Environment :: Window Managers :: Enlightenment ::
Epplets',
+ 'Topic :: Desktop Environment :: Window Managers :: Enlightenment ::
Themes DR15',
+ 'Topic :: Desktop Environment :: Window Managers :: Enlightenment ::
Themes DR16',
+ 'Topic :: Desktop Environment :: Window Managers :: Enlightenment ::
Themes DR17',
+ 'Topic :: Desktop Environment :: Window Managers :: FVWM',
+ 'Topic :: Desktop Environment :: Window Managers :: FVWM :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: Fluxbox',
+ 'Topic :: Desktop Environment :: Window Managers :: Fluxbox :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: IceWM',
+ 'Topic :: Desktop Environment :: Window Managers :: IceWM :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: MetaCity',
+ 'Topic :: Desktop Environment :: Window Managers :: MetaCity :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: Oroborus',
+ 'Topic :: Desktop Environment :: Window Managers :: Oroborus :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: Sawfish',
+ 'Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes
0.30',
+ 'Topic :: Desktop Environment :: Window Managers :: Sawfish :: Themes
pre-0.30',
+ 'Topic :: Desktop Environment :: Window Managers :: Waimea',
+ 'Topic :: Desktop Environment :: Window Managers :: Waimea :: Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: Window Maker',
+ 'Topic :: Desktop Environment :: Window Managers :: Window Maker ::
Applets',
+ 'Topic :: Desktop Environment :: Window Managers :: Window Maker ::
Themes',
+ 'Topic :: Desktop Environment :: Window Managers :: XFCE',
+ 'Topic :: Desktop Environment :: Window Managers :: XFCE :: Themes',
+ 'Topic :: Documentation',
+ 'Topic :: Documentation :: Sphinx',
+ 'Topic :: Education',
+ 'Topic :: Education :: Computer Aided Instruction (CAI)',
+ 'Topic :: Education :: Testing',
+ 'Topic :: Games/Entertainment',
+ 'Topic :: Games/Entertainment :: Arcade',
+ 'Topic :: Games/Entertainment :: Board Games',
+ 'Topic :: Games/Entertainment :: First Person Shooters',
+ 'Topic :: Games/Entertainment :: Fortune Cookies',
+ 'Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)',
+ 'Topic :: Games/Entertainment :: Puzzle Games',
+ 'Topic :: Games/Entertainment :: Real Time Strategy',
+ 'Topic :: Games/Entertainment :: Role-Playing',
+ 'Topic :: Games/Entertainment :: Side-Scrolling/Arcade Games',
+ 'Topic :: Games/Entertainment :: Simulation',
+ 'Topic :: Games/Entertainment :: Turn Based Strategy',
+ 'Topic :: Home Automation',
+ 'Topic :: Internet',
+ 'Topic :: Internet :: File Transfer Protocol (FTP)',
+ 'Topic :: Internet :: Finger',
+ 'Topic :: Internet :: Log Analysis',
+ 'Topic :: Internet :: Name Service (DNS)',
+ 'Topic :: Internet :: Proxy Servers',
+ 'Topic :: Internet :: WAP',
+ 'Topic :: Internet :: WWW/HTTP',
+ 'Topic :: Internet :: WWW/HTTP :: Browsers',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: CGI Tools/Libraries',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Content Management
System',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Message Boards',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: News/Diary',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Page Counters',
+ 'Topic :: Internet :: WWW/HTTP :: Dynamic Content :: Wiki',
+ 'Topic :: Internet :: WWW/HTTP :: HTTP Servers',
+ 'Topic :: Internet :: WWW/HTTP :: Indexing/Search',
+ 'Topic :: Internet :: WWW/HTTP :: Session',
+ 'Topic :: Internet :: WWW/HTTP :: Site Management',
+ 'Topic :: Internet :: WWW/HTTP :: Site Management :: Link Checking',
+ 'Topic :: Internet :: WWW/HTTP :: WSGI',
+ 'Topic :: Internet :: WWW/HTTP :: WSGI :: Application',
+ 'Topic :: Internet :: WWW/HTTP :: WSGI :: Middleware',
+ 'Topic :: Internet :: WWW/HTTP :: WSGI :: Server',
+ 'Topic :: Internet :: XMPP',
+ 'Topic :: Internet :: Z39.50',
+ 'Topic :: Multimedia',
+ 'Topic :: Multimedia :: Graphics',
+ 'Topic :: Multimedia :: Graphics :: 3D Modeling',
+ 'Topic :: Multimedia :: Graphics :: 3D Rendering',
+ 'Topic :: Multimedia :: Graphics :: Capture',
+ 'Topic :: Multimedia :: Graphics :: Capture :: Digital Camera',
+ 'Topic :: Multimedia :: Graphics :: Capture :: Scanners',
+ 'Topic :: Multimedia :: Graphics :: Capture :: Screen Capture',
+ 'Topic :: Multimedia :: Graphics :: Editors',
+ 'Topic :: Multimedia :: Graphics :: Editors :: Raster-Based',
+ 'Topic :: Multimedia :: Graphics :: Editors :: Vector-Based',
+ 'Topic :: Multimedia :: Graphics :: Graphics Conversion',
+ 'Topic :: Multimedia :: Graphics :: Presentation',
+ 'Topic :: Multimedia :: Graphics :: Viewers',
+ 'Topic :: Multimedia :: Sound/Audio',
+ 'Topic :: Multimedia :: Sound/Audio :: Analysis',
+ 'Topic :: Multimedia :: Sound/Audio :: CD Audio',
+ 'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Playing',
+ 'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Ripping',
+ 'Topic :: Multimedia :: Sound/Audio :: CD Audio :: CD Writing',
+ 'Topic :: Multimedia :: Sound/Audio :: Capture/Recording',
+ 'Topic :: Multimedia :: Sound/Audio :: Conversion',
+ 'Topic :: Multimedia :: Sound/Audio :: Editors',
+ 'Topic :: Multimedia :: Sound/Audio :: MIDI',
+ 'Topic :: Multimedia :: Sound/Audio :: Mixers',
+ 'Topic :: Multimedia :: Sound/Audio :: Players',
+ 'Topic :: Multimedia :: Sound/Audio :: Players :: MP3',
+ 'Topic :: Multimedia :: Sound/Audio :: Sound Synthesis',
+ 'Topic :: Multimedia :: Sound/Audio :: Speech',
+ 'Topic :: Multimedia :: Video',
+ 'Topic :: Multimedia :: Video :: Capture',
+ 'Topic :: Multimedia :: Video :: Conversion',
+ 'Topic :: Multimedia :: Video :: Display',
+ 'Topic :: Multimedia :: Video :: Non-Linear Editor',
+ 'Topic :: Office/Business',
+ 'Topic :: Office/Business :: Financial',
+ 'Topic :: Office/Business :: Financial :: Accounting',
+ 'Topic :: Office/Business :: Financial :: Investment',
+ 'Topic :: Office/Business :: Financial :: Point-Of-Sale',
+ 'Topic :: Office/Business :: Financial :: Spreadsheet',
+ 'Topic :: Office/Business :: Groupware',
+ 'Topic :: Office/Business :: News/Diary',
+ 'Topic :: Office/Business :: Office Suites',
+ 'Topic :: Office/Business :: Scheduling',
+ 'Topic :: Other/Nonlisted Topic',
+ 'Topic :: Printing',
+ 'Topic :: Religion',
+ 'Topic :: Scientific/Engineering',
+ 'Topic :: Scientific/Engineering :: Artificial Intelligence',
+ 'Topic :: Scientific/Engineering :: Artificial Life',
+ 'Topic :: Scientific/Engineering :: Astronomy',
+ 'Topic :: Scientific/Engineering :: Atmospheric Science',
+ 'Topic :: Scientific/Engineering :: Bio-Informatics',
+ 'Topic :: Scientific/Engineering :: Chemistry',
+ 'Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)',
+ 'Topic :: Scientific/Engineering :: GIS',
+ 'Topic :: Scientific/Engineering :: Human Machine Interfaces',
+ 'Topic :: Scientific/Engineering :: Hydrology',
+ 'Topic :: Scientific/Engineering :: Image Processing',
+ 'Topic :: Scientific/Engineering :: Image Recognition',
+ 'Topic :: Scientific/Engineering :: Information Analysis',
+ 'Topic :: Scientific/Engineering :: Interface Engine/Protocol Translator',
+ 'Topic :: Scientific/Engineering :: Mathematics',
+ 'Topic :: Scientific/Engineering :: Medical Science Apps.',
+ 'Topic :: Scientific/Engineering :: Physics',
+ 'Topic :: Scientific/Engineering :: Visualization',
+ 'Topic :: Security',
+ 'Topic :: Security :: Cryptography',
+ 'Topic :: Sociology',
+ 'Topic :: Sociology :: Genealogy',
+ 'Topic :: Sociology :: History',
+ 'Topic :: Software Development',
+ 'Topic :: Software Development :: Assemblers',
+ 'Topic :: Software Development :: Bug Tracking',
+ 'Topic :: Software Development :: Build Tools',
+ 'Topic :: Software Development :: Code Generators',
+ 'Topic :: Software Development :: Compilers',
+ 'Topic :: Software Development :: Debuggers',
+ 'Topic :: Software Development :: Disassemblers',
+ 'Topic :: Software Development :: Documentation',
+ 'Topic :: Software Development :: Embedded Systems',
+ 'Topic :: Software Development :: Internationalization',
+ 'Topic :: Software Development :: Interpreters',
+ 'Topic :: Software Development :: Libraries',
+ 'Topic :: Software Development :: Libraries :: Application Frameworks',
+ 'Topic :: Software Development :: Libraries :: Java Libraries',
+ 'Topic :: Software Development :: Libraries :: PHP Classes',
+ 'Topic :: Software Development :: Libraries :: Perl Modules',
+ 'Topic :: Software Development :: Libraries :: Pike Modules',
+ 'Topic :: Software Development :: Libraries :: Python Modules',
+ 'Topic :: Software Development :: Libraries :: Ruby Modules',
+ 'Topic :: Software Development :: Libraries :: Tcl Extensions',
+ 'Topic :: Software Development :: Libraries :: pygame',
+ 'Topic :: Software Development :: Localization',
+ 'Topic :: Software Development :: Object Brokering',
+ 'Topic :: Software Development :: Object Brokering :: CORBA',
+ 'Topic :: Software Development :: Pre-processors',
+ 'Topic :: Software Development :: Quality Assurance',
+ 'Topic :: Software Development :: Testing',
+ 'Topic :: Software Development :: Testing :: Acceptance',
+ 'Topic :: Software Development :: Testing :: BDD',
+ 'Topic :: Software Development :: Testing :: Mocking',
+ 'Topic :: Software Development :: Testing :: Traffic Generation',
+ 'Topic :: Software Development :: Testing :: Unit',
+ 'Topic :: Software Development :: User Interfaces',
+ 'Topic :: Software Development :: Version Control',
+ 'Topic :: Software Development :: Version Control :: Bazaar',
+ 'Topic :: Software Development :: Version Control :: CVS',
+ 'Topic :: Software Development :: Version Control :: Git',
+ 'Topic :: Software Development :: Version Control :: Mercurial',
+ 'Topic :: Software Development :: Version Control :: RCS',
+ 'Topic :: Software Development :: Version Control :: SCCS',
+ 'Topic :: Software Development :: Widget Sets',
+ 'Topic :: System',
+ 'Topic :: System :: Archiving',
+ 'Topic :: System :: Archiving :: Backup',
+ 'Topic :: System :: Archiving :: Compression',
+ 'Topic :: System :: Archiving :: Mirroring',
+ 'Topic :: System :: Archiving :: Packaging',
+ 'Topic :: System :: Benchmark',
+ 'Topic :: System :: Boot',
+ 'Topic :: System :: Boot :: Init',
+ 'Topic :: System :: Clustering',
+ 'Topic :: System :: Console Fonts',
+ 'Topic :: System :: Distributed Computing',
+ 'Topic :: System :: Emulators',
+ 'Topic :: System :: Filesystems',
+ 'Topic :: System :: Hardware',
+ 'Topic :: System :: Hardware :: Hardware Drivers',
+ 'Topic :: System :: Hardware :: Mainframes',
+ 'Topic :: System :: Hardware :: Symmetric Multi-processing',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB)',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Audio',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Audio/Video
(AV)',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) ::
Communications Device Class (CDC)',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Diagnostic
Device',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Hub',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Human
Interface Device (HID)',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Mass
Storage',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) ::
Miscellaneous',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Printer',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Smart Card',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Vendor',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Video (UVC)',
+ 'Topic :: System :: Hardware :: Universal Serial Bus (USB) :: Wireless
Controller',
+ 'Topic :: System :: Installation/Setup',
+ 'Topic :: System :: Logging',
+ 'Topic :: System :: Monitoring',
+ 'Topic :: System :: Networking',
+ 'Topic :: System :: Networking :: Firewalls',
+ 'Topic :: System :: Networking :: Monitoring',
+ 'Topic :: System :: Networking :: Monitoring :: Hardware Watchdog',
+ 'Topic :: System :: Networking :: Time Synchronization',
+ 'Topic :: System :: Operating System',
+ 'Topic :: System :: Operating System Kernels',
+ 'Topic :: System :: Operating System Kernels :: BSD',
+ 'Topic :: System :: Operating System Kernels :: GNU Hurd',
+ 'Topic :: System :: Operating System Kernels :: Linux',
+ 'Topic :: System :: Power (UPS)',
+ 'Topic :: System :: Recovery Tools',
+ 'Topic :: System :: Shells',
+ 'Topic :: System :: Software Distribution',
+ 'Topic :: System :: System Shells',
+ 'Topic :: System :: Systems Administration',
+ 'Topic :: System :: Systems Administration :: Authentication/Directory',
+ 'Topic :: System :: Systems Administration :: Authentication/Directory ::
LDAP',
+ 'Topic :: System :: Systems Administration :: Authentication/Directory ::
NIS',
+ 'Topic :: Terminals',
+ 'Topic :: Terminals :: Serial',
+ 'Topic :: Terminals :: Telnet',
+ 'Topic :: Terminals :: Terminal Emulators/X Terminals',
+ 'Topic :: Text Editors',
+ 'Topic :: Text Editors :: Documentation',
+ 'Topic :: Text Editors :: Emacs',
+ 'Topic :: Text Editors :: Integrated Development Environments (IDE)',
+ 'Topic :: Text Editors :: Text Processing',
+ 'Topic :: Text Editors :: Word Processors',
+ 'Topic :: Text Processing',
+ 'Topic :: Text Processing :: Filters',
+ 'Topic :: Text Processing :: Fonts',
+ 'Topic :: Text Processing :: General',
+ 'Topic :: Text Processing :: Indexing',
+ 'Topic :: Text Processing :: Linguistic',
+ 'Topic :: Text Processing :: Markup',
+ 'Topic :: Text Processing :: Markup :: HTML',
+ 'Topic :: Text Processing :: Markup :: LaTeX',
+ 'Topic :: Text Processing :: Markup :: Markdown',
+ 'Topic :: Text Processing :: Markup :: SGML',
+ 'Topic :: Text Processing :: Markup :: VRML',
+ 'Topic :: Text Processing :: Markup :: XML',
+ 'Topic :: Text Processing :: Markup :: reStructuredText',
+ 'Topic :: Utilities',
+ 'Typing :: Stubs Only',
+ 'Typing :: Typed',
+]
+KNOWN_CLASSIFIERS = set(SORTED_CLASSIFIERS)
+
+
+def is_private(classifier):
+ return classifier.lower().startswith('private ::')
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/src/hatchling/metadata/core.py
new/hatchling-1.7.1/src/hatchling/metadata/core.py
--- old/hatchling-1.6.0/src/hatchling/metadata/core.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/src/hatchling/metadata/core.py 2020-02-02
01:00:00.000000000 +0100
@@ -799,6 +799,8 @@
https://peps.python.org/pep-0621/#classifiers
"""
if self._classifiers is None:
+ from hatchling.metadata.classifiers import KNOWN_CLASSIFIERS,
SORTED_CLASSIFIERS, is_private
+
if 'classifiers' in self.config:
classifiers = self.config['classifiers']
if 'classifiers' in self.dynamic:
@@ -817,10 +819,12 @@
for i, classifier in enumerate(classifiers, 1):
if not isinstance(classifier, str):
raise TypeError(f'Classifier #{i} of field
`project.classifiers` must be a string')
+ elif not is_private(classifier) and classifier not in
KNOWN_CLASSIFIERS:
+ raise ValueError(f'Unknown classifier in field
`project.classifiers`: {classifier}')
unique_classifiers.add(classifier)
- self._classifiers = sorted(unique_classifiers)
+ self._classifiers = sorted(unique_classifiers, key=lambda c:
is_private(c) or SORTED_CLASSIFIERS.index(c))
return self._classifiers
@@ -999,7 +1003,8 @@
else:
if requirement.url and not
self.hatch_metadata.allow_direct_references:
raise ValueError(
- f'Dependency #{i} of field `project.dependencies`
cannot be a direct reference'
+ f'Dependency #{i} of field `project.dependencies`
cannot be a direct reference unless '
+ f'field
`tool.hatch.metadata.allow-direct-references` is set to `true`'
)
dependencies_complex[get_normalized_dependency(requirement)] = requirement
@@ -1074,7 +1079,8 @@
if requirement.url and not
self.hatch_metadata.allow_direct_references:
raise ValueError(
f'Dependency #{i} of option `{option}` of
field `project.optional-dependencies` '
- f'cannot be a direct reference'
+ f'cannot be a direct reference unless field '
+
f'`tool.hatch.metadata.allow-direct-references` is set to `true`'
)
entries[get_normalized_dependency(requirement)] =
requirement
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.6.0/tests/downstream/integrate.py
new/hatchling-1.7.1/tests/downstream/integrate.py
--- old/hatchling-1.6.0/tests/downstream/integrate.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.7.1/tests/downstream/integrate.py 2020-02-02
01:00:00.000000000 +0100
@@ -78,6 +78,28 @@
shutil.rmtree(d, ignore_errors=False, onerror=handle_remove_readonly)
+def get_venv_exe_dir(venv_dir):
+ exe_dir = os.path.join(venv_dir, 'Scripts' if ON_WINDOWS else 'bin')
+ if os.path.isdir(exe_dir):
+ return exe_dir
+ # PyPy
+ elif ON_WINDOWS:
+ exe_dir = os.path.join(venv_dir, 'bin')
+ if os.path.isdir(exe_dir):
+ return exe_dir
+ else:
+ raise OSError(f'Unable to locate executables directory within:
{venv_dir}')
+ # Debian
+ elif os.path.isdir(os.path.join(venv_dir, 'local')):
+ exe_dir = os.path.join(venv_dir, 'local', 'bin')
+ if os.path.isdir(exe_dir):
+ return exe_dir
+ else:
+ raise OSError(f'Unable to locate executables directory within:
{venv_dir}')
+ else:
+ raise OSError(f'Unable to locate executables directory within:
{venv_dir}')
+
+
def main():
original_backend_path = os.path.dirname(os.path.dirname(HERE))
with temp_dir() as links_dir, temp_dir() as build_dir:
@@ -195,9 +217,7 @@
env_vars = dict(test_data.get('env_vars', {}))
env_vars['VIRTUAL_ENV'] = venv_dir
- env_vars[
- 'PATH'
- ] = f'{os.path.join(venv_dir, "Scripts" if ON_WINDOWS else
"bin")}{os.pathsep}{os.environ["PATH"]}'
+ env_vars['PATH'] =
f'{get_venv_exe_dir(venv_dir)}{os.pathsep}{os.environ["PATH"]}'
env_vars['PIP_CONSTRAINT'] = constraints_file
with EnvVars(env_vars, ignore=('__PYVENV_LAUNCHER__',
'PYTHONHOME')):
print('--> Installing project')