podstack 1.3.15__tar.gz → 1.3.17__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.
- {podstack-1.3.15 → podstack-1.3.17}/PKG-INFO +1 -1
- {podstack-1.3.15 → podstack-1.3.17}/podstack/registry/__init__.py +33 -11
- {podstack-1.3.15 → podstack-1.3.17}/podstack/registry/client.py +9 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/registry/experiment.py +20 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack.egg-info/PKG-INFO +1 -1
- {podstack-1.3.15 → podstack-1.3.17}/pyproject.toml +1 -1
- {podstack-1.3.15 → podstack-1.3.17}/LICENSE +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/README.md +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/__init__.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/annotations.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/client.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/exceptions.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/execution.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/gpu_runner.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/models.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/notebook.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/registry/autolog.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/registry/exceptions.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/registry/model.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack/registry/model_utils.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack.egg-info/SOURCES.txt +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack.egg-info/dependency_links.txt +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack.egg-info/requires.txt +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack.egg-info/top_level.txt +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/__init__.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/app.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/exceptions.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/image.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/runner.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/secret.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/utils.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/podstack_gpu/volume.py +0 -0
- {podstack-1.3.15 → podstack-1.3.17}/setup.cfg +0 -0
|
@@ -347,25 +347,47 @@ def load_model(model_name: str, version: int = None, stage: str = None, framewor
|
|
|
347
347
|
def log_dataset(
|
|
348
348
|
name: str,
|
|
349
349
|
path: str = None,
|
|
350
|
+
source_path: str = None,
|
|
351
|
+
df=None,
|
|
352
|
+
context: str = "training",
|
|
353
|
+
split: str = None,
|
|
354
|
+
digest: str = None,
|
|
355
|
+
source_type: str = "local",
|
|
356
|
+
tags: dict = None,
|
|
350
357
|
version: str = None,
|
|
351
358
|
description: str = None,
|
|
352
|
-
digest: str = None,
|
|
353
359
|
num_rows: int = None,
|
|
354
|
-
num_features: int = None
|
|
360
|
+
num_features: int = None,
|
|
355
361
|
):
|
|
356
362
|
"""
|
|
357
|
-
Log dataset
|
|
363
|
+
Log a dataset to the active run.
|
|
358
364
|
|
|
359
365
|
Args:
|
|
360
366
|
name: Dataset name.
|
|
361
|
-
path:
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
367
|
+
path: Local file path or URI.
|
|
368
|
+
source_path: Alias for path.
|
|
369
|
+
df: Optional pandas DataFrame for auto schema/profile computation.
|
|
370
|
+
context: One of "training", "validation", "test".
|
|
371
|
+
split: Alias for context ("train", "val", "test").
|
|
372
|
+
digest: SHA-256 hex digest (auto-computed from path if not provided).
|
|
373
|
+
source_type: One of "local", "s3", "gcs", "url".
|
|
374
|
+
tags: Optional dict of string tags.
|
|
375
|
+
"""
|
|
376
|
+
return _get_client().log_dataset(
|
|
377
|
+
name=name,
|
|
378
|
+
path=path,
|
|
379
|
+
source_path=source_path,
|
|
380
|
+
df=df,
|
|
381
|
+
context=context,
|
|
382
|
+
split=split,
|
|
383
|
+
digest=digest,
|
|
384
|
+
source_type=source_type,
|
|
385
|
+
tags=tags,
|
|
386
|
+
version=version,
|
|
387
|
+
description=description,
|
|
388
|
+
num_rows=num_rows,
|
|
389
|
+
num_features=num_features,
|
|
390
|
+
)
|
|
369
391
|
|
|
370
392
|
|
|
371
393
|
def compare_runs(run_ids: list, metric_keys: list = None) -> dict:
|
|
@@ -977,8 +977,10 @@ class RegistryClient:
|
|
|
977
977
|
self,
|
|
978
978
|
name: str,
|
|
979
979
|
path: str = None,
|
|
980
|
+
source_path: str = None,
|
|
980
981
|
df=None,
|
|
981
982
|
context: str = "training",
|
|
983
|
+
split: str = None,
|
|
982
984
|
digest: str = None,
|
|
983
985
|
source_type: str = "local",
|
|
984
986
|
tags: dict = None,
|
|
@@ -1021,6 +1023,13 @@ class RegistryClient:
|
|
|
1021
1023
|
if not self._active_run:
|
|
1022
1024
|
raise NoActiveRunError()
|
|
1023
1025
|
|
|
1026
|
+
# Aliases
|
|
1027
|
+
if source_path and not path:
|
|
1028
|
+
path = source_path
|
|
1029
|
+
if split:
|
|
1030
|
+
_split_map = {"train": "training", "val": "validation", "valid": "validation", "test": "test"}
|
|
1031
|
+
context = _split_map.get(split.lower(), split)
|
|
1032
|
+
|
|
1024
1033
|
schema: Dict[str, str] = {}
|
|
1025
1034
|
profile: Dict[str, Any] = {}
|
|
1026
1035
|
|
|
@@ -98,6 +98,26 @@ class Dataset:
|
|
|
98
98
|
tags: Dict[str, str] = field(default_factory=dict)
|
|
99
99
|
created_at: Optional[str] = None
|
|
100
100
|
|
|
101
|
+
def __getitem__(self, key: str):
|
|
102
|
+
# Convenience aliases
|
|
103
|
+
if key == "rows":
|
|
104
|
+
return self.profile.get("num_rows")
|
|
105
|
+
if key == "num_features":
|
|
106
|
+
return self.profile.get("num_features")
|
|
107
|
+
if key == "path":
|
|
108
|
+
return self.source
|
|
109
|
+
try:
|
|
110
|
+
return getattr(self, key)
|
|
111
|
+
except AttributeError:
|
|
112
|
+
raise KeyError(key)
|
|
113
|
+
|
|
114
|
+
def get(self, key: str, default=None):
|
|
115
|
+
try:
|
|
116
|
+
val = self[key]
|
|
117
|
+
return val if val is not None else default
|
|
118
|
+
except KeyError:
|
|
119
|
+
return default
|
|
120
|
+
|
|
101
121
|
@classmethod
|
|
102
122
|
def from_dict(cls, data: Dict[str, Any]) -> "Dataset":
|
|
103
123
|
"""Create a Dataset from a dict."""
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|