From ba3b5da7d8cffdc053229a750f8144e96f8d91d4 Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Wed, 13 May 2026 12:03:16 -0400 Subject: [PATCH 1/2] Fix #2019: Move Python-compatibility shims to their own file --- cuda_core/cuda/core/_memory/_buffer.pyx | 6 +----- cuda_core/cuda/core/_pycompat.py | 23 +++++++++++++++++++++++ cuda_core/cuda/core/system/typing.py | 10 ++-------- 3 files changed, 26 insertions(+), 13 deletions(-) create mode 100644 cuda_core/cuda/core/_pycompat.py diff --git a/cuda_core/cuda/core/_memory/_buffer.pyx b/cuda_core/cuda/core/_memory/_buffer.pyx index 5d3bdbb873c..618e00274f9 100644 --- a/cuda_core/cuda/core/_memory/_buffer.pyx +++ b/cuda_core/cuda/core/_memory/_buffer.pyx @@ -30,11 +30,7 @@ from cuda.core._utils.cuda_utils cimport HANDLE_RETURN, _parse_fill_value import sys from typing import TypeVar -if sys.version_info >= (3, 12): - from collections.abc import Buffer as BufferProtocol -else: - BufferProtocol = object - +from cuda.core._pycompat import BufferProtocol from cuda.core._dlpack import classify_dl_device, make_py_capsule from cuda.core._device import Device diff --git a/cuda_core/cuda/core/_pycompat.py b/cuda_core/cuda/core/_pycompat.py new file mode 100644 index 00000000000..5e685ed2db4 --- /dev/null +++ b/cuda_core/cuda/core/_pycompat.py @@ -0,0 +1,23 @@ +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +""" +Compatibility shims for differences between supported Python versions. +""" + +import sys + +__all__ = ["BufferProtocol", "StrEnum"] + + +if sys.version_info >= (3, 11): + from enum import StrEnum +else: + from backports.strenum import StrEnum + + +if sys.version_info >= (3, 12): + from collections.abc import Buffer as BufferProtocol +else: + BufferProtocol = object diff --git a/cuda_core/cuda/core/system/typing.py b/cuda_core/cuda/core/system/typing.py index 573a9ed3114..5ceac67f4a0 100644 --- a/cuda_core/cuda/core/system/typing.py +++ b/cuda_core/cuda/core/system/typing.py @@ -2,13 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -import sys - -if sys.version_info >= (3, 11): - from enum import StrEnum -else: - from backports.strenum import StrEnum - +from cuda.core._pycompat import StrEnum __all__ = [ "AddressingMode", @@ -364,4 +358,4 @@ class DeviceArch(_FastEnum): pass -del StrEnum, sys +del StrEnum From ced3b0c25c448dbf8f8411e73b84ab6075ba30c8 Mon Sep 17 00:00:00 2001 From: Michael Droettboom Date: Wed, 13 May 2026 17:22:03 -0400 Subject: [PATCH 2/2] Move _pycompat -> _utils.pycompat --- cuda_core/cuda/core/_memory/_buffer.pyx | 2 +- cuda_core/cuda/core/{_pycompat.py => _utils/pycompat.py} | 0 cuda_core/cuda/core/system/typing.py | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) rename cuda_core/cuda/core/{_pycompat.py => _utils/pycompat.py} (100%) diff --git a/cuda_core/cuda/core/_memory/_buffer.pyx b/cuda_core/cuda/core/_memory/_buffer.pyx index 618e00274f9..75c0b5eef45 100644 --- a/cuda_core/cuda/core/_memory/_buffer.pyx +++ b/cuda_core/cuda/core/_memory/_buffer.pyx @@ -30,7 +30,7 @@ from cuda.core._utils.cuda_utils cimport HANDLE_RETURN, _parse_fill_value import sys from typing import TypeVar -from cuda.core._pycompat import BufferProtocol +from cuda.core._utils.pycompat import BufferProtocol from cuda.core._dlpack import classify_dl_device, make_py_capsule from cuda.core._device import Device diff --git a/cuda_core/cuda/core/_pycompat.py b/cuda_core/cuda/core/_utils/pycompat.py similarity index 100% rename from cuda_core/cuda/core/_pycompat.py rename to cuda_core/cuda/core/_utils/pycompat.py diff --git a/cuda_core/cuda/core/system/typing.py b/cuda_core/cuda/core/system/typing.py index 5ceac67f4a0..02246714a39 100644 --- a/cuda_core/cuda/core/system/typing.py +++ b/cuda_core/cuda/core/system/typing.py @@ -2,7 +2,7 @@ # # SPDX-License-Identifier: Apache-2.0 -from cuda.core._pycompat import StrEnum +from cuda.core._utils.pycompat import StrEnum __all__ = [ "AddressingMode",