dayhoff-tools 1.13.1__tar.gz → 1.13.3__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.
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/PKG-INFO +1 -1
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/engine-studio-cli.md +4 -4
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/engine_commands.py +57 -16
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/engine_list_simulator.py +3 -3
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/studio_list_simulator.py +3 -3
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/studio_commands.py +5 -2
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/pyproject.toml +1 -1
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/README.md +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/__init__.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/chemistry/standardizer.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/chemistry/utils.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/__init__.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/cloud_commands.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/__init__.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_core.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_lifecycle.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_maintenance.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_management.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/shared.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/studio_commands.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/__init__.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/api_client.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/auth.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/progress.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/cli-simulators.md +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/demo.sh +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/engine_status_simulator.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/idle_status_simulator.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/simulator_utils.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/studio_status_simulator.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/main.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/swarm_commands.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/utility_commands.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/base.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/deploy_aws.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/deploy_utils.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/job_runner.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/processors.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/swarm.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/embedders.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/fasta.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/file_ops.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/h5.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/gcp.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/gtdb.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/kegg.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/mmseqs.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/structure.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/uniprot.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/logs.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/sqlite.py +0 -0
- {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/warehouse.py +0 -0
{dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/engine-studio-cli.md
RENAMED
|
@@ -321,8 +321,8 @@ dh engine2 list --env sand
|
|
|
321
321
|
|
|
322
322
|
**Output:**
|
|
323
323
|
```
|
|
324
|
-
Engines for AWS Account dev
|
|
325
324
|
|
|
325
|
+
Engines for AWS Account dev
|
|
326
326
|
╭──────────────┬─────────────┬─────────────┬─────────────┬─────────────────────╮
|
|
327
327
|
│ Name │ State │ User │ Type │ Instance ID │
|
|
328
328
|
├──────────────┼─────────────┼─────────────┼─────────────┼─────────────────────┤
|
|
@@ -330,8 +330,8 @@ Engines for AWS Account dev
|
|
|
330
330
|
│ bob-training │ running │ bob │ a10g │ i-0fedcba987654321 │
|
|
331
331
|
│ batch-worker │ stopped │ charlie │ cpumax │ i-0abc123def456789 │
|
|
332
332
|
╰──────────────┴─────────────┴─────────────┴─────────────┴─────────────────────╯
|
|
333
|
+
Total: 3
|
|
333
334
|
|
|
334
|
-
Total: 3 engine(s)
|
|
335
335
|
```
|
|
336
336
|
|
|
337
337
|
**Formatting:**
|
|
@@ -755,8 +755,8 @@ dh studio2 list
|
|
|
755
755
|
|
|
756
756
|
**Output:**
|
|
757
757
|
```
|
|
758
|
-
Studios for AWS Account dev
|
|
759
758
|
|
|
759
|
+
Studios for AWS Account dev
|
|
760
760
|
╭────────┬──────────────┬──────────────┬───────────┬───────────────────────────╮
|
|
761
761
|
│ User │ Status │ Attached To │ Size │ Studio ID │
|
|
762
762
|
├────────┼──────────────┼──────────────┼───────────┼───────────────────────────┤
|
|
@@ -764,8 +764,8 @@ Studios for AWS Account dev
|
|
|
764
764
|
│ bob │ available │ - │ 200GB │ vol-0fedcba987654321 │
|
|
765
765
|
│ carol │ attaching │ carol-gpu │ 150GB │ vol-0abc123def456789 │
|
|
766
766
|
╰────────┴──────────────┴──────────────┴───────────┴───────────────────────────╯
|
|
767
|
+
Total: 3
|
|
767
768
|
|
|
768
|
-
Total: 3 studio(s)
|
|
769
769
|
```
|
|
770
770
|
|
|
771
771
|
**Formatting:**
|
{dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/engine_commands.py
RENAMED
|
@@ -123,7 +123,9 @@ def engine_cli():
|
|
|
123
123
|
@click.option(
|
|
124
124
|
"--skip-ssh-config", is_flag=True, help="Don't automatically update SSH config"
|
|
125
125
|
)
|
|
126
|
-
@click.option(
|
|
126
|
+
@click.option(
|
|
127
|
+
"--yes", "-y", is_flag=True, help="Skip confirmation for non-dev environments"
|
|
128
|
+
)
|
|
127
129
|
@click.option(
|
|
128
130
|
"--env",
|
|
129
131
|
default=None,
|
|
@@ -222,7 +224,9 @@ def launch_engine(
|
|
|
222
224
|
@click.option(
|
|
223
225
|
"--skip-ssh-config", is_flag=True, help="Don't automatically update SSH config"
|
|
224
226
|
)
|
|
225
|
-
@click.option(
|
|
227
|
+
@click.option(
|
|
228
|
+
"--yes", "-y", is_flag=True, help="Skip confirmation for non-dev environments"
|
|
229
|
+
)
|
|
226
230
|
@click.option(
|
|
227
231
|
"--env",
|
|
228
232
|
default=None,
|
|
@@ -345,7 +349,9 @@ def start_engine(
|
|
|
345
349
|
|
|
346
350
|
@engine_cli.command("stop")
|
|
347
351
|
@click.argument("name_or_id")
|
|
348
|
-
@click.option(
|
|
352
|
+
@click.option(
|
|
353
|
+
"--yes", "-y", is_flag=True, help="Skip confirmation for non-dev environments"
|
|
354
|
+
)
|
|
349
355
|
@click.option(
|
|
350
356
|
"--env",
|
|
351
357
|
default=None,
|
|
@@ -581,14 +587,16 @@ def list_engines(env: Optional[str]):
|
|
|
581
587
|
engines = result.get("engines", [])
|
|
582
588
|
|
|
583
589
|
# Show account header with blue account name
|
|
584
|
-
click.echo(f"
|
|
590
|
+
click.echo(f"\nEngines for AWS Account \033[34m{env}\033[0m")
|
|
585
591
|
|
|
586
592
|
if not engines:
|
|
587
|
-
click.echo("No engines found")
|
|
593
|
+
click.echo("No engines found\n")
|
|
588
594
|
return
|
|
589
595
|
|
|
590
596
|
# Calculate dynamic width for Name column (longest name + 2 for padding)
|
|
591
|
-
max_name_len = max(
|
|
597
|
+
max_name_len = max(
|
|
598
|
+
(len(engine.get("name", "unknown")) for engine in engines), default=4
|
|
599
|
+
)
|
|
592
600
|
name_width = max(max_name_len + 2, len("Name") + 2)
|
|
593
601
|
|
|
594
602
|
# Fixed widths for other columns
|
|
@@ -597,11 +605,20 @@ def list_engines(env: Optional[str]):
|
|
|
597
605
|
type_width = 12
|
|
598
606
|
id_width = 20
|
|
599
607
|
|
|
600
|
-
# Calculate total width for separator line
|
|
601
|
-
total_width = name_width + state_width + user_width + type_width + id_width + 9 # +9 for separators and spaces
|
|
602
|
-
|
|
603
608
|
# Table top border
|
|
604
|
-
click.echo(
|
|
609
|
+
click.echo(
|
|
610
|
+
"╭"
|
|
611
|
+
+ "─" * (name_width + 1)
|
|
612
|
+
+ "┬"
|
|
613
|
+
+ "─" * (state_width + 1)
|
|
614
|
+
+ "┬"
|
|
615
|
+
+ "─" * (user_width + 1)
|
|
616
|
+
+ "┬"
|
|
617
|
+
+ "─" * (type_width + 1)
|
|
618
|
+
+ "┬"
|
|
619
|
+
+ "─" * (id_width + 1)
|
|
620
|
+
+ "╮"
|
|
621
|
+
)
|
|
605
622
|
|
|
606
623
|
# Table header
|
|
607
624
|
click.echo(
|
|
@@ -609,7 +626,19 @@ def list_engines(env: Optional[str]):
|
|
|
609
626
|
)
|
|
610
627
|
|
|
611
628
|
# Header separator
|
|
612
|
-
click.echo(
|
|
629
|
+
click.echo(
|
|
630
|
+
"├"
|
|
631
|
+
+ "─" * (name_width + 1)
|
|
632
|
+
+ "┼"
|
|
633
|
+
+ "─" * (state_width + 1)
|
|
634
|
+
+ "┼"
|
|
635
|
+
+ "─" * (user_width + 1)
|
|
636
|
+
+ "┼"
|
|
637
|
+
+ "─" * (type_width + 1)
|
|
638
|
+
+ "┼"
|
|
639
|
+
+ "─" * (id_width + 1)
|
|
640
|
+
+ "┤"
|
|
641
|
+
)
|
|
613
642
|
|
|
614
643
|
# Table rows
|
|
615
644
|
for engine in engines:
|
|
@@ -621,11 +650,11 @@ def list_engines(env: Optional[str]):
|
|
|
621
650
|
|
|
622
651
|
# Truncate if needed
|
|
623
652
|
if len(name) > name_width - 1:
|
|
624
|
-
name = name[:name_width - 1]
|
|
653
|
+
name = name[: name_width - 1]
|
|
625
654
|
if len(user) > user_width - 1:
|
|
626
|
-
user = user[:user_width - 1]
|
|
655
|
+
user = user[: user_width - 1]
|
|
627
656
|
if len(engine_type) > type_width - 1:
|
|
628
|
-
engine_type = engine_type[:type_width - 1]
|
|
657
|
+
engine_type = engine_type[: type_width - 1]
|
|
629
658
|
|
|
630
659
|
# Color the name (blue)
|
|
631
660
|
name_display = f"\033[34m{name:<{name_width}}\033[0m"
|
|
@@ -648,9 +677,21 @@ def list_engines(env: Optional[str]):
|
|
|
648
677
|
)
|
|
649
678
|
|
|
650
679
|
# Table bottom border
|
|
651
|
-
click.echo(
|
|
680
|
+
click.echo(
|
|
681
|
+
"╰"
|
|
682
|
+
+ "─" * (name_width + 1)
|
|
683
|
+
+ "┴"
|
|
684
|
+
+ "─" * (state_width + 1)
|
|
685
|
+
+ "┴"
|
|
686
|
+
+ "─" * (user_width + 1)
|
|
687
|
+
+ "┴"
|
|
688
|
+
+ "─" * (type_width + 1)
|
|
689
|
+
+ "┴"
|
|
690
|
+
+ "─" * (id_width + 1)
|
|
691
|
+
+ "╯"
|
|
692
|
+
)
|
|
652
693
|
|
|
653
|
-
click.echo(f"
|
|
694
|
+
click.echo(f"Total: {len(engines)}\n")
|
|
654
695
|
|
|
655
696
|
except Exception as e:
|
|
656
697
|
click.echo(f"✗ Error: {e}", err=True)
|
|
@@ -24,10 +24,10 @@ def format_list_output(engines: list[dict[str, Any]], env: str = "dev") -> None:
|
|
|
24
24
|
"""Format and print engine list output matching the actual CLI."""
|
|
25
25
|
|
|
26
26
|
# Header with blue account name
|
|
27
|
-
print(f"
|
|
27
|
+
print(f"\nEngines for AWS Account {colorize(env, '34')}")
|
|
28
28
|
|
|
29
29
|
if not engines:
|
|
30
|
-
print("No engines found")
|
|
30
|
+
print("No engines found\n")
|
|
31
31
|
return
|
|
32
32
|
|
|
33
33
|
# Calculate dynamic width for Name column (longest name + 2 for padding)
|
|
@@ -128,7 +128,7 @@ def format_list_output(engines: list[dict[str, Any]], env: str = "dev") -> None:
|
|
|
128
128
|
+ "╯"
|
|
129
129
|
)
|
|
130
130
|
|
|
131
|
-
print(f"
|
|
131
|
+
print(f"Total: {len(engines)}\n")
|
|
132
132
|
|
|
133
133
|
|
|
134
134
|
def generate_scenarios() -> dict[str, dict[str, Any]]:
|
|
@@ -24,10 +24,10 @@ def format_list_output(studios: list[dict[str, Any]], engines_map: dict[str, str
|
|
|
24
24
|
"""Format and print studio list output matching the actual CLI."""
|
|
25
25
|
|
|
26
26
|
# Header with blue account name
|
|
27
|
-
print(f"
|
|
27
|
+
print(f"\nStudios for AWS Account {colorize(env, '34')}")
|
|
28
28
|
|
|
29
29
|
if not studios:
|
|
30
|
-
print("No studios found")
|
|
30
|
+
print("No studios found\n")
|
|
31
31
|
return
|
|
32
32
|
|
|
33
33
|
# Calculate dynamic width for User column (longest user + 2 for padding)
|
|
@@ -104,7 +104,7 @@ def format_list_output(studios: list[dict[str, Any]], engines_map: dict[str, str
|
|
|
104
104
|
# Table bottom border
|
|
105
105
|
print("╰" + "─" * (user_width + 1) + "┴" + "─" * (status_width + 1) + "┴" + "─" * (attached_width + 1) + "┴" + "─" * (size_width + 1) + "┴" + "─" * (id_width + 1) + "╯")
|
|
106
106
|
|
|
107
|
-
print(f"
|
|
107
|
+
print(f"Total: {len(studios)}\n")
|
|
108
108
|
|
|
109
109
|
|
|
110
110
|
def generate_scenarios() -> dict[str, dict[str, Any]]:
|
{dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/studio_commands.py
RENAMED
|
@@ -258,8 +258,11 @@ def list_studios(env: Optional[str]):
|
|
|
258
258
|
result = client.list_studios()
|
|
259
259
|
studios = result.get("studios", [])
|
|
260
260
|
|
|
261
|
+
# Show account header with blue account name
|
|
262
|
+
click.echo(f"\nStudios for AWS Account \033[34m{env}\033[0m")
|
|
263
|
+
|
|
261
264
|
if not studios:
|
|
262
|
-
click.echo("No studios found")
|
|
265
|
+
click.echo("No studios found\n")
|
|
263
266
|
return
|
|
264
267
|
|
|
265
268
|
# Get all engines to map instance IDs to names
|
|
@@ -346,7 +349,7 @@ def list_studios(env: Optional[str]):
|
|
|
346
349
|
# Table bottom border
|
|
347
350
|
click.echo("╰" + "─" * (user_width + 1) + "┴" + "─" * (status_width + 1) + "┴" + "─" * (attached_width + 1) + "┴" + "─" * (size_width + 1) + "┴" + "─" * (id_width + 1) + "╯")
|
|
348
351
|
|
|
349
|
-
click.echo(f"
|
|
352
|
+
click.echo(f"Total: {len(studios)}\n")
|
|
350
353
|
|
|
351
354
|
except Exception as e:
|
|
352
355
|
click.echo(f"✗ Error: {e}", err=True)
|
|
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
|
|
|
5
5
|
|
|
6
6
|
[project]
|
|
7
7
|
name = "dayhoff-tools"
|
|
8
|
-
version = "1.13.
|
|
8
|
+
version = "1.13.3"
|
|
9
9
|
description = "Common tools for all the repos at Dayhoff Labs"
|
|
10
10
|
authors = [
|
|
11
11
|
{name = "Daniel Martin-Alarcon", email = "dma@dayhofflabs.com"}
|
|
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
|
{dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_maintenance.py
RENAMED
|
File without changes
|
{dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_management.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/api_client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/demo.sh
RENAMED
|
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
|