dayhoff-tools 1.4.11__tar.gz → 1.4.13__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.4.11 → dayhoff_tools-1.4.13}/PKG-INFO +1 -1
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/cli/engine_commands.py +46 -17
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/pyproject.toml +1 -1
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/README.md +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/__init__.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/chemistry/standardizer.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/chemistry/utils.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/cli/__init__.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/cli/cloud_commands.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/cli/main.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/cli/swarm_commands.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/cli/utility_commands.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/deployment/base.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/deployment/deploy_aws.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/deployment/deploy_utils.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/deployment/job_runner.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/deployment/processors.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/deployment/swarm.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/embedders.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/fasta.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/file_ops.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/h5.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/intake/gcp.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/intake/gtdb.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/intake/kegg.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/intake/mmseqs.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/intake/structure.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/intake/uniprot.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/logs.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/sqlite.py +0 -0
- {dayhoff_tools-1.4.11 → dayhoff_tools-1.4.13}/dayhoff_tools/warehouse.py +0 -0
@@ -1637,33 +1637,62 @@ def attach_studio(
|
|
1637
1637
|
|
1638
1638
|
console.print(f"Attaching studio to engine [cyan]{engine['name']}[/cyan]...")
|
1639
1639
|
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
|
1644
|
-
|
1645
|
-
|
1646
|
-
|
1647
|
-
|
1648
|
-
|
1649
|
-
|
1640
|
+
# Determine retry strategy
|
1641
|
+
max_attempts = 40 if engine_started_now else 3
|
1642
|
+
retry_delay = 10 if engine_started_now else 3
|
1643
|
+
|
1644
|
+
if engine_started_now:
|
1645
|
+
# Long spinner-based loop while the freshly started engine finishes booting
|
1646
|
+
with Progress(
|
1647
|
+
SpinnerColumn(),
|
1648
|
+
TimeElapsedColumn(),
|
1649
|
+
TextColumn("[progress.description]{task.description}"),
|
1650
|
+
transient=True,
|
1651
|
+
) as prog:
|
1652
|
+
task = prog.add_task("Attaching studio (engine is still booting)…", total=None)
|
1653
|
+
|
1654
|
+
for attempt in range(max_attempts):
|
1655
|
+
success, error_msg = _attempt_studio_attach(studio, engine, target_user, public_key)
|
1656
|
+
|
1657
|
+
if success:
|
1658
|
+
break # success!
|
1659
|
+
|
1660
|
+
# Update spinner every 3rd try to avoid log spam
|
1661
|
+
if attempt % 3 == 0:
|
1662
|
+
prog.update(task, description=f"Attaching studio (engine is still booting)… {attempt+1}/{max_attempts}")
|
1663
|
+
|
1664
|
+
if error_msg:
|
1665
|
+
console.print(f"[red]❌ Failed to attach studio: {error_msg}[/red]")
|
1666
|
+
return
|
1667
|
+
|
1668
|
+
time.sleep(retry_delay)
|
1669
|
+
|
1670
|
+
else:
|
1671
|
+
console.print("[yellow]Engine is still starting up – please retry in a minute.[/yellow]")
|
1672
|
+
return
|
1673
|
+
else:
|
1674
|
+
# Give the (already-running) engine a little breathing room – e.g. it may still be mounting EFS
|
1675
|
+
max_attempts = 10 # ~1 min total
|
1676
|
+
retry_delay = 6
|
1677
|
+
|
1678
|
+
for attempt in range(max_attempts):
|
1650
1679
|
success, error_msg = _attempt_studio_attach(studio, engine, target_user, public_key)
|
1651
1680
|
|
1652
1681
|
if success:
|
1653
|
-
break #
|
1654
|
-
|
1655
|
-
# Update spinner description with attempt number
|
1656
|
-
if attempt % 3 == 0: # update every 3rd attempt to avoid spam
|
1657
|
-
prog.update(task, description=f"Attaching studio (engine is still booting)… {attempt+1}/{ATTEMPT_LIMIT}")
|
1682
|
+
break # attached!
|
1658
1683
|
|
1659
1684
|
if error_msg:
|
1685
|
+
# Fatal – bubble up immediately
|
1660
1686
|
console.print(f"[red]❌ Failed to attach studio: {error_msg}[/red]")
|
1661
1687
|
return
|
1662
1688
|
|
1663
|
-
|
1689
|
+
# Recoverable and still not ready – short wait + optional info
|
1690
|
+
if attempt < max_attempts - 1:
|
1691
|
+
console.print("[dim]Engine not ready yet – retrying …[/dim]")
|
1692
|
+
time.sleep(retry_delay)
|
1664
1693
|
|
1665
1694
|
else:
|
1666
|
-
console.print("[yellow]Engine is still
|
1695
|
+
console.print("[yellow]Engine is busy or still initialising – please retry in about a minute.[/yellow]")
|
1667
1696
|
return
|
1668
1697
|
|
1669
1698
|
# Successful attach path
|
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
|
|
5
5
|
|
6
6
|
[project]
|
7
7
|
name = "dayhoff-tools"
|
8
|
-
version = "1.4.
|
8
|
+
version = "1.4.13"
|
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
|
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
|