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 2023-05-03 12:56:15
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-hatchling (Old)
 and      /work/SRC/openSUSE:Factory/.python-hatchling.new.1533 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-hatchling"

Wed May  3 12:56:15 2023 rev:15 rq:1083114 version:1.14.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-hatchling/python-hatchling.changes        
2023-02-11 21:55:52.651082429 +0100
+++ 
/work/SRC/openSUSE:Factory/.python-hatchling.new.1533/python-hatchling.changes  
    2023-05-03 12:56:17.491484979 +0200
@@ -1,0 +2,22 @@
+Mon Apr 24 16:30:48 UTC 2023 - Benoît Monin <benoit.mo...@gmx.fr>
+
+- update to 1.14.1:
+  * Fix internal archive root naming for the sdist target when
+    strict-naming is disabled to match the file name in order to
+    support the expectation of some frontends
+
+-------------------------------------------------------------------
+Fri Apr 21 12:26:11 UTC 2023 - Dirk Müller <dmuel...@suse.com>
+
+- add sle15_python_module_pythons (jsc#PED-68)
+
+-------------------------------------------------------------------
+Mon Apr  3 16:22:45 UTC 2023 - Benoît Monin <benoit.mo...@gmx.fr>
+
+- update to 1.14.0:
+  * Added: Add trove-classifiers as a dependency
+  * Fixed: Properly normalize metadata descriptions that contain
+    line breaks
+- requires python-trove-classifiers
+
+-------------------------------------------------------------------

Old:
----
  hatchling-1.13.0.tar.gz

New:
----
  hatchling-1.14.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-hatchling.spec ++++++
--- /var/tmp/diff_new_pack.cSxusg/_old  2023-05-03 12:56:18.035488176 +0200
+++ /var/tmp/diff_new_pack.cSxusg/_new  2023-05-03 12:56:18.039488199 +0200
@@ -16,8 +16,9 @@
 #
 
 
+%{?sle15_python_module_pythons}
 Name:           python-hatchling
-Version:        1.13.0
+Version:        1.14.1
 Release:        0
 Summary:        Build backend used by Hatch
 License:        MIT
@@ -31,12 +32,14 @@
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module pluggy >= 1.0.0}
 BuildRequires:  %{python_module tomli >= 1.2.2 if %python-base < 3.11}
+BuildRequires:  %{python_module trove-classifiers}
 BuildRequires:  fdupes
 BuildRequires:  python-rpm-macros
 Requires:       python-editables >= 0.3
 Requires:       python-packaging >= 21.3
 Requires:       python-pathspec >= 0.10.1
 Requires:       python-pluggy >= 1.0.0
+Requires:       python-trove-classifiers
 Requires(post): update-alternatives
 Requires(postun):update-alternatives
 BuildArch:      noarch

++++++ hatchling-1.13.0.tar.gz -> hatchling-1.14.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatchling-1.13.0/PKG-INFO 
new/hatchling-1.14.1/PKG-INFO
--- old/hatchling-1.13.0/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/PKG-INFO       2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: hatchling
-Version: 1.13.0
+Version: 1.14.1
 Summary: Modern, extensible Python build backend
 Project-URL: Homepage, https://hatch.pypa.io/latest/
 Project-URL: Sponsor, https://github.com/sponsors/ofek
@@ -32,6 +32,7 @@
 Requires-Dist: pathspec>=0.10.1
 Requires-Dist: pluggy>=1.0.0
 Requires-Dist: tomli>=1.2.2; python_version < '3.11'
+Requires-Dist: trove-classifiers
 Description-Content-Type: text/markdown
 
 # Hatchling
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatchling-1.13.0/pyproject.toml 
new/hatchling-1.14.1/pyproject.toml
--- old/hatchling-1.13.0/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/pyproject.toml 2020-02-02 01:00:00.000000000 +0100
@@ -41,6 +41,7 @@
   "pathspec>=0.10.1",
   "pluggy>=1.0.0",
   "tomli>=1.2.2; python_version < '3.11'",
+  "trove-classifiers",
 ]
 
 [project.urls]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatchling-1.13.0/scripts/update_classifiers.py 
new/hatchling-1.14.1/scripts/update_classifiers.py
--- old/hatchling-1.13.0/scripts/update_classifiers.py  2020-02-02 
01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/scripts/update_classifiers.py  1970-01-01 
01:00:00.000000000 +0100
@@ -1,28 +0,0 @@
-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.13.0/src/hatchling/__about__.py 
new/hatchling-1.14.1/src/hatchling/__about__.py
--- old/hatchling-1.13.0/src/hatchling/__about__.py     2020-02-02 
01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/src/hatchling/__about__.py     2020-02-02 
01:00:00.000000000 +0100
@@ -1 +1 @@
-__version__ = '1.13.0'
+__version__ = '1.14.1'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatchling-1.13.0/src/hatchling/bridge/app.py 
new/hatchling-1.14.1/src/hatchling/bridge/app.py
--- old/hatchling-1.13.0/src/hatchling/bridge/app.py    2020-02-02 
01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/src/hatchling/bridge/app.py    2020-02-02 
01:00:00.000000000 +0100
@@ -87,7 +87,7 @@
         """
         Meant to be used for messages indicating some unrecoverable error.
         """
-        if self.__verbosity >= -2:
+        if self.__verbosity >= -2:  # noqa: PLR2004
             print(message)
 
     def display_debug(self, message: str = '', level: int = 1, **kwargs: Any) 
-> None:
@@ -109,7 +109,7 @@
         """
         Terminate the program with the given return code.
         """
-        if message and self.__verbosity >= -2:
+        if message and self.__verbosity >= -2:  # noqa: PLR2004
             print(message)
 
         sys.exit(code)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatchling-1.13.0/src/hatchling/builders/sdist.py 
new/hatchling-1.14.1/src/hatchling/builders/sdist.py
--- old/hatchling-1.13.0/src/hatchling/builders/sdist.py        2020-02-02 
01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/src/hatchling/builders/sdist.py        2020-02-02 
01:00:00.000000000 +0100
@@ -161,7 +161,7 @@
     def build_standard(self, directory: str, **build_data: Any) -> str:
         found_packages = set()
 
-        with SdistArchive(self.project_id, 
reproducible=self.config.reproducible) as archive:
+        with SdistArchive(self.artifact_project_id, 
reproducible=self.config.reproducible) as archive:
             for included_file in self.recurse_included_files():
                 if self.config.support_legacy:
                     possible_package, file_name = 
os.path.split(included_file.relative_path)
@@ -170,7 +170,9 @@
 
                 tar_info = archive.gettarinfo(
                     included_file.path,
-                    
arcname=normalize_archive_path(os.path.join(self.project_id, 
included_file.distribution_path)),
+                    arcname=normalize_archive_path(
+                        os.path.join(self.artifact_project_id, 
included_file.distribution_path)
+                    ),
                 )
 
                 if tar_info.isfile():
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/hatchling-1.13.0/src/hatchling/dep/core.py 
new/hatchling-1.14.1/src/hatchling/dep/core.py
--- old/hatchling-1.13.0/src/hatchling/dep/core.py      2020-02-02 
01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/src/hatchling/dep/core.py      2020-02-02 
01:00:00.000000000 +0100
@@ -93,16 +93,30 @@
                 vcs_info = direct_url_data['vcs_info']
                 vcs = vcs_info['vcs']
                 commit_id = vcs_info['commit_id']
+                requested_revision = vcs_info['requested_revision'] if 
'requested_revision' in vcs_info else None
 
-                # Try a few variations, see:
-                # https://peps.python.org/pep-0440/#direct-references
-                if requirement.url != f'{vcs}+{url}@{commit_id}':
-                    if 'requested_revision' in vcs_info:
-                        requested_revision = vcs_info['requested_revision']
-                        if requirement.url != 
f'{vcs}+{url}@{requested_revision}#{commit_id}':
-                            return False
+                # Try a few variations, see 
https://peps.python.org/pep-0440/#direct-references
+                if (
+                    requested_revision and requirement.url == 
f'{vcs}+{url}@{requested_revision}#{commit_id}'
+                ) or requirement.url == f'{vcs}+{url}@{commit_id}':
+                    return True
+                elif requirement.url == f'{vcs}+{url}' or requirement.url == 
f'{vcs}+{url}@{requested_revision}':
+                    import subprocess
+
+                    if vcs == 'git':
+                        vcs_cmd = [vcs, 'ls-remote', url]
+                        if requested_revision:
+                            vcs_cmd.append(requested_revision)
+                    # TODO: add elifs for hg, svn, and bzr 
https://github.com/pypa/hatch/issues/760
                     else:
                         return False
+                    result = subprocess.run(vcs_cmd, capture_output=True, 
text=True)
+                    if result.returncode:
+                        return False
+                    latest_commit_id, *_ = result.stdout.split()
+                    return commit_id == latest_commit_id
+                else:
+                    return False
 
     return True
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/hatchling-1.13.0/src/hatchling/metadata/classifiers.py 
new/hatchling-1.14.1/src/hatchling/metadata/classifiers.py
--- old/hatchling-1.13.0/src/hatchling/metadata/classifiers.py  2020-02-02 
01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/src/hatchling/metadata/classifiers.py  1970-01-01 
01:00:00.000000000 +0100
@@ -1,829 +0,0 @@
-VERSION = '2023.2.8'
-
-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',
-    '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 :: GPU :: NVIDIA CUDA :: 11.8',
-    'Environment :: GPU :: NVIDIA CUDA :: 12',
-    'Environment :: GPU :: NVIDIA CUDA :: 12 :: 12.0',
-    "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 :: WebAssembly',
-    'Environment :: WebAssembly :: Emscripten',
-    'Environment :: WebAssembly :: WASI',
-    '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 :: Django CMS :: 3.11',
-    'Framework :: Django CMS :: 4.0',
-    'Framework :: Django CMS :: 4.1',
-    '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 :: Odoo :: 16.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 :: Distribution',
-    'Framework :: Plone :: Theme',
-    'Framework :: Pydantic',
-    'Framework :: Pydantic :: 1',
-    '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 :: Wagtail :: 4',
-    '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.13.0/src/hatchling/metadata/core.py 
new/hatchling-1.14.1/src/hatchling/metadata/core.py
--- old/hatchling-1.13.0/src/hatchling/metadata/core.py 2020-02-02 
01:00:00.000000000 +0100
+++ new/hatchling-1.14.1/src/hatchling/metadata/core.py 2020-02-02 
01:00:00.000000000 +0100
@@ -462,8 +462,7 @@
             if not isinstance(description, str):
                 message = 'Field `project.description` must be a string'
                 raise TypeError(message)
-
-            self._description = description
+            self._description = ' '.join(description.splitlines())
 
         return self._description
 
@@ -950,7 +949,7 @@
         if self._classifiers is None:
             import bisect
 
-            from hatchling.metadata.classifiers import KNOWN_CLASSIFIERS, 
SORTED_CLASSIFIERS, is_private
+            import trove_classifiers
 
             if 'classifiers' in self.config:
                 classifiers = self.config['classifiers']
@@ -967,25 +966,25 @@
                 message = 'Field `project.classifiers` must be an array'
                 raise TypeError(message)
 
-            known_classifiers = KNOWN_CLASSIFIERS | self._extra_classifiers
+            known_classifiers = trove_classifiers.classifiers | 
self._extra_classifiers
             unique_classifiers = set()
 
             for i, classifier in enumerate(classifiers, 1):
                 if not isinstance(classifier, str):
                     message = f'Classifier #{i} of field `project.classifiers` 
must be a string'
                     raise TypeError(message)
-                elif not is_private(classifier) and classifier not in 
known_classifiers:
+                elif not self.__classifier_is_private(classifier) and 
classifier not in known_classifiers:
                     message = f'Unknown classifier in field 
`project.classifiers`: {classifier}'
                     raise ValueError(message)
 
                 unique_classifiers.add(classifier)
 
-            sorted_classifiers = list(SORTED_CLASSIFIERS)
-            for classifier in sorted(self._extra_classifiers - 
KNOWN_CLASSIFIERS):
+            sorted_classifiers = list(trove_classifiers.sorted_classifiers)
+            for classifier in sorted(self._extra_classifiers - 
trove_classifiers.classifiers):
                 bisect.insort(sorted_classifiers, classifier)
 
             self._classifiers = sorted(
-                unique_classifiers, key=lambda c: -1 if is_private(c) else 
sorted_classifiers.index(c)
+                unique_classifiers, key=lambda c: -1 if 
self.__classifier_is_private(c) else sorted_classifiers.index(c)
             )
 
         return self._classifiers
@@ -1188,7 +1187,7 @@
 
                     
dependencies_complex[get_normalized_dependency(requirement)] = requirement
 
-            self._dependencies_complex = {k: v for k, v in 
sorted(dependencies_complex.items())}
+            self._dependencies_complex = 
dict(sorted(dependencies_complex.items()))
 
         return self._dependencies_complex
 
@@ -1282,9 +1281,9 @@
                     raise ValueError(message)
 
                 normalized_options[normalized_option] = option
-                optional_dependency_entries[normalized_option] = {k: v for k, 
v in sorted(entries.items())}
+                optional_dependency_entries[normalized_option] = 
dict(sorted(entries.items()))
 
-            self._optional_dependencies_complex = {k: v for k, v in 
sorted(optional_dependency_entries.items())}
+            self._optional_dependencies_complex = 
dict(sorted(optional_dependency_entries.items()))
 
         return self._optional_dependencies_complex
 
@@ -1325,6 +1324,10 @@
         for attribute in dir(self):
             getattr(self, attribute)
 
+    @staticmethod
+    def __classifier_is_private(classifier: str) -> bool:
+        return classifier.lower().startswith('private ::')
+
 
 class HatchMetadata(Generic[PluginManagerBound]):
     def __init__(self, root: str, config: dict[str, dict[str, Any]], 
plugin_manager: PluginManagerBound) -> None:

Reply via email to