code-loader 1.0.169.dev2__tar.gz → 1.0.171__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.169.dev2 → code_loader-1.0.171}/PKG-INFO +1 -1
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/inner_leap_binder/leapbinder_decorators.py +12 -12
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/mixpanel_tracker.py +20 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/pyproject.toml +1 -1
- code_loader-1.0.169.dev2/code_loader/contract/metric_metadata_utils.py +0 -36
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/LICENSE +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/README.md +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/__init__.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/contract/__init__.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/contract/datasetclasses.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/contract/enums.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/contract/exceptions.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/contract/mapping.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/contract/responsedataclasses.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/contract/visualizer_classes.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/default_losses.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/default_metrics.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/__init__.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/api.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/cli_config_utils.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/client.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/epoch.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/experiment.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/experiment_context.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/types.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/utils.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/experiment_api/workingspace_config_utils.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/inner_leap_binder/__init__.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/inner_leap_binder/leapbinder.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/leaploader.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/leaploaderbase.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/plot_functions/__init__.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/plot_functions/plot_functions.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/plot_functions/visualize.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/utils.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/visualizers/__init__.py +0 -0
- {code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/visualizers/default_visualizers.py +0 -0
|
@@ -21,7 +21,6 @@ from code_loader.contract.datasetclasses import CustomCallableInterfaceMultiArgs
|
|
|
21
21
|
ConfusionMatrixElement, SamplePreprocessResponse, PredictionTypeHandler, InstanceCallableInterface, ElementInstance, \
|
|
22
22
|
InstanceLengthCallableInterface
|
|
23
23
|
from code_loader.contract.enums import MetricDirection, LeapDataType, DatasetMetadataType, DataStateType
|
|
24
|
-
from code_loader.contract.metric_metadata_utils import resolve_metric_output_metadata
|
|
25
24
|
from code_loader import leap_binder, LeapLoader
|
|
26
25
|
from code_loader.contract.mapping import NodeMapping, NodeMappingType, NodeConnection
|
|
27
26
|
from code_loader.contract.visualizer_classes import LeapImage, LeapImageMask, LeapTextMask, LeapText, LeapGraph, \
|
|
@@ -700,21 +699,21 @@ def tensorleap_custom_metric(name: str,
|
|
|
700
699
|
(f'{user_function.__name__}() validation failed: '
|
|
701
700
|
f'Keys in the compute_insights mapping should be part of result keys. Got key {ci_key}.')
|
|
702
701
|
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
)
|
|
709
|
-
defaulted_direction_keys = {
|
|
710
|
-
key for key in result_keys
|
|
711
|
-
if raw_direction is None or (isinstance(raw_direction, dict) and key not in raw_direction)
|
|
712
|
-
}
|
|
702
|
+
effective_direction = {} if direction is _UNSET else direction if isinstance(direction, dict) else {k:direction for k in result_keys}
|
|
703
|
+
defaulted_direction_keys = result_keys.difference(effective_direction.keys())
|
|
704
|
+
|
|
705
|
+
if defaulted_direction_keys:
|
|
706
|
+
effective_direction = {key: effective_direction.get(key, MetricDirection.Downward) for key in result}
|
|
713
707
|
|
|
714
708
|
leap_binder.setup_container.metrics[-1].metric_handler_data.direction = effective_direction
|
|
715
|
-
leap_binder.setup_container.metrics[-1].metric_handler_data.compute_insights = effective_compute_insights
|
|
716
709
|
|
|
717
710
|
if defaulted_direction_keys and not _call_from_tl_platform:
|
|
711
|
+
if compute_insights is None:
|
|
712
|
+
effective_compute_insights = {}
|
|
713
|
+
elif isinstance(compute_insights, dict):
|
|
714
|
+
effective_compute_insights = compute_insights
|
|
715
|
+
else:
|
|
716
|
+
effective_compute_insights = {k: compute_insights for k in result_keys}
|
|
718
717
|
warning_keys = {key for key in defaulted_direction_keys if effective_compute_insights.get(key, True)}
|
|
719
718
|
if warning_keys:
|
|
720
719
|
store_warning_by_param(
|
|
@@ -1815,3 +1814,4 @@ if not _call_from_tl_platform:
|
|
|
1815
1814
|
|
|
1816
1815
|
|
|
1817
1816
|
|
|
1817
|
+
|
|
@@ -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
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
from typing import Dict, Iterable, Optional, Tuple, Union
|
|
2
|
-
|
|
3
|
-
from code_loader.contract.enums import MetricDirection
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
def resolve_metric_output_metadata(
|
|
7
|
-
direction: Union[None, MetricDirection, Dict[str, MetricDirection]],
|
|
8
|
-
compute_insights: Optional[Union[bool, Dict[str, bool]]],
|
|
9
|
-
result_keys: Iterable[str],
|
|
10
|
-
) -> Tuple[Dict[str, MetricDirection], Dict[str, bool]]:
|
|
11
|
-
result_keys = list(result_keys)
|
|
12
|
-
|
|
13
|
-
if isinstance(direction, dict):
|
|
14
|
-
resolved_direction = {
|
|
15
|
-
key: direction.get(key, MetricDirection.Downward)
|
|
16
|
-
for key in result_keys
|
|
17
|
-
}
|
|
18
|
-
elif isinstance(direction, MetricDirection):
|
|
19
|
-
resolved_direction = {key: direction for key in result_keys}
|
|
20
|
-
else:
|
|
21
|
-
resolved_direction = {
|
|
22
|
-
key: MetricDirection.Downward
|
|
23
|
-
for key in result_keys
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
if isinstance(compute_insights, dict):
|
|
27
|
-
resolved_compute_insights = {
|
|
28
|
-
key: compute_insights.get(key, True)
|
|
29
|
-
for key in result_keys
|
|
30
|
-
}
|
|
31
|
-
elif isinstance(compute_insights, bool):
|
|
32
|
-
resolved_compute_insights = {key: compute_insights for key in result_keys}
|
|
33
|
-
else:
|
|
34
|
-
resolved_compute_insights = {key: True for key in result_keys}
|
|
35
|
-
|
|
36
|
-
return resolved_direction, resolved_compute_insights
|
|
File without changes
|
|
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.169.dev2 → code_loader-1.0.171}/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.169.dev2 → code_loader-1.0.171}/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.169.dev2 → code_loader-1.0.171}/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.169.dev2 → code_loader-1.0.171}/code_loader/inner_leap_binder/leapbinder.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/plot_functions/plot_functions.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{code_loader-1.0.169.dev2 → code_loader-1.0.171}/code_loader/visualizers/default_visualizers.py
RENAMED
|
File without changes
|