dayhoff-tools 1.13.4__tar.gz → 1.13.6__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.4 → dayhoff_tools-1.13.6}/PKG-INFO +1 -1
  2. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/api_client.py +13 -2
  3. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/engine_commands.py +8 -1
  4. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/pyproject.toml +1 -1
  5. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/README.md +0 -0
  6. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/__init__.py +0 -0
  7. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/chemistry/standardizer.py +0 -0
  8. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/chemistry/utils.py +0 -0
  9. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/__init__.py +0 -0
  10. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/cloud_commands.py +0 -0
  11. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engine1/__init__.py +0 -0
  12. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engine1/engine_core.py +0 -0
  13. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engine1/engine_lifecycle.py +0 -0
  14. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engine1/engine_maintenance.py +0 -0
  15. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engine1/engine_management.py +0 -0
  16. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engine1/shared.py +0 -0
  17. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engine1/studio_commands.py +0 -0
  18. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/__init__.py +0 -0
  19. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/auth.py +0 -0
  20. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/engine-studio-cli.md +0 -0
  21. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/progress.py +0 -0
  22. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/cli-simulators.md +0 -0
  23. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/demo.sh +0 -0
  24. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/engine_list_simulator.py +0 -0
  25. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/engine_status_simulator.py +0 -0
  26. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/idle_status_simulator.py +0 -0
  27. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/simulator_utils.py +0 -0
  28. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/studio_list_simulator.py +0 -0
  29. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/simulators/studio_status_simulator.py +0 -0
  30. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/engines_studios/studio_commands.py +0 -0
  31. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/main.py +0 -0
  32. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/swarm_commands.py +0 -0
  33. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/cli/utility_commands.py +0 -0
  34. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/deployment/base.py +0 -0
  35. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/deployment/deploy_aws.py +0 -0
  36. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
  37. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/deployment/deploy_utils.py +0 -0
  38. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/deployment/job_runner.py +0 -0
  39. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/deployment/processors.py +0 -0
  40. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/deployment/swarm.py +0 -0
  41. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/embedders.py +0 -0
  42. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/fasta.py +0 -0
  43. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/file_ops.py +0 -0
  44. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/h5.py +0 -0
  45. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/intake/gcp.py +0 -0
  46. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/intake/gtdb.py +0 -0
  47. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/intake/kegg.py +0 -0
  48. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/intake/mmseqs.py +0 -0
  49. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/intake/structure.py +0 -0
  50. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/intake/uniprot.py +0 -0
  51. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/logs.py +0 -0
  52. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/dayhoff_tools/sqlite.py +0 -0
  53. {dayhoff_tools-1.13.4 → dayhoff_tools-1.13.6}/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.4
3
+ Version: 1.13.6
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
@@ -116,11 +116,22 @@ class StudioManagerClient:
116
116
  Response JSON
117
117
 
118
118
  Raises:
119
- requests.HTTPError: If request fails
119
+ RuntimeError: If request fails with error message from API
120
120
  """
121
121
  url = f"{self.api_url}{path}"
122
122
  response = requests.request(method, url, **kwargs)
123
- response.raise_for_status()
123
+
124
+ # Parse error body if request failed
125
+ if not response.ok:
126
+ try:
127
+ error_body = response.json()
128
+ error_message = error_body.get("error", response.text)
129
+ except Exception:
130
+ error_message = response.text or f"HTTP {response.status_code}"
131
+
132
+ # Raise exception with the actual error message from API
133
+ raise RuntimeError(error_message)
134
+
124
135
  return response.json()
125
136
 
126
137
  # Engine operations
@@ -594,9 +594,16 @@ def engine_status(name_or_id: str, env: Optional[str]):
594
594
  remaining = readiness["estimated_time_remaining_seconds"]
595
595
  click.echo(f"Estimated Time Remaining: {remaining}s")
596
596
 
597
+ # Show attached studios (always, even without idle state)
598
+ attached_studios = status_data.get("attached_studios", [])
599
+ if attached_studios:
600
+ studio_names = ", ".join([f"\033[35m{s.get('user', 'unknown')}\033[0m" for s in attached_studios])
601
+ click.echo(f"\nAttached Studios: {studio_names}")
602
+ else:
603
+ click.echo(f"\nAttached Studios: None")
604
+
597
605
  # Show idle state (only for running engines) - always detailed per user request
598
606
  if status_data.get("idle_state"):
599
- attached_studios = status_data.get("attached_studios", [])
600
607
  click.echo(
601
608
  f"\n{format_idle_state(status_data['idle_state'], detailed=True, attached_studios=attached_studios)}"
602
609
  )
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
5
5
 
6
6
  [project]
7
7
  name = "dayhoff-tools"
8
- version = "1.13.4"
8
+ version = "1.13.6"
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