diff --git a/cuda_core/cuda/core/_memory/_buffer.pyx b/cuda_core/cuda/core/_memory/_buffer.pyx index 5d3bdbb873c..75c0b5eef45 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._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/_utils/pycompat.py b/cuda_core/cuda/core/_utils/pycompat.py new file mode 100644 index 00000000000..5e685ed2db4 --- /dev/null +++ b/cuda_core/cuda/core/_utils/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..02246714a39 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._utils.pycompat import StrEnum __all__ = [ "AddressingMode", @@ -364,4 +358,4 @@ class DeviceArch(_FastEnum): pass -del StrEnum, sys +del StrEnum