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 2024-06-25 23:06:35
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-hatchling (Old)
and /work/SRC/openSUSE:Factory/.python-hatchling.new.18349 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-hatchling"
Tue Jun 25 23:06:35 2024 rev:27 rq:1183018 version:1.25.0
Changes:
--------
--- /work/SRC/openSUSE:Factory/python-hatchling/python-hatchling.changes
2024-05-14 13:37:12.776073369 +0200
+++
/work/SRC/openSUSE:Factory/.python-hatchling.new.18349/python-hatchling.changes
2024-06-25 23:06:53.997040111 +0200
@@ -1,0 +2,16 @@
+Sat Jun 22 18:36:39 UTC 2024 - Benoît Monin <[email protected]>
+
+- update to version 1.25.0:
+ * Changed:
+ + The macos-max-compat option for the wheel target is now
+ disabled by default and will be removed in a future release
+ * Added:
+ + Artifacts for the wheel and sdist targets now have their
+ permission bits normalized
+ * Fixed:
+ + Ignore manylinux/musllinux tags for the wheel target artifact
+ name when enabling the infer_tag build data
+ + The wheel target build data infer_tag when enabled now
+ respects the MACOSX_DEPLOYMENT_TARGET environment variable
+
+-------------------------------------------------------------------
Old:
----
hatchling-1.24.2.tar.gz
New:
----
hatchling-1.25.0.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ python-hatchling.spec ++++++
--- /var/tmp/diff_new_pack.zRh1Nz/_old 2024-06-25 23:06:55.193084200 +0200
+++ /var/tmp/diff_new_pack.zRh1Nz/_new 2024-06-25 23:06:55.193084200 +0200
@@ -18,7 +18,7 @@
%{?sle15_python_module_pythons}
Name: python-hatchling
-Version: 1.24.2
+Version: 1.25.0
Release: 0
Summary: Build backend used by Hatch
License: MIT
++++++ hatchling-1.24.2.tar.gz -> hatchling-1.25.0.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.24.2/PKG-INFO
new/hatchling-1.25.0/PKG-INFO
--- old/hatchling-1.24.2/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/PKG-INFO 2020-02-02 01:00:00.000000000 +0100
@@ -1,6 +1,6 @@
Metadata-Version: 2.3
Name: hatchling
-Version: 1.24.2
+Version: 1.25.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.24.2/src/hatchling/__about__.py
new/hatchling-1.25.0/src/hatchling/__about__.py
--- old/hatchling-1.24.2/src/hatchling/__about__.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/__about__.py 2020-02-02
01:00:00.000000000 +0100
@@ -1 +1 @@
-__version__ = '1.24.2'
+__version__ = '1.25.0'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.24.2/src/hatchling/builders/macos.py
new/hatchling-1.25.0/src/hatchling/builders/macos.py
--- old/hatchling-1.24.2/src/hatchling/builders/macos.py 1970-01-01
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/builders/macos.py 2020-02-02
01:00:00.000000000 +0100
@@ -0,0 +1,58 @@
+from __future__ import annotations
+
+import os
+import platform
+import re
+
+__all__ = ['process_macos_plat_tag']
+
+
+def process_macos_plat_tag(plat: str, /, *, compat: bool) -> str:
+ """
+ Process the macOS platform tag. This will normalize the macOS version to
+ 10.16 if compat=True. If the MACOSX_DEPLOYMENT_TARGET environment variable
+ is set, then it will be used instead for the target version. If archflags
+ is set, then the archs will be respected, including a universal build.
+ """
+ # Default to a native build
+ current_arch = platform.machine()
+ arm = current_arch == 'arm64'
+
+ # Look for cross-compiles
+ archflags = os.environ.get('ARCHFLAGS', '')
+ if archflags and (archs := re.findall(r'-arch (\S+)', archflags)):
+ new_arch = 'universal2' if set(archs) == {'x86_64', 'arm64'} else
archs[0]
+ arm = archs == ['arm64']
+ plat = f'{plat[: plat.rfind(current_arch)]}{new_arch}'
+
+ # Process macOS version
+ if sdk_match := re.search(r'macosx_(\d+_\d+)', plat):
+ macos_version = sdk_match.group(1)
+ target = os.environ.get('MACOSX_DEPLOYMENT_TARGET', None)
+
+ try:
+ new_version = normalize_macos_version(target or macos_version,
arm=arm, compat=compat)
+ except ValueError:
+ new_version = normalize_macos_version(macos_version, arm=arm,
compat=compat)
+
+ return plat.replace(macos_version, new_version, 1)
+
+ return plat
+
+
+def normalize_macos_version(version: str, *, arm: bool, compat: bool) -> str:
+ """
+ Set minor version to 0 if major is 11+. Enforces 11+ if arm=True. 11+ is
+ converted to 10.16 if compat=True. Version is always returned in
+ "major_minor" format.
+ """
+ version = version.replace('.', '_')
+ if '_' not in version:
+ version = f'{version}_0'
+ major, minor = (int(d) for d in version.split('_')[:2])
+ major = max(major, 11) if arm else major
+ minor = 0 if major >= 11 else minor # noqa: PLR2004
+ if compat and major >= 11: # noqa: PLR2004
+ major = 10
+ minor = 16
+ return f'{major}_{minor}'
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.24.2/src/hatchling/builders/sdist.py
new/hatchling-1.25.0/src/hatchling/builders/sdist.py
--- old/hatchling-1.24.2/src/hatchling/builders/sdist.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/builders/sdist.py 2020-02-02
01:00:00.000000000 +0100
@@ -15,6 +15,7 @@
from hatchling.builders.utils import (
get_reproducible_timestamp,
normalize_archive_path,
+ normalize_artifact_permissions,
normalize_file_permissions,
normalize_relative_path,
replace_file,
@@ -202,6 +203,7 @@
target = os.path.join(directory, f'{self.artifact_project_id}.tar.gz')
replace_file(archive.path, target)
+ normalize_artifact_permissions(target)
return target
@property
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.24.2/src/hatchling/builders/utils.py
new/hatchling-1.25.0/src/hatchling/builders/utils.py
--- old/hatchling-1.24.2/src/hatchling/builders/utils.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/builders/utils.py 2020-02-02
01:00:00.000000000 +0100
@@ -110,6 +110,15 @@
return new_mode
+def normalize_artifact_permissions(path: str) -> None:
+ """
+ Normalize the permission bits for artifacts
+ """
+ file_stat = os.stat(path)
+ new_mode = normalize_file_permissions(file_stat.st_mode)
+ os.chmod(path, new_mode)
+
+
def set_zip_info_mode(zip_info: ZipInfo, mode: int = 0o644) -> None:
"""
https://github.com/python/cpython/blob/v3.12.3/Lib/zipfile/__init__.py#L574
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.24.2/src/hatchling/builders/wheel.py
new/hatchling-1.25.0/src/hatchling/builders/wheel.py
--- old/hatchling-1.24.2/src/hatchling/builders/wheel.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/builders/wheel.py 2020-02-02
01:00:00.000000000 +0100
@@ -20,6 +20,7 @@
get_known_python_major_versions,
get_reproducible_timestamp,
normalize_archive_path,
+ normalize_artifact_permissions,
normalize_file_permissions,
normalize_inclusion_map,
replace_file,
@@ -402,7 +403,7 @@
@property
def macos_max_compat(self) -> bool:
if self.__macos_max_compat is None:
- macos_max_compat = self.target_config.get('macos-max-compat', True)
+ macos_max_compat = self.target_config.get('macos-max-compat',
False)
if not isinstance(macos_max_compat, bool):
message = f'Field
`tool.hatch.build.targets.{self.plugin_name}.macos-max-compat` must be a
boolean'
raise TypeError(message)
@@ -483,6 +484,7 @@
target = os.path.join(directory,
f"{self.artifact_project_id}-{build_data['tag']}.whl")
replace_file(archive.path, target)
+ normalize_artifact_permissions(target)
return target
def build_editable(self, directory: str, **build_data: Any) -> str:
@@ -571,6 +573,7 @@
target = os.path.join(directory,
f"{self.artifact_project_id}-{build_data['tag']}.whl")
replace_file(archive.path, target)
+ normalize_artifact_permissions(target)
return target
def build_editable_explicit(self, directory: str, **build_data: Any) ->
str:
@@ -599,6 +602,7 @@
target = os.path.join(directory,
f"{self.artifact_project_id}-{build_data['tag']}.whl")
replace_file(archive.path, target)
+ normalize_artifact_permissions(target)
return target
def write_data(
@@ -774,31 +778,15 @@
from packaging.tags import sys_tags
- tag = next(sys_tags())
+ # Linux tag is after many/musl; packaging tools are required to skip
+ # many/musl, see https://github.com/pypa/packaging/issues/160
+ tag = next(iter(t for t in sys_tags() if 'manylinux' not in t.platform
and 'musllinux' not in t.platform))
tag_parts = [tag.interpreter, tag.abi, tag.platform]
- archflags = os.environ.get('ARCHFLAGS', '')
if sys.platform == 'darwin':
- if archflags and sys.version_info[:2] >= (3, 8):
- import platform
- import re
-
- archs = re.findall(r'-arch (\S+)', archflags)
- if archs:
- plat = tag_parts[2]
- current_arch = platform.mac_ver()[2]
- new_arch = 'universal2' if set(archs) == {'x86_64',
'arm64'} else archs[0]
- tag_parts[2] = f'{plat[:
plat.rfind(current_arch)]}{new_arch}'
-
- if self.config.macos_max_compat:
- import re
-
- plat = tag_parts[2]
- sdk_match = re.search(r'macosx_(\d+_\d+)', plat)
- if sdk_match:
- sdk_version_part = sdk_match.group(1)
- if tuple(map(int, sdk_version_part.split('_'))) >= (11, 0):
- tag_parts[2] = plat.replace(sdk_version_part, '10_16',
1)
+ from hatchling.builders.macos import process_macos_plat_tag
+
+ tag_parts[2] = process_macos_plat_tag(tag_parts[2],
compat=self.config.macos_max_compat)
return '-'.join(tag_parts)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.24.2/src/hatchling/dep/core.py
new/hatchling-1.25.0/src/hatchling/dep/core.py
--- old/hatchling-1.24.2/src/hatchling/dep/core.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/dep/core.py 2020-02-02
01:00:00.000000000 +0100
@@ -126,7 +126,7 @@
if sys_path is None:
sys_path = sys.path
if environment is None:
- environment = default_environment()
+ environment = default_environment() # type: ignore
installed_distributions = DistributionCache(sys_path)
- return all(dependency_in_sync(requirement, environment,
installed_distributions) for requirement in requirements)
+ return all(dependency_in_sync(requirement, environment,
installed_distributions) for requirement in requirements) # type: ignore
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/hatchling-1.24.2/src/hatchling/licenses/parse.py
new/hatchling-1.25.0/src/hatchling/licenses/parse.py
--- old/hatchling-1.24.2/src/hatchling/licenses/parse.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/licenses/parse.py 2020-02-02
01:00:00.000000000 +0100
@@ -51,7 +51,7 @@
python_expression = ' '.join(python_tokens)
try:
- result = eval(python_expression) # noqa: PGH001, S307
+ result = eval(python_expression) # noqa: S307
except Exception: # noqa: BLE001
result = True
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/hatchling-1.24.2/src/hatchling/version/source/code.py
new/hatchling-1.25.0/src/hatchling/version/source/code.py
--- old/hatchling-1.24.2/src/hatchling/version/source/code.py 2020-02-02
01:00:00.000000000 +0100
+++ new/hatchling-1.25.0/src/hatchling/version/source/code.py 2020-02-02
01:00:00.000000000 +0100
@@ -55,7 +55,7 @@
sys.path[:] = old_search_paths
# Execute the expression to determine the version
- version = eval(expression, vars(module)) # noqa: PGH001, S307
+ version = eval(expression, vars(module)) # noqa: S307
return {'version': version}