nntool 1.3.0__cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.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.

Potentially problematic release.


This version of nntool might be problematic. Click here for more details.

Files changed (76) hide show
  1. nntool/__init__.py +2 -0
  2. nntool/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  3. nntool/__pycache__/__init__.cpython-311.pyc +0 -0
  4. nntool/experiment/__init__.py +6 -0
  5. nntool/experiment/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  6. nntool/experiment/__pycache__/__init__.cpython-311.pyc +0 -0
  7. nntool/experiment/__pycache__/config.cpython-311.opt-1.pyc +0 -0
  8. nntool/experiment/__pycache__/config.cpython-311.pyc +0 -0
  9. nntool/experiment/__pycache__/utils.cpython-311.opt-1.pyc +0 -0
  10. nntool/experiment/__pycache__/utils.cpython-311.pyc +0 -0
  11. nntool/experiment/config.py +112 -0
  12. nntool/experiment/utils.py +63 -0
  13. nntool/parser/__init__.py +1 -0
  14. nntool/parser/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  15. nntool/parser/__pycache__/__init__.cpython-311.pyc +0 -0
  16. nntool/parser/__pycache__/parse.cpython-311.opt-1.pyc +0 -0
  17. nntool/parser/__pycache__/parse.cpython-311.pyc +0 -0
  18. nntool/parser/parse.py +22 -0
  19. nntool/plot/__init__.py +6 -0
  20. nntool/plot/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  21. nntool/plot/__pycache__/__init__.cpython-311.pyc +0 -0
  22. nntool/plot/__pycache__/context.cpython-311.opt-1.pyc +0 -0
  23. nntool/plot/__pycache__/context.cpython-311.pyc +0 -0
  24. nntool/plot/context.py +48 -0
  25. nntool/plot/csrc/__compile__.cpython-311-x86_64-linux-gnu.so +0 -0
  26. nntool/plot/csrc/__init__.py +3 -0
  27. nntool/plot/csrc/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  28. nntool/plot/csrc/__pycache__/__init__.cpython-311.pyc +0 -0
  29. nntool/slurm/__init__.py +9 -0
  30. nntool/slurm/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  31. nntool/slurm/__pycache__/__init__.cpython-311.pyc +0 -0
  32. nntool/slurm/__pycache__/config.cpython-311.opt-1.pyc +0 -0
  33. nntool/slurm/__pycache__/config.cpython-311.pyc +0 -0
  34. nntool/slurm/__pycache__/function.cpython-311.opt-1.pyc +0 -0
  35. nntool/slurm/__pycache__/function.cpython-311.pyc +0 -0
  36. nntool/slurm/__pycache__/task.cpython-311.opt-1.pyc +0 -0
  37. nntool/slurm/__pycache__/task.cpython-311.pyc +0 -0
  38. nntool/slurm/__pycache__/wrap.cpython-311.opt-1.pyc +0 -0
  39. nntool/slurm/__pycache__/wrap.cpython-311.pyc +0 -0
  40. nntool/slurm/accelerator/__init__.py +0 -0
  41. nntool/slurm/accelerator/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  42. nntool/slurm/accelerator/__pycache__/__init__.cpython-311.pyc +0 -0
  43. nntool/slurm/accelerator/__pycache__/utils.cpython-311.opt-1.pyc +0 -0
  44. nntool/slurm/accelerator/__pycache__/utils.cpython-311.pyc +0 -0
  45. nntool/slurm/accelerator/utils.py +39 -0
  46. nntool/slurm/config.py +182 -0
  47. nntool/slurm/csrc/__compile__.cpython-311-x86_64-linux-gnu.so +0 -0
  48. nntool/slurm/csrc/__init__.py +5 -0
  49. nntool/slurm/csrc/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  50. nntool/slurm/csrc/__pycache__/__init__.cpython-311.pyc +0 -0
  51. nntool/slurm/function.py +173 -0
  52. nntool/slurm/task.py +231 -0
  53. nntool/slurm/wrap.py +210 -0
  54. nntool/train/__init__.py +25 -0
  55. nntool/train/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  56. nntool/train/__pycache__/__init__.cpython-311.pyc +0 -0
  57. nntool/train/__pycache__/trainer.cpython-311.opt-1.pyc +0 -0
  58. nntool/train/__pycache__/trainer.cpython-311.pyc +0 -0
  59. nntool/train/trainer.py +92 -0
  60. nntool/utils/__init__.py +6 -0
  61. nntool/utils/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  62. nntool/utils/__pycache__/__init__.cpython-311.pyc +0 -0
  63. nntool/wandb/__init__.py +1 -0
  64. nntool/wandb/__pycache__/__init__.cpython-311.opt-1.pyc +0 -0
  65. nntool/wandb/__pycache__/__init__.cpython-311.pyc +0 -0
  66. nntool/wandb/__pycache__/config.cpython-311.opt-1.pyc +0 -0
  67. nntool/wandb/__pycache__/config.cpython-311.pyc +0 -0
  68. nntool/wandb/config.py +118 -0
  69. nntool-1.3.0.dist-info/._SOURCES.txt +0 -0
  70. nntool-1.3.0.dist-info/._dependency_links.txt +0 -0
  71. nntool-1.3.0.dist-info/._requires.txt +0 -0
  72. nntool-1.3.0.dist-info/._top_level.txt +0 -0
  73. nntool-1.3.0.dist-info/METADATA +25 -0
  74. nntool-1.3.0.dist-info/RECORD +76 -0
  75. nntool-1.3.0.dist-info/WHEEL +6 -0
  76. nntool-1.3.0.dist-info/top_level.txt +1 -0
@@ -0,0 +1,92 @@
1
+ import wandb
2
+ import torch
3
+
4
+ from typing import Dict, Set
5
+ from pathlib import Path
6
+ from abc import abstractmethod
7
+
8
+
9
+ class BaseTrainer(object):
10
+ def __init__(self, output_folder: str, has_wandb_writer: bool = False) -> None:
11
+ self.output_folder = Path(output_folder)
12
+ self.output_folder.mkdir(exist_ok=True)
13
+
14
+ self.has_writer = has_wandb_writer
15
+ self._wandb_defined_metrics: Set[str] = set()
16
+ if self.has_writer:
17
+ self._init_wandb_metric()
18
+
19
+ def _get_wandb_step_name(self, wandb_section: str = "trainer_state") -> str:
20
+ return f"{wandb_section}/{self.__class__.__name__}_step"
21
+
22
+ def _init_wandb_metric(self):
23
+ wandb.define_metric(self._get_wandb_step_name())
24
+ self._wandb_defined_metrics.add(self._get_wandb_step_name())
25
+
26
+ def log(self, log_dict: dict, step: int = None, section: str = "train"):
27
+ if not self.has_writer:
28
+ return
29
+
30
+ # add section to each metric
31
+ log_dict = {f"{section}/{k}": v for k, v in log_dict.items()}
32
+
33
+ # define metrics against custom step name
34
+ for k in log_dict.keys():
35
+ if k not in self._wandb_defined_metrics:
36
+ wandb.define_metric(k, step_metric=self._get_wandb_step_name())
37
+ self._wandb_defined_metrics.add(k)
38
+
39
+ # add step metrics
40
+ if step is not None:
41
+ log_dict.update({self._get_wandb_step_name(): step})
42
+ else:
43
+ log_dict.update({self._get_wandb_step_name(): self.global_step})
44
+
45
+ wandb.log(log_dict)
46
+
47
+ def save(self, milestone: str):
48
+ state = self.get_state()
49
+ torch.save(state, str(self.output_folder / f"model-{milestone}.pt"))
50
+
51
+ def load(self, milestone: str):
52
+ state = torch.load(
53
+ str(self.output_folder / f"model-{milestone}.pt"),
54
+ map_location=self.device,
55
+ )
56
+ self.load_state(state)
57
+
58
+ @abstractmethod
59
+ def train(self):
60
+ raise NotImplementedError
61
+
62
+ @abstractmethod
63
+ def set_model_state(self, train: bool = True):
64
+ raise NotImplementedError
65
+
66
+ @torch.inference_mode()
67
+ @abstractmethod
68
+ def eval(self, dataloader: torch.utils.data.DataLoader) -> Dict[str, object]:
69
+ raise NotImplementedError
70
+
71
+ @torch.inference_mode()
72
+ @abstractmethod
73
+ def eval_during_training(self) -> Dict[str, object]:
74
+ raise NotImplementedError
75
+
76
+ @property
77
+ @abstractmethod
78
+ def device(self) -> torch.DeviceObjType:
79
+ raise NotImplementedError
80
+
81
+ @property
82
+ @abstractmethod
83
+ def global_step(self) -> int:
84
+ raise NotImplementedError
85
+
86
+ @abstractmethod
87
+ def get_state(self) -> Dict[str, object]:
88
+ raise NotImplementedError
89
+
90
+ @abstractmethod
91
+ def load_state(self, state: Dict[str, object]):
92
+ raise NotImplementedError
@@ -0,0 +1,6 @@
1
+ # this is for backward compatibility
2
+ from ..experiment.utils import (
3
+ get_current_time,
4
+ get_output_path,
5
+ read_toml_file,
6
+ )
@@ -0,0 +1 @@
1
+ from .config import WandbConfig, init_wandb
nntool/wandb/config.py ADDED
@@ -0,0 +1,118 @@
1
+ import os
2
+ import git
3
+ import wandb
4
+ import tomli
5
+ import warnings
6
+
7
+ from dataclasses import dataclass, field
8
+
9
+ from wandb.sdk.lib.disabled import RunDisabled
10
+ from wandb.sdk.wandb_run import Run
11
+
12
+
13
+ @dataclass
14
+ class WandbConfig:
15
+ """
16
+ Configuration class for Weights and Biases (wandb) integration.
17
+
18
+ :param api_key_config_file: The file path to the configuration file containing the wandb API key.
19
+ The file should be a toml file with a `[wandb]` section. Default is an empty string.
20
+
21
+ :param project: The name of the project in wandb. Default is an empty string.
22
+
23
+ :param entity: The wandb user or team name. Default is an empty string.
24
+
25
+ :param name: The name of the wandb run. Leave blank to use the default run name. Default is an empty string.
26
+
27
+ :param notes: Notes or comments for the wandb run. Default is an empty string.
28
+
29
+ :param log_git_hash: Whether to log the current Git hash. Default is True.
30
+
31
+ :param log_code: Whether to log the current codebase. Default is True.
32
+
33
+ :param code_root: The root directory of the codebase to be logged. Default is the current directory (`.`).
34
+
35
+ :param code_ext: A list of file extensions for the code files to be logged. Default includes `.py` and `.sh`.
36
+ """
37
+
38
+ # wandb api key (toml file with [wandb] key field)
39
+ api_key_config_file: str = ""
40
+
41
+ # project name in wandb
42
+ project: str = ""
43
+
44
+ # wandb user name
45
+ entity: str = ""
46
+
47
+ # wandb run name (leave blacnk to use default name)
48
+ name: str = ""
49
+
50
+ # wandb run notes
51
+ notes: str = ""
52
+
53
+ # log git hash
54
+ log_git_hash: bool = True
55
+
56
+ # log code
57
+ log_code: bool = True
58
+
59
+ # code root
60
+ code_root: str = "."
61
+
62
+ # code file extensions
63
+ code_ext: list[str] = field(default_factory=lambda: [".py", ".sh"])
64
+
65
+
66
+ def is_wandb_enabled():
67
+ return wandb.run is not None
68
+
69
+
70
+ def init_wandb(args: WandbConfig, run_config: dict) -> Run | RunDisabled | None:
71
+ """initialize wandb and log the configuration
72
+
73
+ :param args: WandbConfig object
74
+ :param run_config: configuration dictionary to be logged
75
+ :return: wandb run object
76
+ """
77
+ project, entity = args.project, args.entity
78
+ if "WANDB_API_KEY" in os.environ:
79
+ warnings.warn("WANDB_API_KEY is found in environment variables. Using it.")
80
+ wandb.login(key=os.environ["WANDB_API_KEY"])
81
+ elif args.api_key_config_file:
82
+ with open(args.api_key_config_file, "rb") as config_file:
83
+ config_data = tomli.load(config_file)
84
+ wandb.login(key=config_data["wandb"]["key"])
85
+ project = config_data["wandb"].get("project", args.project)
86
+ entity = config_data["wandb"].get("entity", args.entity)
87
+ else:
88
+ warnings.warn(
89
+ "WANDB_API_KEY is not found in environment variables or the local key file."
90
+ )
91
+ pass
92
+
93
+ if args.log_git_hash:
94
+ repo = git.Repo(search_parent_directories=True)
95
+ git_hash = repo.head.object.hexsha
96
+ args.notes = (
97
+ f"{args.notes + ', ' if args.notes else ''}" + f"git hash: {git_hash}"
98
+ )
99
+
100
+ wandb_run = wandb.init(
101
+ project=project,
102
+ entity=entity,
103
+ name=args.name if args.name else None,
104
+ notes=args.notes,
105
+ config=run_config,
106
+ )
107
+ if not is_wandb_enabled():
108
+ warnings.warn(
109
+ "wandb is not enabled after intialization. Please check `wandb enabled`."
110
+ )
111
+
112
+ wandb_run.log_code(
113
+ root=args.code_root,
114
+ include_fn=lambda path, root: any(
115
+ [path.endswith(ext) for ext in args.code_ext]
116
+ ),
117
+ )
118
+ return wandb_run
Binary file
Binary file
Binary file
@@ -0,0 +1,25 @@
1
+ Metadata-Version: 2.1
2
+ Name: nntool
3
+ Version: 1.3.0
4
+ Summary: neural network tool for research
5
+ Home-page: https://github.com/jhliu17/nntool
6
+ Author: Junhao Liu
7
+ Author-email: junhaoliu17@gmail.com
8
+ License: MIT
9
+ Keywords: deep learning,neural network,research
10
+ Requires-Python: >=3.9
11
+ Requires-Dist: setuptools >=68.0.0
12
+ Requires-Dist: submitit >=1.5.2
13
+ Requires-Dist: tyro >=0.8.12
14
+ Requires-Dist: matplotlib >=3.8.0
15
+ Requires-Dist: seaborn >=0.13.2
16
+ Requires-Dist: wandb >=0.15.0
17
+ Requires-Dist: tomli >=2.0.1
18
+ Requires-Dist: cythonpackage
19
+ Provides-Extra: dev
20
+ Requires-Dist: pytest >=8.0.2 ; extra == 'dev'
21
+ Requires-Dist: jax[cpu] >=0.4.0 ; extra == 'dev'
22
+ Requires-Dist: torch >=2.2.0 ; extra == 'dev'
23
+ Requires-Dist: mypy ; extra == 'dev'
24
+ Requires-Dist: accelerate ; extra == 'dev'
25
+
@@ -0,0 +1,76 @@
1
+ nntool/__init__.py,sha256=aLOwJwXql9j87YPh8ACPWuGMD4Z_R8JlJVh2P5ZdohY,75
2
+ nntool/slurm/config.py,sha256=UFleYQuXLxz5F4Hx5WuN832UnA0uTQ05M_YyTvsnFOs,6860
3
+ nntool/slurm/function.py,sha256=aSbAgNvYPZaWJoxgjHomVaIZMSRrRzV5XIz1w6Hnrqs,8163
4
+ nntool/slurm/wrap.py,sha256=dN2lzRfE32WRaqj4ohUp9K4n8EKkk657zOer6FbRGPU,9044
5
+ nntool/slurm/__init__.py,sha256=MHg76NOj0qEzr_sXiL0nTarVm6xIXymtbmVc0U9E4_o,228
6
+ nntool/slurm/task.py,sha256=djxm5Ggi2EvPhijDNPCvx-Ppk5_BKQpTy1BAKPZhVHI,7580
7
+ nntool/slurm/accelerator/utils.py,sha256=oZrpcvlHYH14j-uNVEiSye6KiuULG1E34zGLw_IczHc,1298
8
+ nntool/slurm/accelerator/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ nntool/slurm/accelerator/__pycache__/utils.cpython-311.pyc,sha256=rA0zMRMP5tikMuMx3Ci8iUQAMK6bzKa54EPd0fwPzDM,2414
10
+ nntool/slurm/accelerator/__pycache__/__init__.cpython-311.pyc,sha256=LddRUBTwCNNI5mBL4SC8su1ag-qOw4xF58AGzYERivk,145
11
+ nntool/slurm/accelerator/__pycache__/utils.cpython-311.opt-1.pyc,sha256=rA0zMRMP5tikMuMx3Ci8iUQAMK6bzKa54EPd0fwPzDM,2414
12
+ nntool/slurm/accelerator/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=LddRUBTwCNNI5mBL4SC8su1ag-qOw4xF58AGzYERivk,145
13
+ nntool/slurm/csrc/__init__.py,sha256=ew8vy7OKCavl2vOb0ZCDKunHjNGYsfgqZvse7UyhjkE,104
14
+ nntool/slurm/csrc/__compile__.cpython-311-x86_64-linux-gnu.so,sha256=1mAVMKSBCuK9xt9ck_stInknHz-yMKYd15sIaYKq-cA,1999352
15
+ nntool/slurm/csrc/__pycache__/__init__.cpython-311.pyc,sha256=uNDUCI02_b2LfjAiIxMYd1MKzwMbqWnirOHoZZw4JRw,319
16
+ nntool/slurm/csrc/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=uNDUCI02_b2LfjAiIxMYd1MKzwMbqWnirOHoZZw4JRw,319
17
+ nntool/slurm/__pycache__/wrap.cpython-311.opt-1.pyc,sha256=Rze6oqMxFIANXLUaeNDF5FZ7hnVqE6oZpFTNddbp6iA,10459
18
+ nntool/slurm/__pycache__/__init__.cpython-311.pyc,sha256=eHwlDfh1njbfrDH9KTg41x274kOBaV4gZwrtcJSHTls,528
19
+ nntool/slurm/__pycache__/config.cpython-311.pyc,sha256=9YqV6H-9x6PMp8LLnlFRglEMaIJxKR-T1PBMv7YdMXY,7163
20
+ nntool/slurm/__pycache__/function.cpython-311.pyc,sha256=pxVG7gDhvoAjn_XY6xh9j3I_eC9l_08PXfaNGxN6a6Q,10076
21
+ nntool/slurm/__pycache__/function.cpython-311.opt-1.pyc,sha256=pxVG7gDhvoAjn_XY6xh9j3I_eC9l_08PXfaNGxN6a6Q,10076
22
+ nntool/slurm/__pycache__/wrap.cpython-311.pyc,sha256=Rze6oqMxFIANXLUaeNDF5FZ7hnVqE6oZpFTNddbp6iA,10459
23
+ nntool/slurm/__pycache__/task.cpython-311.pyc,sha256=nSYK9FHIczsiaVdyISvRkXfZwExcIZtkHcS2AELE3mA,14230
24
+ nntool/slurm/__pycache__/config.cpython-311.opt-1.pyc,sha256=9YqV6H-9x6PMp8LLnlFRglEMaIJxKR-T1PBMv7YdMXY,7163
25
+ nntool/slurm/__pycache__/task.cpython-311.opt-1.pyc,sha256=nSYK9FHIczsiaVdyISvRkXfZwExcIZtkHcS2AELE3mA,14230
26
+ nntool/slurm/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=eHwlDfh1njbfrDH9KTg41x274kOBaV4gZwrtcJSHTls,528
27
+ nntool/train/trainer.py,sha256=f_cFFTdddT1EDX-7DN1_y-jQ3WWxO3ZoHXSF3rgBKqY,2808
28
+ nntool/train/__init__.py,sha256=LRc7-qwMItUFM4FvB0fipqIRJfE_UV0SDBmGBUnMTGQ,827
29
+ nntool/train/__pycache__/trainer.cpython-311.opt-1.pyc,sha256=OCQjpCH_WZaQ3aTaq6SH3Qr3AvmIS9_3S0LN80nWClo,6126
30
+ nntool/train/__pycache__/__init__.cpython-311.pyc,sha256=hEEesvfxdQ0fmUGVsx-DOwX6NCO-3sW0bfUkU4cVt80,912
31
+ nntool/train/__pycache__/trainer.cpython-311.pyc,sha256=OCQjpCH_WZaQ3aTaq6SH3Qr3AvmIS9_3S0LN80nWClo,6126
32
+ nntool/train/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=hEEesvfxdQ0fmUGVsx-DOwX6NCO-3sW0bfUkU4cVt80,912
33
+ nntool/utils/__init__.py,sha256=wo1H6JzA6F9VndjieS1UypPf78m2_9Io3eNqc336oxA,135
34
+ nntool/utils/__pycache__/__init__.cpython-311.pyc,sha256=A4OLSzQmFHxvkx08rxF9PZ_HhB5U8HYt-Nami_XrKlc,291
35
+ nntool/utils/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=A4OLSzQmFHxvkx08rxF9PZ_HhB5U8HYt-Nami_XrKlc,291
36
+ nntool/experiment/utils.py,sha256=ajrjYNltyNwNfmFciygCvbcRBtn8Gc7-dVR07Q8xbKo,2119
37
+ nntool/experiment/config.py,sha256=3PQx2B9bTVxdj0i2BQ_shHSzDdFn6nNfjUAfuVjVJoo,3861
38
+ nntool/experiment/__init__.py,sha256=vd7SV9-29tceUk0QiWSgxYJIJws0M2lSSd2pu5KSKwE,127
39
+ nntool/experiment/__pycache__/utils.cpython-311.pyc,sha256=hC52BEtKV5riHfMEX-70F7eikgDf8gAQtRHRmY0_Ljk,2847
40
+ nntool/experiment/__pycache__/__init__.cpython-311.pyc,sha256=GP-gHm8hP_a3ZDojR91CcOXHaoYViE7tdadspIqgcxo,352
41
+ nntool/experiment/__pycache__/config.cpython-311.pyc,sha256=00_pnHT-xtiJjDe8DTIX7EoExpmGHlt4qtslBfetqYc,5662
42
+ nntool/experiment/__pycache__/utils.cpython-311.opt-1.pyc,sha256=hC52BEtKV5riHfMEX-70F7eikgDf8gAQtRHRmY0_Ljk,2847
43
+ nntool/experiment/__pycache__/config.cpython-311.opt-1.pyc,sha256=00_pnHT-xtiJjDe8DTIX7EoExpmGHlt4qtslBfetqYc,5662
44
+ nntool/experiment/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=GP-gHm8hP_a3ZDojR91CcOXHaoYViE7tdadspIqgcxo,352
45
+ nntool/plot/__init__.py,sha256=M0qnyO48RzI_62v1EzhXNIszLZEJ7tsTS2YuzDoOoKE,133
46
+ nntool/plot/context.py,sha256=9aEFWZSwliKCX5n2GX1uWPPJR_7dbn8XSVNefipkGB8,1331
47
+ nntool/plot/csrc/__init__.py,sha256=fkzL5CkVtu6JFZ8xxMdLYjRt86bqWiHYfh3UI4iMi8s,51
48
+ nntool/plot/csrc/__compile__.cpython-311-x86_64-linux-gnu.so,sha256=U1_Fv4HEO41MvE6TYtJSYH5yG3kSm7BLmLuQBUYOtO0,867832
49
+ nntool/plot/csrc/__pycache__/__init__.cpython-311.pyc,sha256=vkBW8po_OHBhkvPoIhO_QLZuOklBnt8XvQ1ls2JOkyk,237
50
+ nntool/plot/csrc/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=vkBW8po_OHBhkvPoIhO_QLZuOklBnt8XvQ1ls2JOkyk,237
51
+ nntool/plot/__pycache__/__init__.cpython-311.pyc,sha256=cLKMw5V1Y1bX3WdHUD3IAvvnPxYu71pQfIS8jeWLMas,370
52
+ nntool/plot/__pycache__/context.cpython-311.opt-1.pyc,sha256=COCh_fy9FXvemMeZl9TrJqE2alyn-fTVdBRewHoDqGs,2623
53
+ nntool/plot/__pycache__/context.cpython-311.pyc,sha256=COCh_fy9FXvemMeZl9TrJqE2alyn-fTVdBRewHoDqGs,2623
54
+ nntool/plot/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=cLKMw5V1Y1bX3WdHUD3IAvvnPxYu71pQfIS8jeWLMas,370
55
+ nntool/parser/__init__.py,sha256=991hqyHOJjoaN5WDrIBhEduZs9rmvgV6ShUeZNDAiXo,34
56
+ nntool/parser/parse.py,sha256=IqlcqQfd7GoeTGJkMOrb2_-x0s49Zz_2fA3Fsk_6ysQ,552
57
+ nntool/parser/__pycache__/__init__.cpython-311.pyc,sha256=XqX5TKpdNBtGFiHDmsU5S1vihAPzFer2-RwgoleZML0,192
58
+ nntool/parser/__pycache__/parse.cpython-311.opt-1.pyc,sha256=8d9h1vdaZlcSSzxSviFGxqgeWqwHzPbJ375xOiX3exY,906
59
+ nntool/parser/__pycache__/parse.cpython-311.pyc,sha256=8d9h1vdaZlcSSzxSviFGxqgeWqwHzPbJ375xOiX3exY,906
60
+ nntool/parser/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=XqX5TKpdNBtGFiHDmsU5S1vihAPzFer2-RwgoleZML0,192
61
+ nntool/__pycache__/__init__.cpython-311.pyc,sha256=ojFj2OobXKCzEIvFCOwL-sG_v9TQ2hausIewsmEE8MM,368
62
+ nntool/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=ojFj2OobXKCzEIvFCOwL-sG_v9TQ2hausIewsmEE8MM,368
63
+ nntool/wandb/config.py,sha256=F395QOoByO1-f5ocAmNfEGa7UfZjAWghYxoQgNKV-Ks,3605
64
+ nntool/wandb/__init__.py,sha256=lvn7f3wMkVRz0oyYSjfasFQKjmJ5d6wkDpIDgf0DDKs,44
65
+ nntool/wandb/__pycache__/__init__.cpython-311.pyc,sha256=u6HK5IEMCzrcIumTb-bNcX_Sc74OBnrywCUtlYNzFNU,216
66
+ nntool/wandb/__pycache__/config.cpython-311.pyc,sha256=G7oq-mldc3WBeVmEMQWr4d9WVCOTNOEuFxjWON1ySPs,5578
67
+ nntool/wandb/__pycache__/config.cpython-311.opt-1.pyc,sha256=G7oq-mldc3WBeVmEMQWr4d9WVCOTNOEuFxjWON1ySPs,5578
68
+ nntool/wandb/__pycache__/__init__.cpython-311.opt-1.pyc,sha256=u6HK5IEMCzrcIumTb-bNcX_Sc74OBnrywCUtlYNzFNU,216
69
+ nntool-1.3.0.dist-info/METADATA,sha256=Rf-21UEryukOszH46JqHrcdg4C9cbwcljBIIHZFJXKk,769
70
+ nntool-1.3.0.dist-info/._requires.txt,sha256=yNlZBj9Qbibg_4etwM6NkI38o7TjR6UoE0tEoNdYPjY,267
71
+ nntool-1.3.0.dist-info/RECORD,,
72
+ nntool-1.3.0.dist-info/WHEEL,sha256=-7Vwsd-KuPOtdyxdAC8drxF7lN4th9mKINh8g6MaZ9k,152
73
+ nntool-1.3.0.dist-info/top_level.txt,sha256=hXO7zSAI-o9plYeUkCiKbkDpQCfTDIfjivyoSEqT28Y,7
74
+ nntool-1.3.0.dist-info/._SOURCES.txt,sha256=yNlZBj9Qbibg_4etwM6NkI38o7TjR6UoE0tEoNdYPjY,267
75
+ nntool-1.3.0.dist-info/._top_level.txt,sha256=MTm3Nh1CVxvWnLnzanzf6CglfDcr-AzoerhtjweyVT4,366
76
+ nntool-1.3.0.dist-info/._dependency_links.txt,sha256=MTm3Nh1CVxvWnLnzanzf6CglfDcr-AzoerhtjweyVT4,366
@@ -0,0 +1,6 @@
1
+ Wheel-Version: 1.0
2
+ Generator: bdist_wheel (0.43.0)
3
+ Root-Is-Purelib: false
4
+ Tag: cp311-cp311-manylinux_2_17_x86_64
5
+ Tag: cp311-cp311-manylinux2014_x86_64
6
+
@@ -0,0 +1 @@
1
+ nntool