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: