Coverage for cuda / bindings / _internal / _fast_enum.py: 100.00%
43 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-29 01:27 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-29 01:27 +0000
1# SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2# SPDX-License-Identifier: LicenseRef-NVIDIA-SOFTWARE-LICENSE
5# This code was automatically generated across versions from 12.9.1 to 13.2.0, generator version 0.3.1.dev1422+gf4812259e.d20260318. Do not modify it directly.
8"""
9This is a replacement for the stdlib enum.IntEnum.
11Notably, it has much better import time performance, since it doesn't generate
12and evaluate Python code at startup time.
14It supports the most important subset of the IntEnum API. See `test_enum` in
15`cuda_bindings/tests/test_basics.py` for details.
16"""
18from typing import Any, Iterator
21class FastEnumMetaclass(type):
22 def __init__(cls, name, bases, namespace):
23 super().__init__(name, bases, namespace) 1ab
25 cls.__singletons__ = {} 1ab
26 cls.__members__ = {} 1ab
27 for name, value in cls.__dict__.items(): 1ab
28 if name.startswith("__") and name.endswith("__"): 1ab
29 continue 1ab
31 if isinstance(value, tuple): 1ab
32 value, doc = value 1ab
33 elif isinstance(value, int):
34 doc = None
35 else:
36 continue
38 singleton = int.__new__(cls, value) 1ab
39 singleton.__doc__ = doc 1ab
40 singleton._name = name 1ab
41 cls.__singletons__[value] = singleton 1ab
42 cls.__members__[name] = singleton 1ab
44 for name, member in cls.__members__.items(): 1ab
45 setattr(cls, name, member) 1ab
47 def __repr__(cls) -> str:
48 return f"<enum '{cls.__name__}'>" 1c
50 def __len__(cls) -> int:
51 return len(cls.__members__) 1dcef
53 def __iter__(cls) -> Iterator["FastEnum"]:
54 return iter(cls.__members__.values()) 2a m d c n e f /g
56 def __contains__(cls, item: Any) -> bool:
57 return item in cls.__singletons__ 1c
60class FastEnum(int, metaclass=FastEnumMetaclass):
61 def __new__(cls, value: int) -> "FastEnum":
62 singleton: FastEnum = cls.__singletons__.get(value) 2a $b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcT U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # McNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c$ % ' ( ) * + , - . / 'c(c)c*c+c,c-c.c/c: :c;c=c?c@c[c]c; = ? @ [ ] ^c_c`c{c|c}c^ ~c_ adbd` { cd| } ddedfdgdhdidjdkdldmdndodpdqdrd~ absdtdbbcbuddbvdebfbgbwdxdydhbibzdm Adjbo BdCdDdkblbEdFdd c GdHdIdn JdKdLdMdNdOdPdmbQdnbobpbRdqbSdTdUdVdWdp XdYde rbZdf 0d1d2d3dsb4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|dg }d~dh aebei cedeq eefegeheiejekelemeneoepeqereseteuer vewes xeyej zeAek BeCel DeEeFeGet HeIeJeKeLeMeu NeOev PeQew ReSex TeUey VeWeXeYez Ze0e1e2eA 3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.etbubvb/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfwbhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfB C xbybzbLfMfAbNfBbCbOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!bvg#bwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgD SgE TgUgVgWgF XgYgZg0g1g2g3g4gG H 5g6g7g8g9gI !gJ K L M N O P #g$g%gQ 'gR S (g)g*g+g,g-g.g
63 if singleton is None: 2a $b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcT U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # McNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c$ % ' ( ) * + , - . / 'c(c)c*c+c,c-c.c/c: :c;c=c?c@c[c]c; = ? @ [ ] ^c_c`c{c|c}c^ ~c_ adbd` { cd| } ddedfdgdhdidjdkdldmdndodpdqdrd~ absdtdbbcbuddbvdebfbgbwdxdydhbibzdm Adjbo BdCdDdkblbEdFdd c GdHdIdn JdKdLdMdNdOdPdmbQdnbobpbRdqbSdTdUdVdWdp XdYde rbZdf 0d1d2d3dsb4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|dg }d~dh aebei cedeq eefegeheiejekelemeneoepeqereseteuer vewes xeyej zeAek BeCel DeEeFeGet HeIeJeKeLeMeu NeOev PeQew ReSex TeUey VeWeXeYez Ze0e1e2eA 3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.etbubvb/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfwbhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfB C xbybzbLfMfAbNfBbCbOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!bvg#bwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgD SgE TgUgVgWgF XgYgZg0g1g2g3g4gG H 5g6g7g8g9gI !gJ K L M N O P #g$g%gQ 'gR S (g)g*g+g,g-g.g
64 raise ValueError(f"{value} is not a valid {cls.__name__}") 1cnp
65 return singleton 2a $b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcT U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # McNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c$ % ' ( ) * + , - . / 'c(c)c*c+c,c-c.c/c: :c;c=c?c@c[c]c; = ? @ [ ] ^c_c`c{c|c}c^ ~c_ adbd` { cd| } ddedfdgdhdidjdkdldmdndodpdqdrd~ absdtdbbcbuddbvdebfbgbwdxdydhbibzdm Adjbo BdCdDdkblbEdFdd c GdHdIdn JdKdLdMdNdOdPdmbQdnbobpbRdqbSdTdUdVdWdp XdYde rbZdf 0d1d2d3dsb4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d^d_d`d{d|dg }d~dh aebei cedeq eefegeheiejekelemeneoepeqereseteuer vewes xeyej zeAek BeCel DeEeFeGet HeIeJeKeLeMeu NeOev PeQew ReSex TeUey VeWeXeYez Ze0e1e2eA 3e4e5e6e7e8e9e!e#e$e%e'e(e)e*e+e,e-e.etbubvb/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfwbhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfB C xbybzbLfMfAbNfBbCbOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f4f5f6f7f8f9f!f#f$f%f'f(f)f*f+f,f-f.f/f:f;f=f?f@f[f]f^f_f`f{f|f}f~fagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!bvg#bwgxgygzgAgBgCgDgEgFgGgHgIgJgKgLgMgNgOgPgQgRgD SgE TgUgVgWgF XgYgZg0g1g2g3g4gG H 5g6g7g8g9gI !gJ K L M N O P #g$g%gQ 'gR S (g)g*g+g,g-g.g
67 def __repr__(self) -> str:
68 return f"<{self.__class__.__name__}.{self._name}: {int(self)}>" 2a c p e rb:gf g h i j k l ;g
70 @property
71 def name(self) -> str:
72 return self._name 2T U V W X Y Z 0 1 2 3 4 5 6 7 8 9 ! # : ^ _ ` { | } ~ abbbcbdbebfbgbhbibm jbo kblbd c g h i q r s j k l t u v w x y z A B C D E F G H I J K L M N O P Q R S
74 @property
75 def value(self) -> int:
76 return int(self) 2$ % ' ( ) * + , - . / =g?g@g[g]g^g_g`g{g|g; = ? @ [ ] o c mbnbobpbqb}gsbg h i q r s j k l t u v w x y z A tbubvbwbB C xbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#bD E F G H I J K L M N O P Q R S