Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-pyerfa for openSUSE:Factory 
checked in at 2025-02-12 21:39:00
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-pyerfa (Old)
 and      /work/SRC/openSUSE:Factory/.python-pyerfa.new.8181 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-pyerfa"

Wed Feb 12 21:39:00 2025 rev:14 rq:1245400 version:2.0.1.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-pyerfa/python-pyerfa.changes      
2024-04-19 19:24:22.153869184 +0200
+++ /work/SRC/openSUSE:Factory/.python-pyerfa.new.8181/python-pyerfa.changes    
2025-02-12 21:40:45.849074713 +0100
@@ -1,0 +2,7 @@
+Wed Feb 12 14:18:00 UTC 2025 - Ben Greiner <c...@bnavigator.de>
+
+- Update to 2.0.1.5
+  * Ensure that pyerfa is only built with the limited API if the
+  environment variable Py_GIL_DISABLED is not set.
+
+-------------------------------------------------------------------

Old:
----
  pyerfa-2.0.1.4.tar.gz

New:
----
  pyerfa-2.0.1.5.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-pyerfa.spec ++++++
--- /var/tmp/diff_new_pack.R8eXPb/_old  2025-02-12 21:40:46.577104723 +0100
+++ /var/tmp/diff_new_pack.R8eXPb/_new  2025-02-12 21:40:46.577104723 +0100
@@ -1,7 +1,7 @@
 #
 # spec file for package python-pyerfa
 #
-# Copyright (c) 2024 SUSE LLC
+# Copyright (c) 2025 SUSE LLC
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -25,7 +25,7 @@
 
 %define erfaversion 2.0.1
 Name:           python-pyerfa
-Version:        2.0.1.4
+Version:        2.0.1.5
 Release:        0
 Summary:        Python bindings for ERFA
 License:        BSD-3-Clause
@@ -36,8 +36,8 @@
 BuildRequires:  %{python_module pip}
 BuildRequires:  %{python_module pytest-doctestplus >= 0.7}
 BuildRequires:  %{python_module pytest}
+BuildRequires:  %{python_module setuptools >= 61.2}
 BuildRequires:  %{python_module setuptools_scm >= 6.2}
-BuildRequires:  %{python_module setuptools}
 BuildRequires:  %{python_module wheel}
 BuildRequires:  fdupes
 BuildRequires:  pkgconfig
@@ -45,7 +45,7 @@
 %if %{with systemlibs}
 BuildRequires:  pkgconfig(erfa) >= %{erfaversion}
 %endif
-Requires:       python-numpy >= 1.19
+Requires:       python-numpy >= 1.19.3
 %python_subpackages
 
 %description

++++++ pyerfa-2.0.1.4.tar.gz -> pyerfa-2.0.1.5.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/.flake8 new/pyerfa-2.0.1.5/.flake8
--- old/pyerfa-2.0.1.4/.flake8  1970-01-01 01:00:00.000000000 +0100
+++ new/pyerfa-2.0.1.5/.flake8  2024-11-11 16:07:16.000000000 +0100
@@ -0,0 +1,2 @@
+[flake8]
+max-line-length = 100
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/.github/dependabot.yml 
new/pyerfa-2.0.1.5/.github/dependabot.yml
--- old/pyerfa-2.0.1.4/.github/dependabot.yml   1970-01-01 01:00:00.000000000 
+0100
+++ new/pyerfa-2.0.1.5/.github/dependabot.yml   2024-11-11 16:07:16.000000000 
+0100
@@ -0,0 +1,10 @@
+version: 2
+updates:
+  - package-ecosystem: "github-actions"
+    directory: ".github/workflows"
+    schedule:
+      interval: "monthly"
+    groups:
+      actions:
+        patterns:
+          - "*"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/.github/workflows/ci_workflows.yml 
new/pyerfa-2.0.1.5/.github/workflows/ci_workflows.yml
--- old/pyerfa-2.0.1.4/.github/workflows/ci_workflows.yml       2024-04-12 
17:47:55.000000000 +0200
+++ new/pyerfa-2.0.1.5/.github/workflows/ci_workflows.yml       2024-11-11 
16:07:16.000000000 +0100
@@ -16,7 +16,7 @@
       fail-fast: true
       matrix:
         os: [ubuntu-latest, macos-latest, windows-latest]
-        python: ['3.11']
+        python: ['3.x']
         toxenv: [test]
         toxargs: [-v]
 
@@ -38,7 +38,7 @@
 
           - name: Test with development versions of our dependencies
             os: ubuntu-latest
-            python: '3.12-dev'
+            python: '3.13-dev'
             toxenv: test-devdeps
             toxargs: -v
 
@@ -57,12 +57,12 @@
 
     steps:
     - name: Checkout code
-      uses: actions/checkout@v3
+      uses: actions/checkout@v4
       with:
         fetch-depth: 0
         submodules: true
     - name: Set up Python
-      uses: actions/setup-python@v4
+      uses: actions/setup-python@v5
       with:
         python-version: ${{ matrix.python }}
     - name: Install APT packages
@@ -97,12 +97,12 @@
 
     steps:
     - name: Checkout code
-      uses: actions/checkout@v3
+      uses: actions/checkout@v4
       with:
         fetch-depth: 0
         submodules: true
     - name: Set up Python
-      uses: actions/setup-python@v4
+      uses: actions/setup-python@v5
       with:
         python-version: ${{ matrix.python }}
     - name: Install APT packages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/.github/workflows/publish.yml 
new/pyerfa-2.0.1.5/.github/workflows/publish.yml
--- old/pyerfa-2.0.1.4/.github/workflows/publish.yml    2024-04-12 
17:47:55.000000000 +0200
+++ new/pyerfa-2.0.1.5/.github/workflows/publish.yml    2024-11-11 
16:07:16.000000000 +0100
@@ -2,8 +2,8 @@
 
 on:
   schedule:
-    # run every day at 4am UTC
-    - cron: '0 4 * * *'
+    # run every Sunday at 4am UTC
+    - cron: '0 4 * * SUN'
   workflow_dispatch:
   push:
   pull_request:
@@ -29,7 +29,7 @@
       # the build isolation and explicitly install the latest developer 
version of numpy as well as
       # the latest stable versions of all other build-time dependencies.
       env: |
-        CIBW_BEFORE_BUILD: '${{ ((github.event_name == 'schedule' || 
github.event_name == 'workflow_dispatch' || github.event_name == 
'pull_request') && 'pip install --pre setuptools setuptools_scm jinja2 numpy') 
|| '' }}'
+        CIBW_BEFORE_BUILD: '${{ ((github.event_name == 'schedule' || 
github.event_name == 'workflow_dispatch' || github.event_name == 
'pull_request') && 'pip install --pre setuptools setuptools_scm wheel jinja2 
numpy') || '' }}'
         CIBW_BUILD_FRONTEND: '${{ ((github.event_name == 'schedule' || 
github.event_name == 'workflow_dispatch' || github.event_name == 
'pull_request') && 'pip; args: --no-build-isolation') || 'build' }}'
 
       test_extras: test
@@ -42,8 +42,6 @@
         - cp3*-manylinux_aarch64
         - pp39-manylinux_x86_64
         # MacOS X wheels - we deliberately do not build universal2 wheels.
-        # Note that the arm64 wheels are not actually tested so we
-        # rely on local manual testing of these to make sure they are ok.
         - cp3*macosx_x86_64
         - cp3*macosx_arm64
         - pp39-macosx_x86_64
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/.pycodestyle 
new/pyerfa-2.0.1.5/.pycodestyle
--- old/pyerfa-2.0.1.4/.pycodestyle     1970-01-01 01:00:00.000000000 +0100
+++ new/pyerfa-2.0.1.5/.pycodestyle     2024-11-11 16:07:16.000000000 +0100
@@ -0,0 +1,2 @@
+[pycodestyle]
+max-line-length = 100
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/.readthedocs.yml 
new/pyerfa-2.0.1.5/.readthedocs.yml
--- old/pyerfa-2.0.1.4/.readthedocs.yml 2024-04-12 17:47:55.000000000 +0200
+++ new/pyerfa-2.0.1.5/.readthedocs.yml 2024-11-11 16:07:16.000000000 +0100
@@ -7,6 +7,8 @@
   jobs:
     post_checkout:
       - git fetch --shallow-since=2023-01-01  || true
+  apt_packages:
+    - graphviz
 
 submodules:
   include: all
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/CHANGES.rst 
new/pyerfa-2.0.1.5/CHANGES.rst
--- old/pyerfa-2.0.1.4/CHANGES.rst      2024-04-12 17:47:55.000000000 +0200
+++ new/pyerfa-2.0.1.5/CHANGES.rst      2024-11-11 16:07:16.000000000 +0100
@@ -1,3 +1,8 @@
+2.0.1.5 (2024-11-11)
+====================
+Ensure that pyerfa is only built with the limited API if the environment
+variable ``Py_GIL_DISABLED`` is not set.
+
 2.0.1.4 (2024-04-12)
 ====================
 Reintroduces a work-around such that pyerfa can also be built
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/PKG-INFO new/pyerfa-2.0.1.5/PKG-INFO
--- old/pyerfa-2.0.1.4/PKG-INFO 2024-04-12 17:48:17.046793200 +0200
+++ new/pyerfa-2.0.1.5/PKG-INFO 2024-11-11 16:07:35.064738000 +0100
@@ -1,10 +1,10 @@
 Metadata-Version: 2.1
 Name: pyerfa
-Version: 2.0.1.4
+Version: 2.0.1.5
 Summary: Python bindings for ERFA
-Home-page: https://github.com/liberfa/pyerfa
 Author: The PyERFA Developers
 License: BSD 3-Clause License
+Project-URL: Homepage, https://github.com/liberfa/pyerfa
 Keywords: astronomy,astrophysics,cosmology,space,science,coordinate
 Classifier: Intended Audience :: Science/Research
 Classifier: License :: OSI Approved :: BSD License
@@ -15,8 +15,9 @@
 Classifier: Topic :: Scientific/Engineering :: Astronomy
 Classifier: Topic :: Scientific/Engineering :: Physics
 Requires-Python: >=3.9
+Description-Content-Type: text/x-rst
 License-File: LICENSE.rst
-Requires-Dist: numpy>=1.19
+Requires-Dist: numpy>=1.19.3
 Provides-Extra: test
 Requires-Dist: pytest; extra == "test"
 Requires-Dist: pytest-doctestplus>=0.7; extra == "test"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/erfa/_version.py 
new/pyerfa-2.0.1.5/erfa/_version.py
--- old/pyerfa-2.0.1.4/erfa/_version.py 2024-04-12 17:48:16.000000000 +0200
+++ new/pyerfa-2.0.1.5/erfa/_version.py 2024-11-11 16:07:34.000000000 +0100
@@ -12,5 +12,5 @@
 __version_tuple__: VERSION_TUPLE
 version_tuple: VERSION_TUPLE
 
-__version__ = version = '2.0.1.4'
-__version_tuple__ = version_tuple = (2, 0, 1, 4)
+__version__ = version = '2.0.1.5'
+__version_tuple__ = version_tuple = (2, 0, 1, 5)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/erfa/ufunc.c 
new/pyerfa-2.0.1.5/erfa/ufunc.c
--- old/pyerfa-2.0.1.4/erfa/ufunc.c     2024-04-12 17:48:07.000000000 +0200
+++ new/pyerfa-2.0.1.5/erfa/ufunc.c     2024-11-11 16:07:26.000000000 +0100
@@ -9,8 +9,13 @@
  * to update it.
  */
 
+/*
+Note that this file is restricted to Python's Limited API, but we define the
+corresponding macro dynamically in setup.py so it can be disabled for Python 
builds
+that do not support it (e.g., 3.13t)
+*/
+
 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
-#define Py_LIMITED_API 0x030900f0
 #include "Python.h"
 #include "numpy/arrayobject.h"
 #include "numpy/ufuncobject.h"
@@ -29,7 +34,7 @@
 // As mentioned in https://github.com/numpy/numpy/issues/16970,
 // the workaround is to define a fake _typeobject struct.
 
-#ifndef PYPY_VERSION
+#if (defined Py_LIMITED_API) && !(defined PYPY_VERSION)
 typedef struct _typeobject {
     int dummy;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/erfa/ufunc.c.templ 
new/pyerfa-2.0.1.5/erfa/ufunc.c.templ
--- old/pyerfa-2.0.1.4/erfa/ufunc.c.templ       2024-04-12 17:47:55.000000000 
+0200
+++ new/pyerfa-2.0.1.5/erfa/ufunc.c.templ       2024-11-11 16:07:16.000000000 
+0100
@@ -9,8 +9,13 @@
  * to update it.
  */
 
+/*
+Note that this file is restricted to Python's Limited API, but we define the
+corresponding macro dynamically in setup.py so it can be disabled for Python 
builds
+that do not support it (e.g., 3.13t)
+*/
+
 #define NPY_NO_DEPRECATED_API NPY_1_7_API_VERSION
-#define Py_LIMITED_API 0x030900f0
 #include "Python.h"
 #include "numpy/arrayobject.h"
 #include "numpy/ufuncobject.h"
@@ -29,7 +34,7 @@
 // As mentioned in https://github.com/numpy/numpy/issues/16970,
 // the workaround is to define a fake _typeobject struct.
 
-#ifndef PYPY_VERSION
+#if (defined Py_LIMITED_API) && !(defined PYPY_VERSION)
 typedef struct _typeobject {
     int dummy;
 };
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/pyerfa.egg-info/PKG-INFO 
new/pyerfa-2.0.1.5/pyerfa.egg-info/PKG-INFO
--- old/pyerfa-2.0.1.4/pyerfa.egg-info/PKG-INFO 2024-04-12 17:48:16.000000000 
+0200
+++ new/pyerfa-2.0.1.5/pyerfa.egg-info/PKG-INFO 2024-11-11 16:07:34.000000000 
+0100
@@ -1,10 +1,10 @@
 Metadata-Version: 2.1
 Name: pyerfa
-Version: 2.0.1.4
+Version: 2.0.1.5
 Summary: Python bindings for ERFA
-Home-page: https://github.com/liberfa/pyerfa
 Author: The PyERFA Developers
 License: BSD 3-Clause License
+Project-URL: Homepage, https://github.com/liberfa/pyerfa
 Keywords: astronomy,astrophysics,cosmology,space,science,coordinate
 Classifier: Intended Audience :: Science/Research
 Classifier: License :: OSI Approved :: BSD License
@@ -15,8 +15,9 @@
 Classifier: Topic :: Scientific/Engineering :: Astronomy
 Classifier: Topic :: Scientific/Engineering :: Physics
 Requires-Python: >=3.9
+Description-Content-Type: text/x-rst
 License-File: LICENSE.rst
-Requires-Dist: numpy>=1.19
+Requires-Dist: numpy>=1.19.3
 Provides-Extra: test
 Requires-Dist: pytest; extra == "test"
 Requires-Dist: pytest-doctestplus>=0.7; extra == "test"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/pyerfa.egg-info/SOURCES.txt 
new/pyerfa-2.0.1.5/pyerfa.egg-info/SOURCES.txt
--- old/pyerfa-2.0.1.4/pyerfa.egg-info/SOURCES.txt      2024-04-12 
17:48:16.000000000 +0200
+++ new/pyerfa-2.0.1.5/pyerfa.egg-info/SOURCES.txt      2024-11-11 
16:07:34.000000000 +0100
@@ -1,4 +1,6 @@
+.flake8
 .gitmodules
+.pycodestyle
 .readthedocs.yml
 AUTHORS.rst
 CHANGES.rst
@@ -9,9 +11,9 @@
 RELEASING.rst
 erfa_generator.py
 pyproject.toml
-setup.cfg
 setup.py
 tox.ini
+.github/dependabot.yml
 .github/workflows/ci_workflows.yml
 .github/workflows/publish.yml
 docs/Makefile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/pyerfa.egg-info/requires.txt 
new/pyerfa-2.0.1.5/pyerfa.egg-info/requires.txt
--- old/pyerfa-2.0.1.4/pyerfa.egg-info/requires.txt     2024-04-12 
17:48:16.000000000 +0200
+++ new/pyerfa-2.0.1.5/pyerfa.egg-info/requires.txt     2024-11-11 
16:07:34.000000000 +0100
@@ -1,4 +1,4 @@
-numpy>=1.19
+numpy>=1.19.3
 
 [docs]
 sphinx-astropy>=1.3
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/pyproject.toml 
new/pyerfa-2.0.1.5/pyproject.toml
--- old/pyerfa-2.0.1.4/pyproject.toml   2024-04-12 17:47:55.000000000 +0200
+++ new/pyerfa-2.0.1.5/pyproject.toml   2024-11-11 16:07:16.000000000 +0100
@@ -1,8 +1,62 @@
 [build-system]
 requires = [
-    "setuptools",
+    "setuptools>=61.2",
     "setuptools_scm>=6.2",
+    "wheel",
     "jinja2>=2.10.3",
     "numpy>=2.0.0rc1",
 ]
 build-backend = 'setuptools.build_meta'
+
+[project]
+name = "pyerfa"
+authors = [{name = "The PyERFA Developers"}]
+license = {text = "BSD 3-Clause License"}
+description = "Python bindings for ERFA"
+readme = "README.rst"
+keywords = ["astronomy", "astrophysics", "cosmology", "space", "science", 
"coordinate"]
+classifiers = [
+    "Intended Audience :: Science/Research",
+    "License :: OSI Approved :: BSD License",
+    "Operating System :: OS Independent",
+    "Programming Language :: C",
+    "Programming Language :: Python :: 3",
+    "Programming Language :: Python :: Implementation :: CPython",
+    "Topic :: Scientific/Engineering :: Astronomy",
+    "Topic :: Scientific/Engineering :: Physics",
+]
+urls = {Homepage = "https://github.com/liberfa/pyerfa"}
+requires-python = ">=3.9"
+dependencies = ["numpy>=1.19.3"]
+dynamic = ["version"]
+
+[project.optional-dependencies]
+test = [
+    "pytest",
+    "pytest-doctestplus>=0.7",
+]
+docs = ["sphinx-astropy>=1.3"]
+
+[tool.setuptools]
+# We set packages to find: to automatically find all sub-packages
+zip-safe = false
+license-files = ["LICENSE.rst"]
+include-package-data = false
+
+[tool.setuptools.packages.find]
+exclude = ["erfa._dev"]
+namespaces = false
+
+[tool.pytest.ini_options]
+minversion = "4.6"
+testpaths = ["erfa", "docs", "README.rst"]
+doctest_plus = "enabled"
+doctest_optionflags = """
+NORMALIZE_WHITESPACE
+ELLIPSIS
+FLOAT_CMP
+IGNORE_EXCEPTION_DETAIL"""
+text_file_format = "rst"
+addopts = "--doctest-rst"
+xfail_strict = true
+norecursedirs = ["erfa/_dev"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/setup.cfg new/pyerfa-2.0.1.5/setup.cfg
--- old/pyerfa-2.0.1.4/setup.cfg        2024-04-12 17:48:17.046793200 +0200
+++ new/pyerfa-2.0.1.5/setup.cfg        2024-11-11 16:07:35.064738000 +0100
@@ -1,64 +1,3 @@
-[metadata]
-name = pyerfa
-author = The PyERFA Developers
-license = BSD 3-Clause License
-license_files = LICENSE.rst
-url = https://github.com/liberfa/pyerfa
-description = Python bindings for ERFA
-long_description = file: README.rst
-keywords = astronomy, astrophysics, cosmology, space, science, coordinate
-classifiers = 
-       Intended Audience :: Science/Research
-       License :: OSI Approved :: BSD License
-       Operating System :: OS Independent
-       Programming Language :: C
-       Programming Language :: Python :: 3
-       Programming Language :: Python :: Implementation :: CPython
-       Topic :: Scientific/Engineering :: Astronomy
-       Topic :: Scientific/Engineering :: Physics
-
-[options]
-packages = find:
-requires = numpy
-zip_safe = False
-tests_require = pytest-doctestplus
-setup_requires = setuptools_scm
-install_requires = numpy>=1.19
-python_requires = >=3.9
-
-[options.packages.find]
-exclude = erfa._dev
-
-[options.extras_require]
-test = 
-       pytest
-       pytest-doctestplus>=0.7
-docs = 
-       sphinx-astropy>=1.3
-
-[tool:pytest]
-minversion = 4.6
-testpaths = "erfa" "docs" "README.rst"
-doctest_plus = enabled
-doctest_optionflags = 
-       NORMALIZE_WHITESPACE
-       ELLIPSIS
-       FLOAT_CMP
-       IGNORE_EXCEPTION_DETAIL
-text_file_format = rst
-addopts = --doctest-rst
-xfail_strict = true
-norecursedirs = 'erfa/_dev'
-
-[flake8]
-max-line-length = 100
-
-[pycodestyle]
-max-line-length = 100
-
-[bdist_wheel]
-py_limited_api = cp39
-
 [egg_info]
 tag_build = 
 tag_date = 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyerfa-2.0.1.4/setup.py new/pyerfa-2.0.1.5/setup.py
--- old/pyerfa-2.0.1.4/setup.py 2024-04-12 17:47:55.000000000 +0200
+++ new/pyerfa-2.0.1.5/setup.py 2024-11-11 16:07:16.000000000 +0100
@@ -9,6 +9,14 @@
 import subprocess
 from warnings import warn
 import packaging.version
+import sysconfig
+
+try:
+    # First available on setuptools 70.1 from January 2024
+    # https://setuptools.pypa.io/en/stable/history.html#v70-1-0
+    from setuptools.command.bdist_wheel import bdist_wheel
+except ImportError:
+    from wheel.bdist_wheel import bdist_wheel
 
 
 LIBERFADIR = os.path.join('liberfa', 'erfa')
@@ -19,13 +27,27 @@
 ]
 
 
+# build with Py_LIMITED_API unless in freethreading build (which does not 
currently
+# support the limited API in py313t)
+USE_PY_LIMITED_API = not sysconfig.get_config_var("Py_GIL_DISABLED")
+
+class bdist_wheel_abi3(bdist_wheel):
+    def get_tag(self):
+        python, abi, plat = super().get_tag()
+
+        if USE_PY_LIMITED_API and python.startswith("cp"):
+            # on CPython, our wheels are abi3 and compatible back to 3.9
+            return "cp39", "abi3", plat
+
+        return python, abi, plat
+
 def newer(source, target):
     import pathlib
 
     source = pathlib.Path(source)
     if not source.exists():
         raise FileNotFoundError(f"file '{source.resolve()}' does not exist")
-    
+
     target = pathlib.Path(target)
     if not target.exists():
         return 1
@@ -128,8 +150,9 @@
             if liberfa_versions:
                 print('Configure liberfa ("configure.ac" scan)')
                 lines = []
-                for name, value in get_liberfa_versions():
-                    lines.append(f'#define {name} "{value}"')
+                for name, value in liberfa_versions:
+                    # making sure strings are correctly quoted
+                    lines.append(f'#define {name} {value!r}'.replace("'", '"'))
                 with open(config_h, 'w') as fd:
                     fd.write('\n'.join(lines))
             else:
@@ -141,13 +164,16 @@
         elif 'sdist' in sys.argv:
             raise RuntimeError('missing "configure" script in "liberfa/erfa"')
 
+    if USE_PY_LIMITED_API:
+        define_macros.append(("Py_LIMITED_API", "0x30900f0"))
+
     erfa_ext = NumpyExtension(
         name="erfa.ufunc",
         sources=sources,
         include_dirs=include_dirs,
         libraries=libraries,
         define_macros=define_macros,
-        py_limited_api=True,
+        py_limited_api=USE_PY_LIMITED_API,
         language="c")
 
     return [erfa_ext]
@@ -176,4 +202,8 @@
     'version_scheme': guess_next_dev,
 }
 
-setuptools.setup(use_scm_version=use_scm_version, ext_modules=get_extensions())
+setuptools.setup(
+    use_scm_version=use_scm_version,
+    ext_modules=get_extensions(),
+    cmdclass={"bdist_wheel": bdist_wheel_abi3},
+)

Reply via email to