dayhoff-tools 1.7.0__tar.gz → 1.7.1__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 (32) hide show
  1. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/PKG-INFO +1 -1
  2. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/cli/engine_commands.py +49 -3
  3. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/pyproject.toml +1 -1
  4. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/README.md +0 -0
  5. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/__init__.py +0 -0
  6. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/chemistry/standardizer.py +0 -0
  7. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/chemistry/utils.py +0 -0
  8. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/cli/__init__.py +0 -0
  9. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/cli/cloud_commands.py +0 -0
  10. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/cli/main.py +0 -0
  11. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/cli/swarm_commands.py +0 -0
  12. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/cli/utility_commands.py +0 -0
  13. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/deployment/base.py +0 -0
  14. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/deployment/deploy_aws.py +0 -0
  15. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/deployment/deploy_gcp.py +0 -0
  16. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/deployment/deploy_utils.py +0 -0
  17. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/deployment/job_runner.py +0 -0
  18. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/deployment/processors.py +0 -0
  19. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/deployment/swarm.py +0 -0
  20. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/embedders.py +0 -0
  21. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/fasta.py +0 -0
  22. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/file_ops.py +0 -0
  23. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/h5.py +0 -0
  24. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/intake/gcp.py +0 -0
  25. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/intake/gtdb.py +0 -0
  26. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/intake/kegg.py +0 -0
  27. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/intake/mmseqs.py +0 -0
  28. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/intake/structure.py +0 -0
  29. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/intake/uniprot.py +0 -0
  30. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/logs.py +0 -0
  31. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/sqlite.py +0 -0
  32. {dayhoff_tools-1.7.0 → dayhoff_tools-1.7.1}/dayhoff_tools/warehouse.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: dayhoff-tools
3
- Version: 1.7.0
3
+ Version: 1.7.1
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
@@ -1,6 +1,7 @@
1
1
  """Engine and Studio management commands for DHT CLI."""
2
2
 
3
3
  import json
4
+ import os
4
5
  import re
5
6
  import shutil
6
7
  import subprocess
@@ -365,13 +366,58 @@ def resolve_engine(name_or_id: str, engines: List[Dict]) -> Dict:
365
366
 
366
367
 
367
368
  def get_ssh_public_key() -> str:
368
- """Get the user's SSH public key."""
369
+ """Get the user's SSH public key.
370
+
371
+ Discovery order (container-friendly):
372
+ 1) DHT_SSH_PUBLIC_KEY env var (direct key content)
373
+ 2) DHT_SSH_PUBLIC_KEY_PATH env var (path to a .pub file)
374
+ 3) ssh-agent via `ssh-add -L` (requires SSH_AUTH_SOCK)
375
+ 4) Conventional files: ~/.ssh/id_ed25519.pub, ~/.ssh/id_rsa.pub
376
+
377
+ Raises:
378
+ FileNotFoundError: If no public key can be discovered.
379
+ """
380
+ # 1) Direct env var content
381
+ env_key = os.environ.get("DHT_SSH_PUBLIC_KEY")
382
+ if env_key and env_key.strip():
383
+ return env_key.strip()
384
+
385
+ # 2) Env var path
386
+ env_path = os.environ.get("DHT_SSH_PUBLIC_KEY_PATH")
387
+ if env_path:
388
+ p = Path(env_path).expanduser()
389
+ if p.is_file():
390
+ try:
391
+ return p.read_text().strip()
392
+ except Exception:
393
+ pass
394
+
395
+ # 3) Agent lookup (ssh-add -L)
396
+ try:
397
+ if shutil.which("ssh-add") is not None:
398
+ proc = subprocess.run(["ssh-add", "-L"], capture_output=True, text=True)
399
+ if proc.returncode == 0 and proc.stdout:
400
+ keys = [line.strip() for line in proc.stdout.splitlines() if line.strip()]
401
+ # Prefer ed25519, then rsa
402
+ for pref in ("ssh-ed25519", "ssh-rsa", "ecdsa-sha2-nistp256"):
403
+ for k in keys:
404
+ if k.startswith(pref + " "):
405
+ return k
406
+ # Fallback to first key if types not matched
407
+ if keys:
408
+ return keys[0]
409
+ except Exception:
410
+ pass
411
+
412
+ # 4) Conventional files
369
413
  home = Path.home()
370
414
  key_paths = [home / ".ssh" / "id_ed25519.pub", home / ".ssh" / "id_rsa.pub"]
371
-
372
415
  for key_path in key_paths:
373
416
  if key_path.is_file():
374
- return key_path.read_text().strip()
417
+ try:
418
+ return key_path.read_text().strip()
419
+ except Exception:
420
+ continue
375
421
 
376
422
  raise FileNotFoundError(
377
423
  "No SSH public key found. Please create one with 'ssh-keygen' first."
@@ -5,7 +5,7 @@ build-backend = "poetry.core.masonry.api"
5
5
 
6
6
  [project]
7
7
  name = "dayhoff-tools"
8
- version = "1.7.0"
8
+ version = "1.7.1"
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