From 603edaa5ff5796106a68ac72b851664d7e0f7459 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Fri, 27 Mar 2026 01:06:02 +0000 Subject: [PATCH 1/3] Expose type aliases and protocols via cuda.core.typing Add a public cuda.core.typing module that re-exports type aliases and protocols used in cuda.core API signatures (IsStreamT, DevicePointerT, VirtualMemory*T). These were previously only accessible via private module paths, which broke in v0.5.0. Closes #1419 Co-Authored-By: Claude Opus 4.6 (1M context) --- cuda_core/cuda/core/typing.py | 25 +++++++++++ cuda_core/docs/source/api_private.rst | 14 +++--- cuda_core/tests/test_typing_imports.py | 60 ++++++++++++++++++++++++++ 3 files changed, 92 insertions(+), 7 deletions(-) create mode 100644 cuda_core/cuda/core/typing.py create mode 100644 cuda_core/tests/test_typing_imports.py diff --git a/cuda_core/cuda/core/typing.py b/cuda_core/cuda/core/typing.py new file mode 100644 index 0000000000..505f3cf27e --- /dev/null +++ b/cuda_core/cuda/core/typing.py @@ -0,0 +1,25 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +"""Public type aliases and protocols used in cuda.core API signatures.""" + +from cuda.core._memory._buffer import DevicePointerT +from cuda.core._memory._virtual_memory_resource import ( + VirtualMemoryAccessTypeT, + VirtualMemoryAllocationTypeT, + VirtualMemoryGranularityT, + VirtualMemoryHandleTypeT, + VirtualMemoryLocationTypeT, +) +from cuda.core._stream import IsStreamT + +__all__ = [ + "DevicePointerT", + "IsStreamT", + "VirtualMemoryAccessTypeT", + "VirtualMemoryAllocationTypeT", + "VirtualMemoryGranularityT", + "VirtualMemoryHandleTypeT", + "VirtualMemoryLocationTypeT", +] diff --git a/cuda_core/docs/source/api_private.rst b/cuda_core/docs/source/api_private.rst index 0aa88d1d64..0c36914c5e 100644 --- a/cuda_core/docs/source/api_private.rst +++ b/cuda_core/docs/source/api_private.rst @@ -16,12 +16,12 @@ CUDA runtime .. autosummary:: :toctree: generated/ - _memory._buffer.DevicePointerT - _memory._virtual_memory_resource.VirtualMemoryAllocationTypeT - _memory._virtual_memory_resource.VirtualMemoryLocationTypeT - _memory._virtual_memory_resource.VirtualMemoryGranularityT - _memory._virtual_memory_resource.VirtualMemoryAccessTypeT - _memory._virtual_memory_resource.VirtualMemoryHandleTypeT + typing.DevicePointerT + typing.VirtualMemoryAllocationTypeT + typing.VirtualMemoryLocationTypeT + typing.VirtualMemoryGranularityT + typing.VirtualMemoryAccessTypeT + typing.VirtualMemoryHandleTypeT _module.KernelAttributes _module.KernelOccupancy _module.ParamInfo @@ -41,4 +41,4 @@ CUDA protocols :toctree: generated/ :template: protocol.rst - _stream.IsStreamT + typing.IsStreamT diff --git a/cuda_core/tests/test_typing_imports.py b/cuda_core/tests/test_typing_imports.py new file mode 100644 index 0000000000..0c7c5ffe81 --- /dev/null +++ b/cuda_core/tests/test_typing_imports.py @@ -0,0 +1,60 @@ +# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# +# SPDX-License-Identifier: Apache-2.0 + +"""Tests for cuda.core.typing public type aliases and protocols.""" + + +def test_typing_module_imports(): + """All type aliases and protocols are importable from cuda.core.typing.""" + from cuda.core.typing import ( + DevicePointerT, + IsStreamT, + VirtualMemoryAccessTypeT, + VirtualMemoryAllocationTypeT, + VirtualMemoryGranularityT, + VirtualMemoryHandleTypeT, + VirtualMemoryLocationTypeT, + ) + + # Verify they are not None (sanity check) + for name, obj in ( + ("DevicePointerT", DevicePointerT), + ("IsStreamT", IsStreamT), + ("VirtualMemoryAccessTypeT", VirtualMemoryAccessTypeT), + ("VirtualMemoryAllocationTypeT", VirtualMemoryAllocationTypeT), + ("VirtualMemoryGranularityT", VirtualMemoryGranularityT), + ("VirtualMemoryHandleTypeT", VirtualMemoryHandleTypeT), + ("VirtualMemoryLocationTypeT", VirtualMemoryLocationTypeT), + ): + assert obj is not None, f"{name} should not be None" + + +def test_typing_matches_private_definitions(): + """cuda.core.typing re-exports match the original private definitions.""" + from cuda.core._memory._buffer import DevicePointerT as _DevicePointerT + from cuda.core._memory._virtual_memory_resource import ( + VirtualMemoryAccessTypeT as _VirtualMemoryAccessTypeT, + VirtualMemoryAllocationTypeT as _VirtualMemoryAllocationTypeT, + VirtualMemoryGranularityT as _VirtualMemoryGranularityT, + VirtualMemoryHandleTypeT as _VirtualMemoryHandleTypeT, + VirtualMemoryLocationTypeT as _VirtualMemoryLocationTypeT, + ) + from cuda.core._stream import IsStreamT as _IsStreamT + from cuda.core.typing import ( + DevicePointerT, + IsStreamT, + VirtualMemoryAccessTypeT, + VirtualMemoryAllocationTypeT, + VirtualMemoryGranularityT, + VirtualMemoryHandleTypeT, + VirtualMemoryLocationTypeT, + ) + + assert DevicePointerT is _DevicePointerT + assert IsStreamT is _IsStreamT + assert VirtualMemoryAccessTypeT is _VirtualMemoryAccessTypeT + assert VirtualMemoryAllocationTypeT is _VirtualMemoryAllocationTypeT + assert VirtualMemoryGranularityT is _VirtualMemoryGranularityT + assert VirtualMemoryHandleTypeT is _VirtualMemoryHandleTypeT + assert VirtualMemoryLocationTypeT is _VirtualMemoryLocationTypeT From 6cb4eb8310b4c56be4ecedf3adeff8c1599e7044 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Fri, 27 Mar 2026 01:12:29 +0000 Subject: [PATCH 2/3] Update copyright headers to 2026 Co-Authored-By: Claude Opus 4.6 (1M context) --- cuda_core/cuda/core/typing.py | 2 +- cuda_core/tests/test_typing_imports.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cuda_core/cuda/core/typing.py b/cuda_core/cuda/core/typing.py index 505f3cf27e..f516e04554 100644 --- a/cuda_core/cuda/core/typing.py +++ b/cuda_core/cuda/core/typing.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # SPDX-License-Identifier: Apache-2.0 diff --git a/cuda_core/tests/test_typing_imports.py b/cuda_core/tests/test_typing_imports.py index 0c7c5ffe81..8e4ab78d39 100644 --- a/cuda_core/tests/test_typing_imports.py +++ b/cuda_core/tests/test_typing_imports.py @@ -1,4 +1,4 @@ -# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved. +# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. # # SPDX-License-Identifier: Apache-2.0 From fdaabf87640a9af23e0c223820e61209f44458e6 Mon Sep 17 00:00:00 2001 From: Leo Fang Date: Tue, 7 Apr 2026 19:33:53 +0000 Subject: [PATCH 3/3] Remove VMM type aliases, keep only IsStreamT and DevicePointerT Co-Authored-By: Claude Opus 4.6 (1M context) --- cuda_core/cuda/core/typing.py | 12 --------- cuda_core/docs/source/api_private.rst | 10 ++++---- cuda_core/tests/test_typing_imports.py | 35 ++------------------------ 3 files changed, 7 insertions(+), 50 deletions(-) diff --git a/cuda_core/cuda/core/typing.py b/cuda_core/cuda/core/typing.py index f516e04554..a66ab1881f 100644 --- a/cuda_core/cuda/core/typing.py +++ b/cuda_core/cuda/core/typing.py @@ -5,21 +5,9 @@ """Public type aliases and protocols used in cuda.core API signatures.""" from cuda.core._memory._buffer import DevicePointerT -from cuda.core._memory._virtual_memory_resource import ( - VirtualMemoryAccessTypeT, - VirtualMemoryAllocationTypeT, - VirtualMemoryGranularityT, - VirtualMemoryHandleTypeT, - VirtualMemoryLocationTypeT, -) from cuda.core._stream import IsStreamT __all__ = [ "DevicePointerT", "IsStreamT", - "VirtualMemoryAccessTypeT", - "VirtualMemoryAllocationTypeT", - "VirtualMemoryGranularityT", - "VirtualMemoryHandleTypeT", - "VirtualMemoryLocationTypeT", ] diff --git a/cuda_core/docs/source/api_private.rst b/cuda_core/docs/source/api_private.rst index 0c36914c5e..3ee9aa7c7b 100644 --- a/cuda_core/docs/source/api_private.rst +++ b/cuda_core/docs/source/api_private.rst @@ -17,11 +17,11 @@ CUDA runtime :toctree: generated/ typing.DevicePointerT - typing.VirtualMemoryAllocationTypeT - typing.VirtualMemoryLocationTypeT - typing.VirtualMemoryGranularityT - typing.VirtualMemoryAccessTypeT - typing.VirtualMemoryHandleTypeT + _memory._virtual_memory_resource.VirtualMemoryAllocationTypeT + _memory._virtual_memory_resource.VirtualMemoryLocationTypeT + _memory._virtual_memory_resource.VirtualMemoryGranularityT + _memory._virtual_memory_resource.VirtualMemoryAccessTypeT + _memory._virtual_memory_resource.VirtualMemoryHandleTypeT _module.KernelAttributes _module.KernelOccupancy _module.ParamInfo diff --git a/cuda_core/tests/test_typing_imports.py b/cuda_core/tests/test_typing_imports.py index 8e4ab78d39..c05e3ae3b3 100644 --- a/cuda_core/tests/test_typing_imports.py +++ b/cuda_core/tests/test_typing_imports.py @@ -10,51 +10,20 @@ def test_typing_module_imports(): from cuda.core.typing import ( DevicePointerT, IsStreamT, - VirtualMemoryAccessTypeT, - VirtualMemoryAllocationTypeT, - VirtualMemoryGranularityT, - VirtualMemoryHandleTypeT, - VirtualMemoryLocationTypeT, ) - # Verify they are not None (sanity check) - for name, obj in ( - ("DevicePointerT", DevicePointerT), - ("IsStreamT", IsStreamT), - ("VirtualMemoryAccessTypeT", VirtualMemoryAccessTypeT), - ("VirtualMemoryAllocationTypeT", VirtualMemoryAllocationTypeT), - ("VirtualMemoryGranularityT", VirtualMemoryGranularityT), - ("VirtualMemoryHandleTypeT", VirtualMemoryHandleTypeT), - ("VirtualMemoryLocationTypeT", VirtualMemoryLocationTypeT), - ): - assert obj is not None, f"{name} should not be None" + assert DevicePointerT is not None + assert IsStreamT is not None def test_typing_matches_private_definitions(): """cuda.core.typing re-exports match the original private definitions.""" from cuda.core._memory._buffer import DevicePointerT as _DevicePointerT - from cuda.core._memory._virtual_memory_resource import ( - VirtualMemoryAccessTypeT as _VirtualMemoryAccessTypeT, - VirtualMemoryAllocationTypeT as _VirtualMemoryAllocationTypeT, - VirtualMemoryGranularityT as _VirtualMemoryGranularityT, - VirtualMemoryHandleTypeT as _VirtualMemoryHandleTypeT, - VirtualMemoryLocationTypeT as _VirtualMemoryLocationTypeT, - ) from cuda.core._stream import IsStreamT as _IsStreamT from cuda.core.typing import ( DevicePointerT, IsStreamT, - VirtualMemoryAccessTypeT, - VirtualMemoryAllocationTypeT, - VirtualMemoryGranularityT, - VirtualMemoryHandleTypeT, - VirtualMemoryLocationTypeT, ) assert DevicePointerT is _DevicePointerT assert IsStreamT is _IsStreamT - assert VirtualMemoryAccessTypeT is _VirtualMemoryAccessTypeT - assert VirtualMemoryAllocationTypeT is _VirtualMemoryAllocationTypeT - assert VirtualMemoryGranularityT is _VirtualMemoryGranularityT - assert VirtualMemoryHandleTypeT is _VirtualMemoryHandleTypeT - assert VirtualMemoryLocationTypeT is _VirtualMemoryLocationTypeT