dayhoff-tools 1.13.16__py3-none-any.whl → 1.13.18__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.
@@ -88,6 +88,7 @@ dh engine2 launch e2e-engine --type cpu --user testuser1
88
88
  ✓ EC2 instance launched: i-1234567890abcdef0
89
89
 
90
90
  ⏳ Waiting for engine to be ready (typically 2-3 minutes)...
91
+ # Note: GPU engines show "5-7 minutes" due to driver installation + reboot
91
92
 
92
93
  Progress ████████████░░░░░░░░░░ 60%
93
94
  [5s] Instance Running
@@ -190,7 +190,10 @@ def launch_engine(
190
190
  return
191
191
 
192
192
  # Wait for readiness with progress updates
193
- click.echo(f"\n⏳ Waiting for engine to be ready (typically 2-3 minutes)...\n")
193
+ # GPU engines take longer due to driver installation and reboot
194
+ is_gpu = engine_type.lower() not in ("cpu", "cpumax")
195
+ wait_time = "6-8 minutes" if is_gpu else "2-3 minutes"
196
+ click.echo(f"\n⏳ Waiting for engine to be ready (typically {wait_time})...\n")
194
197
 
195
198
  try:
196
199
  _final_status = wait_with_progress(
@@ -1121,19 +1124,28 @@ def debug_engine(name_or_id: str, env: Optional[str]):
1121
1124
  click.echo(f"Current Stage: {readiness.get('current_stage', 'unknown')}")
1122
1125
  click.echo(f"\nBootstrap Stages:")
1123
1126
 
1124
- stages = readiness.get("stages", [])
1125
- for i, stage in enumerate(stages, 1):
1126
- status = stage.get("status", "unknown")
1127
+ # Deduplicate stages by name, keeping the latest status for each
1128
+ # (bootstrap reports both "starting" and "completed" for each stage)
1129
+ stages_by_name: dict[str, dict] = {}
1130
+ for stage in readiness.get("stages", []):
1127
1131
  name = stage.get("name", "unknown")
1132
+ stages_by_name[name] = stage # Later entries overwrite earlier ones
1133
+
1134
+ for i, (name, stage) in enumerate(stages_by_name.items(), 1):
1135
+ status = stage.get("status", "unknown")
1128
1136
  duration = (
1129
1137
  stage.get("duration_ms", 0) / 1000 if stage.get("duration_ms") else None
1130
1138
  )
1131
1139
 
1132
- icon = (
1133
- ""
1134
- if status == "completed"
1135
- else "⏳" if status == "in_progress" else ""
1136
- )
1140
+ # Map status to icon: completed=✓, starting/in_progress=⏳, failed=✗
1141
+ if status == "completed":
1142
+ icon = ""
1143
+ elif status in ("starting", "in_progress"):
1144
+ icon = "⏳"
1145
+ elif status == "failed":
1146
+ icon = "✗"
1147
+ else:
1148
+ icon = "?" # Unknown status
1137
1149
  duration_str = f" ({duration:.1f}s)" if duration else ""
1138
1150
 
1139
1151
  click.echo(f" {icon} {i}. {name}{duration_str}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dayhoff-tools
3
- Version: 1.13.16
3
+ Version: 1.13.18
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
@@ -13,8 +13,8 @@ dayhoff_tools/cli/engine1/studio_commands.py,sha256=VwTQujz32-uMcYusDRE73SdzRpgv
13
13
  dayhoff_tools/cli/engines_studios/__init__.py,sha256=E6aG0C6qjJnJuClemSKRFlYvLUL49MQZOvfqNQ7SDKs,159
14
14
  dayhoff_tools/cli/engines_studios/api_client.py,sha256=9mCVRjPUCYa7cFx29uVwYxmHPAM5FwsU9xdplvgftxs,13444
15
15
  dayhoff_tools/cli/engines_studios/auth.py,sha256=rwetV5hp4jSvK8FyvKgXCnezLOZx1aW8oiSDc6U83iE,5189
16
- dayhoff_tools/cli/engines_studios/engine-studio-cli.md,sha256=I2wwWAMOXEIc23BxllUdCsTNozBmthyrHgPwjvqCULk,29799
17
- dayhoff_tools/cli/engines_studios/engine_commands.py,sha256=K5O8OnJdK3BuIxhpRIwI5FEj2mN77jBJzoYylpf5SHM,38174
16
+ dayhoff_tools/cli/engines_studios/engine-studio-cli.md,sha256=-AJB3VMV_xvPK9EcJOntTMu9dCiEch31bp-sxJUXp7w,29874
17
+ dayhoff_tools/cli/engines_studios/engine_commands.py,sha256=ILPKI1HNjTYSl6C0VUO39fxJLL-IRHuYNq4Iqr5yHIY,38881
18
18
  dayhoff_tools/cli/engines_studios/progress.py,sha256=VW70t7sEHlbLpCi6LOaY19Rp1Kx6Rt9CKNnmaZWFteA,9496
19
19
  dayhoff_tools/cli/engines_studios/simulators/cli-simulators.md,sha256=FZJl6nehdr2Duht2cx3yijcak0yKyOaHTrTzvFTAfZs,4976
20
20
  dayhoff_tools/cli/engines_studios/simulators/demo.sh,sha256=8tYABSCxLNXqGs-4r071V9mpKNZ5DTQ34WZ-v3d5s94,5364
@@ -49,7 +49,7 @@ dayhoff_tools/intake/uniprot.py,sha256=BZYJQF63OtPcBBnQ7_P9gulxzJtqyorgyuDiPeOJq
49
49
  dayhoff_tools/logs.py,sha256=DKdeP0k0kliRcilwvX0mUB2eipO5BdWUeHwh-VnsICs,838
50
50
  dayhoff_tools/sqlite.py,sha256=jV55ikF8VpTfeQqqlHSbY8OgfyfHj8zgHNpZjBLos_E,18672
51
51
  dayhoff_tools/warehouse.py,sha256=UETBtZD3r7WgvURqfGbyHlT7cxoiVq8isjzMuerKw8I,24475
52
- dayhoff_tools-1.13.16.dist-info/METADATA,sha256=uGRWh8p4pcHzhRyPXa-N1K-EW-S71UXkp7t9KcHK7Lc,2981
53
- dayhoff_tools-1.13.16.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
54
- dayhoff_tools-1.13.16.dist-info/entry_points.txt,sha256=iAf4jteNqW3cJm6CO6czLxjW3vxYKsyGLZ8WGmxamSc,49
55
- dayhoff_tools-1.13.16.dist-info/RECORD,,
52
+ dayhoff_tools-1.13.18.dist-info/METADATA,sha256=jLFLKqtiPfoH0ZN6JyWceIhoybMQIAJ_WE_tRIZGTRA,2981
53
+ dayhoff_tools-1.13.18.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
54
+ dayhoff_tools-1.13.18.dist-info/entry_points.txt,sha256=iAf4jteNqW3cJm6CO6czLxjW3vxYKsyGLZ8WGmxamSc,49
55
+ dayhoff_tools-1.13.18.dist-info/RECORD,,