tensorneko 0.3.20__py3-none-any.whl → 0.3.22__py3-none-any.whl

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.
@@ -1,6 +1,13 @@
1
1
  from typing import List
2
2
 
3
- from torch.utils.data.dataset import Dataset, T_co
3
+ from torch.utils.data.dataset import Dataset
4
+
5
+ try:
6
+ # for pytorch < 2.5
7
+ from torch.utils.data.dataset import T_co
8
+ except ImportError:
9
+ # For pytorch >= 2.5
10
+ from torch.utils.data.dataset import _T_co as T_co
4
11
 
5
12
 
6
13
  class ListDataset(Dataset[T_co]):
@@ -2,7 +2,14 @@ from abc import abstractmethod, ABC
2
2
  from typing import Tuple
3
3
 
4
4
  import numpy as np
5
- from torch.utils.data.dataset import Dataset, T_co
5
+ from torch.utils.data.dataset import Dataset
6
+
7
+ try:
8
+ # for pytorch < 2.5
9
+ from torch.utils.data.dataset import T_co
10
+ except ImportError:
11
+ # For pytorch >= 2.5
12
+ from torch.utils.data.dataset import _T_co as T_co
6
13
 
7
14
 
8
15
  class NestedDataset(Dataset[T_co], ABC):
@@ -2,7 +2,13 @@ import random
2
2
  from typing import List, Optional
3
3
 
4
4
  from torch.utils.data import Dataset
5
- from torch.utils.data.dataset import T_co
5
+
6
+ try:
7
+ # for pytorch < 2.5
8
+ from torch.utils.data.dataset import T_co
9
+ except ImportError:
10
+ # For pytorch >= 2.5
11
+ from torch.utils.data.dataset import _T_co as T_co
6
12
 
7
13
  from ..util import circular_pad
8
14
 
@@ -1,6 +1,13 @@
1
1
  from typing import Sized
2
2
 
3
- from torch.utils.data.sampler import Sampler, T_co
3
+ from torch.utils.data.sampler import Sampler
4
+
5
+ try:
6
+ # for pytorch < 2.5
7
+ from torch.utils.data.sampler import T_co
8
+ except ImportError:
9
+ # For pytorch >= 2.5
10
+ from torch.utils.data.sampler import _T_co as T_co
4
11
 
5
12
 
6
13
  class SequentialIterSampler(Sampler[T_co]):
@@ -0,0 +1,21 @@
1
+ from typing import overload
2
+
3
+ from torch import Tensor
4
+
5
+ from .enum import Reduction
6
+
7
+
8
+ @overload
9
+ def psnr_image(pred: str, real: str) -> Tensor: ...
10
+
11
+
12
+ @overload
13
+ def psnr_image(pred: Tensor, real: Tensor, reduction: Reduction = Reduction.MEAN) -> Tensor: ...
14
+
15
+
16
+ @overload
17
+ def psnr_video(pred: str, real: str, use_ffmpeg: bool = False) -> Tensor: ...
18
+
19
+
20
+ @overload
21
+ def psnr_video(pred: Tensor, real: Tensor) -> Tensor: ...
@@ -0,0 +1,21 @@
1
+ from typing import overload
2
+
3
+ from torch import Tensor
4
+
5
+ from .enum import Reduction
6
+
7
+
8
+ @overload
9
+ def ssim_image(pred: str, real: str) -> Tensor: ...
10
+
11
+
12
+ @overload
13
+ def ssim_image(pred: Tensor, real: Tensor, reduction: Reduction = Reduction.MEAN) -> Tensor: ...
14
+
15
+
16
+ @overload
17
+ def ssim_video(pred: str, real: str, use_ffmpeg: bool = False) -> Tensor: ...
18
+
19
+
20
+ @overload
21
+ def ssim_video(pred: Tensor, real: Tensor) -> Tensor: ...
@@ -1,3 +1,9 @@
1
- from tensorneko_util.msg import push_gotify
1
+ from tensorneko_util.msg import gotify
2
2
 
3
- __all__ = ["push_gotify"]
3
+ __all__ = ["gotify"]
4
+
5
+ try:
6
+ from tensorneko_util.msg import postgres
7
+ __all__.append("postgres")
8
+ except ImportError:
9
+ pass
@@ -1,4 +1,5 @@
1
1
  import os
2
+ import warnings
2
3
  from datetime import timedelta
3
4
  from time import time
4
5
  from typing import Optional, Union, List, Dict
@@ -70,6 +71,7 @@ class NekoTrainer(Trainer):
70
71
  callbacks = []
71
72
  # build checkpoint callback or from user defined
72
73
  if enable_checkpointing and len([c for c in callbacks if isinstance(c, Checkpoint)]) == 0:
74
+ warnings.warn("Checkpoint callback is not defined, using default checkpoint callback.")
73
75
  # use default checkpoint callback
74
76
  new_callback = ModelCheckpoint(
75
77
  dirpath=os.path.join("logs", self.log_name, "checkpoints"),
@@ -0,0 +1,16 @@
1
+ from typing import overload, Union
2
+
3
+ from numpy import ndarray
4
+ from torch import Tensor
5
+
6
+
7
+ @overload
8
+ def crop_with_padding(image: ndarray, x1: int, x2: int, y1: int, y2: int, pad_value: Union[int, float] = 0.,
9
+ batch: bool = False
10
+ ) -> ndarray: ...
11
+
12
+
13
+ @overload
14
+ def crop_with_padding(image: Tensor, x1: int, x2: int, y1: int, y2: int, pad_value: Union[int, float] = 0.,
15
+ batch: bool = False
16
+ ) -> Tensor: ...
@@ -0,0 +1,34 @@
1
+ from typing import overload, List
2
+
3
+ from numpy import ndarray
4
+ from torch import Tensor
5
+
6
+
7
+ @overload
8
+ def sparse2binary(x: Tensor, length: int = None) -> Tensor:
9
+ ...
10
+
11
+
12
+ @overload
13
+ def sparse2binary(x: ndarray, length: int = None) -> ndarray:
14
+ ...
15
+
16
+
17
+ @overload
18
+ def sparse2binary(x: List[int], length: int = None) -> ndarray:
19
+ ...
20
+
21
+
22
+ @overload
23
+ def binary2sparse(x: Tensor) -> Tensor:
24
+ ...
25
+
26
+
27
+ @overload
28
+ def binary2sparse(x: ndarray) -> ndarray:
29
+ ...
30
+
31
+
32
+ @overload
33
+ def binary2sparse(x: List[int]) -> List[int]:
34
+ ...
tensorneko/version.txt CHANGED
@@ -1 +1 @@
1
- 0.3.20
1
+ 0.3.22
@@ -1,21 +1,20 @@
1
- Metadata-Version: 2.1
1
+ Metadata-Version: 2.4
2
2
  Name: tensorneko
3
- Version: 0.3.20
3
+ Version: 0.3.22
4
4
  Summary: Tensor Neural Engine Kompanion. An util library based on PyTorch and PyTorch Lightning.
5
5
  Home-page: https://github.com/ControlNet/tensorneko
6
6
  Author: ControlNet
7
7
  Author-email: smczx@hotmail.com
8
- License: UNKNOWN
9
8
  Project-URL: Bug Tracker, https://github.com/ControlNet/tensorneko/issues
10
9
  Project-URL: Source Code, https://github.com/ControlNet/tensorneko
11
10
  Keywords: deep learning,pytorch,AI,data processing
12
- Platform: UNKNOWN
13
11
  Classifier: Programming Language :: Python :: 3
14
12
  Classifier: Programming Language :: Python :: 3.8
15
13
  Classifier: Programming Language :: Python :: 3.9
16
14
  Classifier: Programming Language :: Python :: 3.10
17
15
  Classifier: Programming Language :: Python :: 3.11
18
16
  Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Programming Language :: Python :: 3.13
19
18
  Classifier: License :: OSI Approved :: MIT License
20
19
  Classifier: Operating System :: OS Independent
21
20
  Classifier: Intended Audience :: Developers
@@ -23,19 +22,33 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
23
22
  Classifier: Topic :: Utilities
24
23
  Requires-Python: >=3.8
25
24
  Description-Content-Type: text/markdown
26
- Requires-Dist: av (>=8.0.3)
27
- Requires-Dist: einops (>=0.3.0)
28
- Requires-Dist: numpy (>=1.20.1)
29
- Requires-Dist: pillow (>=8.1)
30
- Requires-Dist: tensorneko-util (==0.3.20)
31
- Requires-Dist: torch (>=1.9.0)
32
- Requires-Dist: torchaudio (>=0.9.0)
33
- Requires-Dist: torchmetrics (>=0.7.3)
34
- Requires-Dist: torchvision (>=0.10.0)
35
- Requires-Dist: pysoundfile (>=0.9.0) ; platform_system == "Windows"
25
+ License-File: LICENSE
26
+ Requires-Dist: torch>=1.9.0
27
+ Requires-Dist: torchaudio>=0.9.0
28
+ Requires-Dist: torchvision>=0.10.0
29
+ Requires-Dist: torchmetrics>=0.7.3
30
+ Requires-Dist: pillow>=8.1
31
+ Requires-Dist: av>=8.0.3
32
+ Requires-Dist: pysoundfile>=0.9.0; platform_system == "Windows"
33
+ Requires-Dist: numpy>=1.20.1
34
+ Requires-Dist: einops>=0.3.0
35
+ Requires-Dist: tensorneko_util==0.3.22
36
36
  Provides-Extra: lightning
37
- Requires-Dist: lightning (<2.5,>=2.0) ; extra == 'lightning'
38
- Requires-Dist: tensorboard (>=2.0.0) ; extra == 'lightning'
37
+ Requires-Dist: tensorboard>=2.0.0; extra == "lightning"
38
+ Requires-Dist: lightning<3,>=2.0; extra == "lightning"
39
+ Dynamic: author
40
+ Dynamic: author-email
41
+ Dynamic: classifier
42
+ Dynamic: description
43
+ Dynamic: description-content-type
44
+ Dynamic: home-page
45
+ Dynamic: keywords
46
+ Dynamic: license-file
47
+ Dynamic: project-url
48
+ Dynamic: provides-extra
49
+ Dynamic: requires-dist
50
+ Dynamic: requires-python
51
+ Dynamic: summary
39
52
 
40
53
  <h1 style="text-align: center">TensorNeko</h1>
41
54
 
@@ -71,7 +84,7 @@ pip install tensorneko # for PyTorch only
71
84
  pip install tensorneko[lightning] # for PyTorch and Lightning
72
85
  ```
73
86
 
74
- 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.
87
+ To use the library without PyTorch and PyTorch Lightning, you can install the util library (support Python 3.7 ~ 3.13 with limited features) with following command.
75
88
  ```shell
76
89
  pip install tensorneko_util
77
90
  ```
@@ -88,7 +101,7 @@ pipx install tensorneko_tool # or `pip install tensorneko_tool`
88
101
 
89
102
  Then you can use the CLI tools `tensorneko` in the terminal.
90
103
 
91
- ## Neko Layers, Modules and Architectures
104
+ ## Layers, Modules and Architectures
92
105
 
93
106
  Build an MLP with linear layers. The activation and normalization will be placed in the hidden layers.
94
107
 
@@ -177,7 +190,7 @@ print(f(torch.rand(16)).shape)
177
190
  # torch.Size([1])
178
191
  ```
179
192
 
180
- ## Neko IO
193
+ ## IO
181
194
 
182
195
  Easily load and save different modal data.
183
196
 
@@ -227,7 +240,7 @@ neko.io.write.json("path/to/json.json", json_obj)
227
240
  Besides, the read/write for `mat` and `pickle` files is also supported.
228
241
 
229
242
 
230
- ## Neko preprocessing
243
+ ## Preprocessing
231
244
 
232
245
  ```python
233
246
  import tensorneko as neko
@@ -254,7 +267,7 @@ if `ffmpeg` is available, you can use below ffmpeg wrappers.
254
267
  - `resample_video_fps`
255
268
  - `mp32wav`
256
269
 
257
- ## Neko Visualization
270
+ ## Visualization
258
271
 
259
272
  ### Variable Web Watcher
260
273
  Start a web server to watch the variable status when the program (e.g. training, inference, data preprocessing) is running.
@@ -276,7 +289,7 @@ t0 = time.time()
276
289
  with Server(view, port=8000):
277
290
  for i, data in enumerate(data_list):
278
291
  preprocessing(data) # do some processing here
279
-
292
+
280
293
  x = time.time() - t0 # time since the start of the program
281
294
  y = i # processed number of data
282
295
  line_chart.add(x, y) # add to the line chart
@@ -405,14 +418,14 @@ trainer = neko.NekoTrainer(log_every_n_steps=100, gpus=1, logger=model.name, pre
405
418
  trainer.fit(model, dm)
406
419
  ```
407
420
 
408
- ## Neko Callbacks
421
+ ## Callbacks
409
422
 
410
423
  Some simple but useful pytorch-lightning callbacks are provided.
411
424
 
412
425
  - `DisplayMetricsCallback`
413
426
  - `EarlyStoppingLR`: Early stop training when learning rate reaches threshold.
414
427
 
415
- ## Neko Notebook Helpers
428
+ ## Notebook Helpers
416
429
  Here are some helper functions to better interact with Jupyter Notebook.
417
430
  ```python
418
431
  import tensorneko as neko
@@ -424,7 +437,7 @@ neko.notebook.display.audio("path/to/audio.wav")
424
437
  neko.notebook.display.code("path/to/code.java")
425
438
  ```
426
439
 
427
- ## Neko Debug Tools
440
+ ## Debug Tools
428
441
 
429
442
  Get the default values from `ArgumentParser` args. It's convenient to use this in the notebook.
430
443
  ```python
@@ -440,7 +453,7 @@ print(args.integers) # [1, 2, 3]
440
453
  print(args.accumulate) # <function sum at ...>
441
454
  ```
442
455
 
443
- ## Neko Evaluation
456
+ ## Evaluation
444
457
 
445
458
  Some metrics function for evaluation are provided.
446
459
 
@@ -451,8 +464,36 @@ Some metrics function for evaluation are provided.
451
464
  - `ssim_video`
452
465
  - `ssim_image`
453
466
 
467
+ ## Message (Access to other services)
468
+
469
+ ### Gotify
470
+
471
+ Send a message to the Gotify server.
472
+
473
+ The title, URL and APP_TOKEN is the environment variable `GOTIFY_TITLE`, `GOTIFY_URL` and `GOTIFY_TOKEN`, or overwritten
474
+ in the function arguments.
475
+
476
+ ```python
477
+ from tensorneko.msg import gotify
478
+ gotify.push("This is a test message", "<URL>", "<APP_TOKEN>")
479
+ # then the message will be sent to the Gotify server.
480
+ # title = "<HOST_NAME>", message = "This is a test message", priority = 0
481
+ ```
482
+
483
+ ### Postgres
454
484
 
455
- ## Neko Utilities
485
+ Require the `psycopg` package. Provide one single function to execute one SQL query with a temp connection.
486
+
487
+ The database URL is the environment variable `DB_URL`, or overwritten in the function arguments.
488
+ ```python
489
+ from tensorneko.msg import postgres
490
+ result = postgres.execute("<SQL>", "<DB_URL>")
491
+ # also async version is provided
492
+ result = await postgres.execute_async("<SQL>", "<DB_URL>")
493
+ ```
494
+
495
+
496
+ ## Utilities
456
497
 
457
498
  ### Misc functions
458
499
 
@@ -497,7 +538,7 @@ def process_data(n: int):
497
538
  return n
498
539
  else:
499
540
  return None
500
-
541
+
501
542
 
502
543
  data = get_data()
503
544
  data = data.map(process_data).get_or_else(-1) # if the response is None, return -1
@@ -706,5 +747,3 @@ The `gotify` can send a message to the Gotify server, with the environment varia
706
747
  ```shell
707
748
  tensorneko gotify "Script finished!"
708
749
  ```
709
-
710
-
@@ -1,8 +1,8 @@
1
1
  tensorneko/__init__.py,sha256=uh1HNn1sNpX1bbOqAE_kNJfrH4eMtEzus0hO-Fh9tEw,990
2
2
  tensorneko/neko_model.py,sha256=hUMi7puzxW_6FOpA1jiFN1__oO5DZPlhhp3WXqhJXgg,10581
3
3
  tensorneko/neko_module.py,sha256=qELXvguSjWo_NvcRQibiFl0Qauzd9JWLSnT4dbGNS3Y,1473
4
- tensorneko/neko_trainer.py,sha256=JC8qoKSZ5ngz3grf3S0SjvIFVktDIP_GExth5aFfbGA,10074
5
- tensorneko/version.txt,sha256=QQxQgaQNGgPrr3bVpz_0fCx9e0SwIa-EL3bqC9TFcHE,6
4
+ tensorneko/neko_trainer.py,sha256=GqdRsPkzWj36DJ_Wroe1TI6QKlk3N8Q8gK4uEnI0w9Q,10190
5
+ tensorneko/version.txt,sha256=6OtxZVjxPBSh3JDaCbhkG17yxSVMldJs7t7a1E9-Q58,7
6
6
  tensorneko/arch/__init__.py,sha256=w4lTUeyBIZelrnSjlBFWUF0erzOmBFl9FqeWQuSOyKs,248
7
7
  tensorneko/arch/auto_encoder.py,sha256=j6PWWyaNYaYNtw_zZ9ikzhCASqe9viXR3JGBIXSK92Y,2137
8
8
  tensorneko/arch/binary_classifier.py,sha256=1MkEbReXKLdDksRG5Rsife40grJk08EVDcNKp54Xvb4,2316
@@ -20,19 +20,21 @@ tensorneko/callback/lr_logger.py,sha256=28xmAZ_UOFg0wqg1VjJoifwjzvBsOs-g2nd4bog9
20
20
  tensorneko/callback/nil_callback.py,sha256=-vKhOG3Ysv_ZToOdyYEkcZ8h0so9rBRY10f1OIoHeZs,131
21
21
  tensorneko/callback/system_stats_logger.py,sha256=dS4AOhEADU5cop6vSW5HnVew58jO9SdzKh4lkyssgcE,1782
22
22
  tensorneko/dataset/__init__.py,sha256=6980ci9Ce57HSyhzrKMJfDz31PCQxifVz1aSf63JEsA,247
23
- tensorneko/dataset/list_dataset.py,sha256=UhgTHapi7dQF4nEgnZH73oCLzluNAJU--N7Fhaa8P8s,1237
24
- tensorneko/dataset/nested_dataset.py,sha256=lMGW7ODfvBn-aRd7c7HftK6BQUZGCUVkm4XJh4iiPBg,2073
25
- tensorneko/dataset/round_robin_dataset.py,sha256=VcSApfqh218OGhJ6_F783s3pexrv17kM3aEaMHh9YJI,3073
23
+ tensorneko/dataset/list_dataset.py,sha256=kRLIlnLObctqOJYbTwy9pslSw6sBorOLQwMKu7ZqfXk,1407
24
+ tensorneko/dataset/nested_dataset.py,sha256=qVovwAgmBLdEgy6jTYlCHnosLWMG4HMvC-LtDSiDQ4Y,2243
25
+ tensorneko/dataset/round_robin_dataset.py,sha256=5yxeaKe5tEG-t4JkVcrohSU3bQsUKyH33Q6wky8tK-A,3207
26
26
  tensorneko/dataset/sampler/__init__.py,sha256=inj-7M5IjafU5yzSpU2BY9FWAiRp0u7RqkgAcIZj2Qk,102
27
- tensorneko/dataset/sampler/sequential_iter_sampler.py,sha256=DxBwSoWjYlq6kA6g-54gzzjPEAvOjAYtMQuvRbIFviY,1429
27
+ tensorneko/dataset/sampler/sequential_iter_sampler.py,sha256=RHzkFKqab6Azi50t5wAFWN6S9k9aeQAqEfrr9A6XoMY,1599
28
28
  tensorneko/debug/__init__.py,sha256=ZMfU3qquhMhl6EgPzM7Yuvvv0PWy3cR39UjPrrSmQcs,163
29
29
  tensorneko/evaluation/__init__.py,sha256=jW8dh1JRMpx3npjTp7wJLzz-IxFZTBh7F-Ztfoep9xs,296
30
30
  tensorneko/evaluation/enum.py,sha256=s3P8XAobku-as4in5vh6BanvVW5Ccwnff0t124lVFFg,137
31
31
  tensorneko/evaluation/fid.py,sha256=fNuE1CEp2rPXbaZfI0E1CspluInzFlUdKc8XZEexUME,5568
32
32
  tensorneko/evaluation/iou.py,sha256=phEmOWQ3cnWW377WeSHCoB8mGkHLHMHCl8_LL0IX3JA,2914
33
33
  tensorneko/evaluation/psnr.py,sha256=DeKxvY_xxawWMXHY0z3Nvbsi4dR57OUV4hjtUoCINXc,3757
34
+ tensorneko/evaluation/psnr.pyi,sha256=aRGK9JEyXGyK3Wc247xFiajocOP-ukvvXub6yUji2CQ,416
34
35
  tensorneko/evaluation/secs.py,sha256=D710GgcSxQgbGyPcWlC5ffF5n1GselLrUr5aA5Vq7oE,1622
35
36
  tensorneko/evaluation/ssim.py,sha256=6vPS4VQqoKxHOG49lChH51KxwNo07B4XHdhLub5DEPU,3758
37
+ tensorneko/evaluation/ssim.pyi,sha256=I5vGo2KiPajl-z_VRwAHVLF4UIrrEKBdyiY2Gq3NOJw,416
36
38
  tensorneko/io/__init__.py,sha256=QEyA0mOC-BlKKskYYbDYttYWWRjCeh73lX-yKAUGNik,213
37
39
  tensorneko/io/reader.py,sha256=DSeTGLh84sFYwCwJmNTr-fGWkluudCbf7je29t0Z2U8,1303
38
40
  tensorneko/io/writer.py,sha256=BR_1h-wXekBdctXymJBU44HoWsKxPhbbh6N3AKYNkjE,1292
@@ -63,12 +65,13 @@ tensorneko/module/inception.py,sha256=2p8AjgTIk5wLGC-JnrmXIehh6yNCu2tYc2axjzUTGM
63
65
  tensorneko/module/mlp.py,sha256=AFN6xmvlrNWOflLqVl-zVkoOJRZpYxYB4bnI10JG5CU,3361
64
66
  tensorneko/module/residual.py,sha256=S59TqiiD_310HQ3a6s3r49XY_7Dc4RGxONQtSvzEfN0,2958
65
67
  tensorneko/module/transformer.py,sha256=h4NvH3zGa0rZt0bv6e8VM31SimbQKRcocSR42zJYVoY,7602
66
- tensorneko/msg/__init__.py,sha256=GHrHjzw__0DcPBHBN6GzHrD8PD_7CwOZPRullOaZyW0,71
68
+ tensorneko/msg/__init__.py,sha256=0v56ICUDhBUKnypwjLj4epnzfqkr9M4p00HuYpPc3x8,172
67
69
  tensorneko/notebook/__init__.py,sha256=4cCi3ZyaX48hLDvJQqW0G3a4z_vdzmh_jtJ-Jzil4SM,197
68
70
  tensorneko/optim/__init__.py,sha256=89XjYQICij8SkrW5iryfZgmbxcTDxA3hhVZTgR4588o,33
69
71
  tensorneko/optim/lr_scheduler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
70
72
  tensorneko/preprocess/__init__.py,sha256=0Z0eA3_I2wphyyZlzZYRrx2muWTF0QMFq2Y-jh8oVKU,808
71
73
  tensorneko/preprocess/crop.py,sha256=Y9eWyYdzasQK3US2uBP_sUO9bPVedik0pnrrl006zZ4,2732
74
+ tensorneko/preprocess/crop.pyi,sha256=Aq_ywCG4ovcopH5-sj8ZVLchLgfpnt0z9cvSPccWHn8,411
72
75
  tensorneko/preprocess/enum.py,sha256=Wp5qFaUjea5XU4o3N0WxUd-qfzI-m5vr4ZWSqWjELb4,874
73
76
  tensorneko/preprocess/pad.py,sha256=b4IbbhGNRotZ7weZcKA7hfDqSixPo5KjM6khnqzaeUA,3238
74
77
  tensorneko/preprocess/resize.py,sha256=hitMlzVnN6n_8nEJwxy4C4ErZrTwpM86QGnYewsrmf8,3469
@@ -76,6 +79,7 @@ tensorneko/preprocess/face_detector/__init__.py,sha256=_ktIfUZqGTX0hk7RBgKf-zHwG
76
79
  tensorneko/util/__init__.py,sha256=39G34a2k5ktVtBAh4N4RMsePEak5rzPDhbNNdXo-Ye4,2258
77
80
  tensorneko/util/configuration.py,sha256=xXeAjDh1FCNTmSPwDdkL-uH-ULfzFF6Fg0LT7gsZ6nQ,2510
78
81
  tensorneko/util/dispatched_misc.py,sha256=_0Go7XezdYB7bpMnCs1MDD_6mPNoWP5qt8DoKuPxynI,997
82
+ tensorneko/util/dispatched_misc.pyi,sha256=K8qZehCayr-nQIifK0w2Kp6pjVQ9uiJ0ZvxF7G5VxPA,520
79
83
  tensorneko/util/gc.py,sha256=P3bOZ-2VUNyswnfVz5xfj__ecTSAHpu_kLp2wFcpb6M,185
80
84
  tensorneko/util/misc.py,sha256=LEvACtGDOX43iK86A8-Cek0S9rbXFR0AtTP1edE3XDI,4701
81
85
  tensorneko/util/reproducibility.py,sha256=sw1vVi7VOnmzQYUocI5x9yKeZoHHiA4A5ja136XolrI,2102
@@ -86,8 +90,8 @@ tensorneko/visualization/log_graph.py,sha256=NvOwWVc_petXWYdgaHosPFLa43sHBeacbYc
86
90
  tensorneko/visualization/matplotlib.py,sha256=xs9Ssc44ojZX65QU8-fftA7Ug_pBuZ3TBtM8vETNq9w,1568
87
91
  tensorneko/visualization/image_browser/__init__.py,sha256=AtykhAE3bXQS6SOWbeYFeeUE9ts9XOFMvrL31z0LoMg,63
88
92
  tensorneko/visualization/watcher/__init__.py,sha256=Nq752qIYvfRUZ8VctKQRSqhxh5KmFbWcqPfZlijVx6s,379
89
- tensorneko-0.3.20.dist-info/LICENSE,sha256=Vd75kwgJpVuMnCRBWasQzceMlXt4YQL13ikBLy8G5h0,1067
90
- tensorneko-0.3.20.dist-info/METADATA,sha256=8namXF_Slh-e8MZDm-v0t3YhURZZyXHng6VSQ4H1d8E,19972
91
- tensorneko-0.3.20.dist-info/WHEEL,sha256=g4nMs7d-Xl9-xC9XovUrsDHGXt-FT0E17Yqo92DEfvY,92
92
- tensorneko-0.3.20.dist-info/top_level.txt,sha256=sZHwlP0iyk7_zHuhRHzSBkdY9yEgyC48f6UVuZ6CvqE,11
93
- tensorneko-0.3.20.dist-info/RECORD,,
93
+ tensorneko-0.3.22.dist-info/licenses/LICENSE,sha256=Vd75kwgJpVuMnCRBWasQzceMlXt4YQL13ikBLy8G5h0,1067
94
+ tensorneko-0.3.22.dist-info/METADATA,sha256=B0Hzs1YnIRVHChwNAabMoYfpQ1NoyjuYmiRpsRNDHGc,21104
95
+ tensorneko-0.3.22.dist-info/WHEEL,sha256=SmOxYU7pzNKBqASvQJ7DjX3XGUF92lrGhMb3R6_iiqI,91
96
+ tensorneko-0.3.22.dist-info/top_level.txt,sha256=sZHwlP0iyk7_zHuhRHzSBkdY9yEgyC48f6UVuZ6CvqE,11
97
+ tensorneko-0.3.22.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.34.2)
2
+ Generator: setuptools (79.0.1)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5