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 <benoit.mo...@gmx.fr>
+
+- 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 <benoit.mo...@gmx.fr>
+
+- 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')

Reply via email to