Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-hatchling for openSUSE:Factory checked in at 2022-09-25 15:34:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-hatchling (Old) and /work/SRC/openSUSE:Factory/.python-hatchling.new.2275 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-hatchling" Sun Sep 25 15:34:36 2022 rev:9 rq:1005754 version:1.10.0 Changes: -------- --- /work/SRC/openSUSE:Factory/python-hatchling/python-hatchling.changes 2022-09-16 13:32:21.673272665 +0200 +++ /work/SRC/openSUSE:Factory/.python-hatchling.new.2275/python-hatchling.changes 2022-09-25 15:34:39.447529635 +0200 @@ -1,0 +2,13 @@ +Fri Sep 23 19:56:00 UTC 2022 - Beno??t Monin <benoit.mo...@gmx.fr> + +- update to version 1.10.0: + * Added: + + Add the following to the list of directories that cannot be + traversed: __pypackages__, .hg, .hatch, .tox, .nox + + Add deprecated option to allow ambiguous features + * Fixed: + + Improve tracking of dynamic metadata + + Fix core metadata for entries in + project.optional-dependencies that use direct references + +------------------------------------------------------------------- Old: ---- hatchling-1.9.0.tar.gz New: ---- hatchling-1.10.0.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-hatchling.spec ++++++ --- /var/tmp/diff_new_pack.bzfBta/_old 2022-09-25 15:34:40.699532650 +0200 +++ /var/tmp/diff_new_pack.bzfBta/_new 2022-09-25 15:34:40.707532670 +0200 @@ -19,7 +19,7 @@ %define skip_python2 1 %{?!python_module:%define python_module() python-%{**} python3-%{**}} Name: python-hatchling -Version: 1.9.0 +Version: 1.10.0 Release: 0 Summary: Build backend used by Hatch License: MIT ++++++ hatchling-1.9.0.tar.gz -> hatchling-1.10.0.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hatchling-1.9.0/PKG-INFO new/hatchling-1.10.0/PKG-INFO --- old/hatchling-1.9.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 +++ new/hatchling-1.10.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,6 @@ Metadata-Version: 2.1 Name: hatchling -Version: 1.9.0 +Version: 1.10.0 Summary: Modern, extensible Python build backend Project-URL: Homepage, https://hatch.pypa.io/latest/ Project-URL: Sponsor, https://github.com/sponsors/ofek diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hatchling-1.9.0/src/hatchling/__about__.py new/hatchling-1.10.0/src/hatchling/__about__.py --- old/hatchling-1.9.0/src/hatchling/__about__.py 2020-02-02 01:00:00.000000000 +0100 +++ new/hatchling-1.10.0/src/hatchling/__about__.py 2020-02-02 01:00:00.000000000 +0100 @@ -1 +1 @@ -__version__ = '1.9.0' +__version__ = '1.10.0' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hatchling-1.9.0/src/hatchling/builders/config.py new/hatchling-1.10.0/src/hatchling/builders/config.py --- old/hatchling-1.9.0/src/hatchling/builders/config.py 2020-02-02 01:00:00.000000000 +0100 +++ new/hatchling-1.10.0/src/hatchling/builders/config.py 2020-02-02 01:00:00.000000000 +0100 @@ -787,7 +787,7 @@ return [] def default_global_exclude(self): - patterns = ['*.py[cdo]', *EXCLUDED_DIRECTORIES] + patterns = ['*.py[cdo]', f'/{DEFAULT_BUILD_DIRECTORY}'] patterns.sort() return patterns diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hatchling-1.9.0/src/hatchling/builders/constants.py new/hatchling-1.10.0/src/hatchling/builders/constants.py --- old/hatchling-1.9.0/src/hatchling/builders/constants.py 2020-02-02 01:00:00.000000000 +0100 +++ new/hatchling-1.10.0/src/hatchling/builders/constants.py 2020-02-02 01:00:00.000000000 +0100 @@ -1,6 +1,23 @@ DEFAULT_BUILD_DIRECTORY = 'dist' -EXCLUDED_DIRECTORIES = frozenset(('.git', '__pycache__')) +EXCLUDED_DIRECTORIES = frozenset( + ( + # Python bytecode + '__pycache__', + # PEP 582 + '__pypackages__', + # Git + '.git', + # Mercurial + '.hg', + # Hatch + '.hatch', + # tox + '.tox', + # nox + '.nox', + ) +) class BuildEnvVars: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hatchling-1.9.0/src/hatchling/metadata/core.py new/hatchling-1.10.0/src/hatchling/metadata/core.py --- old/hatchling-1.9.0/src/hatchling/metadata/core.py 2020-02-02 01:00:00.000000000 +0100 +++ new/hatchling-1.10.0/src/hatchling/metadata/core.py 2020-02-02 01:00:00.000000000 +0100 @@ -28,6 +28,7 @@ self._hatch = None self._core_raw_metadata = None + self._dynamic = None self._name = None self._version = None self._project_file = None @@ -64,6 +65,22 @@ return self._core_raw_metadata @property + def dynamic(self): + # Keep track of the original dynamic fields before depopulation + if self._dynamic is None: + dynamic = self.core_raw_metadata.get('dynamic', []) + if not isinstance(dynamic, list): + raise TypeError('Field `project.dynamic` must be an array') + + for i, field in enumerate(dynamic, 1): + if not isinstance(field, str): + raise TypeError(f'Field #{i} of field `project.dynamic` must be a string') + + self._dynamic = list(dynamic) + + return self._dynamic + + @property def name(self): # Duplicate the name parsing here for situations where it's # needed but metadata plugins might not be available @@ -83,6 +100,8 @@ """ if self._version is None: self._set_version() + if 'version' in self.dynamic and 'version' in self.core_raw_metadata['dynamic']: + self.core_raw_metadata['dynamic'].remove('version') return self._version @@ -114,6 +133,9 @@ if self._core is None: metadata = CoreMetadata(self.root, self.core_raw_metadata, self.hatch.metadata, self.context) + # Save the fields + _ = self.dynamic + metadata_hooks = self.hatch.metadata.hooks if metadata_hooks: static_fields = set(self.core_raw_metadata) @@ -172,6 +194,7 @@ if version is None: version = self.hatch.version.cached source = f'source `{self.hatch.version.source_name}`' + core_metadata._version_set = True else: source = 'field `project.version`' @@ -304,6 +327,9 @@ self._optional_dependencies = None self._dynamic = None + # Indicates that the version has been successfully set dynamically + self._version_set = False + @property def raw_name(self): """ @@ -349,7 +375,7 @@ """ if self._version is None: if 'version' not in self.config: - if 'version' not in self.dynamic: + if not self._version_set and 'version' not in self.dynamic: raise ValueError( 'Field `project.version` can only be resolved dynamically ' 'if `version` is in field `project.dynamic`' @@ -1123,7 +1149,10 @@ entries[get_normalized_dependency(requirement)] = requirement - normalized_option = normalize_project_name(option) + if self.hatch_metadata.allow_ambiguous_features: + normalized_option = option + else: + normalized_option = normalize_project_name(option) if normalized_option in normalized_options: raise ValueError( f'Optional dependency groups `{normalized_options[normalized_option]}` and `{option}` of ' @@ -1155,15 +1184,7 @@ https://peps.python.org/pep-0621/#dynamic """ if self._dynamic is None: - dynamic = self.config.get('dynamic', []) - if not isinstance(dynamic, list): - raise TypeError('Field `project.dynamic` must be an array') - - for i, field in enumerate(dynamic, 1): - if not isinstance(field, str): - raise TypeError(f'Field #{i} of field `project.dynamic` must be a string') - - self._dynamic = dynamic + self._dynamic = self.config.get('dynamic', []) return self._dynamic @@ -1327,6 +1348,7 @@ self.plugin_manager = plugin_manager self._allow_direct_references = None + self._allow_ambiguous_features = None self._hook_config = None self._hooks = None @@ -1342,6 +1364,18 @@ return self._allow_direct_references @property + def allow_ambiguous_features(self): + # TODO: remove in the first minor release after Jan 1, 2024 + if self._allow_ambiguous_features is None: + allow_ambiguous_features = self.config.get('allow-ambiguous-features', False) + if not isinstance(allow_ambiguous_features, bool): + raise TypeError('Field `tool.hatch.metadata.allow-ambiguous-features` must be a boolean') + + self._allow_ambiguous_features = allow_ambiguous_features + + return self._allow_ambiguous_features + + @property def hook_config(self): if self._hook_config is None: hook_config = self.config.get('hooks', {}) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/hatchling-1.9.0/src/hatchling/metadata/spec.py new/hatchling-1.10.0/src/hatchling/metadata/spec.py --- old/hatchling-1.9.0/src/hatchling/metadata/spec.py 2020-02-02 01:00:00.000000000 +0100 +++ new/hatchling-1.10.0/src/hatchling/metadata/spec.py 2020-02-02 01:00:00.000000000 +0100 @@ -138,6 +138,8 @@ for dependency in dependencies: if ';' in dependency: metadata_file += f'Requires-Dist: {dependency} and extra == {option!r}\n' + elif '@ ' in dependency: + metadata_file += f'Requires-Dist: {dependency} ; extra == {option!r}\n' else: metadata_file += f'Requires-Dist: {dependency}; extra == {option!r}\n' @@ -214,6 +216,8 @@ for dependency in dependencies: if ';' in dependency: metadata_file += f'Requires-Dist: {dependency} and extra == {option!r}\n' + elif '@ ' in dependency: + metadata_file += f'Requires-Dist: {dependency} ; extra == {option!r}\n' else: metadata_file += f'Requires-Dist: {dependency}; extra == {option!r}\n' @@ -282,6 +286,8 @@ for dependency in dependencies: if ';' in dependency: metadata_file += f'Requires-Dist: {dependency} and extra == {option!r}\n' + elif '@ ' in dependency: + metadata_file += f'Requires-Dist: {dependency} ; extra == {option!r}\n' else: metadata_file += f'Requires-Dist: {dependency}; extra == {option!r}\n'