dayhoff-tools 1.1.10__py3-none-any.whl → 1.13.12__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.
- dayhoff_tools/__init__.py +10 -0
- dayhoff_tools/cli/cloud_commands.py +179 -43
- dayhoff_tools/cli/engine1/__init__.py +323 -0
- dayhoff_tools/cli/engine1/engine_core.py +703 -0
- dayhoff_tools/cli/engine1/engine_lifecycle.py +136 -0
- dayhoff_tools/cli/engine1/engine_maintenance.py +431 -0
- dayhoff_tools/cli/engine1/engine_management.py +505 -0
- dayhoff_tools/cli/engine1/shared.py +501 -0
- dayhoff_tools/cli/engine1/studio_commands.py +825 -0
- dayhoff_tools/cli/engines_studios/__init__.py +6 -0
- dayhoff_tools/cli/engines_studios/api_client.py +351 -0
- dayhoff_tools/cli/engines_studios/auth.py +144 -0
- dayhoff_tools/cli/engines_studios/engine-studio-cli.md +1230 -0
- dayhoff_tools/cli/engines_studios/engine_commands.py +1151 -0
- dayhoff_tools/cli/engines_studios/progress.py +260 -0
- dayhoff_tools/cli/engines_studios/simulators/cli-simulators.md +151 -0
- dayhoff_tools/cli/engines_studios/simulators/demo.sh +75 -0
- dayhoff_tools/cli/engines_studios/simulators/engine_list_simulator.py +319 -0
- dayhoff_tools/cli/engines_studios/simulators/engine_status_simulator.py +369 -0
- dayhoff_tools/cli/engines_studios/simulators/idle_status_simulator.py +476 -0
- dayhoff_tools/cli/engines_studios/simulators/simulator_utils.py +180 -0
- dayhoff_tools/cli/engines_studios/simulators/studio_list_simulator.py +374 -0
- dayhoff_tools/cli/engines_studios/simulators/studio_status_simulator.py +164 -0
- dayhoff_tools/cli/engines_studios/studio_commands.py +755 -0
- dayhoff_tools/cli/main.py +106 -7
- dayhoff_tools/cli/utility_commands.py +896 -179
- dayhoff_tools/deployment/base.py +70 -6
- dayhoff_tools/deployment/deploy_aws.py +165 -25
- dayhoff_tools/deployment/deploy_gcp.py +78 -5
- dayhoff_tools/deployment/deploy_utils.py +20 -7
- dayhoff_tools/deployment/job_runner.py +9 -4
- dayhoff_tools/deployment/processors.py +230 -418
- dayhoff_tools/deployment/swarm.py +47 -12
- dayhoff_tools/embedders.py +28 -26
- dayhoff_tools/fasta.py +181 -64
- dayhoff_tools/warehouse.py +268 -1
- {dayhoff_tools-1.1.10.dist-info → dayhoff_tools-1.13.12.dist-info}/METADATA +20 -5
- dayhoff_tools-1.13.12.dist-info/RECORD +54 -0
- {dayhoff_tools-1.1.10.dist-info → dayhoff_tools-1.13.12.dist-info}/WHEEL +1 -1
- dayhoff_tools-1.1.10.dist-info/RECORD +0 -32
- {dayhoff_tools-1.1.10.dist-info → dayhoff_tools-1.13.12.dist-info}/entry_points.txt +0 -0
dayhoff_tools/warehouse.py
CHANGED
|
@@ -1,11 +1,91 @@
|
|
|
1
1
|
import os
|
|
2
2
|
import subprocess
|
|
3
|
+
import sys
|
|
3
4
|
from datetime import datetime
|
|
4
5
|
from io import StringIO
|
|
5
6
|
from pathlib import Path
|
|
6
7
|
from zoneinfo import ZoneInfo
|
|
7
8
|
|
|
8
|
-
|
|
9
|
+
# Import cloud helper lazily inside functions to avoid heavy deps at module load
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def _find_project_root() -> Path | None:
|
|
13
|
+
"""
|
|
14
|
+
Find the project root by searching upwards from the current directory for
|
|
15
|
+
a `.git` directory or a `pyproject.toml` file.
|
|
16
|
+
|
|
17
|
+
Returns:
|
|
18
|
+
The path to the project root, or None if not found.
|
|
19
|
+
"""
|
|
20
|
+
current_dir = Path.cwd().resolve()
|
|
21
|
+
while current_dir != current_dir.parent:
|
|
22
|
+
if (current_dir / ".git").is_dir() or (
|
|
23
|
+
current_dir / "pyproject.toml"
|
|
24
|
+
).is_file():
|
|
25
|
+
return current_dir
|
|
26
|
+
current_dir = current_dir.parent
|
|
27
|
+
# Check the final directory in the hierarchy (e.g., '/')
|
|
28
|
+
if (current_dir / ".git").is_dir() or (current_dir / "pyproject.toml").is_file():
|
|
29
|
+
return current_dir
|
|
30
|
+
return None
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _warn_if_gcp_default_sa(force_prompt: bool = False) -> None:
|
|
34
|
+
"""Warn the user when the active gcloud principal is the default VM service
|
|
35
|
+
account. See detailed docstring later in file (duplicate for early
|
|
36
|
+
availability)."""
|
|
37
|
+
|
|
38
|
+
from dayhoff_tools.cli import cloud_commands as _cc
|
|
39
|
+
|
|
40
|
+
try:
|
|
41
|
+
impersonation = _cc._get_current_gcp_impersonation()
|
|
42
|
+
user = _cc._get_current_gcp_user()
|
|
43
|
+
active = impersonation if impersonation != "None" else user
|
|
44
|
+
short = _cc._get_short_name(active)
|
|
45
|
+
|
|
46
|
+
# Determine if user creds are valid
|
|
47
|
+
auth_valid = _cc._is_gcp_user_authenticated()
|
|
48
|
+
except Exception:
|
|
49
|
+
# If any helper errors out, don't block execution
|
|
50
|
+
return
|
|
51
|
+
|
|
52
|
+
problem_type = None # "default_sa" | "stale"
|
|
53
|
+
if short == "default VM service account":
|
|
54
|
+
problem_type = "default_sa"
|
|
55
|
+
elif not auth_valid:
|
|
56
|
+
problem_type = "stale"
|
|
57
|
+
|
|
58
|
+
if problem_type is None:
|
|
59
|
+
return # Everything looks good
|
|
60
|
+
|
|
61
|
+
YELLOW = getattr(_cc, "YELLOW", "\033[0;33m")
|
|
62
|
+
BLUE = getattr(_cc, "BLUE", "\033[0;36m")
|
|
63
|
+
RED = getattr(_cc, "RED", "\033[0;31m")
|
|
64
|
+
NC = getattr(_cc, "NC", "\033[0m")
|
|
65
|
+
|
|
66
|
+
if problem_type == "default_sa":
|
|
67
|
+
msg_body = (
|
|
68
|
+
f"You are currently authenticated as the *default VM service account*.\n"
|
|
69
|
+
f" This will block gsutil/DVC access to private buckets (e.g. warehouse)."
|
|
70
|
+
)
|
|
71
|
+
else: # stale creds
|
|
72
|
+
msg_body = (
|
|
73
|
+
f"Your GCP credentials appear to be *expired/stale*.\n"
|
|
74
|
+
f" Re-authenticate to refresh the access token."
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
print(
|
|
78
|
+
f"{YELLOW}⚠ {msg_body}{NC}\n"
|
|
79
|
+
f"{YELLOW} Run {BLUE}dh gcp login{YELLOW} or {BLUE}dh gcp use-devcon{YELLOW} before retrying.{NC}",
|
|
80
|
+
file=sys.stderr,
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
if force_prompt and sys.stdin.isatty() and sys.stdout.isatty():
|
|
84
|
+
import questionary
|
|
85
|
+
|
|
86
|
+
if not questionary.confirm("Proceed anyway?", default=False).ask():
|
|
87
|
+
print(f"{RED}Aborted due to unsafe GCP credentials.{NC}", file=sys.stderr)
|
|
88
|
+
raise SystemExit(1)
|
|
9
89
|
|
|
10
90
|
|
|
11
91
|
def human_readable_size(size_bytes):
|
|
@@ -74,6 +154,8 @@ def format_yaml_with_meta_spacing(yaml_str: str) -> str:
|
|
|
74
154
|
|
|
75
155
|
def update_dvc_files(directory):
|
|
76
156
|
"""Traverse directory and update .dvc files with human-readable size, preserving existing formatting"""
|
|
157
|
+
from ruamel.yaml import YAML
|
|
158
|
+
|
|
77
159
|
yaml = YAML()
|
|
78
160
|
yaml.preserve_quotes = True
|
|
79
161
|
yaml.indent(mapping=2, sequence=4, offset=2)
|
|
@@ -188,6 +270,8 @@ def import_from_warehouse(
|
|
|
188
270
|
subprocess.run(command, check=True)
|
|
189
271
|
|
|
190
272
|
# Copy meta section from warehouse_path to final_path.dvc
|
|
273
|
+
from ruamel.yaml import YAML
|
|
274
|
+
|
|
191
275
|
yaml = YAML()
|
|
192
276
|
yaml.preserve_quotes = True
|
|
193
277
|
yaml.indent(mapping=2, sequence=4, offset=2)
|
|
@@ -248,6 +332,8 @@ def add_to_warehouse(
|
|
|
248
332
|
|
|
249
333
|
# Process each ancestor .dvc file
|
|
250
334
|
ancestors = []
|
|
335
|
+
from ruamel.yaml import YAML
|
|
336
|
+
|
|
251
337
|
yaml_loader = YAML()
|
|
252
338
|
yaml_loader.preserve_quotes = True
|
|
253
339
|
yaml_loader.indent(mapping=2, sequence=4, offset=2)
|
|
@@ -416,3 +502,184 @@ def get_from_warehouse(
|
|
|
416
502
|
subprocess.run(command, check=True)
|
|
417
503
|
|
|
418
504
|
return final_path
|
|
505
|
+
|
|
506
|
+
|
|
507
|
+
def get_ancestry(filepath: str) -> None:
|
|
508
|
+
"""Take a .dvc file created from import, and generate an ancestry entry
|
|
509
|
+
that can be manually copied into other .dvc files."""
|
|
510
|
+
with open(filepath, "r") as file:
|
|
511
|
+
assert filepath.endswith(".dvc"), "ERROR: Not a .dvc file"
|
|
512
|
+
import yaml
|
|
513
|
+
|
|
514
|
+
ancestor_content = yaml.safe_load(file)
|
|
515
|
+
|
|
516
|
+
error_msg = "Unexpected file structure. Are you sure this is a .dvc file generated from `dvc import`?"
|
|
517
|
+
assert "deps" in ancestor_content, error_msg
|
|
518
|
+
|
|
519
|
+
error_msg = "Please only reference data imported from main branches."
|
|
520
|
+
assert "rev" not in ancestor_content["deps"][0]["repo"], error_msg
|
|
521
|
+
|
|
522
|
+
ancestor_info = {
|
|
523
|
+
"name": os.path.basename(ancestor_content["outs"][0]["path"]),
|
|
524
|
+
"file_md5_hash": ancestor_content["outs"][0]["md5"],
|
|
525
|
+
"size": ancestor_content["outs"][0]["size"],
|
|
526
|
+
"repo_url": ancestor_content["deps"][0]["repo"]["url"],
|
|
527
|
+
"repo_path": ancestor_content["deps"][0]["path"],
|
|
528
|
+
"commit_hash": ancestor_content["deps"][0]["repo"]["rev_lock"],
|
|
529
|
+
}
|
|
530
|
+
print()
|
|
531
|
+
yaml.safe_dump(
|
|
532
|
+
[ancestor_info], sys.stdout, default_flow_style=False, sort_keys=False
|
|
533
|
+
)
|
|
534
|
+
|
|
535
|
+
|
|
536
|
+
def import_from_warehouse_typer() -> None:
|
|
537
|
+
"""Import a file from warehouse.
|
|
538
|
+
|
|
539
|
+
Emits an early warning if the active GCP credentials are the *default VM
|
|
540
|
+
service account* because this will prevent DVC/gsutil from accessing the
|
|
541
|
+
warehouse bucket. The user can abort the command when running
|
|
542
|
+
interactively.
|
|
543
|
+
"""
|
|
544
|
+
|
|
545
|
+
# Early-exit guard for wrong GCP credentials
|
|
546
|
+
_warn_if_gcp_default_sa(force_prompt=True)
|
|
547
|
+
|
|
548
|
+
# Import only when the function is called
|
|
549
|
+
import questionary
|
|
550
|
+
|
|
551
|
+
# Ensure execution from root directory
|
|
552
|
+
project_root = _find_project_root()
|
|
553
|
+
cwd = Path.cwd()
|
|
554
|
+
if not project_root or project_root != cwd:
|
|
555
|
+
error_msg = (
|
|
556
|
+
"This command must be run from the project's root directory, which is"
|
|
557
|
+
" expected to contain a `.git` folder or a `pyproject.toml` file.\n"
|
|
558
|
+
f"Current directory: {cwd}"
|
|
559
|
+
)
|
|
560
|
+
if project_root:
|
|
561
|
+
error_msg += f"\nDetected project root: {project_root}"
|
|
562
|
+
raise Exception(error_msg)
|
|
563
|
+
|
|
564
|
+
# Use questionary for prompts instead of typer
|
|
565
|
+
warehouse_path = questionary.text("Warehouse path:").ask()
|
|
566
|
+
|
|
567
|
+
# Provide multiple-choice options for output folder
|
|
568
|
+
output_folder_choice = questionary.select(
|
|
569
|
+
"Output folder:",
|
|
570
|
+
choices=["data/imports", "same_as_warehouse", "Custom path..."],
|
|
571
|
+
).ask()
|
|
572
|
+
|
|
573
|
+
# If custom path is selected, ask for the path
|
|
574
|
+
if output_folder_choice == "Custom path...":
|
|
575
|
+
output_folder = questionary.text("Enter custom output folder:").ask()
|
|
576
|
+
else:
|
|
577
|
+
output_folder = output_folder_choice
|
|
578
|
+
|
|
579
|
+
branch = questionary.text("Branch (default: main):", default="main").ask()
|
|
580
|
+
|
|
581
|
+
final_path = import_from_warehouse(
|
|
582
|
+
warehouse_path=warehouse_path,
|
|
583
|
+
output_folder=output_folder,
|
|
584
|
+
branch=branch,
|
|
585
|
+
)
|
|
586
|
+
|
|
587
|
+
|
|
588
|
+
def get_from_warehouse_typer() -> None:
|
|
589
|
+
"""Get a file from warehouse using `dvc get`.
|
|
590
|
+
|
|
591
|
+
Emits an early warning if the active GCP credentials are the *default VM
|
|
592
|
+
service account* because this will prevent DVC/gsutil from accessing the
|
|
593
|
+
warehouse bucket. The user can abort the command when running
|
|
594
|
+
interactively.
|
|
595
|
+
"""
|
|
596
|
+
|
|
597
|
+
# Early-exit guard for wrong GCP credentials
|
|
598
|
+
_warn_if_gcp_default_sa(force_prompt=True)
|
|
599
|
+
|
|
600
|
+
# Import only when the function is called
|
|
601
|
+
import questionary
|
|
602
|
+
|
|
603
|
+
# Ensure execution from root directory
|
|
604
|
+
project_root = _find_project_root()
|
|
605
|
+
cwd = Path.cwd()
|
|
606
|
+
if not project_root or project_root != cwd:
|
|
607
|
+
error_msg = (
|
|
608
|
+
"This command must be run from the project's root directory, which is"
|
|
609
|
+
" expected to contain a `.git` folder or a `pyproject.toml` file.\n"
|
|
610
|
+
f"Current directory: {cwd}"
|
|
611
|
+
)
|
|
612
|
+
if project_root:
|
|
613
|
+
error_msg += f"\nDetected project root: {project_root}"
|
|
614
|
+
raise Exception(error_msg)
|
|
615
|
+
|
|
616
|
+
# Use questionary for prompts instead of typer
|
|
617
|
+
warehouse_path = questionary.text("Warehouse path:").ask()
|
|
618
|
+
|
|
619
|
+
# Provide multiple-choice options for output folder
|
|
620
|
+
output_folder_choice = questionary.select(
|
|
621
|
+
"Output folder:",
|
|
622
|
+
choices=["data/imports", "same_as_warehouse", "Custom path..."],
|
|
623
|
+
).ask()
|
|
624
|
+
|
|
625
|
+
# If custom path is selected, ask for the path
|
|
626
|
+
if output_folder_choice == "Custom path...":
|
|
627
|
+
output_folder = questionary.text("Enter custom output folder:").ask()
|
|
628
|
+
else:
|
|
629
|
+
output_folder = output_folder_choice
|
|
630
|
+
|
|
631
|
+
branch = questionary.text("Branch (default: main):", default="main").ask()
|
|
632
|
+
|
|
633
|
+
final_path = get_from_warehouse(
|
|
634
|
+
warehouse_path=warehouse_path,
|
|
635
|
+
output_folder=output_folder,
|
|
636
|
+
branch=branch,
|
|
637
|
+
)
|
|
638
|
+
|
|
639
|
+
|
|
640
|
+
def add_to_warehouse_typer() -> None:
|
|
641
|
+
"""Add a new data file to warehouse and enrich its generated .dvc file.
|
|
642
|
+
|
|
643
|
+
As with *dh wimport*, this command fails when the user is logged in with
|
|
644
|
+
the default VM service account. A guard therefore warns the user first
|
|
645
|
+
and allows them to abort interactively.
|
|
646
|
+
"""
|
|
647
|
+
|
|
648
|
+
# Early-exit guard for wrong GCP credentials
|
|
649
|
+
_warn_if_gcp_default_sa(force_prompt=True)
|
|
650
|
+
|
|
651
|
+
# Import only when the function is called
|
|
652
|
+
import questionary
|
|
653
|
+
|
|
654
|
+
# Ensure execution from root directory
|
|
655
|
+
project_root = _find_project_root()
|
|
656
|
+
cwd = Path.cwd()
|
|
657
|
+
if not project_root or project_root != cwd:
|
|
658
|
+
error_msg = (
|
|
659
|
+
"This command must be run from the project's root directory, which is"
|
|
660
|
+
" expected to contain a `.git` folder or a `pyproject.toml` file.\n"
|
|
661
|
+
f"Current directory: {cwd}"
|
|
662
|
+
)
|
|
663
|
+
if project_root:
|
|
664
|
+
error_msg += f"\nDetected project root: {project_root}"
|
|
665
|
+
raise Exception(error_msg)
|
|
666
|
+
|
|
667
|
+
# Prompt for the data file path
|
|
668
|
+
warehouse_path = questionary.text("Data file to be registered:").ask()
|
|
669
|
+
|
|
670
|
+
# Prompt for the ancestor .dvc file paths
|
|
671
|
+
ancestor_dvc_paths = []
|
|
672
|
+
print("\nEnter the path of all ancestor .dvc files (or hit Enter to finish).")
|
|
673
|
+
print("These files must be generated by `dvc import` or `dh wimport`.")
|
|
674
|
+
while True:
|
|
675
|
+
ancestor_path = questionary.text("Ancestor path: ").ask()
|
|
676
|
+
if ancestor_path:
|
|
677
|
+
ancestor_dvc_paths.append(ancestor_path)
|
|
678
|
+
else:
|
|
679
|
+
print()
|
|
680
|
+
break
|
|
681
|
+
|
|
682
|
+
dvc_path = add_to_warehouse(
|
|
683
|
+
warehouse_path=warehouse_path,
|
|
684
|
+
ancestor_dvc_paths=ancestor_dvc_paths,
|
|
685
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
Metadata-Version: 2.
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
2
|
Name: dayhoff-tools
|
|
3
|
-
Version: 1.
|
|
3
|
+
Version: 1.13.12
|
|
4
4
|
Summary: Common tools for all the repos at Dayhoff Labs
|
|
5
5
|
Author: Daniel Martin-Alarcon
|
|
6
6
|
Author-email: dma@dayhofflabs.com
|
|
@@ -10,23 +10,36 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
10
10
|
Classifier: Programming Language :: Python :: 3.11
|
|
11
11
|
Classifier: Programming Language :: Python :: 3.12
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
14
|
+
Provides-Extra: embedders
|
|
13
15
|
Provides-Extra: full
|
|
14
16
|
Requires-Dist: biopython (>=1.84) ; extra == "full"
|
|
15
|
-
Requires-Dist:
|
|
17
|
+
Requires-Dist: biopython (>=1.85) ; extra == "embedders"
|
|
18
|
+
Requires-Dist: boto3 (>=1.36.8)
|
|
16
19
|
Requires-Dist: docker (>=7.1.0) ; extra == "full"
|
|
20
|
+
Requires-Dist: fair-esm (>=2.0.0) ; extra == "embedders"
|
|
17
21
|
Requires-Dist: fair-esm (>=2.0.0) ; extra == "full"
|
|
18
22
|
Requires-Dist: firebase-admin (>=6.5.0)
|
|
19
23
|
Requires-Dist: h5py (>=3.11.0) ; extra == "full"
|
|
20
|
-
Requires-Dist:
|
|
24
|
+
Requires-Dist: h5py (>=3.13.0) ; extra == "embedders"
|
|
25
|
+
Requires-Dist: numpy (>=1.26.4) ; extra == "embedders"
|
|
26
|
+
Requires-Dist: pandas (>=2.2.0,<2.2.3) ; extra == "embedders"
|
|
27
|
+
Requires-Dist: pandas (>=2.2.0,<2.2.3) ; extra == "full"
|
|
21
28
|
Requires-Dist: pyyaml (>=6.0)
|
|
22
29
|
Requires-Dist: questionary (>=2.0.1)
|
|
23
30
|
Requires-Dist: rdkit-pypi (>=2022.9.5) ; extra == "full"
|
|
24
31
|
Requires-Dist: requests (>=2.31.0)
|
|
32
|
+
Requires-Dist: sentencepiece (>=0.2.0) ; extra == "embedders"
|
|
25
33
|
Requires-Dist: sentencepiece (>=0.2.0) ; extra == "full"
|
|
26
34
|
Requires-Dist: sqlalchemy (>=2.0.40,<3.0.0) ; extra == "full"
|
|
27
35
|
Requires-Dist: toml (>=0.10)
|
|
36
|
+
Requires-Dist: torch (>=2.4.0) ; extra == "embedders"
|
|
37
|
+
Requires-Dist: tqdm (>=4.67.1) ; extra == "embedders"
|
|
38
|
+
Requires-Dist: tqdm (>=4.67.1) ; extra == "full"
|
|
28
39
|
Requires-Dist: transformers (==4.36.2) ; extra == "full"
|
|
40
|
+
Requires-Dist: transformers (>=4.36.2) ; extra == "embedders"
|
|
29
41
|
Requires-Dist: typer (>=0.9.0)
|
|
42
|
+
Requires-Dist: tzdata (>=2025.2)
|
|
30
43
|
Description-Content-Type: text/markdown
|
|
31
44
|
|
|
32
45
|
# dayhoff-tools
|
|
@@ -40,7 +53,9 @@ The base package includes minimal dependencies required for core CLI functionali
|
|
|
40
53
|
```bash
|
|
41
54
|
pip install dayhoff-tools
|
|
42
55
|
# or
|
|
43
|
-
|
|
56
|
+
uv add dayhoff-tools
|
|
57
|
+
# or, for the special case of installing it in the DHT repo itself,
|
|
58
|
+
uv pip install -e .[full]
|
|
44
59
|
```
|
|
45
60
|
|
|
46
61
|
### Optional Dependencies
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
dayhoff_tools/__init__.py,sha256=M5zThPyEBRYa5CfwlzKhcqTevWn3OKu62cjV6Zqie2A,469
|
|
2
|
+
dayhoff_tools/chemistry/standardizer.py,sha256=uMn7VwHnx02nc404eO6fRuS4rsl4dvSPf2ElfZDXEpY,11188
|
|
3
|
+
dayhoff_tools/chemistry/utils.py,sha256=jt-7JgF-GeeVC421acX-bobKbLU_X94KNOW24p_P-_M,2257
|
|
4
|
+
dayhoff_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
dayhoff_tools/cli/cloud_commands.py,sha256=xrWQZm48e09GTh8RmYh3JqXUzW8mMy07dHk_77LqZx8,41199
|
|
6
|
+
dayhoff_tools/cli/engine1/__init__.py,sha256=RE45X2IPCNUvQp6_OHI2lbjwoqexkH3roUPccIHkeJo,9540
|
|
7
|
+
dayhoff_tools/cli/engine1/engine_core.py,sha256=TECO6766GCZTtbxOY7QRggwmjpMH9JZSuxjbwF46unU,27061
|
|
8
|
+
dayhoff_tools/cli/engine1/engine_lifecycle.py,sha256=_Dk-EZs_qbm8APdOuGOuxhlbK6RgkkoLk2nrwKoo1-A,4519
|
|
9
|
+
dayhoff_tools/cli/engine1/engine_maintenance.py,sha256=S9w2_Ko2C3zKpzOux-iG8QUYn0sIua6oJkC8d-7HVxw,16301
|
|
10
|
+
dayhoff_tools/cli/engine1/engine_management.py,sha256=s_H3FtMlKsdfzR8pwV-j2W2QX-Fypkqj2kPC0aTqC1A,19072
|
|
11
|
+
dayhoff_tools/cli/engine1/shared.py,sha256=Ecx6I1jtzmxQDn3BezKpgpQ4SJeZf4SZjUCLg-67p80,16844
|
|
12
|
+
dayhoff_tools/cli/engine1/studio_commands.py,sha256=VwTQujz32-uMcYusDRE73SdzRpgvIkv7ZAF4zRv6AzA,30266
|
|
13
|
+
dayhoff_tools/cli/engines_studios/__init__.py,sha256=E6aG0C6qjJnJuClemSKRFlYvLUL49MQZOvfqNQ7SDKs,159
|
|
14
|
+
dayhoff_tools/cli/engines_studios/api_client.py,sha256=7puTEpr3ukcguZr5aqRaSXLKM9Et799lnXwiywPvPz8,13459
|
|
15
|
+
dayhoff_tools/cli/engines_studios/auth.py,sha256=rwetV5hp4jSvK8FyvKgXCnezLOZx1aW8oiSDc6U83iE,5189
|
|
16
|
+
dayhoff_tools/cli/engines_studios/engine-studio-cli.md,sha256=or4k7ZZKPMTkvu67PdcUTE2_cxjnj0HQxxTuJZR1uiA,29924
|
|
17
|
+
dayhoff_tools/cli/engines_studios/engine_commands.py,sha256=8utssuiLfxrff3Pk3PjMSUIVMU83mm9N8-Ny1uQr9es,38371
|
|
18
|
+
dayhoff_tools/cli/engines_studios/progress.py,sha256=VW70t7sEHlbLpCi6LOaY19Rp1Kx6Rt9CKNnmaZWFteA,9496
|
|
19
|
+
dayhoff_tools/cli/engines_studios/simulators/cli-simulators.md,sha256=FZJl6nehdr2Duht2cx3yijcak0yKyOaHTrTzvFTAfZs,4976
|
|
20
|
+
dayhoff_tools/cli/engines_studios/simulators/demo.sh,sha256=8tYABSCxLNXqGs-4r071V9mpKNZ5DTQ34WZ-v3d5s94,5364
|
|
21
|
+
dayhoff_tools/cli/engines_studios/simulators/engine_list_simulator.py,sha256=vUrB6gV9UX74L5uCRMTVcPmk_1ZOuP1jYJf6cMP7dOE,9525
|
|
22
|
+
dayhoff_tools/cli/engines_studios/simulators/engine_status_simulator.py,sha256=KUm3gA2MiRgGrQV7KURhb5zabM18-30z_ugRjiq5iso,13024
|
|
23
|
+
dayhoff_tools/cli/engines_studios/simulators/idle_status_simulator.py,sha256=F_MfEXdPKNVDCKgJV72QyU2oMG8hLt-Bwic4yFadRXE,17570
|
|
24
|
+
dayhoff_tools/cli/engines_studios/simulators/simulator_utils.py,sha256=HA08pIMJWV3OFrWj3Ca8GldvgJZfFoTOloyLK0UWMgA,6729
|
|
25
|
+
dayhoff_tools/cli/engines_studios/simulators/studio_list_simulator.py,sha256=ntizeR0BJLdJOwCRBKPajc2xT-BL7SNnONxfgxXDgr8,11609
|
|
26
|
+
dayhoff_tools/cli/engines_studios/simulators/studio_status_simulator.py,sha256=6WvpnRawJVaQf_H81zuR1_66igRRVxPxjAt8e69xjp4,5394
|
|
27
|
+
dayhoff_tools/cli/engines_studios/studio_commands.py,sha256=4ul6i8HDHZTffavu1y_j4kwvsDNvjMvYMWbZGXN8nKY,25597
|
|
28
|
+
dayhoff_tools/cli/main.py,sha256=Nz_jtbppmvWKHZydQ0nkt_eejccJE90ces8xCGrerdY,7086
|
|
29
|
+
dayhoff_tools/cli/swarm_commands.py,sha256=5EyKj8yietvT5lfoz8Zx0iQvVaNgc3SJX1z2zQR6o6M,5614
|
|
30
|
+
dayhoff_tools/cli/utility_commands.py,sha256=e2P4dCCtoqMUGNyb0lFBZ6GZpl5Zslm1qqE5qIvsy38,50765
|
|
31
|
+
dayhoff_tools/deployment/base.py,sha256=uZnFvnPQx6pH_HmJbdThweAs3BrxMaDohpE3iX_-yk4,18377
|
|
32
|
+
dayhoff_tools/deployment/deploy_aws.py,sha256=1j16aE4hmln4pQVtcSGuIGVWbOBfWwveytvihjofADo,21519
|
|
33
|
+
dayhoff_tools/deployment/deploy_gcp.py,sha256=xgaOVsUDmP6wSEMYNkm1yRNcVskfdz80qJtCulkBIAM,8860
|
|
34
|
+
dayhoff_tools/deployment/deploy_utils.py,sha256=KyUFZZWn8NGT9QpR0HGqkX-huOFubvYCabko9SlC5Gg,26516
|
|
35
|
+
dayhoff_tools/deployment/job_runner.py,sha256=hljvFpH2Bw96uYyUup5Ths72PZRL_X27KxlYzBMgguo,5086
|
|
36
|
+
dayhoff_tools/deployment/processors.py,sha256=LM0CQbr4XCb3AtLbrcuDQm4tYPXsoNqgVJ4WQYDjzJc,12406
|
|
37
|
+
dayhoff_tools/deployment/swarm.py,sha256=YJfvVOcAS8cYcIj2fiN4qwC2leh0I9w5A4px8ZWSF6g,22833
|
|
38
|
+
dayhoff_tools/embedders.py,sha256=1THnmio4FYkBswy_xkIiwT-ZOEMn6ZLbTAa-Uz0-kyE,36615
|
|
39
|
+
dayhoff_tools/fasta.py,sha256=USdemH4c_dNhWXOTAhldvlDi8eLHogsy0YSrOnODB5I,50773
|
|
40
|
+
dayhoff_tools/file_ops.py,sha256=JlGowvr-CUJFidV-4g_JmhUTN9bsYuaxtqKmnKomm-Q,8506
|
|
41
|
+
dayhoff_tools/h5.py,sha256=j1nxxaiHsMidVX_XwB33P1Pz9d7K8ZKiDZwJWQUUQSY,21158
|
|
42
|
+
dayhoff_tools/intake/gcp.py,sha256=uCeEskhbEwJIYpN6ne6siT1dbpTizCjjel-hRe0kReE,3030
|
|
43
|
+
dayhoff_tools/intake/gtdb.py,sha256=58JNLWpr3LkXiIq-ubAcEFeR5DyN9YrA-YEoQI_FzlA,10608
|
|
44
|
+
dayhoff_tools/intake/kegg.py,sha256=SaVbumB4leNTSevamT29yIqHurejw1wmcCC32D5Qyco,965
|
|
45
|
+
dayhoff_tools/intake/mmseqs.py,sha256=uEYzRsthJAlUeRYNCfFtJFE73SbuhfUIS1ygYFkhmtw,6435
|
|
46
|
+
dayhoff_tools/intake/structure.py,sha256=ufN3gAodQxhnt7psK1VTQeu9rKERmo_PhoxIbB4QKMw,27660
|
|
47
|
+
dayhoff_tools/intake/uniprot.py,sha256=BZYJQF63OtPcBBnQ7_P9gulxzJtqyorgyuDiPeOJqE4,16456
|
|
48
|
+
dayhoff_tools/logs.py,sha256=DKdeP0k0kliRcilwvX0mUB2eipO5BdWUeHwh-VnsICs,838
|
|
49
|
+
dayhoff_tools/sqlite.py,sha256=jV55ikF8VpTfeQqqlHSbY8OgfyfHj8zgHNpZjBLos_E,18672
|
|
50
|
+
dayhoff_tools/warehouse.py,sha256=UETBtZD3r7WgvURqfGbyHlT7cxoiVq8isjzMuerKw8I,24475
|
|
51
|
+
dayhoff_tools-1.13.12.dist-info/METADATA,sha256=VtmgJEzSIBc552oggyiNJXoZJZ-0L4aNrPhfv-yKeGc,2981
|
|
52
|
+
dayhoff_tools-1.13.12.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
53
|
+
dayhoff_tools-1.13.12.dist-info/entry_points.txt,sha256=iAf4jteNqW3cJm6CO6czLxjW3vxYKsyGLZ8WGmxamSc,49
|
|
54
|
+
dayhoff_tools-1.13.12.dist-info/RECORD,,
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
dayhoff_tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
2
|
-
dayhoff_tools/chemistry/standardizer.py,sha256=uMn7VwHnx02nc404eO6fRuS4rsl4dvSPf2ElfZDXEpY,11188
|
|
3
|
-
dayhoff_tools/chemistry/utils.py,sha256=jt-7JgF-GeeVC421acX-bobKbLU_X94KNOW24p_P-_M,2257
|
|
4
|
-
dayhoff_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
-
dayhoff_tools/cli/cloud_commands.py,sha256=KiYEuD3nSg8QPWBYfrhdze2La_CJe4iqK-8uOAHyS8U,35827
|
|
6
|
-
dayhoff_tools/cli/main.py,sha256=Ae0Bee2VjRzUge1I2DJoDVqoXpQnKfxGhdiMSmIWJwo,3788
|
|
7
|
-
dayhoff_tools/cli/swarm_commands.py,sha256=5EyKj8yietvT5lfoz8Zx0iQvVaNgc3SJX1z2zQR6o6M,5614
|
|
8
|
-
dayhoff_tools/cli/utility_commands.py,sha256=KCcywhwwDAFnDcts4f_RrgikX9EpUsqdJgFgu59RNnk,20863
|
|
9
|
-
dayhoff_tools/deployment/base.py,sha256=u-AjbtHnFLoLt33dhYXHIpV-6jcieMEHHGBGN_U9Hm0,15626
|
|
10
|
-
dayhoff_tools/deployment/deploy_aws.py,sha256=O0gQxHioSU_sNU8T8MD4wSOPvWc--V8eRRZzlRu035I,16446
|
|
11
|
-
dayhoff_tools/deployment/deploy_gcp.py,sha256=DxBM4sUzwPK9RWLP9bSfr38n1HHl-TVrp4TsbdN8pUA,5795
|
|
12
|
-
dayhoff_tools/deployment/deploy_utils.py,sha256=StFwbqnr2_FWiKVg3xnJF4kagTHzndqqDkpaIOaAn_4,26027
|
|
13
|
-
dayhoff_tools/deployment/job_runner.py,sha256=4tmdplpvqSE9bVxRWHo2U5kwkYrYod0Uwzpg2Q7qG5o,4850
|
|
14
|
-
dayhoff_tools/deployment/processors.py,sha256=-0s-mz6jgMJk78KrKQJDNbz5GZyg7jho0IeGH462FlY,19471
|
|
15
|
-
dayhoff_tools/deployment/swarm.py,sha256=MGcS2_x4RNFtnVjWlU_SwNfhICz8NlGYr9cYBK4ZKDA,21688
|
|
16
|
-
dayhoff_tools/embedders.py,sha256=CRgcb2z7KeeFrRQawyUZuJ4Yi0-J5jSr0hwuRhjG_FI,36513
|
|
17
|
-
dayhoff_tools/fasta.py,sha256=e7xw3pInoupqCGE0-fJTOzmW_earL1M7qPyoqIPfUT4,46269
|
|
18
|
-
dayhoff_tools/file_ops.py,sha256=JlGowvr-CUJFidV-4g_JmhUTN9bsYuaxtqKmnKomm-Q,8506
|
|
19
|
-
dayhoff_tools/h5.py,sha256=j1nxxaiHsMidVX_XwB33P1Pz9d7K8ZKiDZwJWQUUQSY,21158
|
|
20
|
-
dayhoff_tools/intake/gcp.py,sha256=uCeEskhbEwJIYpN6ne6siT1dbpTizCjjel-hRe0kReE,3030
|
|
21
|
-
dayhoff_tools/intake/gtdb.py,sha256=58JNLWpr3LkXiIq-ubAcEFeR5DyN9YrA-YEoQI_FzlA,10608
|
|
22
|
-
dayhoff_tools/intake/kegg.py,sha256=SaVbumB4leNTSevamT29yIqHurejw1wmcCC32D5Qyco,965
|
|
23
|
-
dayhoff_tools/intake/mmseqs.py,sha256=uEYzRsthJAlUeRYNCfFtJFE73SbuhfUIS1ygYFkhmtw,6435
|
|
24
|
-
dayhoff_tools/intake/structure.py,sha256=ufN3gAodQxhnt7psK1VTQeu9rKERmo_PhoxIbB4QKMw,27660
|
|
25
|
-
dayhoff_tools/intake/uniprot.py,sha256=BZYJQF63OtPcBBnQ7_P9gulxzJtqyorgyuDiPeOJqE4,16456
|
|
26
|
-
dayhoff_tools/logs.py,sha256=DKdeP0k0kliRcilwvX0mUB2eipO5BdWUeHwh-VnsICs,838
|
|
27
|
-
dayhoff_tools/sqlite.py,sha256=jV55ikF8VpTfeQqqlHSbY8OgfyfHj8zgHNpZjBLos_E,18672
|
|
28
|
-
dayhoff_tools/warehouse.py,sha256=TqV8nex1AluNaL4JuXH5zuu9P7qmE89lSo6f_oViy6U,14965
|
|
29
|
-
dayhoff_tools-1.1.10.dist-info/METADATA,sha256=0YZZ2uVMRyz4nXf3W9LpL3_SVTMwGahkLHaB-_cnM7w,2225
|
|
30
|
-
dayhoff_tools-1.1.10.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
|
|
31
|
-
dayhoff_tools-1.1.10.dist-info/entry_points.txt,sha256=iAf4jteNqW3cJm6CO6czLxjW3vxYKsyGLZ8WGmxamSc,49
|
|
32
|
-
dayhoff_tools-1.1.10.dist-info/RECORD,,
|
|
File without changes
|