sl-shared-assets 3.0.0rc9__py3-none-any.whl → 3.0.0rc11__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.

Potentially problematic release.


This version of sl-shared-assets might be problematic. Click here for more details.

@@ -1,19 +1,41 @@
1
+ from enum import StrEnum
1
2
  from pathlib import Path
2
3
  from dataclasses import field, dataclass
3
4
 
4
5
  from _typeshed import Incomplete
5
6
  from ataraxis_data_structures import YamlConfig
6
7
 
7
- from .configuration_data import get_system_configuration_data as get_system_configuration_data
8
+ from .configuration_data import (
9
+ AcquisitionSystems as AcquisitionSystems,
10
+ get_system_configuration_data as get_system_configuration_data,
11
+ )
8
12
 
9
- _valid_session_types: Incomplete
13
+ class SessionTypes(StrEnum):
14
+ """Defines the set of data acquisition session types supported by various data acquisition systems used in the
15
+ Sun lab.
16
+
17
+ A data acquisition session broadly encompasses a recording session carried out to either: acquire experiment data,
18
+ train the animal for the upcoming experiments, or to assess the quality of surgical or other pre-experiment
19
+ intervention.
20
+
21
+ Notes:
22
+ This enumeration does not differentiate between different acquisition systems. Different acquisition systems
23
+ support different session types, and may not be suited for acquiring some of the session types listed in this
24
+ enumeration.
25
+ """
26
+
27
+ LICK_TRAINING = "lick training"
28
+ RUN_TRAINING = "run training"
29
+ MESOSCOPE_EXPERIMENT = "mesoscope experiment"
30
+ WINDOW_CHECKING = "window checking"
10
31
 
11
32
  @dataclass()
12
33
  class RawData:
13
34
  """Stores the paths to the directories and files that make up the 'raw_data' session-specific directory.
14
35
 
15
- The raw_data directory stores the data acquired during the session runtime before and after preprocessing. Since
16
- preprocessing does not alter the data, any data in that folder is considered 'raw'.
36
+ The raw_data directory stores the data acquired during the session data acquisition runtime, before and after
37
+ preprocessing. Since preprocessing does not irreversibly alter the data, any data in that folder is considered
38
+ 'raw,' event if preprocessing losslessly re-compresses the data for efficient transfer.
17
39
 
18
40
  Notes:
19
41
  Sun lab data management strategy primarily relies on keeping multiple redundant copies of the raw_data for
@@ -42,16 +64,19 @@ class RawData:
42
64
  def resolve_paths(self, root_directory_path: Path) -> None:
43
65
  """Resolves all paths managed by the class instance based on the input root directory path.
44
66
 
45
- This method is called each time the class is instantiated to regenerate the managed path hierarchy on any
46
- machine that instantiates the class.
67
+ This method is called each time the (wrapper) SessionData class is instantiated to regenerate the managed path
68
+ hierarchy on any machine that instantiates the class.
47
69
 
48
70
  Args:
49
- root_directory_path: The path to the top-level directory of the local hierarchy. Depending on the managed
50
- hierarchy, this has to point to a directory under the main /session, /animal, or /project directory of
51
- the managed session.
71
+ root_directory_path: The path to the top-level directory of the session. Typically, this path is assembled
72
+ using the following hierarchy: root/project/animal/session_id
52
73
  """
53
74
  def make_directories(self) -> None:
54
- """Ensures that all major subdirectories and the root directory exist, creating any missing directories."""
75
+ """Ensures that all major subdirectories and the root directory exist, creating any missing directories.
76
+
77
+ This method is called each time the (wrapper) SessionData class is instantiated and allowed to generate
78
+ missing data directories.
79
+ """
55
80
 
56
81
  @dataclass()
57
82
  class ProcessedData:
@@ -73,44 +98,42 @@ class ProcessedData:
73
98
  def resolve_paths(self, root_directory_path: Path) -> None:
74
99
  """Resolves all paths managed by the class instance based on the input root directory path.
75
100
 
76
- This method is called each time the class is instantiated to regenerate the managed path hierarchy on any
77
- machine that instantiates the class.
101
+ This method is called each time the (wrapper) SessionData class is instantiated to regenerate the managed path
102
+ hierarchy on any machine that instantiates the class.
78
103
 
79
104
  Args:
80
- root_directory_path: The path to the top-level directory of the local hierarchy. Depending on the managed
81
- hierarchy, this has to point to a directory under the main /session, /animal, or /project directory of
82
- the managed session.
105
+ root_directory_path: The path to the top-level directory of the session. Typically, this path is assembled
106
+ using the following hierarchy: root/project/animal/session_id
83
107
  """
84
108
  def make_directories(self) -> None:
85
- """Ensures that all major subdirectories and the root directory exist, creating any missing directories."""
109
+ """Ensures that all major subdirectories and the root directory exist, creating any missing directories.
110
+
111
+ This method is called each time the (wrapper) SessionData class is instantiated and allowed to generate
112
+ missing data directories.
113
+ """
86
114
 
87
115
  @dataclass
88
116
  class SessionData(YamlConfig):
89
- """Stores and manages the data layout of a single training or experiment session acquired in the Sun lab.
90
-
91
- The primary purpose of this class is to maintain the session data structure across all supported destinations and
92
- during all processing stages. It generates the paths used by all other classes from all Sun lab libraries that
93
- interact with the session's data from the point of its creation and until the data is integrated into an
94
- analysis dataset.
117
+ """Stores and manages the data layout of a single Sun lab data acquisition session.
95
118
 
96
- When necessary, the class can be used to either generate a new session or load the layout of an already existing
97
- session. When the class is used to create a new session, it generates the new session's name using the current
98
- UTC timestamp, accurate to microseconds. This ensures that each session name is unique and preserves the overall
99
- session order.
119
+ The primary purpose of this class is to maintain the session data structure across all supported destinations and to
120
+ provide a unified data access interface shared by all Sun lab libraries. The class can be used to either generate a
121
+ new session or load the layout of an already existing session. When the class is used to create a new session, it
122
+ generates the new session's name using the current UTC timestamp, accurate to microseconds. This ensures that each
123
+ session 'name' is unique and preserves the overall session order.
100
124
 
101
125
  Notes:
102
126
  This class is specifically designed for working with the data from a single session, performed by a single
103
127
  animal under the specific experiment. The class is used to manage both raw and processed data. It follows the
104
- data through acquisition, preprocessing and processing stages of the Sun lab data workflow. Together with
105
- ProjectConfiguration class, this class serves as an entry point for all interactions with the managed session's
106
- data.
128
+ data through acquisition, preprocessing and processing stages of the Sun lab data workflow. This class serves as
129
+ an entry point for all interactions with the managed session's data.
107
130
  """
108
131
 
109
132
  project_name: str
110
133
  animal_id: str
111
134
  session_name: str
112
- session_type: str
113
- acquisition_system: str
135
+ session_type: str | SessionTypes
136
+ acquisition_system: str | AcquisitionSystems
114
137
  experiment_name: str | None
115
138
  python_version: str = ...
116
139
  sl_experiment_version: str = ...
@@ -123,7 +146,7 @@ class SessionData(YamlConfig):
123
146
  cls,
124
147
  project_name: str,
125
148
  animal_id: str,
126
- session_type: str,
149
+ session_type: SessionTypes | str,
127
150
  experiment_name: str | None = None,
128
151
  session_name: str | None = None,
129
152
  python_version: str = "3.11.13",
@@ -138,26 +161,27 @@ class SessionData(YamlConfig):
138
161
  To load an already existing session data structure, use the load() method instead.
139
162
 
140
163
  This method automatically dumps the data of the created SessionData instance into the session_data.yaml file
141
- inside the root raw_data directory of the created hierarchy. It also finds and dumps other configuration
142
- files, such as experiment_configuration.yaml and system_configuration.yaml into the same raw_data directory.
143
- This ensures that if the session's runtime is interrupted unexpectedly, the acquired data can still be
144
- processed.
164
+ inside the root 'raw_data' directory of the created hierarchy. It also finds and dumps other configuration
165
+ files, such as experiment_configuration.yaml and system_configuration.yaml into the same 'raw_data'
166
+ directory. If the session's runtime is interrupted unexpectedly, the acquired data can still be processed
167
+ using these pre-saved class instances.
145
168
 
146
169
  Args:
147
- project_name: The name of the project for which the data is acquired.
148
- animal_id: The ID code of the animal for which the data is acquired.
149
- session_type: The type of the session. Primarily, this determines how to read the session_descriptor.yaml
150
- file. Valid options are 'Lick training', 'Run training', 'Window checking', or 'Experiment'.
151
- experiment_name: The name of the experiment executed during managed session. This optional argument is only
152
- used for 'Experiment' session types. It is used to find the experiment configuration .YAML file.
153
- session_name: An optional session_name override. Generally, this argument should not be provided for most
170
+ project_name: The name of the project for which the session is carried out.
171
+ animal_id: The ID code of the animal participating in the session.
172
+ session_type: The type of the session. Has to be one of the supported session types exposed by the
173
+ SessionTypes enumeration.
174
+ experiment_name: The name of the experiment executed during the session. This optional argument is only
175
+ used for experiment sessions. Note! The name passed to this argument has to match the name of the
176
+ experiment configuration .yaml file.
177
+ session_name: An optional session name override. Generally, this argument should not be provided for most
154
178
  sessions. When provided, the method uses this name instead of generating a new timestamp-based name.
155
179
  This is only used during the 'ascension' runtime to convert old data structures to the modern
156
180
  lab standards.
157
- python_version: The string that specifies the Python version used to collect raw session data. Has to be
181
+ python_version: The string that specifies the Python version used to collect session data. Has to be
158
182
  specified using the major.minor.patch version format.
159
183
  sl_experiment_version: The string that specifies the version of the sl-experiment library used to collect
160
- raw session data. Has to be specified using the major.minor.patch version format.
184
+ session data. Has to be specified using the major.minor.patch version format.
161
185
 
162
186
  Returns:
163
187
  An initialized SessionData instance that stores the layout of the newly created session's data.
@@ -169,9 +193,9 @@ class SessionData(YamlConfig):
169
193
  """Loads the SessionData instance from the target session's session_data.yaml file.
170
194
 
171
195
  This method is used to load the data layout information of an already existing session. Primarily, this is used
172
- when preprocessing or processing session data. Due to how SessionData is stored and used in the lab, this
173
- method always loads the data layout from the session_data.yaml file stored inside the raw_data session
174
- subfolder. Currently, all interactions with Sun lab data require access to the 'raw_data' folder.
196
+ when processing session data. Due to how SessionData is stored and used in the lab, this method always loads the
197
+ data layout from the session_data.yaml file stored inside the 'raw_data' session subfolder. Currently, all
198
+ interactions with Sun lab data require access to the 'raw_data' folder of each session.
175
199
 
176
200
  Notes:
177
201
  To create a new session, use the create() method instead.
@@ -192,17 +216,17 @@ class SessionData(YamlConfig):
192
216
  FileNotFoundError: If the 'session_data.yaml' file is not found under the session_path/raw_data/ subfolder.
193
217
 
194
218
  """
195
- def mark_initialization(self) -> None:
196
- """Ensures that the 'nk.bin' marker file is removed from the session's raw_dat folder.
219
+ def runtime_initialized(self) -> None:
220
+ """Ensures that the 'nk.bin' marker file is removed from the session's raw_data folder.
197
221
 
198
- This marker is generated as part of the SessionData initialization (creation) process to mark sessions that did
199
- not fully initialize during runtime. Call this method after fully initializing the data acquisition runtime
200
- control class to ensure that the session is not marker for automated deletion upon runtime completion.
222
+ The 'nk.bin' marker is generated as part of the SessionData initialization (creation) process to mark sessions
223
+ that did not fully initialize during runtime. This service method is designed to be called by the sl-experiment
224
+ library classes to remove the 'nk.bin' marker when it is safe to do so. It should not be called by end-users.
201
225
  """
202
226
  def _save(self) -> None:
203
227
  """Saves the instance data to the 'raw_data' directory of the managed session as a 'session_data.yaml' file.
204
228
 
205
- This is used to save the data stored in the instance to disk, so that it can be reused during preprocessing or
229
+ This is used to save the data stored in the instance to disk, so that it can be reused during further stages of
206
230
  data processing. The method is intended to only be used by the SessionData instance itself during its
207
231
  create() method runtime.
208
232
  """
@@ -222,6 +246,13 @@ class ProcessingTracker(YamlConfig):
222
246
  _is_running: bool = ...
223
247
  _lock_path: str = field(init=False)
224
248
  def __post_init__(self) -> None: ...
249
+ def __del__(self) -> None:
250
+ """If the instance is garbage-collected without calling the stop() method, assumes this is due to a runtime
251
+ error.
252
+
253
+ It is essential to always resolve the runtime as either 'stopped' or 'erred' to avoid deadlocking the session
254
+ data.
255
+ """
225
256
  def _load_state(self) -> None:
226
257
  """Reads the current processing state from the wrapped .YAML file."""
227
258
  def _save_state(self) -> None:
@@ -248,7 +279,11 @@ class ProcessingTracker(YamlConfig):
248
279
  TimeoutError: If the file lock for the target .YAML file cannot be acquired within the timeout period.
249
280
  """
250
281
  def stop(self) -> None:
251
- """Mark processing as started.
282
+ """Configures the tracker file to indicate that the tracked processing runtime has been completed successfully.
283
+
284
+ After this method returns, it is UNSAFE to do any further processing from the process that calls this method.
285
+ Any process that calls the 'start' method of this class is expected to also call this method or 'error' method
286
+ at the end of the runtime.
252
287
 
253
288
  Raises:
254
289
  TimeoutError: If the file lock for the target .YAML file cannot be acquired within the timeout period.
@@ -256,12 +291,12 @@ class ProcessingTracker(YamlConfig):
256
291
  @property
257
292
  def is_complete(self) -> bool:
258
293
  """Returns True if the tracker wrapped by the instance indicates that the processing runtime has been completed
259
- successfully and False otherwise."""
294
+ successfully at least once and that there is no ongoing processing that uses the target session."""
260
295
  @property
261
296
  def encountered_error(self) -> bool:
262
- """Returns True if the tracker wrapped by the instance indicates that the processing runtime aborted due to
263
- encountering an error and False otherwise."""
297
+ """Returns True if the tracker wrapped by the instance indicates that the processing runtime for the target
298
+ session has aborted due to encountering an error."""
264
299
  @property
265
300
  def is_running(self) -> bool:
266
301
  """Returns True if the tracker wrapped by the instance indicates that the processing runtime is currently
267
- running and False otherwise."""
302
+ running for the target session."""
@@ -51,7 +51,7 @@ class ProcedureData:
51
51
  surgery_quality: int = 0
52
52
  """Stores the quality of the surgical intervention as a numeric level. 0 indicates unusable (bad) result, 1
53
53
  indicates usable result that is not good enough to be included in a publication, 2 indicates publication-grade
54
- result."""
54
+ result, 3 indicates high-tier publication grade result."""
55
55
 
56
56
 
57
57
  @dataclass
@@ -10,7 +10,7 @@ import numpy as np
10
10
  from ataraxis_base_utilities import LogLevel, console
11
11
  from ataraxis_time.time_helpers import extract_timestamp_from_bytes
12
12
 
13
- from ..data_classes import SessionData, get_system_configuration_data
13
+ from ..data_classes import SessionData, SessionTypes, get_system_configuration_data
14
14
  from .transfer_tools import transfer_directory
15
15
  from .packaging_tools import calculate_directory_checksum
16
16
 
@@ -222,12 +222,12 @@ def ascend_tyche_data(root_directory: Path) -> None:
222
222
  project_name=project_name,
223
223
  session_name=session_name,
224
224
  animal_id=animal_name,
225
- session_type="mesoscope experiment",
225
+ session_type=SessionTypes.MESOSCOPE_EXPERIMENT,
226
226
  experiment_name=None,
227
227
  )
228
228
 
229
229
  # Since this runtime reprocesses already acquired data, marks the session as fully initialized.
230
- session_data.mark_initialization()
230
+ session_data.runtime_initialized()
231
231
 
232
232
  # Moves the data from the old hierarchy to the new hierarchy. If the process runs as expected, and
233
233
  # fully empties the source acquisition folder, destroys the folder. Otherwise, notifies the user that
@@ -2,6 +2,7 @@ from pathlib import Path
2
2
 
3
3
  from ..data_classes import (
4
4
  SessionData as SessionData,
5
+ SessionTypes as SessionTypes,
5
6
  get_system_configuration_data as get_system_configuration_data,
6
7
  )
7
8
  from .transfer_tools import transfer_directory as transfer_directory
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sl-shared-assets
3
- Version: 3.0.0rc9
3
+ Version: 3.0.0rc11
4
4
  Summary: Provides data acquisition and processing assets shared between Sun (NeuroAI) lab libraries.
5
5
  Project-URL: Homepage, https://github.com/Sun-Lab-NBB/sl-shared-assets
6
6
  Project-URL: Documentation, https://sl-shared-assets-api-docs.netlify.app/
@@ -691,7 +691,7 @@ Classifier: Programming Language :: Python :: 3.12
691
691
  Classifier: Programming Language :: Python :: 3.13
692
692
  Requires-Python: >=3.11
693
693
  Requires-Dist: appdirs==1.4.4
694
- Requires-Dist: ataraxis-base-utilities==3.0.1
694
+ Requires-Dist: ataraxis-base-utilities==3.1.0
695
695
  Requires-Dist: ataraxis-data-structures==3.1.1
696
696
  Requires-Dist: ataraxis-time==3.0.0
697
697
  Requires-Dist: click==8.2.1
@@ -706,7 +706,6 @@ Requires-Dist: simple-slurm==0.3.6
706
706
  Requires-Dist: tqdm==4.67.1
707
707
  Requires-Dist: xxhash==3.5.0
708
708
  Provides-Extra: conda
709
- Requires-Dist: grayskull<3,>=2; extra == 'conda'
710
709
  Requires-Dist: hatchling<2,>=1; extra == 'conda'
711
710
  Requires-Dist: importlib-metadata<9,>=8; extra == 'conda'
712
711
  Requires-Dist: mypy<2,>=1; extra == 'conda'
@@ -734,7 +733,6 @@ Requires-Dist: tqdm==4.67.1; extra == 'condarun'
734
733
  Provides-Extra: dev
735
734
  Requires-Dist: ataraxis-automation<6,>=5; extra == 'dev'
736
735
  Requires-Dist: build<2,>=1; extra == 'dev'
737
- Requires-Dist: grayskull<3,>=2; extra == 'dev'
738
736
  Requires-Dist: hatchling<2,>=1; extra == 'dev'
739
737
  Requires-Dist: importlib-metadata<9,>=8; extra == 'dev'
740
738
  Requires-Dist: mypy<2,>=1; extra == 'dev'
@@ -0,0 +1,36 @@
1
+ sl_shared_assets/__init__.py,sha256=SZcLWZ7N-rBeHXxOGS_rgwnXLPMWkh2QcpOFjqubxeE,2285
2
+ sl_shared_assets/__init__.pyi,sha256=4Mm1wCzmUQ1iGosjqo3sqNB_TZ6hQlsQ6-aG_EIDs10,2525
3
+ sl_shared_assets/cli.py,sha256=R_h_Dlla48mG1LpFDDE9flZ_NyDC9UguRUAYZL6gA9s,18383
4
+ sl_shared_assets/cli.pyi,sha256=8ZJK56_jh2QlF3XCN6c7fI6Z022XtehB0eCrQDJbAsU,5515
5
+ sl_shared_assets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
+ sl_shared_assets/data_classes/__init__.py,sha256=ASaEsXTIXLtm7YqAUKywG090JN2kpEUBQRdr6uC4mE4,1936
7
+ sl_shared_assets/data_classes/__init__.pyi,sha256=666D10RavyFMPOAXhI5Nq3KO-3mxXd1RbaORBMdWJEI,2148
8
+ sl_shared_assets/data_classes/configuration_data.py,sha256=HAdYUVy_8gg_ECN56RAEih9UB7DoZ4J3S5a8ky8o4dQ,36076
9
+ sl_shared_assets/data_classes/configuration_data.pyi,sha256=11Q6OJjN6PdrlZwVPYCL4TEGxkbKL7mGb2S1sSMKsqs,11027
10
+ sl_shared_assets/data_classes/runtime_data.py,sha256=TNX3z9udP6Kfqye1ut4TRxeyI2sKzTe_vFBs9bMs8tg,16580
11
+ sl_shared_assets/data_classes/runtime_data.pyi,sha256=gOpQvA7ng586jdiEd7dJXyzx76_9MvKflAWaIsL3Tf8,6731
12
+ sl_shared_assets/data_classes/session_data.py,sha256=2xW52fo7yiTswmt65qf6SdOmE-uP-SWqtXkgwZNdT4U,48063
13
+ sl_shared_assets/data_classes/session_data.pyi,sha256=g53jIe-v8VkQJHc7ITS0KBGRhzn6LOIb6f96SEbEGig,15898
14
+ sl_shared_assets/data_classes/surgery_data.py,sha256=5B1OPKFq4bnzbAoe-_c5dFV3kbSD5YFzXbX2zXmfGs8,7485
15
+ sl_shared_assets/data_classes/surgery_data.pyi,sha256=rf59lJ3tGSYKHQlEGXg75MnjajBwl0DYhL4TClAO4SM,2605
16
+ sl_shared_assets/server/__init__.py,sha256=w7y73RXXjBrWQsjU5g1QNCv_gsXDYnHos3NpOoR2AHA,452
17
+ sl_shared_assets/server/__init__.pyi,sha256=Zc12G90fZdgEMwaVZbFzrRVV1wH_LEj3sxaV3lhk1Cw,316
18
+ sl_shared_assets/server/job.py,sha256=DnEVIswZXm9queBgy6MlpIrCosXvQ_tweOeko7LN9yc,19431
19
+ sl_shared_assets/server/job.pyi,sha256=uYfOuKgPL1hSHQvy5nmXzFkVjS316F3IZTdT-PmluZU,11663
20
+ sl_shared_assets/server/server.py,sha256=MGk1v49aEFeIChMDsiR7CXjVkWwDpD9kA1TK0fwuTXw,32926
21
+ sl_shared_assets/server/server.pyi,sha256=5Yxq4txhjtd9w-6U9fPehzMeIZL5GcprVCHd9mPP6FI,15113
22
+ sl_shared_assets/tools/__init__.py,sha256=NktXk62E_HHOrO_93z_MVmSd6-Oir3mE4xE9Yr8Qa7U,682
23
+ sl_shared_assets/tools/__init__.pyi,sha256=0UXorfCXXmHQOP5z7hODpsqEX0DAkOta5VZqN6FSS-w,623
24
+ sl_shared_assets/tools/ascension_tools.py,sha256=tRV_tpoQURDD03slrRdh12Qbf9_ZQo4RU0PgYbUWOc0,14620
25
+ sl_shared_assets/tools/ascension_tools.pyi,sha256=fs5j7nbnZ4WpgK8D75A7WJcvFMwK_MUO9ULIYo1YkGo,3739
26
+ sl_shared_assets/tools/packaging_tools.py,sha256=QikjeaE_A8FyVJi3cnWLeW-hUXy1-FF1N23muA5VfT4,7526
27
+ sl_shared_assets/tools/packaging_tools.pyi,sha256=vgGbAQCExwg-0A5F72MzEhzHxu97Nqg1yuz-5P89ycU,3118
28
+ sl_shared_assets/tools/project_management_tools.py,sha256=Z_U0R26w9Le1O-u66gyF5CG8M_YaLFNpH9diQeH1AZQ,29381
29
+ sl_shared_assets/tools/project_management_tools.pyi,sha256=4kok98nOZ4KnT-Sg-ZCZYg-WIM5qZqiyK8g1XiiDjHM,10375
30
+ sl_shared_assets/tools/transfer_tools.py,sha256=J26kwOp_NpPSY0-xu5FTw9udte-rm_mW1FJyaTNoqQI,6606
31
+ sl_shared_assets/tools/transfer_tools.pyi,sha256=FoH7eYZe7guGHfPr0MK5ggO62uXKwD2aJ7h1Bu7PaEE,3294
32
+ sl_shared_assets-3.0.0rc11.dist-info/METADATA,sha256=bWXGSlddEAP1TR7XPqQUroBg8cwSU6dJqufWzKqK9zg,49214
33
+ sl_shared_assets-3.0.0rc11.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
34
+ sl_shared_assets-3.0.0rc11.dist-info/entry_points.txt,sha256=UmO1rl7ly9N7HWPwWyP9E0b5KBUStpBo4TRoqNtizDY,430
35
+ sl_shared_assets-3.0.0rc11.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
36
+ sl_shared_assets-3.0.0rc11.dist-info/RECORD,,
@@ -1,36 +0,0 @@
1
- sl_shared_assets/__init__.py,sha256=RzYuJclcE8EpbAC1wRb6eFIycPpsEmNvGkndrIxtmis,2197
2
- sl_shared_assets/__init__.pyi,sha256=58fHlHTVMfrX4wDnYC2U_mkNMefw7odPn29nN1UnxFU,2399
3
- sl_shared_assets/cli.py,sha256=R_h_Dlla48mG1LpFDDE9flZ_NyDC9UguRUAYZL6gA9s,18383
4
- sl_shared_assets/cli.pyi,sha256=8ZJK56_jh2QlF3XCN6c7fI6Z022XtehB0eCrQDJbAsU,5515
5
- sl_shared_assets/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
6
- sl_shared_assets/data_classes/__init__.py,sha256=SUDN7gFngUPEa7Da_G0PjXwnF9Q0S4EgvjpKe3KSr5g,1852
7
- sl_shared_assets/data_classes/__init__.pyi,sha256=J-tUXAtGEasacVU1qGFFksvfB1tFdEO-GKs90vSTAcg,2022
8
- sl_shared_assets/data_classes/configuration_data.py,sha256=73IP9e8bESHbYlr0sCCLktU3JScofuSTuLE8N4MIwjs,35389
9
- sl_shared_assets/data_classes/configuration_data.pyi,sha256=Jg4TmrDjEBtQn7zH0140-6pQ1J9ljSuzC0tiysx4qBM,10772
10
- sl_shared_assets/data_classes/runtime_data.py,sha256=O98BZg7i7cEUlpIE16JswKOwQNRsS5RxVdBzXYvAw00,16543
11
- sl_shared_assets/data_classes/runtime_data.pyi,sha256=i8CuZd9p0Nu43xhpE62pB07AiovZIgtMZYN5wQjz-r0,6861
12
- sl_shared_assets/data_classes/session_data.py,sha256=nvGW8TagsGmxH3Eh63zosKHJAfOT4U_2ukfxy3frum8,45575
13
- sl_shared_assets/data_classes/session_data.pyi,sha256=QEoxKdcaa0lwJ8Bv4rsvAiC32lwpagcsnsnRK1x0AqA,14152
14
- sl_shared_assets/data_classes/surgery_data.py,sha256=qsMj3NkjhylAT9b_wHBY-1XwTu2xsZcZatdECmkA7Bs,7437
15
- sl_shared_assets/data_classes/surgery_data.pyi,sha256=rf59lJ3tGSYKHQlEGXg75MnjajBwl0DYhL4TClAO4SM,2605
16
- sl_shared_assets/server/__init__.py,sha256=w7y73RXXjBrWQsjU5g1QNCv_gsXDYnHos3NpOoR2AHA,452
17
- sl_shared_assets/server/__init__.pyi,sha256=Zc12G90fZdgEMwaVZbFzrRVV1wH_LEj3sxaV3lhk1Cw,316
18
- sl_shared_assets/server/job.py,sha256=DnEVIswZXm9queBgy6MlpIrCosXvQ_tweOeko7LN9yc,19431
19
- sl_shared_assets/server/job.pyi,sha256=uYfOuKgPL1hSHQvy5nmXzFkVjS316F3IZTdT-PmluZU,11663
20
- sl_shared_assets/server/server.py,sha256=MGk1v49aEFeIChMDsiR7CXjVkWwDpD9kA1TK0fwuTXw,32926
21
- sl_shared_assets/server/server.pyi,sha256=5Yxq4txhjtd9w-6U9fPehzMeIZL5GcprVCHd9mPP6FI,15113
22
- sl_shared_assets/tools/__init__.py,sha256=NktXk62E_HHOrO_93z_MVmSd6-Oir3mE4xE9Yr8Qa7U,682
23
- sl_shared_assets/tools/__init__.pyi,sha256=0UXorfCXXmHQOP5z7hODpsqEX0DAkOta5VZqN6FSS-w,623
24
- sl_shared_assets/tools/ascension_tools.py,sha256=XdJC3nibtgqpmH0KG6Q-YZkOLTK3TexZHWVglqW0pl4,14595
25
- sl_shared_assets/tools/ascension_tools.pyi,sha256=c-SI9TYJ1vmJXMV2pSW9Nri4mlySF8MtXqrvRvz5C8s,3705
26
- sl_shared_assets/tools/packaging_tools.py,sha256=QikjeaE_A8FyVJi3cnWLeW-hUXy1-FF1N23muA5VfT4,7526
27
- sl_shared_assets/tools/packaging_tools.pyi,sha256=vgGbAQCExwg-0A5F72MzEhzHxu97Nqg1yuz-5P89ycU,3118
28
- sl_shared_assets/tools/project_management_tools.py,sha256=Z_U0R26w9Le1O-u66gyF5CG8M_YaLFNpH9diQeH1AZQ,29381
29
- sl_shared_assets/tools/project_management_tools.pyi,sha256=4kok98nOZ4KnT-Sg-ZCZYg-WIM5qZqiyK8g1XiiDjHM,10375
30
- sl_shared_assets/tools/transfer_tools.py,sha256=J26kwOp_NpPSY0-xu5FTw9udte-rm_mW1FJyaTNoqQI,6606
31
- sl_shared_assets/tools/transfer_tools.pyi,sha256=FoH7eYZe7guGHfPr0MK5ggO62uXKwD2aJ7h1Bu7PaEE,3294
32
- sl_shared_assets-3.0.0rc9.dist-info/METADATA,sha256=ld-V567zlZD-KHbtRdqSIMivD--AjX_VW-l9WV4Wyuk,49309
33
- sl_shared_assets-3.0.0rc9.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
34
- sl_shared_assets-3.0.0rc9.dist-info/entry_points.txt,sha256=UmO1rl7ly9N7HWPwWyP9E0b5KBUStpBo4TRoqNtizDY,430
35
- sl_shared_assets-3.0.0rc9.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
36
- sl_shared_assets-3.0.0rc9.dist-info/RECORD,,