code-loader 1.0.170__tar.gz → 1.0.172.dev1__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.
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/PKG-INFO +1 -1
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/datasetclasses.py +31 -2
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/inner_leap_binder/leapbinder_decorators.py +2 -3
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/mixpanel_tracker.py +20 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/pyproject.toml +1 -1
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/LICENSE +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/README.md +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/__init__.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/leaploader.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/utils.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/visualizers/default_visualizers.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import warnings
|
|
2
2
|
from dataclasses import dataclass, field
|
|
3
|
-
from typing import Any, Callable, List, Optional, Dict, Union, Type, Literal
|
|
3
|
+
from typing import Any, Callable, Iterable, List, Optional, Dict, Union, Type, Literal, Tuple
|
|
4
4
|
import re
|
|
5
5
|
import numpy as np
|
|
6
6
|
import numpy.typing as npt
|
|
@@ -165,6 +165,36 @@ class MetricHandlerData:
|
|
|
165
165
|
compute_insights: Optional[Union[bool, Dict[str, bool]]] = None
|
|
166
166
|
|
|
167
167
|
|
|
168
|
+
def normalize_metric_handler_settings(
|
|
169
|
+
direction: Union[None, MetricDirection, Dict[str, MetricDirection]],
|
|
170
|
+
compute_insights: Optional[Union[bool, Dict[str, bool]]],
|
|
171
|
+
result_keys: Iterable[str],
|
|
172
|
+
) -> Tuple[Union[None, MetricDirection, Dict[str, MetricDirection]], Optional[Union[bool, Dict[str, bool]]]]:
|
|
173
|
+
ordered_result_keys = list(result_keys)
|
|
174
|
+
if not ordered_result_keys:
|
|
175
|
+
return direction, compute_insights
|
|
176
|
+
|
|
177
|
+
normalized_direction = direction
|
|
178
|
+
if isinstance(direction, MetricDirection):
|
|
179
|
+
normalized_direction = {key: direction for key in ordered_result_keys}
|
|
180
|
+
elif isinstance(direction, dict):
|
|
181
|
+
normalized_direction = {
|
|
182
|
+
key: direction.get(key, MetricDirection.Downward)
|
|
183
|
+
for key in ordered_result_keys
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
normalized_compute_insights = compute_insights
|
|
187
|
+
if isinstance(compute_insights, bool):
|
|
188
|
+
normalized_compute_insights = {key: compute_insights for key in ordered_result_keys}
|
|
189
|
+
elif isinstance(compute_insights, dict):
|
|
190
|
+
normalized_compute_insights = {
|
|
191
|
+
key: compute_insights.get(key, True)
|
|
192
|
+
for key in ordered_result_keys
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return normalized_direction, normalized_compute_insights
|
|
196
|
+
|
|
197
|
+
|
|
168
198
|
@dataclass
|
|
169
199
|
class MetricHandler:
|
|
170
200
|
metric_handler_data: MetricHandlerData
|
|
@@ -272,4 +302,3 @@ class DatasetSample:
|
|
|
272
302
|
state: DataStateEnum
|
|
273
303
|
custom_latent_space: Optional[npt.NDArray[np.float32]] = None
|
|
274
304
|
instance_masks: Optional[Dict[str, ElementInstance]] = None
|
|
275
|
-
|
|
@@ -961,9 +961,8 @@ def tensorleap_metadata(
|
|
|
961
961
|
def _validate_result(result):
|
|
962
962
|
supported_result_types = (type(None), int, str, bool, float, dict, np.floating,
|
|
963
963
|
np.bool_, np.unsignedinteger, np.signedinteger, np.integer)
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
expected_type_name=supported_result_types)
|
|
964
|
+
validate_output_structure(result, func_name=user_function.__name__,
|
|
965
|
+
expected_type_name=supported_result_types)
|
|
967
966
|
assert isinstance(result, supported_result_types), \
|
|
968
967
|
(f'{user_function.__name__}() validation failed: '
|
|
969
968
|
f'Unsupported return type. Got {type(result)}. should be any of {str(supported_result_types)}')
|
|
@@ -13,6 +13,7 @@ import mixpanel # type: ignore[import]
|
|
|
13
13
|
logger = logging.getLogger(__name__)
|
|
14
14
|
|
|
15
15
|
TRACKING_VERSION = '1'
|
|
16
|
+
TL_DISABLE_ANALYTICS_ENV_VAR = 'TL_DISABLE_ANALYTICS'
|
|
16
17
|
|
|
17
18
|
|
|
18
19
|
class AnalyticsEvent(str, Enum):
|
|
@@ -143,6 +144,10 @@ class MixpanelTracker:
|
|
|
143
144
|
# Skip tracking if IS_TENSORLEAP_PLATFORM environment variable is set to 'true'
|
|
144
145
|
if os.environ.get('IS_TENSORLEAP_PLATFORM') == 'true':
|
|
145
146
|
return
|
|
147
|
+
|
|
148
|
+
# Skip tracking if TL_DISABLE_ANALYTICS environment variable is set
|
|
149
|
+
if os.environ.get(TL_DISABLE_ANALYTICS_ENV_VAR):
|
|
150
|
+
return
|
|
146
151
|
|
|
147
152
|
try:
|
|
148
153
|
distinct_id = self._get_distinct_id()
|
|
@@ -199,11 +204,24 @@ def get_tracker() -> MixpanelTracker:
|
|
|
199
204
|
return _tracker
|
|
200
205
|
|
|
201
206
|
|
|
207
|
+
def _is_analytics_disabled() -> bool:
|
|
208
|
+
return bool(os.environ.get(TL_DISABLE_ANALYTICS_ENV_VAR))
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
def disable_analytics() -> None:
|
|
212
|
+
"""Programmatically disable all analytics/Mixpanel tracking."""
|
|
213
|
+
os.environ[TL_DISABLE_ANALYTICS_ENV_VAR] = 'true'
|
|
214
|
+
|
|
215
|
+
|
|
202
216
|
def track_code_loader_loaded(event_properties: Optional[Dict[str, Any]] = None) -> None:
|
|
217
|
+
if _is_analytics_disabled():
|
|
218
|
+
return
|
|
203
219
|
get_tracker().track_code_loader_loaded(event_properties)
|
|
204
220
|
|
|
205
221
|
|
|
206
222
|
def track_integration_test_event(event_name: Union[str, AnalyticsEvent], event_properties: Optional[Dict[str, Any]] = None) -> None:
|
|
223
|
+
if _is_analytics_disabled():
|
|
224
|
+
return
|
|
207
225
|
get_tracker().track_integration_test_event(event_name, event_properties)
|
|
208
226
|
|
|
209
227
|
|
|
@@ -213,6 +231,8 @@ _integration_events_emitted: Set[str] = set()
|
|
|
213
231
|
|
|
214
232
|
def emit_integration_event_once(event_name: Union[str, AnalyticsEvent], props: Dict[str, Any]) -> None:
|
|
215
233
|
"""Emit an integration test event only once per test run."""
|
|
234
|
+
if _is_analytics_disabled():
|
|
235
|
+
return
|
|
216
236
|
event_name_str = str(event_name)
|
|
217
237
|
if event_name_str in _integration_events_emitted:
|
|
218
238
|
return
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/contract/responsedataclasses.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/cli_config_utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/experiment_api/experiment_context.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.170 → code_loader-1.0.172.dev1}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|