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.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 deleted file mode 100644 index 0f609b4..0000000 --- a/fix-tests.patch +++ /dev/null @@ -1,40 +0,0 @@ -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 deleted file mode 100644 index 6deb416..0000000 --- a/fix-with-latest-hatchling.patch +++ /dev/null @@ -1,911 +0,0 @@ -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.15.1.tar.gz b/hatch-v1.15.1.tar.gz deleted file mode 100644 index dd3ba10..0000000 --- a/hatch-v1.15.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -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 index 915d6d0..0e16959 100644 --- a/python-hatch.changes +++ b/python-hatch.changes @@ -1,3 +1,53 @@ +------------------------------------------------------------------- +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 diff --git a/python-hatch.spec b/python-hatch.spec index e4873e4..157c929 100644 --- a/python-hatch.spec +++ b/python-hatch.spec @@ -1,7 +1,7 @@ # # spec file for package python-hatch # -# Copyright (c) 2025 SUSE LLC and contributors +# 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 @@ -31,38 +31,50 @@ %endif %{?sle15_python_module_pythons} Name: python-hatch%{psuffix} -Version: 1.15.1 +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 -Source: https://github.com/pypa/hatch/archive/refs/tags/hatch-v%{version}.tar.gz -# PATCH-FIX-UPSTREAM fix-with-latest-hatchling.patch gh#f8a2eaa gh#28f233c gh#fc25690 -Patch0: fix-with-latest-hatchling.patch -# PATCH-FIX-UPSTREAM fix-tests.patch gh#79d3c15 -Patch1: fix-tests.patch -BuildRequires: %{python_module base >= 3.8} +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.26.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.21.0 +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 >= 21.3 +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.16.2 -Requires: python-zstandard < 1 +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} @@ -75,6 +87,7 @@ Requires(postun): update-alternatives %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} @@ -82,6 +95,9 @@ 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 @@ -100,6 +116,11 @@ Features %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} @@ -119,6 +140,9 @@ 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)" @@ -126,22 +150,29 @@ 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+=" or test_custom_source or test_pypy_custom" +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 - -# Requires network -donttest+=" or test_uv_env" -# Fails with python 3.12 -donttest+=" or test_pyenv or test_no_open or test_open" -# Fails with hatchling >= 1.26 - -# Ignore test_build.py it fails because output format difference. -# https://github.com/pypa/hatch/commit/e843c42da2e71468b519a3aacdfeab31b14985a3 -%pytest -v -k "not ($donttest)" --ignore tests/cli/build/test_build.py +# 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 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