dayhoff-tools 1.4.9__py3-none-any.whl → 1.4.10__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.
@@ -1623,6 +1623,9 @@ def attach_studio(
1623
1623
  else:
1624
1624
  raise typer.Exit(1)
1625
1625
 
1626
+ # Track whether this command just started the engine (affects retry length)
1627
+ engine_started_now = False
1628
+
1626
1629
  # Retrieve SSH public key (required for authorised_keys provisioning)
1627
1630
  try:
1628
1631
  public_key = get_ssh_public_key()
@@ -1639,7 +1642,7 @@ def attach_studio(
1639
1642
  transient=True,
1640
1643
  ) as prog:
1641
1644
  task = prog.add_task("Attaching studio (engine is still booting)…", total=None)
1642
- ATTEMPT_LIMIT = 40 # ~6-7 min max (40 × 10 s)
1645
+ ATTEMPT_LIMIT = 40 if engine_started_now else 6 # shorter retries for already-running engines
1643
1646
  RETRY_DELAY = 10
1644
1647
  for attempt in range(ATTEMPT_LIMIT):
1645
1648
  success, error_msg = _attempt_studio_attach(studio, engine, target_user, public_key)
@@ -1648,7 +1651,8 @@ def attach_studio(
1648
1651
  break # success!
1649
1652
 
1650
1653
  # Update spinner description with attempt number
1651
- prog.update(task, description=f"Attaching studio (engine is still booting)… {attempt+1}/{ATTEMPT_LIMIT}")
1654
+ if attempt % 3 == 0: # update every 3rd attempt to avoid spam
1655
+ prog.update(task, description=f"Attaching studio (engine is still booting)… {attempt+1}/{ATTEMPT_LIMIT}")
1652
1656
 
1653
1657
  if error_msg:
1654
1658
  console.print(f"[red]❌ Failed to attach studio: {error_msg}[/red]")
@@ -1699,7 +1703,14 @@ def _attempt_studio_attach(studio, engine, target_user, public_key):
1699
1703
  "not available",
1700
1704
  "pending", # VM state pending
1701
1705
  ]
1702
- if any(p in err_msg for p in RECOVERABLE_PATTERNS):
1706
+ FATAL_PATTERNS = [
1707
+ "in-use",
1708
+ "already attached",
1709
+ "permission",
1710
+ ]
1711
+ if any(p in err_msg for p in FATAL_PATTERNS):
1712
+ recoverable = False
1713
+ elif any(p in err_msg for p in RECOVERABLE_PATTERNS):
1703
1714
  recoverable = True
1704
1715
 
1705
1716
  if not recoverable:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dayhoff-tools
3
- Version: 1.4.9
3
+ Version: 1.4.10
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
@@ -3,7 +3,7 @@ dayhoff_tools/chemistry/standardizer.py,sha256=uMn7VwHnx02nc404eO6fRuS4rsl4dvSPf
3
3
  dayhoff_tools/chemistry/utils.py,sha256=jt-7JgF-GeeVC421acX-bobKbLU_X94KNOW24p_P-_M,2257
4
4
  dayhoff_tools/cli/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
5
  dayhoff_tools/cli/cloud_commands.py,sha256=33qcWLmq-FwEXMdL3F0OHm-5Stlh2r65CldyEZgQ1no,40904
6
- dayhoff_tools/cli/engine_commands.py,sha256=jZvSCjyuwYD7VkLgNZtPdql1DIRfV1cBqxfCeX7He-Y,83666
6
+ dayhoff_tools/cli/engine_commands.py,sha256=ul6hdl3oMLXeKqwG5p9bjZbWJisU_l9siObg1Ls_fKs,84109
7
7
  dayhoff_tools/cli/main.py,sha256=rgeEHD9lJ8SBCR34BTLb7gVInHUUdmEBNXAJnq5yEU4,4795
8
8
  dayhoff_tools/cli/swarm_commands.py,sha256=5EyKj8yietvT5lfoz8Zx0iQvVaNgc3SJX1z2zQR6o6M,5614
9
9
  dayhoff_tools/cli/utility_commands.py,sha256=qs8vH9TBFHsOPC3X8cU3qZigM3dDn-2Ytq4o_F2WubU,27874
@@ -27,7 +27,7 @@ dayhoff_tools/intake/uniprot.py,sha256=BZYJQF63OtPcBBnQ7_P9gulxzJtqyorgyuDiPeOJq
27
27
  dayhoff_tools/logs.py,sha256=DKdeP0k0kliRcilwvX0mUB2eipO5BdWUeHwh-VnsICs,838
28
28
  dayhoff_tools/sqlite.py,sha256=jV55ikF8VpTfeQqqlHSbY8OgfyfHj8zgHNpZjBLos_E,18672
29
29
  dayhoff_tools/warehouse.py,sha256=8YbnQ--usrEgDQGfvpV4MrMji55A0rq2hZaOgFGh6ag,15896
30
- dayhoff_tools-1.4.9.dist-info/METADATA,sha256=W66afkFiTx--DfzPdtSb3FqaZtskSvpboofWw9KvACQ,2824
31
- dayhoff_tools-1.4.9.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
32
- dayhoff_tools-1.4.9.dist-info/entry_points.txt,sha256=iAf4jteNqW3cJm6CO6czLxjW3vxYKsyGLZ8WGmxamSc,49
33
- dayhoff_tools-1.4.9.dist-info/RECORD,,
30
+ dayhoff_tools-1.4.10.dist-info/METADATA,sha256=Fenvb3Ijq1lKIoXpOaqu2Sb3tS82qQSgHN5iLFd1c9E,2825
31
+ dayhoff_tools-1.4.10.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
32
+ dayhoff_tools-1.4.10.dist-info/entry_points.txt,sha256=iAf4jteNqW3cJm6CO6czLxjW3vxYKsyGLZ8WGmxamSc,49
33
+ dayhoff_tools-1.4.10.dist-info/RECORD,,