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.
Files changed (53) hide show
  1. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/PKG-INFO +1 -1
  2. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/engine-studio-cli.md +4 -4
  3. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/engine_commands.py +57 -16
  4. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/engine_list_simulator.py +3 -3
  5. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/studio_list_simulator.py +3 -3
  6. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/studio_commands.py +5 -2
  7. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/pyproject.toml +1 -1
  8. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/README.md +0 -0
  9. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/__init__.py +0 -0
  10. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/chemistry/standardizer.py +0 -0
  11. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/chemistry/utils.py +0 -0
  12. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/__init__.py +0 -0
  13. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/cloud_commands.py +0 -0
  14. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/__init__.py +0 -0
  15. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_core.py +0 -0
  16. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_lifecycle.py +0 -0
  17. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_maintenance.py +0 -0
  18. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/engine_management.py +0 -0
  19. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/shared.py +0 -0
  20. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engine1/studio_commands.py +0 -0
  21. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/__init__.py +0 -0
  22. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/api_client.py +0 -0
  23. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/auth.py +0 -0
  24. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/progress.py +0 -0
  25. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/cli-simulators.md +0 -0
  26. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/demo.sh +0 -0
  27. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/engine_status_simulator.py +0 -0
  28. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/idle_status_simulator.py +0 -0
  29. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/simulator_utils.py +0 -0
  30. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/engines_studios/simulators/studio_status_simulator.py +0 -0
  31. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/main.py +0 -0
  32. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/swarm_commands.py +0 -0
  33. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/cli/utility_commands.py +0 -0
  34. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/base.py +0 -0
  35. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/deploy_aws.py +0 -0
  36. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
  37. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/deploy_utils.py +0 -0
  38. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/job_runner.py +0 -0
  39. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/processors.py +0 -0
  40. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/deployment/swarm.py +0 -0
  41. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/embedders.py +0 -0
  42. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/fasta.py +0 -0
  43. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/file_ops.py +0 -0
  44. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/h5.py +0 -0
  45. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/gcp.py +0 -0
  46. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/gtdb.py +0 -0
  47. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/kegg.py +0 -0
  48. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/mmseqs.py +0 -0
  49. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/structure.py +0 -0
  50. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/intake/uniprot.py +0 -0
  51. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/logs.py +0 -0
  52. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/sqlite.py +0 -0
  53. {dayhoff_tools-1.13.1 → dayhoff_tools-1.13.3}/dayhoff_tools/warehouse.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dayhoff-tools
3
- Version: 1.13.1
3
+ Version: 1.13.3
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
@@ -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:**
@@ -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("--yes", "-y", is_flag=True, help="Skip confirmation for non-dev environments")
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("--yes", "-y", is_flag=True, help="Skip confirmation for non-dev environments")
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("--yes", "-y", is_flag=True, help="Skip confirmation for non-dev environments")
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"Engines for AWS Account \033[34m{env}\033[0m\n")
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((len(engine.get("name", "unknown")) for engine in engines), default=4)
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("╭" + "─" * (name_width + 1) + "┬" + "─" * (state_width + 1) + "┬" + "─" * (user_width + 1) + "┬" + "─" * (type_width + 1) + "┬" + "─" * (id_width + 1) + "╮")
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("├" + "─" * (name_width + 1) + "┼" + "─" * (state_width + 1) + "┼" + "─" * (user_width + 1) + "┼" + "─" * (type_width + 1) + "┼" + "─" * (id_width + 1) + "┤")
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("╰" + "─" * (name_width + 1) + "┴" + "─" * (state_width + 1) + "┴" + "─" * (user_width + 1) + "┴" + "─" * (type_width + 1) + "┴" + "─" * (id_width + 1) + "╯")
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"\nTotal: {len(engines)} engine(s)")
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"Engines for AWS Account {colorize(env, '34')}\n")
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"\nTotal: {len(engines)} engine(s)")
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"Studios for AWS Account {colorize(env, '34')}\n")
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"\nTotal: {len(studios)} studio(s)")
107
+ print(f"Total: {len(studios)}\n")
108
108
 
109
109
 
110
110
  def generate_scenarios() -> dict[str, dict[str, Any]]:
@@ -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"\nTotal: {len(studios)} studio(s)")
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.1"
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