dayhoff-tools 1.13.0__tar.gz → 1.13.2__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.0 → dayhoff_tools-1.13.2}/PKG-INFO +1 -1
  2. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/engine-studio-cli.md +8 -8
  3. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/engine_commands.py +5 -5
  4. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/engine_list_simulator.py +7 -7
  5. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/studio_list_simulator.py +5 -5
  6. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/studio_commands.py +7 -4
  7. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/pyproject.toml +1 -1
  8. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/README.md +0 -0
  9. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/__init__.py +0 -0
  10. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/chemistry/standardizer.py +0 -0
  11. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/chemistry/utils.py +0 -0
  12. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/__init__.py +0 -0
  13. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/cloud_commands.py +0 -0
  14. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engine1/__init__.py +0 -0
  15. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engine1/engine_core.py +0 -0
  16. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engine1/engine_lifecycle.py +0 -0
  17. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engine1/engine_maintenance.py +0 -0
  18. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engine1/engine_management.py +0 -0
  19. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engine1/shared.py +0 -0
  20. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engine1/studio_commands.py +0 -0
  21. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/__init__.py +0 -0
  22. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/api_client.py +0 -0
  23. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/auth.py +0 -0
  24. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/progress.py +0 -0
  25. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/cli-simulators.md +0 -0
  26. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/demo.sh +0 -0
  27. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/engine_status_simulator.py +0 -0
  28. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/idle_status_simulator.py +0 -0
  29. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/simulator_utils.py +0 -0
  30. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/engines_studios/simulators/studio_status_simulator.py +0 -0
  31. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/main.py +0 -0
  32. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/swarm_commands.py +0 -0
  33. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/cli/utility_commands.py +0 -0
  34. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/deployment/base.py +0 -0
  35. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/deployment/deploy_aws.py +0 -0
  36. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
  37. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/deployment/deploy_utils.py +0 -0
  38. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/deployment/job_runner.py +0 -0
  39. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/deployment/processors.py +0 -0
  40. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/deployment/swarm.py +0 -0
  41. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/embedders.py +0 -0
  42. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/fasta.py +0 -0
  43. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/file_ops.py +0 -0
  44. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/h5.py +0 -0
  45. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/intake/gcp.py +0 -0
  46. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/intake/gtdb.py +0 -0
  47. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/intake/kegg.py +0 -0
  48. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/intake/mmseqs.py +0 -0
  49. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/intake/structure.py +0 -0
  50. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/intake/uniprot.py +0 -0
  51. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/logs.py +0 -0
  52. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/dayhoff_tools/sqlite.py +0 -0
  53. {dayhoff_tools-1.13.0 → dayhoff_tools-1.13.2}/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.0
3
+ Version: 1.13.2
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,17 +321,17 @@ dh engine2 list --env sand
321
321
 
322
322
  **Output:**
323
323
  ```
324
- Engines for AWS Account dev
325
324
 
326
- ┌──────────────┬─────────────┬─────────────┬─────────────┬─────────────────────┐
325
+ Engines for AWS Account dev
326
+ ╭──────────────┬─────────────┬─────────────┬─────────────┬─────────────────────╮
327
327
  │ Name │ State │ User │ Type │ Instance ID │
328
328
  ├──────────────┼─────────────┼─────────────┼─────────────┼─────────────────────┤
329
329
  │ alice-work │ running │ alice │ cpu │ i-0123456789abcdef0 │
330
330
  │ bob-training │ running │ bob │ a10g │ i-0fedcba987654321 │
331
331
  │ batch-worker │ stopped │ charlie │ cpumax │ i-0abc123def456789 │
332
- └──────────────┴─────────────┴─────────────┴─────────────┴─────────────────────┘
333
-
332
+ ╰──────────────┴─────────────┴─────────────┴─────────────┴─────────────────────╯
334
333
  Total: 3 engine(s)
334
+
335
335
  ```
336
336
 
337
337
  **Formatting:**
@@ -755,17 +755,17 @@ dh studio2 list
755
755
 
756
756
  **Output:**
757
757
  ```
758
- Studios for AWS Account dev
759
758
 
760
- ┌────────┬──────────────┬──────────────┬───────────┬───────────────────────────┐
759
+ Studios for AWS Account dev
760
+ ╭────────┬──────────────┬──────────────┬───────────┬───────────────────────────╮
761
761
  │ User │ Status │ Attached To │ Size │ Studio ID │
762
762
  ├────────┼──────────────┼──────────────┼───────────┼───────────────────────────┤
763
763
  │ alice │ attached │ alice-work │ 100GB │ vol-0123456789abcdef0 │
764
764
  │ bob │ available │ - │ 200GB │ vol-0fedcba987654321 │
765
765
  │ carol │ attaching │ carol-gpu │ 150GB │ vol-0abc123def456789 │
766
- └────────┴──────────────┴──────────────┴───────────┴───────────────────────────┘
767
-
766
+ ╰────────┴──────────────┴──────────────┴───────────┴───────────────────────────╯
768
767
  Total: 3 studio(s)
768
+
769
769
  ```
770
770
 
771
771
  **Formatting:**
@@ -581,10 +581,10 @@ def list_engines(env: Optional[str]):
581
581
  engines = result.get("engines", [])
582
582
 
583
583
  # Show account header with blue account name
584
- click.echo(f"Engines for AWS Account \033[34m{env}\033[0m\n")
584
+ click.echo(f"\nEngines for AWS Account \033[34m{env}\033[0m")
585
585
 
586
586
  if not engines:
587
- click.echo("No engines found")
587
+ click.echo("No engines found\n")
588
588
  return
589
589
 
590
590
  # Calculate dynamic width for Name column (longest name + 2 for padding)
@@ -601,7 +601,7 @@ def list_engines(env: Optional[str]):
601
601
  total_width = name_width + state_width + user_width + type_width + id_width + 9 # +9 for separators and spaces
602
602
 
603
603
  # Table top border
604
- click.echo("" + "─" * (name_width + 1) + "┬" + "─" * (state_width + 1) + "┬" + "─" * (user_width + 1) + "┬" + "─" * (type_width + 1) + "┬" + "─" * (id_width + 1) + "")
604
+ click.echo("" + "─" * (name_width + 1) + "┬" + "─" * (state_width + 1) + "┬" + "─" * (user_width + 1) + "┬" + "─" * (type_width + 1) + "┬" + "─" * (id_width + 1) + "")
605
605
 
606
606
  # Table header
607
607
  click.echo(
@@ -648,9 +648,9 @@ def list_engines(env: Optional[str]):
648
648
  )
649
649
 
650
650
  # Table bottom border
651
- click.echo("" + "─" * (name_width + 1) + "┴" + "─" * (state_width + 1) + "┴" + "─" * (user_width + 1) + "┴" + "─" * (type_width + 1) + "┴" + "─" * (id_width + 1) + "")
651
+ click.echo("" + "─" * (name_width + 1) + "┴" + "─" * (state_width + 1) + "┴" + "─" * (user_width + 1) + "┴" + "─" * (type_width + 1) + "┴" + "─" * (id_width + 1) + "")
652
652
 
653
- click.echo(f"\nTotal: {len(engines)} engine(s)")
653
+ click.echo(f"Total: {len(engines)} engine(s)\n")
654
654
 
655
655
  except Exception as e:
656
656
  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)
@@ -44,7 +44,7 @@ def format_list_output(engines: list[dict[str, Any]], env: str = "dev") -> None:
44
44
 
45
45
  # Table top border
46
46
  print(
47
- ""
47
+ ""
48
48
  + "─" * (name_width + 1)
49
49
  + "┬"
50
50
  + "─" * (state_width + 1)
@@ -54,7 +54,7 @@ def format_list_output(engines: list[dict[str, Any]], env: str = "dev") -> None:
54
54
  + "─" * (type_width + 1)
55
55
  + "┬"
56
56
  + "─" * (id_width + 1)
57
- + ""
57
+ + ""
58
58
  )
59
59
 
60
60
  # Table header
@@ -115,7 +115,7 @@ def format_list_output(engines: list[dict[str, Any]], env: str = "dev") -> None:
115
115
 
116
116
  # Table bottom border
117
117
  print(
118
- ""
118
+ ""
119
119
  + "─" * (name_width + 1)
120
120
  + "┴"
121
121
  + "─" * (state_width + 1)
@@ -125,10 +125,10 @@ def format_list_output(engines: list[dict[str, Any]], env: str = "dev") -> None:
125
125
  + "─" * (type_width + 1)
126
126
  + "┴"
127
127
  + "─" * (id_width + 1)
128
- + ""
128
+ + ""
129
129
  )
130
130
 
131
- print(f"\nTotal: {len(engines)} engine(s)")
131
+ print(f"Total: {len(engines)} engine(s)\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)
@@ -49,7 +49,7 @@ def format_list_output(studios: list[dict[str, Any]], engines_map: dict[str, str
49
49
  id_width = 25
50
50
 
51
51
  # Table top border
52
- print("" + "─" * (user_width + 1) + "┬" + "─" * (status_width + 1) + "┬" + "─" * (attached_width + 1) + "┬" + "─" * (size_width + 1) + "┬" + "─" * (id_width + 1) + "")
52
+ print("" + "─" * (user_width + 1) + "┬" + "─" * (status_width + 1) + "┬" + "─" * (attached_width + 1) + "┬" + "─" * (size_width + 1) + "┬" + "─" * (id_width + 1) + "")
53
53
 
54
54
  # Table header
55
55
  print(f"│ {'User':<{user_width}}│ {'Status':<{status_width}}│ {'Attached To':<{attached_width}}│ {'Size':<{size_width}}│ {'Studio ID':<{id_width}}│")
@@ -102,9 +102,9 @@ def format_list_output(studios: list[dict[str, Any]], engines_map: dict[str, str
102
102
  print(f"│ {user_display}│ {status_display}│ {attached_display}│ {size:<{size_width}}│ {studio_id_display}│")
103
103
 
104
104
  # Table bottom border
105
- print("" + "─" * (user_width + 1) + "┴" + "─" * (status_width + 1) + "┴" + "─" * (attached_width + 1) + "┴" + "─" * (size_width + 1) + "┴" + "─" * (id_width + 1) + "")
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)} studio(s)\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
@@ -287,7 +290,7 @@ def list_studios(env: Optional[str]):
287
290
  id_width = 25
288
291
 
289
292
  # Table top border
290
- click.echo("" + "─" * (user_width + 1) + "┬" + "─" * (status_width + 1) + "┬" + "─" * (attached_width + 1) + "┬" + "─" * (size_width + 1) + "┬" + "─" * (id_width + 1) + "")
293
+ click.echo("" + "─" * (user_width + 1) + "┬" + "─" * (status_width + 1) + "┬" + "─" * (attached_width + 1) + "┬" + "─" * (size_width + 1) + "┬" + "─" * (id_width + 1) + "")
291
294
 
292
295
  # Table header - reordered to [User, Status, Attached To, Size, Studio ID]
293
296
  click.echo(
@@ -344,9 +347,9 @@ def list_studios(env: Optional[str]):
344
347
  )
345
348
 
346
349
  # Table bottom border
347
- click.echo("" + "─" * (user_width + 1) + "┴" + "─" * (status_width + 1) + "┴" + "─" * (attached_width + 1) + "┴" + "─" * (size_width + 1) + "┴" + "─" * (id_width + 1) + "")
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)} studio(s)\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.0"
8
+ version = "1.13.2"
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