tensorneko-util 0.3.15__tar.gz → 0.3.17__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/PKG-INFO +4 -7
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/README.md +4 -1
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/setup.py +8 -1
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/json/json_writer.py +1 -1
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/misc.py +5 -1
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/registry.py +2 -2
- tensorneko_util-0.3.17/src/tensorneko_util/version.txt +1 -0
- tensorneko_util-0.3.15/src/tensorneko_util/visualization/watcher/web/dist/assets/index.9f626faa.js → tensorneko_util-0.3.17/src/tensorneko_util/visualization/watcher/web/dist/assets/index.53207489.js +25 -25
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/watcher/web/dist/index.html +1 -1
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util.egg-info/PKG-INFO +4 -7
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util.egg-info/SOURCES.txt +1 -2
- tensorneko_util-0.3.15/LICENSE +0 -21
- tensorneko_util-0.3.15/src/tensorneko_util/version.txt +0 -1
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/setup.cfg +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/setup_util.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/_rich.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/backend/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/backend/audio_lib.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/backend/blocking.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/backend/parallel.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/backend/tqdm.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/backend/visual_lib.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/debug/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/debug/logger.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/debug/parser.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/_default_backends.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/audio/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/audio/audio_data.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/audio/audio_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/audio/audio_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/hdf5/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/hdf5/hdf5_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/hdf5/hdf5_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/image/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/image/image_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/image/image_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/json/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/json/json_data.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/json/json_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/matlab/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/matlab/mat_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/matlab/mat_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/npy/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/npy/npy_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/npy/npy_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/pickle/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/pickle/pickle_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/pickle/pickle_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/text/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/text/text_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/text/text_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/toml/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/toml/toml_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/toml/toml_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/video/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/video/video_data.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/video/video_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/video/video_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/yaml/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/yaml/yaml_reader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/yaml/yaml_writer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/msg/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/msg/gotify.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/notebook/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/notebook/display.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/crop.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/face_detector/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/face_detector/_utils.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/face_detector/abstract_face_detector.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/face_detector/anime_face_detector.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/face_detector/facexzoo_face_detector.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/face_detector/opencv_face_detector.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/ffmpeg.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/image.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/preprocess/video.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/average_meter.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/bimap.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/dispatched_misc.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/dispatcher.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/downloader.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/eventbus/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/eventbus/bus.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/eventbus/decorator.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/eventbus/event.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/args.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/array/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/array/abstract_seq.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/array/seq.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/array/stream.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/func.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/monad/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/monad/eval.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/monad/monad.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/monad/option.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/fp/underscore.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/ref.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/server.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/singleton.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/timer.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/type.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/util/window_merger.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/color.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/image_browser/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/image_browser/server.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/image_browser/web/index.html +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/matplotlib.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/multi_plots.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/seaborn.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/tensorboard.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/watcher/__init__.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/watcher/component.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/watcher/server.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/watcher/view.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/visualization/watcher/web/dist/assets/index.cf95019d.css +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util.egg-info/dependency_links.txt +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util.egg-info/requires.txt +1 -1
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util.egg-info/top_level.txt +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/test/test_library_info.py +0 -0
- {tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/test/test_version.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: tensorneko_util
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.17
|
|
4
4
|
Summary: The Utils for Library TensorNeko.
|
|
5
5
|
Home-page: https://github.com/ControlNet/tensorneko
|
|
6
6
|
Author: ControlNet
|
|
@@ -8,6 +8,9 @@ Author-email: smczx@hotmail.com
|
|
|
8
8
|
License: UNKNOWN
|
|
9
9
|
Project-URL: Bug Tracker, https://github.com/ControlNet/tensorneko/issues
|
|
10
10
|
Project-URL: Source Code, https://github.com/ControlNet/tensorneko
|
|
11
|
+
Description:
|
|
12
|
+
The independent util library for TensorNeko. This library doesn't require PyTorch as a dependency.
|
|
13
|
+
|
|
11
14
|
Keywords: deep learning,pytorch,AI,data processing
|
|
12
15
|
Platform: UNKNOWN
|
|
13
16
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -24,9 +27,3 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
24
27
|
Classifier: Topic :: Utilities
|
|
25
28
|
Requires-Python: >=3.7
|
|
26
29
|
Description-Content-Type: text/markdown
|
|
27
|
-
License-File: LICENSE
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
The independent util library for TensorNeko. This library doesn't require PyTorch as a dependency.
|
|
31
|
-
|
|
32
|
-
|
|
@@ -25,8 +25,11 @@ Tensor Neural Engine Kompanion. An util library based on PyTorch and PyTorch Lig
|
|
|
25
25
|
|
|
26
26
|
## Install
|
|
27
27
|
|
|
28
|
+
The tensorneko requires pytorch and pytorch-lightning (optional), and you can install it with below command.
|
|
29
|
+
|
|
28
30
|
```shell
|
|
29
|
-
pip install tensorneko
|
|
31
|
+
pip install tensorneko # for PyTorch only
|
|
32
|
+
pip install tensorneko[lightning] # for PyTorch and Lightning
|
|
30
33
|
```
|
|
31
34
|
|
|
32
35
|
To use the library without PyTorch and PyTorch Lightning, you can install the util library (support Python 3.7 ~ 3.12 with limited features) with following command.
|
|
@@ -5,9 +5,13 @@ with open("README.md", "r") as file:
|
|
|
5
5
|
long_description = file.read()
|
|
6
6
|
|
|
7
7
|
requirements = []
|
|
8
|
+
extra_requirements = []
|
|
8
9
|
with open("requirements.txt", "r") as file:
|
|
9
10
|
for line in file:
|
|
10
|
-
|
|
11
|
+
if line.startswith("lightning") or line.startswith("tensorboard"):
|
|
12
|
+
extra_requirements.append(line.strip())
|
|
13
|
+
else:
|
|
14
|
+
requirements.append(line.strip())
|
|
11
15
|
|
|
12
16
|
|
|
13
17
|
version = init.read_version()
|
|
@@ -37,6 +41,9 @@ setuptools.setup(
|
|
|
37
41
|
},
|
|
38
42
|
python_requires=">=3.8",
|
|
39
43
|
install_requires=requirements,
|
|
44
|
+
extras_require={
|
|
45
|
+
"lightning": extra_requirements
|
|
46
|
+
},
|
|
40
47
|
classifiers=[
|
|
41
48
|
"Programming Language :: Python :: 3",
|
|
42
49
|
"Programming Language :: Python :: 3.8",
|
{tensorneko_util-0.3.15 → tensorneko_util-0.3.17}/src/tensorneko_util/io/json/json_writer.py
RENAMED
|
@@ -14,7 +14,7 @@ class JsonWriter:
|
|
|
14
14
|
json.dump(obj, file, indent=indent, ensure_ascii=ensure_ascii)
|
|
15
15
|
else:
|
|
16
16
|
import orjson
|
|
17
|
-
with open(path, "
|
|
17
|
+
with open(path, "wb") as file:
|
|
18
18
|
if indent == 4:
|
|
19
19
|
warnings.warn("orjson does not support indent 4, will use indent 2 instead.")
|
|
20
20
|
option = orjson.OPT_INDENT_2
|
|
@@ -241,7 +241,8 @@ def load_py(path: str) -> ModuleType:
|
|
|
241
241
|
return module
|
|
242
242
|
|
|
243
243
|
|
|
244
|
-
def try_until_success(func: Callable[
|
|
244
|
+
def try_until_success(func: Callable[..., T], *args, max_trials: Optional[int] = None, sleep_time: int = 0,
|
|
245
|
+
exception_callback: Optional[Callable[[Exception], None]] = None,
|
|
245
246
|
exception_type: Union[Type[T_E], Tuple[T_E, ...]] = Exception, **kwargs
|
|
246
247
|
) -> T:
|
|
247
248
|
"""
|
|
@@ -251,6 +252,7 @@ def try_until_success(func: Callable[[Any], T], *args, max_trials: Optional[int]
|
|
|
251
252
|
func (``(...) -> T``): The function to run.
|
|
252
253
|
max_trials (``int``, optional): The max try times. None for unlimited. Default: None.
|
|
253
254
|
sleep_time (``int``, optional): The sleep time between each try. Default: 0.
|
|
255
|
+
exception_callback (``(Exception) -> None``, optional): The callback function when exception occurs.
|
|
254
256
|
exception_type (``Type[Exception] | (Type[Exception], ...)``, optional): The exception types to catch.
|
|
255
257
|
Default: Exception.
|
|
256
258
|
*args: The args for the function.
|
|
@@ -268,6 +270,8 @@ def try_until_success(func: Callable[[Any], T], *args, max_trials: Optional[int]
|
|
|
268
270
|
return func(*args, **kwargs)
|
|
269
271
|
except exception_type as e:
|
|
270
272
|
trials += 1
|
|
273
|
+
if exception_callback is not None:
|
|
274
|
+
exception_callback(e)
|
|
271
275
|
if max_trials is not None and trials > max_trials:
|
|
272
276
|
raise e
|
|
273
277
|
if sleep_time > 0:
|
|
@@ -28,7 +28,7 @@ class Registry(Generic[T]):
|
|
|
28
28
|
"""
|
|
29
29
|
|
|
30
30
|
def __init__(self):
|
|
31
|
-
self._registry: dict[str, T] = {}
|
|
31
|
+
self._registry: dict[str, Type[T]] = {}
|
|
32
32
|
|
|
33
33
|
def register(self, name: str) -> Callable[[Type[T]], Type[T]]:
|
|
34
34
|
def wrapper(cls):
|
|
@@ -37,7 +37,7 @@ class Registry(Generic[T]):
|
|
|
37
37
|
|
|
38
38
|
return wrapper
|
|
39
39
|
|
|
40
|
-
def __getitem__(self, name: str) -> T:
|
|
40
|
+
def __getitem__(self, name: str) -> Type[T]:
|
|
41
41
|
return self._registry[name]
|
|
42
42
|
|
|
43
43
|
def items(self):
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
0.3.17
|