Skip to content

Commit 603edaa

Browse files
leofangclaude
andcommitted
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) <noreply@anthropic.com>
1 parent 4cea0a1 commit 603edaa

3 files changed

Lines changed: 92 additions & 7 deletions

File tree

cuda_core/cuda/core/typing.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
"""Public type aliases and protocols used in cuda.core API signatures."""
6+
7+
from cuda.core._memory._buffer import DevicePointerT
8+
from cuda.core._memory._virtual_memory_resource import (
9+
VirtualMemoryAccessTypeT,
10+
VirtualMemoryAllocationTypeT,
11+
VirtualMemoryGranularityT,
12+
VirtualMemoryHandleTypeT,
13+
VirtualMemoryLocationTypeT,
14+
)
15+
from cuda.core._stream import IsStreamT
16+
17+
__all__ = [
18+
"DevicePointerT",
19+
"IsStreamT",
20+
"VirtualMemoryAccessTypeT",
21+
"VirtualMemoryAllocationTypeT",
22+
"VirtualMemoryGranularityT",
23+
"VirtualMemoryHandleTypeT",
24+
"VirtualMemoryLocationTypeT",
25+
]

cuda_core/docs/source/api_private.rst

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,12 @@ CUDA runtime
1616
.. autosummary::
1717
:toctree: generated/
1818

19-
_memory._buffer.DevicePointerT
20-
_memory._virtual_memory_resource.VirtualMemoryAllocationTypeT
21-
_memory._virtual_memory_resource.VirtualMemoryLocationTypeT
22-
_memory._virtual_memory_resource.VirtualMemoryGranularityT
23-
_memory._virtual_memory_resource.VirtualMemoryAccessTypeT
24-
_memory._virtual_memory_resource.VirtualMemoryHandleTypeT
19+
typing.DevicePointerT
20+
typing.VirtualMemoryAllocationTypeT
21+
typing.VirtualMemoryLocationTypeT
22+
typing.VirtualMemoryGranularityT
23+
typing.VirtualMemoryAccessTypeT
24+
typing.VirtualMemoryHandleTypeT
2525
_module.KernelAttributes
2626
_module.KernelOccupancy
2727
_module.ParamInfo
@@ -41,4 +41,4 @@ CUDA protocols
4141
:toctree: generated/
4242
:template: protocol.rst
4343

44-
_stream.IsStreamT
44+
typing.IsStreamT
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
# SPDX-FileCopyrightText: Copyright (c) 2024-2025 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2+
#
3+
# SPDX-License-Identifier: Apache-2.0
4+
5+
"""Tests for cuda.core.typing public type aliases and protocols."""
6+
7+
8+
def test_typing_module_imports():
9+
"""All type aliases and protocols are importable from cuda.core.typing."""
10+
from cuda.core.typing import (
11+
DevicePointerT,
12+
IsStreamT,
13+
VirtualMemoryAccessTypeT,
14+
VirtualMemoryAllocationTypeT,
15+
VirtualMemoryGranularityT,
16+
VirtualMemoryHandleTypeT,
17+
VirtualMemoryLocationTypeT,
18+
)
19+
20+
# Verify they are not None (sanity check)
21+
for name, obj in (
22+
("DevicePointerT", DevicePointerT),
23+
("IsStreamT", IsStreamT),
24+
("VirtualMemoryAccessTypeT", VirtualMemoryAccessTypeT),
25+
("VirtualMemoryAllocationTypeT", VirtualMemoryAllocationTypeT),
26+
("VirtualMemoryGranularityT", VirtualMemoryGranularityT),
27+
("VirtualMemoryHandleTypeT", VirtualMemoryHandleTypeT),
28+
("VirtualMemoryLocationTypeT", VirtualMemoryLocationTypeT),
29+
):
30+
assert obj is not None, f"{name} should not be None"
31+
32+
33+
def test_typing_matches_private_definitions():
34+
"""cuda.core.typing re-exports match the original private definitions."""
35+
from cuda.core._memory._buffer import DevicePointerT as _DevicePointerT
36+
from cuda.core._memory._virtual_memory_resource import (
37+
VirtualMemoryAccessTypeT as _VirtualMemoryAccessTypeT,
38+
VirtualMemoryAllocationTypeT as _VirtualMemoryAllocationTypeT,
39+
VirtualMemoryGranularityT as _VirtualMemoryGranularityT,
40+
VirtualMemoryHandleTypeT as _VirtualMemoryHandleTypeT,
41+
VirtualMemoryLocationTypeT as _VirtualMemoryLocationTypeT,
42+
)
43+
from cuda.core._stream import IsStreamT as _IsStreamT
44+
from cuda.core.typing import (
45+
DevicePointerT,
46+
IsStreamT,
47+
VirtualMemoryAccessTypeT,
48+
VirtualMemoryAllocationTypeT,
49+
VirtualMemoryGranularityT,
50+
VirtualMemoryHandleTypeT,
51+
VirtualMemoryLocationTypeT,
52+
)
53+
54+
assert DevicePointerT is _DevicePointerT
55+
assert IsStreamT is _IsStreamT
56+
assert VirtualMemoryAccessTypeT is _VirtualMemoryAccessTypeT
57+
assert VirtualMemoryAllocationTypeT is _VirtualMemoryAllocationTypeT
58+
assert VirtualMemoryGranularityT is _VirtualMemoryGranularityT
59+
assert VirtualMemoryHandleTypeT is _VirtualMemoryHandleTypeT
60+
assert VirtualMemoryLocationTypeT is _VirtualMemoryLocationTypeT

0 commit comments

Comments
 (0)