deriva-ml 1.17.7__tar.gz → 1.17.10__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.
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/PKG-INFO +1 -2
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/pyproject.toml +2 -2
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/dataset/upload.py +0 -1
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/demo_catalog.py +72 -7
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/execution/execution.py +6 -3
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/execution/workflow.py +1 -1
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml.egg-info/PKG-INFO +1 -2
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml.egg-info/entry_points.txt +1 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml.egg-info/requires.txt +0 -1
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/uv.lock +11 -13
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/.github/release-drafter.yml +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/.github/workflows/publish-docs.yml +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/.github/workflows/release.yml +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/.gitignore +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/LICENSE +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/README.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/.DS_Store +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/Notebooks/DerivaML Create Notes.ipynb +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/Notebooks/DerivaML Dataset.ipynb +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/Notebooks/DerivaML Execution.ipynb +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/Notebooks/DerivaML Features.ipynb +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/Notebooks/DerivaML Ingest.ipynb +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/Notebooks/DerivaML Vocabulary.ipynb +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/assets/ERD.png +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/assets/Launcher.png +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/assets/copy_minid.png +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/assets/deriva-logo.png +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/assets/deriva-ml.pdf +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/assets/sharing-at-home.pdf +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/dataset.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/dataset_aux_classes.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/dataset_bag.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/deriva_definitions.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/deriva_ml_base.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/deriva_model.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/execution.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/execution_configuration.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/feature.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/code-docs/upload.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/index.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/release-notes.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/datasets.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/deriva_ml_structure.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/execution-configuration.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/file-assets.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/identifiers.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/install.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/notebooks.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/docs/user-guide/overview.md +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/mkdocs.yml +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/setup.cfg +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/.DS_Store +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/.DS_Store +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/bump_version.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/base.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/config.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/constants.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/definitions.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/enums.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/ermrest.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/exceptions.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/core/filespec.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/dataset/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/dataset/aux_classes.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/dataset/dataset.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/dataset/dataset_bag.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/dataset/history.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/execution/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/execution/environment.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/execution/execution_configuration.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/feature.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/install_kernel.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/model/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/model/catalog.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/model/database.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/protocols/dataset.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/run_notebook.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/schema/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/schema/annotations.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/schema/check_schema.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/schema/create_schema.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/schema/deriva-ml-reference.json +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/schema/policy.json +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/schema/table_comments_utils.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml/test.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml.egg-info/SOURCES.txt +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml.egg-info/dependency_links.txt +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/src/deriva_ml.egg-info/top_level.txt +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/conftest.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/core/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/core/test_basic_tables.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/core/test_file.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/core/test_vocabulary.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/dataset/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/dataset/demo-catalog-schema.json +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/dataset/deriva-ml-reference.json +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/dataset/eye-ai-catalog-schema.json +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/dataset/test_dataset_version.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/dataset/test_datasets.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/dataset/test_download.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/execution/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/execution/test_execution.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/execution/workflow-test.ipynb +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/execution/workflow-test.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/feature/test_features.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/model/__init__.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/model/test_database.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/model/test_models.py +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/test-files/execution-parameters.json +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/test-files/notebook-parameters.json +0 -0
- {deriva_ml-1.17.7 → deriva_ml-1.17.10}/tests/test_utils.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deriva-ml
|
|
3
|
-
Version: 1.17.
|
|
3
|
+
Version: 1.17.10
|
|
4
4
|
Summary: Utilities to simplify use of Dervia and Pandas to create reproducable ML pipelines
|
|
5
5
|
Author-email: ISRD <isrd-dev@isi.edu>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -12,7 +12,6 @@ Requires-Dist: deriva~=1.7.10
|
|
|
12
12
|
Requires-Dist: deepdiff
|
|
13
13
|
Requires-Dist: nbconvert
|
|
14
14
|
Requires-Dist: pandas
|
|
15
|
-
Requires-Dist: pip-system-certs
|
|
16
15
|
Requires-Dist: pydantic>=2.11
|
|
17
16
|
Requires-Dist: papermill
|
|
18
17
|
Requires-Dist: pandas-stubs==2.2.3.250527
|
|
@@ -14,7 +14,6 @@ dependencies = [
|
|
|
14
14
|
"deepdiff",
|
|
15
15
|
"nbconvert",
|
|
16
16
|
"pandas",
|
|
17
|
-
"pip-system-certs",
|
|
18
17
|
"pydantic>=2.11",
|
|
19
18
|
"papermill",
|
|
20
19
|
"pandas-stubs==2.2.3.250527",
|
|
@@ -35,6 +34,7 @@ deriva-ml-alter-annotation = "deriva_ml.schema_setup.alter_annotation:main"
|
|
|
35
34
|
deriva-ml-run-notebook = "deriva_ml.run_notebook:main"
|
|
36
35
|
deriva-ml-install-kernel = "deriva_ml.install_kernel:main"
|
|
37
36
|
bump-version = "deriva_ml.bump_version:main"
|
|
37
|
+
create-demo-catalog = "deriva_ml.demo_catalog:main"
|
|
38
38
|
|
|
39
39
|
deriva-ml-check-catalog-schema = "deriva_ml.schema.check_schema:main"
|
|
40
40
|
|
|
@@ -111,10 +111,10 @@ dev = [
|
|
|
111
111
|
"mkdocs-jupyter",
|
|
112
112
|
"mkdocstrings[python]",
|
|
113
113
|
"mkdocs-material",
|
|
114
|
+
"pip-system-certs",
|
|
114
115
|
"pytest>=8.4.1",
|
|
115
116
|
"pytest-mock",
|
|
116
117
|
"pytest-coverage>=0.0",
|
|
117
|
-
"pip-system-certs",
|
|
118
118
|
"ruff"
|
|
119
119
|
]
|
|
120
120
|
lint = [
|
|
@@ -295,7 +295,6 @@ def upload_directory(model: DerivaModel, directory: Path | str) -> dict[Any, Fil
|
|
|
295
295
|
# Now upload the files by creating an upload spec and then calling the uploader.
|
|
296
296
|
with TemporaryDirectory() as temp_dir:
|
|
297
297
|
spec_file = Path(temp_dir) / "config.json"
|
|
298
|
-
|
|
299
298
|
with spec_file.open("w+") as cfile:
|
|
300
299
|
json.dump(bulk_upload_configuration(model), cfile)
|
|
301
300
|
uploader = GenericUploader(
|
|
@@ -3,6 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import atexit
|
|
4
4
|
import itertools
|
|
5
5
|
import logging
|
|
6
|
+
import os
|
|
6
7
|
import string
|
|
7
8
|
from collections.abc import Iterator, Sequence
|
|
8
9
|
from datetime import datetime
|
|
@@ -11,7 +12,7 @@ from pathlib import Path
|
|
|
11
12
|
from random import choice, randint, random
|
|
12
13
|
from tempfile import TemporaryDirectory
|
|
13
14
|
|
|
14
|
-
from deriva.core import ErmrestCatalog
|
|
15
|
+
from deriva.core import BaseCLI, ErmrestCatalog
|
|
15
16
|
from deriva.core.ermrest_model import Column, Schema, Table, builtin_types
|
|
16
17
|
from pydantic import BaseModel, ConfigDict
|
|
17
18
|
from requests.exceptions import HTTPError
|
|
@@ -19,7 +20,7 @@ from requests.exceptions import HTTPError
|
|
|
19
20
|
from deriva_ml import DerivaML, MLVocab
|
|
20
21
|
from deriva_ml.core.definitions import RID, BuiltinTypes, ColumnDefinition
|
|
21
22
|
from deriva_ml.dataset.aux_classes import DatasetVersion
|
|
22
|
-
from deriva_ml.execution.execution import Execution
|
|
23
|
+
from deriva_ml.execution.execution import Execution, Workflow
|
|
23
24
|
from deriva_ml.execution.execution_configuration import ExecutionConfiguration
|
|
24
25
|
from deriva_ml.schema import (
|
|
25
26
|
create_ml_catalog,
|
|
@@ -48,11 +49,16 @@ def populate_demo_catalog(ml_instance: DerivaML) -> None:
|
|
|
48
49
|
"Demo Catalog Creation",
|
|
49
50
|
description="A workflow demonstrating how to create a demo catalog.",
|
|
50
51
|
)
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
52
|
+
workflow = Workflow(
|
|
53
|
+
name="Demo Catalog",
|
|
54
|
+
workflow_type="Demo Catalog Creation",
|
|
55
|
+
url="https://github.com/informatics-isi-edu/deriva-ml/blob/main/src/deriva_ml/demo_catalog.py",
|
|
56
|
+
version="1.0.0",
|
|
57
|
+
checksum="27",
|
|
58
|
+
git_root=Path(),
|
|
55
59
|
)
|
|
60
|
+
execution = ml_instance.create_execution(ExecutionConfiguration(workflow=workflow))
|
|
61
|
+
|
|
56
62
|
with execution.execute() as e:
|
|
57
63
|
for s in ss:
|
|
58
64
|
image_file = e.asset_file_path(
|
|
@@ -386,9 +392,12 @@ def create_demo_catalog(
|
|
|
386
392
|
test_catalog = create_ml_catalog(hostname, project_name=project_name)
|
|
387
393
|
if on_exit_delete:
|
|
388
394
|
atexit.register(destroy_demo_catalog, test_catalog)
|
|
395
|
+
|
|
389
396
|
try:
|
|
390
397
|
with TemporaryDirectory() as tmpdir:
|
|
398
|
+
os.chdir(tmpdir) # Do this so we don't get confused if running from a GitHub repo.
|
|
391
399
|
create_domain_schema(test_catalog, domain_schema)
|
|
400
|
+
|
|
392
401
|
ml_instance = DerivaML(
|
|
393
402
|
hostname,
|
|
394
403
|
catalog_id=test_catalog.catalog_id,
|
|
@@ -396,7 +405,6 @@ def create_demo_catalog(
|
|
|
396
405
|
working_dir=tmpdir,
|
|
397
406
|
logging_level=logging_level,
|
|
398
407
|
)
|
|
399
|
-
|
|
400
408
|
if populate or create_features or create_datasets:
|
|
401
409
|
populate_demo_catalog(ml_instance)
|
|
402
410
|
if create_features:
|
|
@@ -428,3 +436,60 @@ class DemoML(DerivaML):
|
|
|
428
436
|
working_dir=working_dir,
|
|
429
437
|
use_minid=use_minid,
|
|
430
438
|
)
|
|
439
|
+
|
|
440
|
+
|
|
441
|
+
class DerivaMLDemoCatalogCLI(BaseCLI):
|
|
442
|
+
"""Main class to part command line arguments and call model"""
|
|
443
|
+
|
|
444
|
+
def __init__(self, description, epilog, **kwargs):
|
|
445
|
+
BaseCLI.__init__(self, description, epilog, **kwargs)
|
|
446
|
+
# Optional domain schema name for the demo catalog. Defaults to None if not provided.
|
|
447
|
+
self.parser.add_argument(
|
|
448
|
+
"--domain_schema",
|
|
449
|
+
type=str,
|
|
450
|
+
default="demo-schema",
|
|
451
|
+
help="Name of the domain schema to create/use for the demo catalog (default: demo-schema).",
|
|
452
|
+
)
|
|
453
|
+
|
|
454
|
+
@staticmethod
|
|
455
|
+
def _coerce_number(val: str):
|
|
456
|
+
"""
|
|
457
|
+
Try to convert a string to int, then float; otherwise return str.
|
|
458
|
+
"""
|
|
459
|
+
try:
|
|
460
|
+
return int(val)
|
|
461
|
+
except ValueError:
|
|
462
|
+
try:
|
|
463
|
+
return float(val)
|
|
464
|
+
except ValueError:
|
|
465
|
+
return val
|
|
466
|
+
|
|
467
|
+
def main(self) -> ErmrestCatalog:
|
|
468
|
+
"""Parse arguments and set up execution environment."""
|
|
469
|
+
args = self.parse_cli()
|
|
470
|
+
if not args.host:
|
|
471
|
+
raise ValueError("Host must be specified.")
|
|
472
|
+
demo_catalog = create_demo_catalog(args.host, args.domain_schema)
|
|
473
|
+
return demo_catalog
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
def main() -> None:
|
|
477
|
+
"""Main entry point for the notebook runner CLI.
|
|
478
|
+
|
|
479
|
+
Creates and runs the DerivaMLRunNotebookCLI instance.
|
|
480
|
+
|
|
481
|
+
Returns:
|
|
482
|
+
None. Executes the CLI.
|
|
483
|
+
"""
|
|
484
|
+
cli = DerivaMLDemoCatalogCLI(description="Create a Deriva ML Sample Catalog", epilog="")
|
|
485
|
+
catalog = cli.main()
|
|
486
|
+
print("Created catalog: {}".format(catalog._server_uri))
|
|
487
|
+
|
|
488
|
+
|
|
489
|
+
if __name__ == "__main__":
|
|
490
|
+
try:
|
|
491
|
+
main()
|
|
492
|
+
except Exception as e:
|
|
493
|
+
print("Error creating catalog:")
|
|
494
|
+
print(e)
|
|
495
|
+
exit(1)
|
|
@@ -384,9 +384,9 @@ class Execution:
|
|
|
384
384
|
file_name="configuration.json",
|
|
385
385
|
asset_types=ExecMetadataType.execution_config.value,
|
|
386
386
|
)
|
|
387
|
-
with Path(cfile).open("w", encoding="utf-8") as config_file:
|
|
388
|
-
json.dump(self.configuration.model_dump(), config_file)
|
|
389
387
|
|
|
388
|
+
with Path(cfile).open("w", encoding="utf-8") as config_file:
|
|
389
|
+
json.dump(self.configuration.model_dump(mode="json"), config_file)
|
|
390
390
|
lock_file = Path(self.configuration.workflow.git_root) / "uv.lock"
|
|
391
391
|
if lock_file.exists():
|
|
392
392
|
_ = self.asset_file_path(
|
|
@@ -920,8 +920,11 @@ class Execution:
|
|
|
920
920
|
|
|
921
921
|
# Determine if we will need to rename an existing file as the asset.
|
|
922
922
|
file_name = Path(file_name)
|
|
923
|
-
|
|
923
|
+
if file_name.name == "_implementations.log":
|
|
924
|
+
# There is a funny bug with S3 hatrac if we have the leading _ in the filename.
|
|
925
|
+
file_name = file_name.with_name("-implementations.log")
|
|
924
926
|
|
|
927
|
+
target_name = Path(rename_file) if file_name.exists() and rename_file else file_name
|
|
925
928
|
asset_path = asset_file_path(
|
|
926
929
|
prefix=self._working_dir,
|
|
927
930
|
exec_rid=self.execution_rid,
|
|
@@ -130,7 +130,7 @@ class Workflow(BaseModel):
|
|
|
130
130
|
self.url, self.checksum = Workflow.get_url_and_checksum(path)
|
|
131
131
|
self.git_root = Workflow._get_git_root(path)
|
|
132
132
|
|
|
133
|
-
self.version = Workflow.get_dynamic_version(root=str(self.git_root or Path.cwd()))
|
|
133
|
+
self.version = self.version or Workflow.get_dynamic_version(root=str(self.git_root or Path.cwd()))
|
|
134
134
|
self._logger = logging.getLogger("deriva_ml")
|
|
135
135
|
return self
|
|
136
136
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: deriva-ml
|
|
3
|
-
Version: 1.17.
|
|
3
|
+
Version: 1.17.10
|
|
4
4
|
Summary: Utilities to simplify use of Dervia and Pandas to create reproducable ML pipelines
|
|
5
5
|
Author-email: ISRD <isrd-dev@isi.edu>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -12,7 +12,6 @@ Requires-Dist: deriva~=1.7.10
|
|
|
12
12
|
Requires-Dist: deepdiff
|
|
13
13
|
Requires-Dist: nbconvert
|
|
14
14
|
Requires-Dist: pandas
|
|
15
|
-
Requires-Dist: pip-system-certs
|
|
16
15
|
Requires-Dist: pydantic>=2.11
|
|
17
16
|
Requires-Dist: papermill
|
|
18
17
|
Requires-Dist: pandas-stubs==2.2.3.250527
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
[console_scripts]
|
|
2
2
|
bump-version = deriva_ml.bump_version:main
|
|
3
|
+
create-demo-catalog = deriva_ml.demo_catalog:main
|
|
3
4
|
deriva-ml-alter-annotation = deriva_ml.schema_setup.alter_annotation:main
|
|
4
5
|
deriva-ml-check-catalog-schema = deriva_ml.schema.check_schema:main
|
|
5
6
|
deriva-ml-create-schema = deriva_ml.schema_setup.create_schema:main
|
|
@@ -22,13 +22,13 @@ name = "aiohttp"
|
|
|
22
22
|
version = "3.13.2"
|
|
23
23
|
source = { registry = "https://pypi.org/simple" }
|
|
24
24
|
dependencies = [
|
|
25
|
-
{ name = "aiohappyeyeballs", marker = "python_full_version >= '3.12'" },
|
|
26
|
-
{ name = "aiosignal", marker = "python_full_version >= '3.12'" },
|
|
27
|
-
{ name = "attrs", marker = "python_full_version >= '3.12'" },
|
|
28
|
-
{ name = "frozenlist", marker = "python_full_version >= '3.12'" },
|
|
29
|
-
{ name = "multidict", marker = "python_full_version >= '3.12'" },
|
|
30
|
-
{ name = "propcache", marker = "python_full_version >= '3.12'" },
|
|
31
|
-
{ name = "yarl", marker = "python_full_version >= '3.12'" },
|
|
25
|
+
{ name = "aiohappyeyeballs", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
26
|
+
{ name = "aiosignal", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
27
|
+
{ name = "attrs", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
28
|
+
{ name = "frozenlist", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
29
|
+
{ name = "multidict", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
30
|
+
{ name = "propcache", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
31
|
+
{ name = "yarl", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
32
32
|
]
|
|
33
33
|
sdist = { url = "https://files.pythonhosted.org/packages/1c/ce/3b83ebba6b3207a7135e5fcaba49706f8a4b6008153b4e30540c982fae26/aiohttp-3.13.2.tar.gz", hash = "sha256:40176a52c186aefef6eb3cad2cdd30cd06e3afbe88fe8ab2af9c0b90f228daca", size = 7837994, upload-time = "2025-10-28T20:59:39.937Z" }
|
|
34
34
|
wheels = [
|
|
@@ -141,7 +141,7 @@ name = "aiosignal"
|
|
|
141
141
|
version = "1.4.0"
|
|
142
142
|
source = { registry = "https://pypi.org/simple" }
|
|
143
143
|
dependencies = [
|
|
144
|
-
{ name = "frozenlist", marker = "python_full_version >= '3.12'" },
|
|
144
|
+
{ name = "frozenlist", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
145
145
|
{ name = "typing-extensions", marker = "python_full_version == '3.12.*'" },
|
|
146
146
|
]
|
|
147
147
|
sdist = { url = "https://files.pythonhosted.org/packages/61/62/06741b579156360248d1ec624842ad0edf697050bbaf7c3e46394e106ad1/aiosignal-1.4.0.tar.gz", hash = "sha256:f47eecd9468083c2029cc99945502cb7708b082c232f9aca65da147157b251c7", size = 25007, upload-time = "2025-07-03T22:54:43.528Z" }
|
|
@@ -879,7 +879,6 @@ dependencies = [
|
|
|
879
879
|
{ name = "pandas" },
|
|
880
880
|
{ name = "pandas-stubs" },
|
|
881
881
|
{ name = "papermill" },
|
|
882
|
-
{ name = "pip-system-certs" },
|
|
883
882
|
{ name = "pydantic" },
|
|
884
883
|
{ name = "pyyaml" },
|
|
885
884
|
{ name = "regex" },
|
|
@@ -919,7 +918,6 @@ requires-dist = [
|
|
|
919
918
|
{ name = "pandas" },
|
|
920
919
|
{ name = "pandas-stubs", specifier = "==2.2.3.250527" },
|
|
921
920
|
{ name = "papermill" },
|
|
922
|
-
{ name = "pip-system-certs" },
|
|
923
921
|
{ name = "pydantic", specifier = ">=2.11" },
|
|
924
922
|
{ name = "pyyaml" },
|
|
925
923
|
{ name = "regex", specifier = "~=2024.7.24" },
|
|
@@ -4072,9 +4070,9 @@ name = "yarl"
|
|
|
4072
4070
|
version = "1.22.0"
|
|
4073
4071
|
source = { registry = "https://pypi.org/simple" }
|
|
4074
4072
|
dependencies = [
|
|
4075
|
-
{ name = "idna", marker = "python_full_version >= '3.12'" },
|
|
4076
|
-
{ name = "multidict", marker = "python_full_version >= '3.12'" },
|
|
4077
|
-
{ name = "propcache", marker = "python_full_version >= '3.12'" },
|
|
4073
|
+
{ name = "idna", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
4074
|
+
{ name = "multidict", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
4075
|
+
{ name = "propcache", marker = "python_full_version >= '3.12' and python_full_version < '3.14'" },
|
|
4078
4076
|
]
|
|
4079
4077
|
sdist = { url = "https://files.pythonhosted.org/packages/57/63/0c6ebca57330cd313f6102b16dd57ffaf3ec4c83403dcb45dbd15c6f3ea1/yarl-1.22.0.tar.gz", hash = "sha256:bebf8557577d4401ba8bd9ff33906f1376c877aa78d1fe216ad01b4d6745af71", size = 187169, upload-time = "2025-10-06T14:12:55.963Z" }
|
|
4080
4078
|
wheels = [
|
|
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
|
|
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
|
|
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
|
|
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
|