diff --git a/setup.py b/setup.py index 54ea4c8..e2a94e9 100644 --- a/setup.py +++ b/setup.py @@ -2,6 +2,7 @@ import platform import sys +import sysconfig from setuptools import setup @@ -14,7 +15,11 @@ class BDistWheel(wheel.bdist_wheel.bdist_wheel): def finalize_options(self): - self.py_limited_api = f"cp3{sys.version_info[1]}" + # free-threaded CPython doesn't support limited API + if sysconfig.get_config_var("Py_GIL_DISABLED"): + self.py_limited_api = False + else: + self.py_limited_api = f"cp3{sys.version_info[1]}" wheel.bdist_wheel.bdist_wheel.finalize_options(self) cmdclass["bdist_wheel"] = BDistWheel diff --git a/src/_argon2_cffi_bindings/_ffi_build.py b/src/_argon2_cffi_bindings/_ffi_build.py index 0d4d0be..cea7c14 100644 --- a/src/_argon2_cffi_bindings/_ffi_build.py +++ b/src/_argon2_cffi_bindings/_ffi_build.py @@ -2,6 +2,7 @@ import os import platform +import sysconfig from pathlib import Path @@ -48,6 +49,7 @@ def _get_target_platform(arch_flags, default): "_ffi", "#include ", libraries=["argon2"], + py_limited_api=not sysconfig.get_config_var("Py_GIL_DISABLED"), ) else: lib_base = Path("extras") / "libargon2" / "src" @@ -56,6 +58,7 @@ def _get_target_platform(arch_flags, default): "#include ", extra_compile_args=["-msse2"] if (optimized and not windows) else None, include_dirs=[os.path.join("extras", "libargon2", "include")], + py_limited_api=not sysconfig.get_config_var("Py_GIL_DISABLED"), sources=[ str(lib_base / path) for path in [