From 75e6f9ec3381cd179fd8d504597b2b63ff0726901e3722a07a34464ebc4925bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mark=C3=A9ta=20Machov=C3=A1?= Date: Tue, 6 Jan 2026 14:10:52 +0000 Subject: [PATCH] - Update to 1.16.2 * Properly send informational output to stderr instead of stdout * Implement documented support for sbom-files as build data for the wheel build target * Fix regression where environments no longer acknowledged the project.optional-dependencies field - Release 1.16.1 * Handle special characters correctly in path for editable installs. * Fix multiple calls to install on sync_dependencies to become a single call. * Fix context variable formatting in project dependencies to prevent crashes when using variables like {root:parent:uri} in the [project] section. * Fix environment overrides for dependency-groups field to properly support matrix and conditional configurations. - Release 1.16.0 ## Changed: * Drop support for 3.9 * Environment type plugins are now no longer expected to support a pseudo-build environment as any environment now may be used for building. The following methods have been removed: build_environment, build_environment_exists, run_builder, construct_build_command ## Added: * Support for workspaces inspired by Cargo Workspaces * Dependency group support. * The version and project metadata commands now support projects that do not use Hatchling as the build backend * The version command accepts a --force option, allowing for downgrades when an explicit version number is given. * Build environments can now be configured, the default build environment is hatch-build * The environment interface now has the following methods and properties in order to better support builds on remote machines: project_root, sep, pathsep, fs_context * Bump the minimum supported version of packaging to 24.2 * Upgrade Ruff to 0.13.2 ## Fixed: * All HTTP requests now set an identifiable User-Agent header. * Fix issue where terminal output would be out of sync during build. * Fix for Click Sentinel value when using run command - Drop fix-with-latest-hatchling.patch - Drop fix-tests.patch - Provide some wheels for the test suite gh#pypa/hatch#2123 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-hatch?expand=0&rev=58 --- .gitattributes | 23 + .gitignore | 1 + _multibuild | 3 + binary-1.0.2-py3-none-any.whl | 3 + certifi-2025.11.12-py3-none-any.whl | 3 + charset_normalizer-3.4.4-py3-none-any.whl | 3 + click-8.2.patch | 29 + click-8.3.1-py3-none-any.whl | 3 + fix-tests.patch | 40 + fix-with-latest-hatchling.patch | 911 ++++++++++++++++++ flit_core-3.10.1-py3-none-any.whl | 3 + hatch-v1.14.1.tar.gz | 3 + hatch-v1.15.0.tar.gz | 3 + hatch-v1.15.1.tar.gz | 3 + hatch-v1.16.2.tar.gz | 3 + hatchling-1.28.0-py3-none-any.whl | 3 + idna-3.11-py3-none-any.whl | 3 + packaging-25.0-py3-none-any.whl | 3 + pathspec-0.12.1-py3-none-any.whl | 3 + pluggy-1.6.0-py3-none-any.whl | 3 + python-hatch.changes | 649 +++++++++++++ python-hatch.spec | 196 ++++ requests-2.32.5-py3-none-any.whl | 3 + setuptools-80.9.0-py3-none-any.whl | 3 + ..._classifiers-2025.12.1.14-py3-none-any.whl | 3 + urllib3-2.6.2-py3-none-any.whl | 3 + 26 files changed, 1906 insertions(+) create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 _multibuild create mode 100644 binary-1.0.2-py3-none-any.whl create mode 100644 certifi-2025.11.12-py3-none-any.whl create mode 100644 charset_normalizer-3.4.4-py3-none-any.whl create mode 100644 click-8.2.patch create mode 100644 click-8.3.1-py3-none-any.whl create mode 100644 fix-tests.patch create mode 100644 fix-with-latest-hatchling.patch create mode 100644 flit_core-3.10.1-py3-none-any.whl create mode 100644 hatch-v1.14.1.tar.gz create mode 100644 hatch-v1.15.0.tar.gz create mode 100644 hatch-v1.15.1.tar.gz create mode 100644 hatch-v1.16.2.tar.gz create mode 100644 hatchling-1.28.0-py3-none-any.whl create mode 100644 idna-3.11-py3-none-any.whl create mode 100644 packaging-25.0-py3-none-any.whl create mode 100644 pathspec-0.12.1-py3-none-any.whl create mode 100644 pluggy-1.6.0-py3-none-any.whl create mode 100644 python-hatch.changes create mode 100644 python-hatch.spec create mode 100644 requests-2.32.5-py3-none-any.whl create mode 100644 setuptools-80.9.0-py3-none-any.whl create mode 100644 trove_classifiers-2025.12.1.14-py3-none-any.whl create mode 100644 urllib3-2.6.2-py3-none-any.whl diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..57affb6 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +.osc diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..49fb912 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + test + diff --git a/binary-1.0.2-py3-none-any.whl b/binary-1.0.2-py3-none-any.whl new file mode 100644 index 0000000..a5cadc3 --- /dev/null +++ b/binary-1.0.2-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e79bba085cddfb9d3beefe138464506d2ef0c0f5f68c69e27fc9f82d4ac85470 +size 9568 diff --git a/certifi-2025.11.12-py3-none-any.whl b/certifi-2025.11.12-py3-none-any.whl new file mode 100644 index 0000000..99b9b2c --- /dev/null +++ b/certifi-2025.11.12-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97de8790030bbd5c2d96b7ec782fc2f7820ef8dba6db909ccf95449f2d062d4b +size 159438 diff --git a/charset_normalizer-3.4.4-py3-none-any.whl b/charset_normalizer-3.4.4-py3-none-any.whl new file mode 100644 index 0000000..4fa6ee2 --- /dev/null +++ b/charset_normalizer-3.4.4-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7a32c560861a02ff789ad905a2fe94e3f840803362c84fecf1851cb4cf3dc37f +size 53402 diff --git a/click-8.2.patch b/click-8.2.patch new file mode 100644 index 0000000..a1b28b8 --- /dev/null +++ b/click-8.2.patch @@ -0,0 +1,29 @@ +From df295583784427214324b974c75901da12931ec1 Mon Sep 17 00:00:00 2001 +From: Daniel Garcia Moreno +Date: Thu, 26 Jun 2025 11:32:54 +0200 +Subject: [PATCH] Fix test_self with click >= 8.2.0 + +https://click.palletsprojects.com/en/stable/changes/#version-8-2-0 +--- + tests/cli/self/test_self.py | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/tests/cli/self/test_self.py b/tests/cli/self/test_self.py +index cd1a4aed1..f727b87f4 100644 +--- a/tests/cli/self/test_self.py ++++ b/tests/cli/self/test_self.py +@@ -1,7 +1,13 @@ + import os ++import importlib + + + def test(hatch): + result = hatch(os.environ['PYAPP_COMMAND_NAME']) ++ exit_code = 2 + +- assert result.exit_code == 0, result.output ++ click_version = importlib.metadata.version('click') ++ if click_version <= '8.1.8': ++ exit_code = 0 ++ ++ assert result.exit_code == exit_code, result.output diff --git a/click-8.3.1-py3-none-any.whl b/click-8.3.1-py3-none-any.whl new file mode 100644 index 0000000..81540d8 --- /dev/null +++ b/click-8.3.1-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:981153a64e25f12d547d3426c367a4857371575ee7ad18df2a6183ab0545b2a6 +size 108274 diff --git a/fix-tests.patch b/fix-tests.patch new file mode 100644 index 0000000..0f609b4 --- /dev/null +++ b/fix-tests.patch @@ -0,0 +1,40 @@ +From 79d3c156d6d49d277d4a4014e78f84b02aac978b Mon Sep 17 00:00:00 2001 +From: Cary +Date: Sat, 27 Sep 2025 14:07:34 -0700 +Subject: [PATCH] Fix failing tests, handle subprocess buffering causing output + issues on terminal (#2061) + +Co-authored-by: Ofek Lev + +diff --git a/tests/cli/config/test_set.py b/tests/cli/config/test_set.py +index cd576feb4..73bb9bc03 100644 +--- a/tests/cli/config/test_set.py ++++ b/tests/cli/config/test_set.py +@@ -184,6 +184,7 @@ def test_project_location_basic_set_first_project(hatch, config_file, helpers, t + f""" + New setting: + project = "foo" ++ + [projects] + foo = "{path}" + """ +@@ -205,6 +206,7 @@ def test_project_location_complex_set_first_project(hatch, config_file, helpers, + f""" + New setting: + project = "foo" ++ + [projects.foo] + location = "{path}" + """ +diff --git a/tests/cli/self/test_self.py b/tests/cli/self/test_self.py +index cd1a4aed1..3059905f5 100644 +--- a/tests/cli/self/test_self.py ++++ b/tests/cli/self/test_self.py +@@ -2,6 +2,6 @@ + + + def test(hatch): +- result = hatch(os.environ['PYAPP_COMMAND_NAME']) ++ result = hatch(os.environ['PYAPP_COMMAND_NAME'], '-h') + + assert result.exit_code == 0, result.output diff --git a/fix-with-latest-hatchling.patch b/fix-with-latest-hatchling.patch new file mode 100644 index 0000000..6deb416 --- /dev/null +++ b/fix-with-latest-hatchling.patch @@ -0,0 +1,911 @@ +From f8a2eaa2e0ce80a931837539d8f565ceeab75961 Mon Sep 17 00:00:00 2001 +From: Ofek Lev +Date: Sat, 9 Nov 2024 11:35:16 -0500 +Subject: [PATCH] Bump `packaging` to 24.2 (#1788) + +Index: hatch-hatch-v1.14.0/hatch.toml +=================================================================== +--- hatch-hatch-v1.14.0.orig/hatch.toml ++++ hatch-hatch-v1.14.0/hatch.toml +@@ -114,11 +114,7 @@ update-hatch = [ + "update-distributions", + "update-ruff", + ] +-update-hatchling = [ +- "update-licenses", +-] + update-distributions = "python scripts/update_distributions.py" +-update-licenses = "python backend/scripts/update_licenses.py" + update-ruff = [ + "{env:HATCH_UV} pip install --upgrade ruff", + "python scripts/update_ruff.py", +Index: hatch-hatch-v1.14.0/pyproject.toml +=================================================================== +--- hatch-hatch-v1.14.0.orig/pyproject.toml ++++ hatch-hatch-v1.14.0/pyproject.toml +@@ -44,7 +44,7 @@ dependencies = [ + "httpx>=0.22.0", + "hyperlink>=21.0.0", + "keyring>=23.5.0", +- "packaging>=23.2", ++ "packaging>=24.2", + "pexpect~=4.8", + "platformdirs>=2.5.0", + "rich>=11.2.0", +Index: hatch-hatch-v1.14.0/src/hatch/template/default.py +=================================================================== +--- hatch-hatch-v1.14.0.orig/src/hatch/template/default.py ++++ hatch-hatch-v1.14.0/src/hatch/template/default.py +@@ -38,7 +38,7 @@ class DefaultTemplate(TemplateInterface) + license_file_name = f'{license_id}.txt' + cached_license_path = cached_licenses_dir / license_file_name + if not cached_license_path.is_file(): +- from hatchling.licenses.supported import VERSION ++ from packaging.licenses._spdx import VERSION # noqa: PLC2701 + + url = f'https://raw.githubusercontent.com/spdx/license-list-data/v{VERSION}/text/{license_file_name}' + for _ in range(5): +Index: hatch-hatch-v1.14.0/tests/backend/licenses/test_parse.py +=================================================================== +--- hatch-hatch-v1.14.0.orig/tests/backend/licenses/test_parse.py ++++ /dev/null +@@ -1,56 +0,0 @@ +-import re +- +-import pytest +- +-from hatchling.licenses.parse import normalize_license_expression +- +- +-@pytest.mark.parametrize( +- 'expression', +- [ +- 'or', +- 'and', +- 'with', +- 'mit or', +- 'mit and', +- 'mit with', +- 'or mit', +- 'and mit', +- 'with mit', +- '(mit', +- 'mit)', +- 'mit or or apache-2.0', +- 'mit or apache-2.0 (bsd-3-clause and MPL-2.0)', +- ], +-) +-def test_syntax_errors(expression): +- with pytest.raises(ValueError, match=re.escape(f'invalid license expression: {expression}')): +- normalize_license_expression(expression) +- +- +-def test_unknown_license(): +- with pytest.raises(ValueError, match='unknown license: foo'): +- normalize_license_expression('mit or foo') +- +- +-def test_unknown_license_exception(): +- with pytest.raises(ValueError, match='unknown license exception: foo'): +- normalize_license_expression('mit with foo') +- +- +-@pytest.mark.parametrize( +- ('raw', 'normalized'), +- [ +- ('mIt', 'MIT'), +- ('mit or apache-2.0', 'MIT OR Apache-2.0'), +- ('mit and apache-2.0', 'MIT AND Apache-2.0'), +- ('gpl-2.0-or-later with bison-exception-2.2', 'GPL-2.0-or-later WITH Bison-exception-2.2'), +- ('mit or apache-2.0 and (bsd-3-clause or mpl-2.0)', 'MIT OR Apache-2.0 AND (BSD-3-Clause OR MPL-2.0)'), +- ('mit and (apache-2.0+ or mpl-2.0+)', 'MIT AND (Apache-2.0+ OR MPL-2.0+)'), +- # Valid non-SPDX values +- ('licenseref-public-domain', 'LicenseRef-Public-Domain'), +- ('licenseref-proprietary', 'LicenseRef-Proprietary'), +- ], +-) +-def test_normalization(raw, normalized): +- assert normalize_license_expression(raw) == normalized +Index: hatch-hatch-v1.14.0/tests/backend/licenses/test_supported.py +=================================================================== +--- hatch-hatch-v1.14.0.orig/tests/backend/licenses/test_supported.py ++++ /dev/null +@@ -1,31 +0,0 @@ +-from hatchling.licenses.supported import EXCEPTIONS, LICENSES +- +- +-def test_licenses(): +- assert isinstance(LICENSES, dict) +- assert list(LICENSES) == sorted(LICENSES) +- +- for name, data in LICENSES.items(): +- assert isinstance(data, dict) +- +- assert 'id' in data +- assert isinstance(data['id'], str) +- assert data['id'].lower() == name +- +- assert 'deprecated' in data +- assert isinstance(data['deprecated'], bool) +- +- +-def test_exceptions(): +- assert isinstance(EXCEPTIONS, dict) +- assert list(EXCEPTIONS) == sorted(EXCEPTIONS) +- +- for name, data in EXCEPTIONS.items(): +- assert isinstance(data, dict) +- +- assert 'id' in data +- assert isinstance(data['id'], str) +- assert data['id'].lower() == name +- +- assert 'deprecated' in data +- assert isinstance(data['deprecated'], bool) +Index: hatch-hatch-v1.14.0/tests/backend/metadata/test_core.py +=================================================================== +--- hatch-hatch-v1.14.0.orig/tests/backend/metadata/test_core.py ++++ hatch-hatch-v1.14.0/tests/backend/metadata/test_core.py +@@ -558,7 +558,7 @@ class TestLicense: + def test_invalid_expression(self, isolation): + metadata = ProjectMetadata(str(isolation), None, {'project': {'license': 'mit or foo'}}) + +- with pytest.raises(ValueError, match='Error parsing field `project.license` - unknown license: foo'): ++ with pytest.raises(ValueError, match="Error parsing field `project.license` - Unknown license: 'foo'"): + _ = metadata.core.license_expression + + def test_multiple_options(self, isolation): +@@ -621,54 +621,16 @@ class TestLicenseFiles: + ): + _ = metadata.core.license_files + +- def test_not_table(self, isolation): ++ def test_not_array(self, isolation): + metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': 9000}}) + +- with pytest.raises(TypeError, match='Field `project.license-files` must be a table'): +- _ = metadata.core.license_files +- +- def test_multiple_options(self, isolation): +- metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': {'paths': [], 'globs': []}}}) +- +- with pytest.raises( +- ValueError, match='Cannot specify both `paths` and `globs` in the `project.license-files` table' +- ): +- _ = metadata.core.license_files +- +- def test_no_option(self, isolation): +- metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': {}}}) +- +- with pytest.raises( +- ValueError, match='Must specify either `paths` or `globs` in the `project.license-files` table if defined' +- ): +- _ = metadata.core.license_files +- +- def test_paths_not_array(self, isolation): +- metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': {'paths': 9000}}}) +- +- with pytest.raises(TypeError, match='Field `paths` in the `project.license-files` table must be an array'): ++ with pytest.raises(TypeError, match='Field `project.license-files` must be an array'): + _ = metadata.core.license_files + +- def test_paths_entry_not_string(self, isolation): +- metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': {'paths': [9000]}}}) +- +- with pytest.raises( +- TypeError, match='Entry #1 in field `paths` in the `project.license-files` table must be a string' +- ): +- _ = metadata.core.license_files +- +- def test_globs_not_array(self, isolation): +- metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': {'globs': 9000}}}) +- +- with pytest.raises(TypeError, match='Field `globs` in the `project.license-files` table must be an array'): +- _ = metadata.core.license_files +- +- def test_globs_entry_not_string(self, isolation): +- metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': {'globs': [9000]}}}) ++ def test_entry_not_string(self, isolation): ++ metadata = ProjectMetadata(str(isolation), None, {'project': {'license-files': [9000]}}) + +- with pytest.raises( +- TypeError, match='Entry #1 in field `globs` in the `project.license-files` table must be a string' +- ): ++ with pytest.raises(TypeError, match='Entry #1 of field `project.license-files` must be a string'): + _ = metadata.core.license_files + + def test_default_globs_no_licenses(self, isolation): +@@ -693,7 +655,7 @@ class TestLicenseFiles: + assert metadata.core.license_files == sorted(expected) + + def test_globs_with_licenses(self, temp_dir): +- metadata = ProjectMetadata(str(temp_dir), None, {'project': {'license-files': {'globs': ['LICENSES/*']}}}) ++ metadata = ProjectMetadata(str(temp_dir), None, {'project': {'license-files': ['LICENSES/*']}}) + + licenses_dir = temp_dir / 'LICENSES' + licenses_dir.mkdir() +@@ -709,7 +671,7 @@ class TestLicenseFiles: + metadata = ProjectMetadata( + str(temp_dir), + None, +- {'project': {'license-files': {'paths': ['LICENSES/Apache-2.0.txt', 'LICENSES/MIT.txt', 'COPYING']}}}, ++ {'project': {'license-files': ['LICENSES/Apache-2.0.txt', 'LICENSES/MIT.txt', 'COPYING']}}, + ) + + licenses_dir = temp_dir / 'LICENSES' +@@ -722,20 +684,6 @@ class TestLicenseFiles: + + assert metadata.core.license_files == ['COPYING', 'LICENSES/Apache-2.0.txt', 'LICENSES/MIT.txt'] + +- def test_paths_missing_license(self, temp_dir): +- metadata = ProjectMetadata( +- str(temp_dir), +- None, +- {'project': {'license-files': {'paths': ['LICENSES/MIT.txt']}}}, +- ) +- +- licenses_dir = temp_dir / 'LICENSES' +- licenses_dir.mkdir() +- (licenses_dir / 'Apache-2.0.txt').touch() +- +- with pytest.raises(OSError, match='License file does not exist: LICENSES/MIT.txt'): +- _ = metadata.core.license_files +- + + class TestAuthors: + def test_dynamic(self, isolation): +@@ -1661,7 +1609,7 @@ class TestMetadataConversion: + raw_metadata = { + 'name': 'My.App', + 'version': '0.0.1', +- 'license-files': {'paths': ['LICENSES/Apache-2.0.txt', 'LICENSES/MIT.txt']}, ++ 'license-files': ['LICENSES/Apache-2.0.txt', 'LICENSES/MIT.txt'], + } + metadata = ProjectMetadata(str(temp_dir), None, {'project': raw_metadata}) + +Index: hatch-hatch-v1.14.0/tests/backend/builders/test_wheel.py +=================================================================== +--- hatch-hatch-v1.14.0.orig/tests/backend/builders/test_wheel.py ++++ hatch-hatch-v1.14.0/tests/backend/builders/test_wheel.py +@@ -909,7 +909,7 @@ class TestBuildStandard: + (project_path / 'LICENSES' / 'test').mkdir() + + config = { +- 'project': {'name': project_name, 'dynamic': ['version'], 'license-files': {'globs': ['LICENSES/*']}}, ++ 'project': {'name': project_name, 'dynamic': ['version'], 'license-files': ['LICENSES/*']}, + 'tool': { + 'hatch': { + 'version': {'path': 'my_app/__about__.py'}, +Index: hatch-hatch-v1.14.0/tests/backend/metadata/test_spec.py +=================================================================== +--- hatch-hatch-v1.14.0.orig/tests/backend/metadata/test_spec.py ++++ hatch-hatch-v1.14.0/tests/backend/metadata/test_spec.py +@@ -131,7 +131,7 @@ License-File: LICENSES/MIT.txt + assert project_metadata_from_core_metadata(core_metadata) == { + 'name': 'My.App', + 'version': '0.1.0', +- 'license-files': {'paths': ['LICENSES/Apache-2.0.txt', 'LICENSES/MIT.txt']}, ++ 'license-files': ['LICENSES/Apache-2.0.txt', 'LICENSES/MIT.txt'], + } + + def test_license_expression(self): +@@ -419,6 +419,22 @@ class TestCoreMetadataV12: + """ + ) + ++ def test_license_expression(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'license': 'mit'}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 1.2 ++ Name: My.App ++ Version: 0.1.0 ++ License: MIT ++ """ ++ ) ++ + def test_keywords_single(self, constructor, isolation, helpers): + metadata = ProjectMetadata( + str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'keywords': ['foo']}} +@@ -762,7 +778,7 @@ class TestCoreMetadataV21: + Metadata-Version: 2.1 + Name: My.App + Version: 0.1.0 +- License-Expression: MIT ++ License: MIT + """ + ) + +@@ -961,7 +977,6 @@ class TestCoreMetadataV21: + Maintainer-email: foo + License: foo + bar +- License-File: LICENSE.txt + Keywords: bar,foo + Classifier: Programming Language :: Python :: 3.9 + Classifier: Programming Language :: Python :: 3.11 +@@ -1202,7 +1217,7 @@ class TestCoreMetadataV22: + Metadata-Version: 2.2 + Name: My.App + Version: 0.1.0 +- License-Expression: MIT ++ License: MIT + """ + ) + +@@ -1431,7 +1446,6 @@ class TestCoreMetadataV22: + Maintainer-email: foo + License: foo + bar +- License-File: LICENSE.txt + Keywords: bar,foo + Classifier: Programming Language :: Python :: 3.9 + Classifier: Programming Language :: Python :: 3.11 +@@ -1664,7 +1678,7 @@ class TestCoreMetadataV23: + metadata = ProjectMetadata( + str(isolation), + None, +- {'project': {'name': 'My.App', 'version': '0.1.0', 'license': 'mit or apache-2.0'}}, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'license': 'mit'}}, + ) + + assert constructor(metadata) == helpers.dedent( +@@ -1672,6 +1686,445 @@ class TestCoreMetadataV23: + Metadata-Version: 2.3 + Name: My.App + Version: 0.1.0 ++ License: MIT ++ """ ++ ) ++ ++ def test_keywords_single(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'keywords': ['foo']}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Keywords: foo ++ """ ++ ) ++ ++ def test_keywords_multiple(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'keywords': ['foo', 'bar']}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Keywords: bar,foo ++ """ ++ ) ++ ++ def test_classifiers(self, constructor, isolation, helpers): ++ classifiers = [ ++ 'Programming Language :: Python :: 3.11', ++ 'Programming Language :: Python :: 3.9', ++ ] ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'classifiers': classifiers}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Classifier: Programming Language :: Python :: 3.9 ++ Classifier: Programming Language :: Python :: 3.11 ++ """ ++ ) ++ ++ def test_requires_python(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'requires-python': '>=1,<2'}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Requires-Python: <2,>=1 ++ """ ++ ) ++ ++ def test_dependencies(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'dependencies': ['foo==1', 'bar==5']}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Requires-Dist: bar==5 ++ Requires-Dist: foo==1 ++ """ ++ ) ++ ++ def test_optional_dependencies(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ { ++ 'project': { ++ 'name': 'My.App', ++ 'version': '0.1.0', ++ 'optional-dependencies': { ++ 'feature2': ['foo==1; python_version < "3"', 'bar==5'], ++ 'feature1': ['foo==1', 'bar==5; python_version < "3"'], ++ }, ++ } ++ }, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Provides-Extra: feature1 ++ Requires-Dist: bar==5; (python_version < '3') and extra == 'feature1' ++ Requires-Dist: foo==1; extra == 'feature1' ++ Provides-Extra: feature2 ++ Requires-Dist: bar==5; extra == 'feature2' ++ Requires-Dist: foo==1; (python_version < '3') and extra == 'feature2' ++ """ ++ ) ++ ++ def test_extra_runtime_dependencies(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'dependencies': ['foo==1', 'bar==5']}}, ++ ) ++ ++ assert constructor(metadata, extra_dependencies=['baz==9']) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Requires-Dist: bar==5 ++ Requires-Dist: foo==1 ++ Requires-Dist: baz==9 ++ """ ++ ) ++ ++ def test_readme(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ { ++ 'project': { ++ 'name': 'My.App', ++ 'version': '0.1.0', ++ 'readme': {'content-type': 'text/markdown', 'text': 'test content\n'}, ++ } ++ }, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Description-Content-Type: text/markdown ++ ++ test content ++ """ ++ ) ++ ++ def test_all(self, constructor, temp_dir, helpers): ++ metadata = ProjectMetadata( ++ str(temp_dir), ++ None, ++ { ++ 'project': { ++ 'name': 'My.App', ++ 'version': '0.1.0', ++ 'description': 'foo', ++ 'urls': {'foo': 'bar', 'bar': 'baz'}, ++ 'authors': [{'email': 'bar@domain', 'name': 'foo'}], ++ 'maintainers': [{'email': 'bar@domain', 'name': 'foo'}], ++ 'keywords': ['foo', 'bar'], ++ 'classifiers': [ ++ 'Programming Language :: Python :: 3.11', ++ 'Programming Language :: Python :: 3.9', ++ ], ++ 'requires-python': '>=1,<2', ++ 'dependencies': ['foo==1', 'bar==5'], ++ 'optional-dependencies': { ++ 'feature2': ['foo==1; python_version < "3"', 'bar==5'], ++ 'feature1': ['foo==1', 'bar==5; python_version < "3"'], ++ 'feature3': ['baz @ file:///path/to/project'], ++ }, ++ 'readme': {'content-type': 'text/markdown', 'text': 'test content\n'}, ++ }, ++ 'tool': {'hatch': {'metadata': {'allow-direct-references': True}}}, ++ }, ++ ) ++ ++ licenses_dir = temp_dir / 'LICENSES' ++ licenses_dir.mkdir() ++ (licenses_dir / 'MIT.txt').touch() ++ (licenses_dir / 'Apache-2.0.txt').touch() ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.3 ++ Name: My.App ++ Version: 0.1.0 ++ Summary: foo ++ Project-URL: foo, bar ++ Project-URL: bar, baz ++ Author-email: foo ++ Maintainer-email: foo ++ Keywords: bar,foo ++ Classifier: Programming Language :: Python :: 3.9 ++ Classifier: Programming Language :: Python :: 3.11 ++ Requires-Python: <2,>=1 ++ Requires-Dist: bar==5 ++ Requires-Dist: foo==1 ++ Provides-Extra: feature1 ++ Requires-Dist: bar==5; (python_version < '3') and extra == 'feature1' ++ Requires-Dist: foo==1; extra == 'feature1' ++ Provides-Extra: feature2 ++ Requires-Dist: bar==5; extra == 'feature2' ++ Requires-Dist: foo==1; (python_version < '3') and extra == 'feature2' ++ Provides-Extra: feature3 ++ Requires-Dist: baz@ file:///path/to/project ; extra == 'feature3' ++ Description-Content-Type: text/markdown ++ ++ test content ++ """ ++ ) ++ ++ ++@pytest.mark.parametrize('constructor', [get_core_metadata_constructors()['2.4']]) ++class TestCoreMetadataV24: ++ def test_default(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata(str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0'}}) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ """ ++ ) ++ ++ def test_description(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'description': 'foo'}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Summary: foo ++ """ ++ ) ++ ++ def test_dynamic(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'dynamic': ['authors', 'classifiers']}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Dynamic: Author ++ Dynamic: Author-email ++ Dynamic: Classifier ++ """ ++ ) ++ ++ def test_urls(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'urls': {'foo': 'bar', 'bar': 'baz'}}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Project-URL: foo, bar ++ Project-URL: bar, baz ++ """ ++ ) ++ ++ def test_authors_name(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'authors': [{'name': 'foo'}]}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Author: foo ++ """ ++ ) ++ ++ def test_authors_email(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'authors': [{'email': 'foo@domain'}]}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Author-email: foo@domain ++ """ ++ ) ++ ++ def test_authors_name_and_email(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'authors': [{'email': 'bar@domain', 'name': 'foo'}]}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Author-email: foo ++ """ ++ ) ++ ++ def test_authors_multiple(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'authors': [{'name': 'foo'}, {'name': 'bar'}]}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Author: foo, bar ++ """ ++ ) ++ ++ def test_maintainers_name(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'maintainers': [{'name': 'foo'}]}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Maintainer: foo ++ """ ++ ) ++ ++ def test_maintainers_email(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'maintainers': [{'email': 'foo@domain'}]}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Maintainer-email: foo@domain ++ """ ++ ) ++ ++ def test_maintainers_name_and_email(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ { ++ 'project': { ++ 'name': 'My.App', ++ 'version': '0.1.0', ++ 'maintainers': [{'email': 'bar@domain', 'name': 'foo'}], ++ } ++ }, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Maintainer-email: foo ++ """ ++ ) ++ ++ def test_maintainers_multiple(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'maintainers': [{'name': 'foo'}, {'name': 'bar'}]}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ Maintainer: foo, bar ++ """ ++ ) ++ ++ def test_license(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), None, {'project': {'name': 'My.App', 'version': '0.1.0', 'license': {'text': 'foo\nbar'}}} ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 ++ License: foo ++ bar ++ """ ++ ) ++ ++ def test_license_expression(self, constructor, isolation, helpers): ++ metadata = ProjectMetadata( ++ str(isolation), ++ None, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'license': 'mit or apache-2.0'}}, ++ ) ++ ++ assert constructor(metadata) == helpers.dedent( ++ """ ++ Metadata-Version: 2.4 ++ Name: My.App ++ Version: 0.1.0 + License-Expression: MIT OR Apache-2.0 + """ + ) +@@ -1680,7 +2133,7 @@ class TestCoreMetadataV23: + metadata = ProjectMetadata( + str(temp_dir), + None, +- {'project': {'name': 'My.App', 'version': '0.1.0', 'license-files': {'globs': ['LICENSES/*']}}}, ++ {'project': {'name': 'My.App', 'version': '0.1.0', 'license-files': ['LICENSES/*']}}, + ) + + licenses_dir = temp_dir / 'LICENSES' +@@ -1690,7 +2143,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + License-File: LICENSES/Apache-2.0.txt +@@ -1705,7 +2158,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Keywords: foo +@@ -1719,7 +2172,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Keywords: bar,foo +@@ -1737,7 +2190,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Classifier: Programming Language :: Python :: 3.9 +@@ -1752,7 +2205,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Requires-Python: <2,>=1 +@@ -1768,7 +2221,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Requires-Dist: bar==5 +@@ -1794,7 +2247,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Provides-Extra: feature1 +@@ -1815,7 +2268,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata, extra_dependencies=['baz==9']) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Requires-Dist: bar==5 +@@ -1839,7 +2292,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Description-Content-Type: text/markdown +@@ -1861,7 +2314,7 @@ class TestCoreMetadataV23: + 'authors': [{'email': 'bar@domain', 'name': 'foo'}], + 'maintainers': [{'email': 'bar@domain', 'name': 'foo'}], + 'license': 'mit or apache-2.0', +- 'license-files': {'globs': ['LICENSES/*']}, ++ 'license-files': ['LICENSES/*'], + 'keywords': ['foo', 'bar'], + 'classifiers': [ + 'Programming Language :: Python :: 3.11', +@@ -1887,7 +2340,7 @@ class TestCoreMetadataV23: + + assert constructor(metadata) == helpers.dedent( + """ +- Metadata-Version: 2.3 ++ Metadata-Version: 2.4 + Name: My.App + Version: 0.1.0 + Summary: foo diff --git a/flit_core-3.10.1-py3-none-any.whl b/flit_core-3.10.1-py3-none-any.whl new file mode 100644 index 0000000..f49ec73 --- /dev/null +++ b/flit_core-3.10.1-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:cb31a76e8b31ad3351bb89e531f64ef2b05d1e65bd939183250bf81ddf4922a8 +size 36389 diff --git a/hatch-v1.14.1.tar.gz b/hatch-v1.14.1.tar.gz new file mode 100644 index 0000000..9ef50bd --- /dev/null +++ b/hatch-v1.14.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e38d63bb7a4bf8a2da4c60fdf08dee143ead037440e7071fb5d4543258dd3277 +size 5274731 diff --git a/hatch-v1.15.0.tar.gz b/hatch-v1.15.0.tar.gz new file mode 100644 index 0000000..6706427 --- /dev/null +++ b/hatch-v1.15.0.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:714c1942253f02669d3c6ca78967b8e11f49498a8bf1e52a515c1e232d755203 +size 5275417 diff --git a/hatch-v1.15.1.tar.gz b/hatch-v1.15.1.tar.gz new file mode 100644 index 0000000..dd3ba10 --- /dev/null +++ b/hatch-v1.15.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a32e3dff30f0ca4d510de38a248bcc6125dbd2dac7e8b6435e14a29d6dd3e018 +size 5275641 diff --git a/hatch-v1.16.2.tar.gz b/hatch-v1.16.2.tar.gz new file mode 100644 index 0000000..c6667d0 --- /dev/null +++ b/hatch-v1.16.2.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ce130f1e7b91f562c61932289146575e253e47affb2e018eb81fa6f9fcb08c4b +size 5297697 diff --git a/hatchling-1.28.0-py3-none-any.whl b/hatchling-1.28.0-py3-none-any.whl new file mode 100644 index 0000000..7e9c674 --- /dev/null +++ b/hatchling-1.28.0-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:dc48722b68b3f4bbfa3ff618ca07cdea6750e7d03481289ffa8be1521d18a961 +size 76075 diff --git a/idna-3.11-py3-none-any.whl b/idna-3.11-py3-none-any.whl new file mode 100644 index 0000000..3c8c3d1 --- /dev/null +++ b/idna-3.11-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea +size 71008 diff --git a/packaging-25.0-py3-none-any.whl b/packaging-25.0-py3-none-any.whl new file mode 100644 index 0000000..3c7c063 --- /dev/null +++ b/packaging-25.0-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484 +size 66469 diff --git a/pathspec-0.12.1-py3-none-any.whl b/pathspec-0.12.1-py3-none-any.whl new file mode 100644 index 0000000..ac28a64 --- /dev/null +++ b/pathspec-0.12.1-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a0d503e138a4c123b27490a4f7beda6a01c6f288df0e4a8b79c7eb0dc7b4cc08 +size 31191 diff --git a/pluggy-1.6.0-py3-none-any.whl b/pluggy-1.6.0-py3-none-any.whl new file mode 100644 index 0000000..793190b --- /dev/null +++ b/pluggy-1.6.0-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 +size 20538 diff --git a/python-hatch.changes b/python-hatch.changes new file mode 100644 index 0000000..0e16959 --- /dev/null +++ b/python-hatch.changes @@ -0,0 +1,649 @@ +------------------------------------------------------------------- +Fri Jan 2 17:06:04 UTC 2026 - Ben Greiner + +- Update to 1.16.2 + * Properly send informational output to stderr instead of stdout + * Implement documented support for sbom-files as build data for + the wheel build target + * Fix regression where environments no longer acknowledged the + project.optional-dependencies field +- Release 1.16.1 + * Handle special characters correctly in path for editable + installs. + * Fix multiple calls to install on sync_dependencies to become a + single call. + * Fix context variable formatting in project dependencies to + prevent crashes when using variables like {root:parent:uri} in + the [project] section. + * Fix environment overrides for dependency-groups field to + properly support matrix and conditional configurations. +- Release 1.16.0 + ## Changed: + * Drop support for 3.9 + * Environment type plugins are now no longer expected to support + a pseudo-build environment as any environment now may be used + for building. The following methods have been removed: + build_environment, build_environment_exists, run_builder, + construct_build_command + ## Added: + * Support for workspaces inspired by Cargo Workspaces + * Dependency group support. + * The version and project metadata commands now support projects + that do not use Hatchling as the build backend + * The version command accepts a --force option, allowing for + downgrades when an explicit version number is given. + * Build environments can now be configured, the default build + environment is hatch-build + * The environment interface now has the following methods and + properties in order to better support builds on remote + machines: project_root, sep, pathsep, fs_context + * Bump the minimum supported version of packaging to 24.2 + * Upgrade Ruff to 0.13.2 + ## Fixed: + * All HTTP requests now set an identifiable User-Agent header. + * Fix issue where terminal output would be out of sync during + build. + * Fix for Click Sentinel value when using run command +- Drop fix-with-latest-hatchling.patch +- Drop fix-tests.patch +- Provide some wheels for the test suite gh#pypa/hatch#2123 + +------------------------------------------------------------------- +Mon Nov 17 08:20:59 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 1.15.1 + * Fix compatibility with cached default CPython distributions + that were sourced from GitHub releases of the old owner + +------------------------------------------------------------------- +Mon Nov 10 01:24:10 UTC 2025 - Steve Kowalik + +- Use python-uv for Requires, so it explicitly matches the Python version. + +------------------------------------------------------------------- +Thu Oct 16 07:47:48 UTC 2025 - Nico Krapp + +- Update to 1.15.0 + * Drop support for Python 3.8 + * Support Python 3.14 + * Upgrade default CPython distributions to 20251014 + * Upgrade default PyPy distributions to 7.3.20 +- Update to 1.14.2 + * Fix compatibility with recent versions of Click +- drop click-8.2.patch, fixed upstream +- Add fix-tests.patch to fix tests + +------------------------------------------------------------------- +Thu Aug 21 08:22:26 UTC 2025 - Markéta Machová + +- Convert to libalternatives on SLE-16-based and newer systems only + +------------------------------------------------------------------- +Thu Jul 10 12:33:57 UTC 2025 - Markéta Machová + +- Convert to libalternatives + +------------------------------------------------------------------- +Thu Jun 26 09:36:32 UTC 2025 - Daniel Garcia + +- Add click-8.2.patch to fix tests with click >= 8.2 + gh#pypa/hatch#2013 + +------------------------------------------------------------------- +Wed Apr 16 07:11:55 UTC 2025 - John Paul Adrian Glaubitz + +- Update to 1.14.1 + * Remove uses of the deprecated --no-python-version-warning + flag when using pip + +------------------------------------------------------------------- +Thu Dec 19 17:05:14 UTC 2024 - Nico Krapp + +- Add fix-with-latest-hatchling.patch to restore compatibility with + hatchling >= 1.26.0 + +------------------------------------------------------------------- +Thu Dec 19 15:40:19 UTC 2024 - Nico Krapp + +- actually remove fix-test.patch from tracked files + +------------------------------------------------------------------- +Mon Dec 16 13:26:27 UTC 2024 - Nico Krapp + +- Update to 1.14.0: + * Upgrade default CPython distributions to 20241206 + * Bump the minimum supported version of Hatchling to 1.26.3 + * Update virtualenv dependency + +------------------------------------------------------------------- +Wed Dec 11 18:31:58 UTC 2024 - Matej Cepl + +- Upgrade to 1.13.0: + +- Remove upstreamed patches: + - fix-tests.patch + +------------------------------------------------------------------- +Thu Aug 8 11:20:24 UTC 2024 - Daniel Garcia + +- Add new patch to fix tests: fix-tests.patch +- Remove upstreamed patch: support-hatchling-1.22.patch +- update to 1.12.0: + - The run/env run and test commands now treat inclusion variable + options as an intersection rather than a union to allow for + specific targeting of environments + - Add ability to control the source of Python distributions + - Upgrade Ruff to 0.4.5 + - Upgrade PyApp to 0.22.0 for binary builds + - The fmt command no longer hides the commands that are being + executed + - Add default timeout for network requests, useful when installing + Python distributions + - Fix syntax highlighting contrast for the config show command +- 1.11.1: + - Add official GitHub Action for installing Hatch + - Fix terminal.styles.spinner configuration + - Fix entry points in the pre-built distributions that binaries use +- 1.11.0: + - Upgrade PyApp to 0.21.1 for binary builds + - On Linux, install the highest compatible Python distribution + variant based on CPU architecture rather than assuming recent + hardware +- 1.10.0: + - The run/env run, fmt and shell commands now only change the + current working directory to the project root if not already + inside the project + - The shell command now accepts a single argument to specify the + environment to enter which overrides the standard choice + mechanisms. The arguments determining shell options have been + converted to flags. + - Add test command + - The run command can now execute scripts that define inline + metadata for dependencies and Python version constraints + - The virtual environment type now supports the ability to use UV in + place of pip & virtualenv + - Add self report command for submitting pre-populated bug reports + to GitHub + - The reserved environment used for static analysis is now + completely configurable + - Add the following methods to the environment interface for + complete control over output during life cycle management: + app_status_creation, app_status_pre_installation, + app_status_post_installation, app_status_project_installation, + app_status_dependency_state_check, + app_status_dependency_installation_check, + app_status_dependency_synchronization + - Add binaries for 32-bit versions of Windows + - Read configuration from any ~/.pypirc file for the index publisher + - Use the Git user as the default username for new project URL + metadata + - Add HATCH_DEBUG environment variable that when enabled will show + local variables in the case of unhandled tracebacks + - The env show command now outputs data about all internal + environments when using the --json flag + - Upgrade default CPython distributions to 20240415 + - Upgrade default PyPy distributions to 7.3.15 + - Upgrade Ruff to 0.4.2 + - Upgrade PyApp to 0.19.0 for binary builds + - Bump the minimum supported version of Hatchling to 1.24.2 + - Bump the minimum supported version of virtualenv to 20.26.1 + - Maintain consistent data paths for case insensitive file systems + - When projects derive dependencies from metadata hooks, there is + now by default a status indicator for when the hooks are executed + for better responsiveness + - Properly support projects with a pyproject.toml file but no + project table e.g. applications + - Fix the fmt command when automatically installing plugin + dependencies + - Fix dependency inheritance for the template of the types + environment for new projects + - Fix warnings related to tar file extraction on Python 3.12+ when + unpacking Python distributions for installation + - De-select Ruff rule E501 for the fmt command by default since it + conflicts with the formatter + - Fix colored output from build targets on the first run (build + environment creation status indicator issue) + - Set the packaging dependency version as >=23.2 to avoid its URL + validation which can conflict with context formatting + - Fix the exit code when there happens to be an unhandled exception + - No longer capture both stdout and stderr streams when parsing + metadata payloads from build environments + - Fix the README.md file template for new projects to avoid Markdown + linting issues +- 1.9.7: + - Limit the maximum version of virtualenv due to a backward + incompatible change + - Upgrade PyApp to 0.12.0 for binary builds + +------------------------------------------------------------------- +Wed Mar 27 02:59:47 UTC 2024 - Steve Kowalik + +- Add patch support-hatchling-1.22.patch: + * Support updates for the new Hatchling. +- Add missing BuildRequires on editables, required for tests. + +------------------------------------------------------------------- +Sun Mar 24 13:24:46 UTC 2024 - Dirk Müller + +- update to 1.9.4: + * Limit the maximum version of Hatchling in anticipation of + backward incompatible changes +- update to 1.9.3: + * Fix loading of local plugins to account for newly released + versions of a dependency +- update to 1.9.2: + * Fix the default token variable name for publishing to PyPI + +------------------------------------------------------------------- +Mon Dec 25 09:52:54 UTC 2023 - Ben Greiner + +- Update to 1.9.1 + * Ensure that the dependency_hash method of the environment + interface is called after sync_dependencies for cases where the + hash is only known at that point, such as for dependency + lockers + * Only acknowledge the HATCH_PYTHON_VARIANT_* environment + variables for Python resolution for supported platforms and + architectures + * Fix Python resolution when there are metadata hooks with + unsatisfied dependencies +- Unskip default platform tests gh#pypa/hatch#1145, but skip + error checker + +------------------------------------------------------------------- +Sun Dec 24 15:05:54 UTC 2023 - Ben Greiner + +- Update to 1.9.0 + ## Changed: + * Environments prefixed by hatch- are now considered internal and + used for special purposes such as configuration for static + analysis + ## Added: + * Enable docstring formatting by default for static analysis + * Allow for overriding config of internal environments + * Concretely state the expected API contract for the environment + interface methods find and check_compatibility + * Upgrade Ruff to 0.1.8 + * Bump the minimum supported version of Hatchling to 1.21.0 + ## Fixed: + * Ignore a project's Python requirement for environments where + the project is not installed + * When not persisting config for static analysis, properly manage + internal settings when Ruff's top level table already exists + * Ignore compatibility checks when environments have already been + created, significantly improving performance of environment + usage + * Properly allow overriding of the path option for the virtual + environment type + * Fix nushell activation on non-Windows systems +- Skip default platform tests on non x86_64 +- Stop using %{?python_enable_dependency_generator}: 15.x does + not generate the requirements and gloriously fails when testing + +------------------------------------------------------------------- +Mon Dec 18 20:27:19 UTC 2023 - Ben Greiner + +- Update to 1.8.1 + ## Fixed: + * Fix regression in calling subprocesses with updated PATH + * Fix automatic installation of environment plugins when running + as a standalone binary + * Change default location of Python installations +- Release 1.8.0 + ## Changed: + * Drop support for Python 3.7 + * The get_build_process method of the environment interface has + been removed; plugins should use the new run_builder method + instead + * Remove pyperclip dependency and the --copy flag of the config + find command + * When running the build command all output from builders is now + displayed as-is in real time without the stripping of ANSI + codes + * Version information (for Hatch itself) is now derived from Git + ## Added: + * Support Python 3.12 + * Add installers and standalone binaries + * Add the ability to manage Python installations + * Add fmt command + * The virtual environment type can now automatically download + requested versions of Python that are not installed + * Add dependency_hash method to the environment interface + * The state of installed dependencies for environments is saved + as metadata so if dependency definitions have not changed then + no checking is performed, which can be computationally + expensive + * The build command now supports backends other than Hatchling + * Allow the use of features for environments when skip-install is + enabled + * The default is now __TOKEN__ when prompting for a username for + the publish command + * Add a new run_builder method to the environment interface + * Bump the minimum supported version of Hatchling to 1.19.0 + * Bump the minimum supported version of click to 8.0.6 + ## Fixed: + * Fix nushell activation + * Better handling of flat storage directory hierarchies for the + virtual environment type + * Display useful information when running the version command + outside of a project rather than erroring + * Fix the project metadata command by only capturing stdout from + the backend + * Properly support Google Artifact Registry + * Fix parsing dependencies for environments when warnings are + emitted +- Drop patches + * CI.patch + * fix-sdist-target.patch + * hatch-pr828-pth-tests.patch + * packaging232.patch + +------------------------------------------------------------------- +Thu Nov 23 10:22:50 UTC 2023 - Markéta Machová + +- Add packaging232.patch to fix tests with recent packaging + +------------------------------------------------------------------- +Sat Oct 7 11:16:12 UTC 2023 - Matej Cepl + +- Remove superflous BR pytest plugins: randomly rerunfailures + +------------------------------------------------------------------- +Tue Sep 19 11:01:55 UTC 2023 - Markéta Machová + +- Add CI.patch to fix tests + +------------------------------------------------------------------- +Wed Jun 21 08:39:40 UTC 2023 - Ben Greiner + +- Add hatch-pr828-pth-tests.patch, gh#pypa/hatch#828 fixing + test failure with hatchling >= 1.17.1 + +------------------------------------------------------------------- +Sun Jun 11 08:38:31 UTC 2023 - ecsos + +- Add %{?sle15_python_module_pythons} + +------------------------------------------------------------------- +Wed May 10 16:07:25 UTC 2023 - Daniel Garcia + +- Add fix-sdist-target.patch to fix tests: gh#pypa/hatch@1b10663e645e + +------------------------------------------------------------------- +Fri May 5 10:45:53 UTC 2023 - Dirk Müller + +- update to 1.7.0: + * The `src-layout` project template option is now enabled by + default + * Non-critical output now goes to stderr + * Add `tool.hatch.env.requires` configuration to automatically + install dependencies for environment and environment + collector plugins + * Add `custom` environment collector + * Improve syncing of dependencies provided through Git direct + references + * Add `isolated_data_directory` attribute to the environment + interface + * Increase the timeout for and add retries to the `index` + publisher + * Expand home and environment variables in configured cache and + data directories + * Improve readability of exceptions + * Update project templates + * Bump the minimum supported version of Hatchling to 1.14.0 + * Fix displaying the version with the `version` command when + the version is static and build dependencies are unmet + * Fix build environments for the `virtual` environment type + when storing within a relative path + * Allow setuptools metadata migration for projects without + `setup.py` if `setup.cfg` is present + * Handle additional edge cases for setuptools metadata + migration + * Support boolean values for the `config set` command +- drop hatch-pr659-utf8.patch (upstream) + +------------------------------------------------------------------- +Fri Jan 6 16:17:06 UTC 2023 - Ben Greiner + +- Update to v1.6.3 + ## Fixed: + * Fix version command when the version is dynamic and build + dependencies are unmet +- Release 1.6.2 - 2022-10-20 + ## Fixed: + * Fix getting dynamic metadata from hooks for environments when + dependencies are not dynamic +- Release 1.6.1 - 2022-10-16 + ## Fixed: + * Computing the path to the user's home directory now gracefully + falls back to ~ when it cannot be determined +- Release 1.6.0 - 2022-10-08 + ## Changed: + * The run_shell_command environment interface method now accepts + arbitrary subprocess.Popen keyword arguments. This is not + strictly breaking, but will be utilized in upcoming features. + * The internal directory structure for storing virtual + environments is now more nested. This is not breaking, but any + local environments will be created anew. + ## Added: + * Add project command group to view details about the project + like PEP 621 metadata + * Better support for auto-detection of environments by tools like + Visual Studio Code now that the storage directory of virtual + environments will be flat if Hatch's configured virtual + environment directory resides somewhere within the project root + or if it is set to a .virtualenvs directory within the user's + home directory + * Build environments for the virtual environment type are now + cached for improved performance + * Add build_environment_exists method to the environment + interface for implementations that cache the build environment + * Add path option to the virtual environment type + * Add --initialize-auth flag to the index publisher to allow for + the saving of authentication information before publishing + * Support Bash on Windows for the shell command + * The setuptools migration script no longer modifies the + formatting of existing pyproject.toml configuration + * Bump the minimum supported version of Hatchling to 1.11.0 + ## Fixed: + * Environments now respect dynamically defined project + dependencies + * The dep hash and all dep show commands now respect dynamically + defined project dependencies + * The env show, dep hash, and all dep show commands now honor + context formatting + * Fix matrix variable inclusion filtering of the run and env run + commands when there are multiple possible variables + * Build environment compatibility is now checked before use + * Decreasing verbosity now has no affect on output that should + always be displayed + * Handle more edge cases in the setuptools migration script + * Environments now respect user defined environment variables for + context formatting + * Update the scripts in the generated test environment template + for new projects to reflect the documentation + * Allow extra-dependencies in environment overrides + * Depend on packaging explicitly rather than relying on it being + a transitive dependency of Hatchling +- Release 1.5.0 - 2022-08-28 + ## Added: + * The index publisher now recognizes repository-specific options + * Add the --ignore-compat flag to the env run command + * Setting the HATCH_PYTHON environment variable to self will now + force the use of the Python executable Hatch is running on for + virtual environment creation + ## Fixed: + * Fix the --force-continue flag of the env run command + * Handle more edge cases in the setuptools migration script +- Release 1.4.2 - 2022-08-16 + ## Fixed: + * Fix check for updating static versions with the version command + when metadata hooks are in use +- Release 1.4.1 - 2022-08-13 + ## Fixed: + * Fix non-detached inheritance disabling for environments +- Release 1.4.0 - 2022-08-06 + ## Added: + * The default Python for virtual environments now checks PATH + before using the one Hatch is running on + * Values for environment env-vars now support context formatting + * Add name override for environments to allow for regular + expression matching + * The index publisher now better supports non-PyPI indices + * Add certificate options to the index publisher + * Display waiting text when checking dependencies and removing + environments + * Display help text the first time the shell command is executed + * Update project templates with Python 3.11 and the latest + versions of various GitHub Actions + * Add support for Almquist (ash) shells + * Add hyperlink as a dependency for better handling of package + index URLs + * Bump the minimum supported version of virtualenv to 20.16.2 + * Bump the minimum supported version of tomlkit to 0.11.1 + ## Fixed: + * Acknowledge extra-dependencies for the env show command + * Fix locating executables within virtual environments on Debian + * Fix managing the terminal size inside the shell command + * Fix default code coverage file omission for the src-layout + project template option +- Release 1.3.1 - 2022-07-11 + ## Fixed: + * Support -h/--help flag for the run command +- Release 1.3.0 - 2022-07-10 + ## Changed: + * Rename the default publishing plugin from pypi to the more + generic index + ## Added: + * Support the absence of pyproject.toml files, as is the case for + apps and non-Python projects + * Hide scripts that start with an underscore for the env show + command by default + * Ignoring the exit codes of commands by prefixing with hyphens + now works with entire named scripts + * Add a way to require confirmation for publishing + * Add --force-continue flag to the env run command + * Make tracebacks colorful and less verbose + * When shell configuration has not been defined, attempt to use + the current shell based on parent processes before resorting to + the defaults + * The shell name pwsh is now an alias for powershell + * Remove atomicwrites dependency + * Relax constraint on userpath dependency + * Bump the minimum supported version of Hatchling to 1.4.1 + ## Fixed: + * Keep environments in sync with the dependencies of the selected + features + * Use utf-8 for all files generated for new projects + * Escape special characters Git may return in the user name when + writing generated files for new projects + * Normalize the package name to lowercase in setuptools migration + script + * Fix parsing of source distributions during publishing +- Release 1.2.1 - 2022-05-30 + ## Fixed: + * Fix handling of top level data_files in setuptools migration + script +- Release 1.2.0 - 2022-05-22 + ## Changed: + * The enter_shell environment plugin method now accepts an + additional args parameter + ## Added: + * Allow context string formatting for environment dependencies + * Add environment context string formatting fields env_name, + env_type, matrix, verbosity, and args + * Support overriding the default arguments used to spawn shells + on non-Windows systems + * Bump the minimum supported version of Hatchling to 1.3.0 + ## Fixed: + * Improve setuptools migration script +- Release 1.1.2 - 2022-05-20 + ## Fixed: + * Bump the minimum supported version of Hatchling to 1.2.0 + * Update project metadata to reflect support for Python 3.11 +- Release 1.1.1 - 2022-05-12 + ## Fixed: + * Fix setuptools migration script for non-Windows systems +- Release 1.1.0 - 2022-05-12 + ## Changed: + * In order to simplify the implementation of command execution + for environment plugins, the run_shell_commands method has been + replaced by the singular run_shell_command. A new + command_context method has been added to more easily satisfy + complex use cases. + * The finalize_command environment plugin method has been removed + in favor of the newly introduced context formatting + functionality. + ## Added: + * Add context formatting functionality i.e. the ability to insert + values into configuration like environment variables and + command line arguments + * Any verbosity for command execution will now always display + headers, even for single environments + * Every executed command is now displayed when running multiple + commands or when verbosity is enabled + * Similar to make, ignore the exit code of executed commands that + start with - (a hyphen) + * Add ability for the --init flag of the new command to + automatically migrate setuptools configuration + * Update project metadata to reflect the adoption by PyPA and + production stability +- Release 1.0.0 - 2022-04-28 + * This is the first stable release of Hatch v1, a complete + rewrite. Enjoy! +- Use python dependency generator, check in multibuild +- Add hatch-pr659-utf8.patch for compatibility with new hatchling + (gh#pypa/hatch#659). + +------------------------------------------------------------------- +Mon Jun 8 11:01:18 UTC 2020 - Tomáš Chvátal + +- Testsuite is too flaky, just skip the stuff overall unless someone + invests more time into it + +------------------------------------------------------------------- +Wed Jun 3 08:08:21 UTC 2020 - Tomáš Chvátal + +- Skip more flaky tests + +------------------------------------------------------------------- +Mon May 25 10:59:15 UTC 2020 - Petr Gajdos + +- %python3_only -> %python_alternative + +------------------------------------------------------------------- +Sun Apr 5 07:19:23 UTC 2020 - Tomáš Chvátal + +- Skip flaky test + +------------------------------------------------------------------- +Wed Dec 11 12:00:14 UTC 2019 - Tomáš Chvátal + +- Update to 0.23.0: + * fixes wheel packaging a bit + +------------------------------------------------------------------- +Mon Oct 21 09:42:14 UTC 2019 - John Vandenberg + +- Update to v0.22.0, dropping merged patches + +------------------------------------------------------------------- +Sat Oct 12 13:49:07 UTC 2019 - John Vandenberg + +- Activate test suite +- Add patch 38ca5de2.patch and update-userpath.patch to support + using latest python-userpath instead of unmaintained python-adduserpath +- Add unmerged fixes in upstream pull requests: + * pr_59.patch: Add decorator to tests which require internet connection + * pr_60.patch: Avoid installing tests as a package + * pr_62.patch: Fixed bad encoding for Python 3.7 + +------------------------------------------------------------------- +Thu Aug 2 19:17:22 UTC 2018 - aboe76@gmail.com + +- Update to v0.20.0 + +------------------------------------------------------------------- +Mon Sep 11 07:39:28 UTC 2017 - thomas.schraitle@suse.com + +- First public version 0.9.1 diff --git a/python-hatch.spec b/python-hatch.spec new file mode 100644 index 0000000..157c929 --- /dev/null +++ b/python-hatch.spec @@ -0,0 +1,196 @@ +# +# spec file for package python-hatch +# +# Copyright (c) 2026 SUSE LLC and contributors +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +%endif +%if 0%{?suse_version} > 1500 +%bcond_without libalternatives +%else +%bcond_with libalternatives +%endif +%{?sle15_python_module_pythons} +Name: python-hatch%{psuffix} +Version: 1.16.2 +Release: 0 +Summary: Modern, extensible Python project management +License: MIT +URL: https://hatch.pypa.io/latest/ +# SourceRepository: https://github.com/pypa/hatch +Source0: https://github.com/pypa/hatch/archive/refs/tags/hatch-v%{version}.tar.gz +# For the tests gh#pypa/hatch#2123 +Source11: https://files.pythonhosted.org/packages/py3/b/binary/binary-1.0.2-py3-none-any.whl +Source12: https://files.pythonhosted.org/packages/py3/c/certifi/certifi-2025.11.12-py3-none-any.whl +Source13: https://files.pythonhosted.org/packages/py3/c/charset_normalizer/charset_normalizer-3.4.4-py3-none-any.whl +Source14: https://files.pythonhosted.org/packages/py3/c/click/click-8.3.1-py3-none-any.whl +Source15: https://files.pythonhosted.org/packages/py3/f/flit_core/flit_core-3.10.1-py3-none-any.whl +Source16: https://files.pythonhosted.org/packages/py3/h/hatchling/hatchling-1.28.0-py3-none-any.whl +Source17: https://files.pythonhosted.org/packages/py3/i/idna/idna-3.11-py3-none-any.whl +Source18: https://files.pythonhosted.org/packages/py3/p/packaging/packaging-25.0-py3-none-any.whl +Source19: https://files.pythonhosted.org/packages/py3/p/pathspec/pathspec-0.12.1-py3-none-any.whl +Source20: https://files.pythonhosted.org/packages/py3/p/pluggy/pluggy-1.6.0-py3-none-any.whl +Source21: https://files.pythonhosted.org/packages/py3/r/requests/requests-2.32.5-py3-none-any.whl +Source22: https://files.pythonhosted.org/packages/py3/s/setuptools/setuptools-80.9.0-py3-none-any.whl +Source23: https://files.pythonhosted.org/packages/py3/t/trove_classifiers/trove_classifiers-2025.12.1.14-py3-none-any.whl +Source24: https://files.pythonhosted.org/packages/py3/u/urllib3/urllib3-2.6.2-py3-none-any.whl +BuildRequires: %{python_module base >= 3.10} +BuildRequires: %{python_module hatch-vcs >= 0.3} +BuildRequires: %{python_module hatchling >= 1.27} +BuildRequires: %{python_module pip} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: git-core +Requires: python-click >= 8.0.6 +Requires: python-hatchling >= 1.27.0 +Requires: python-httpx >= 0.22.0 +Requires: python-hyperlink >= 21.0.0 +Requires: python-keyring >= 23.5.0 +Requires: python-packaging >= 24.2 +Requires: python-platformdirs >= 2.5.0 +Requires: python-pyproject-hooks +Requires: python-rich >= 11.2.0 +Requires: python-shellingham >= 1.4.0 +Requires: python-tomli-w >= 1.0 +Requires: python-tomlkit >= 0.11.1 +Requires: python-uv >= 0.5.23 +Requires: python-virtualenv >= 20.26.1 +Requires: (python-backports.zstd > 1 if python-base < 3.14) +Requires: (python-pexpect >= 4.8 with python-pexpect < 5) +Requires: (python-userpath >= 1.7 with python-userpath < 2) +%if %{with libalternatives} +BuildRequires: alts +Requires: alts +%else +Requires(post): update-alternatives +Requires(postun): update-alternatives +%endif +%if %{with test} +BuildRequires: %{python_module editables} +BuildRequires: %{python_module filelock >= 3.7.1} +BuildRequires: %{python_module flit-core} +BuildRequires: %{python_module hatch = %{version}} +BuildRequires: %{python_module pyfakefs} +BuildRequires: %{python_module pytest-mock} +BuildRequires: %{python_module pytest-xdist} +BuildRequires: %{python_module pytest} +BuildRequires: %{python_module trustme} +BuildRequires: cargo +%if 0%{?suse_version} >= 1699 +BuildRequires: python39-base +%endif +%else +BuildArch: noarch +%endif +%python_subpackages + +%description +Hatch is a modern, extensible Python project manager. + +Features + * Standardized build system with reproducible builds by default + * Robust environment management with support for custom scripts + * Easy publishing to PyPI or other indexes + * Version management + * Configurable project generation with sane defaults + * Responsive CLI, ~2-3x faster than equivalent tools + +%prep +%autosetup -p1 -n hatch-hatch-v%{version} +%if 0%{?suse_version} >= 1699 +sed -e 's/Source: pip$/Source: system/' \ + -e 's/Source: Pyenv$/Source: system/' \ + -i tests/cli/self/test_report.py +%endif + +%build +%if !%{with test} +%pyproject_wheel +%endif + +%install +%if !%{with test} +%pyproject_install +%python_clone -a %{buildroot}%{_bindir}/hatch +%python_expand %fdupes %{buildroot}%{$python_sitelib} +%endif + +%if %{with test} +%check +export LANG=en_US.UTF-8 +# tests expect this to be unset and use their own reproducible value. Nothing installed from here. +# https://hatch.pypa.io/latest/config/build/#reproducible-builds +unset SOURCE_DATE_EPOCH +# Need to provide some wheels offline: gh#pypa/hatch#2123 +export UV_FIND_LINKS=%{_sourcedir} +export UV_OFFLINE=1 +# finds bash instead of expected sh as default shell inside obs +donttest="(test_install and test_already_installed_update_prompt)" +donttest="$donttest or (test_install and test_already_installed_update_flag)" +donttest="$donttest or (test_install and test_all)" +# platform distribution selection errors: https://github.com/pypa/hatch/issues/1145 +%ifnarch x86_64 +donttest="$donttest or (test_resolve and test_resolution_error)" +donttest="$donttest or (test_resolve and test_legacy_option)" +donttest="$donttest or (test_resolve and test_compatib)" +donttest="$donttest or test_custom_source or test_pypy_custom" +%endif +%ifarch s390x +# Console width different +donttest="$donttest or test_context_formatting" +%endif +# This requires a hatchling not released yet (hatchling > 1.28) +donttest+=" or test_sbom_from_build_data" +%if 0%{?suse_version} < 1699 +# Wants to create a Python 3.9 environment and would download the interpreter +donttest+=" or test_workspace_overrides_matrix_conditional_members" +donttest+=" or test_workspace_overrides_combined_conditions" +%endif +# Would need to provide too many offline wheels +donttest+=" or test_workspace_member_features" +donttest+=" or test_workspace_library_with_plugins" +donttest+=" or test_workspace_multi_service_application" +donttest+=" or test_workspace_documentation_generation" +donttest+=" or test_workspace_development_workflow" +donttest+=" or test_workspace_overrides_matrix_conditional_members" +%pytest -n auto -v -k "not ($donttest)" +%endif + +%post +%python_install_alternative hatch + +%postun +%python_uninstall_alternative hatch + +%pre +%python_libalternatives_reset_alternative hatch + +%if !%{with test} +%files %{python_files} +%doc README.md +%license LICENSE.txt +%python_alternative %{_bindir}/hatch +%{python_sitelib}/hatch +%{python_sitelib}/hatch-%{version}.dist-info +%endif + +%changelog diff --git a/requests-2.32.5-py3-none-any.whl b/requests-2.32.5-py3-none-any.whl new file mode 100644 index 0000000..7fcba5a --- /dev/null +++ b/requests-2.32.5-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6 +size 64738 diff --git a/setuptools-80.9.0-py3-none-any.whl b/setuptools-80.9.0-py3-none-any.whl new file mode 100644 index 0000000..82ea090 --- /dev/null +++ b/setuptools-80.9.0-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:062d34222ad13e0cc312a4c02d73f059e86a4acbfbdea8f8f76b28c99f306922 +size 1201486 diff --git a/trove_classifiers-2025.12.1.14-py3-none-any.whl b/trove_classifiers-2025.12.1.14-py3-none-any.whl new file mode 100644 index 0000000..a3ed63b --- /dev/null +++ b/trove_classifiers-2025.12.1.14-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a8206978ede95937b9959c3aff3eb258bbf7b07dff391ddd4ea7e61f316635ab +size 14184 diff --git a/urllib3-2.6.2-py3-none-any.whl b/urllib3-2.6.2-py3-none-any.whl new file mode 100644 index 0000000..73db6e9 --- /dev/null +++ b/urllib3-2.6.2-py3-none-any.whl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:ec21cddfe7724fc7cb4ba4bea7aa8e2ef36f607a4bab81aa6ce42a13dc3f03dd +size 131182