dh-cli 0.8.4__tar.gz → 0.8.5__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 (94) hide show
  1. {dh_cli-0.8.4 → dh_cli-0.8.5}/PKG-INFO +1 -1
  2. {dh_cli-0.8.4 → dh_cli-0.8.5}/pyproject.toml +1 -1
  3. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/github_commands.py +7 -5
  4. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/batch/test_image_override.py +1 -2
  5. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/batch/test_submit_image_validation.py +2 -6
  6. {dh_cli-0.8.4 → dh_cli-0.8.5}/.gitignore +0 -0
  7. {dh_cli-0.8.4 → dh_cli-0.8.5}/LICENSE +0 -0
  8. {dh_cli-0.8.4 → dh_cli-0.8.5}/README.md +0 -0
  9. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/__init__.py +0 -0
  10. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/_identity.py +0 -0
  11. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/__init__.py +0 -0
  12. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/aws_batch.py +0 -0
  13. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/__init__.py +0 -0
  14. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/boltz.py +0 -0
  15. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/cancel.py +0 -0
  16. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/clean.py +0 -0
  17. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/embed_t5.py +0 -0
  18. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/finalize.py +0 -0
  19. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/list_jobs.py +0 -0
  20. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/local.py +0 -0
  21. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/logs.py +0 -0
  22. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/orca.py +0 -0
  23. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/protmpnn.py +0 -0
  24. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/protmpnn_to_boltz.py +0 -0
  25. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/retry.py +0 -0
  26. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/status.py +0 -0
  27. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/submit.py +0 -0
  28. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/train.py +0 -0
  29. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/commands/wait_for.py +0 -0
  30. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/fasta_utils.py +0 -0
  31. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/h5_utils.py +0 -0
  32. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/job_id.py +0 -0
  33. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/manifest.py +0 -0
  34. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/batch/s3_transport.py +0 -0
  35. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/bedrock/__init__.py +0 -0
  36. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/bedrock/commands.py +0 -0
  37. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/bedrock/cost_report.py +0 -0
  38. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/bedrock/pricing.yaml +0 -0
  39. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/cloud_commands.py +0 -0
  40. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/codeartifact.py +0 -0
  41. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/engines_studios/__init__.py +0 -0
  42. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/engines_studios/api_client.py +0 -0
  43. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/engines_studios/auth.py +0 -0
  44. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/engines_studios/engine_commands.py +0 -0
  45. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/engines_studios/progress.py +0 -0
  46. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/engines_studios/ssh_config.py +0 -0
  47. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/engines_studios/studio_commands.py +0 -0
  48. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/hz/__init__.py +0 -0
  49. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/hz/deploy.py +0 -0
  50. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/hz/local.py +0 -0
  51. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/hz/test.py +0 -0
  52. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/hz/tf.py +0 -0
  53. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/hz/users.py +0 -0
  54. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/main.py +0 -0
  55. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/utility_commands.py +0 -0
  56. {dh_cli-0.8.4 → dh_cli-0.8.5}/src/dh_cli/warehouse.py +0 -0
  57. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/batch/__init__.py +0 -0
  58. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/batch/test_aws_batch_resources.py +0 -0
  59. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/batch/test_submit_cpu_only.py +0 -0
  60. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/batch/test_submit_merge.py +0 -0
  61. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/conftest.py +0 -0
  62. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/fixtures/A_cache_write.json +0 -0
  63. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/fixtures/B_cache_read.json +0 -0
  64. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/fixtures/C_plain.json +0 -0
  65. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/fixtures/D_cursor_user.json +0 -0
  66. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/fixtures/E_service_role.json +0 -0
  67. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/fixtures/F_legacy_shared.json +0 -0
  68. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/fixtures/G_unknown_model.json +0 -0
  69. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_build_report.py +0 -0
  70. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_classify_arn.py +0 -0
  71. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_cli_exit_codes.py +0 -0
  72. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_cost_calc.py +0 -0
  73. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_cost_command.py +0 -0
  74. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_cur_reconciliation.py +0 -0
  75. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_key_command.py +0 -0
  76. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_render_formats.py +0 -0
  77. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_resolve_base_model.py +0 -0
  78. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/bedrock/test_s3_walker.py +0 -0
  79. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/__init__.py +0 -0
  80. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/conftest.py +0 -0
  81. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_engine_role_cannot_read_github_pat.py +0 -0
  82. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_identity.py +0 -0
  83. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_login.py +0 -0
  84. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_login_error_paths.py +0 -0
  85. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_login_security.py +0 -0
  86. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_logout.py +0 -0
  87. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_rotate.py +0 -0
  88. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/github/test_status.py +0 -0
  89. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/hz/test_init.py +0 -0
  90. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/hz/test_suites.py +0 -0
  91. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/hz/test_users.py +0 -0
  92. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/test_cloud_gcp.py +0 -0
  93. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/test_finalize_boltz_tar.py +0 -0
  94. {dh_cli-0.8.4 → dh_cli-0.8.5}/tests/test_finalize_protmpnn.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: dh-cli
3
- Version: 0.8.4
3
+ Version: 0.8.5
4
4
  Summary: Dayhoff Labs developer CLI
5
5
  Author-email: Dayhoff Labs <dev@dayhofflabs.com>
6
6
  License: # PolyForm Noncommercial License 1.0.0
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "dh-cli"
7
- version = "0.8.4"
7
+ version = "0.8.5"
8
8
  description = "Dayhoff Labs developer CLI"
9
9
  requires-python = ">=3.11"
10
10
  readme = "README.md"
@@ -169,8 +169,9 @@ def _access_denied_diagnosis(session, requested_handle: str) -> None:
169
169
  typer.echo(
170
170
  RED
171
171
  + "Access denied reading the GitHub PAT secret. "
172
- + "Most likely your SSO MFA is >1h old. "
173
- + "Run `awslogin dev-devaccess` and retry."
172
+ + "Check that you're on the dev-devaccess profile with "
173
+ + "a live SSO session: `dh aws status`. If the session "
174
+ + "is expired, run `awslogin dev-devaccess` and retry."
174
175
  + NC,
175
176
  err=True,
176
177
  )
@@ -690,9 +691,10 @@ def gh_rotate(
690
691
  if code == "AccessDeniedException":
691
692
  typer.echo(
692
693
  RED
693
- + f"Access denied writing `{secret_id}`. Most likely "
694
- + "your SSO MFA is >1h old. Run `awslogin "
695
- + "dev-devaccess` and retry."
694
+ + f"Access denied writing `{secret_id}`. Check that "
695
+ + "you're on the dev-devaccess profile with a live "
696
+ + "SSO session: `dh aws status`. If the session is "
697
+ + "expired, run `awslogin dev-devaccess` and retry."
696
698
  + NC,
697
699
  err=True,
698
700
  )
@@ -57,8 +57,7 @@ class TestImageValidation:
57
57
  [
58
58
  "123456789012.dkr.ecr.us-east-1.amazonaws.com/dayhoff-generic:abc123",
59
59
  "123456789012.dkr.ecr.us-west-2.amazonaws.com/foo/bar:latest",
60
- "123456789012.dkr.ecr.us-east-1.amazonaws.com/x@sha256:"
61
- + "a" * 64,
60
+ "123456789012.dkr.ecr.us-east-1.amazonaws.com/x@sha256:" + "a" * 64,
62
61
  ],
63
62
  )
64
63
  def test_accepts_ecr_url(self, good_image):
@@ -63,9 +63,7 @@ class TestCliImageValidation:
63
63
  }
64
64
  )
65
65
  )
66
- result, _, mock_batch_cls = _invoke(
67
- cli_runner, ["-f", str(config_path)], tmp_path
68
- )
66
+ result, _, mock_batch_cls = _invoke(cli_runner, ["-f", str(config_path)], tmp_path)
69
67
  assert result.exit_code != 0
70
68
  assert "fully-qualified ECR URL" in result.output
71
69
  mock_batch_cls.assert_not_called()
@@ -82,9 +80,7 @@ class TestCliImageValidation:
82
80
  assert call_kwargs["image_override"] == good
83
81
 
84
82
  def test_no_image_skips_validation(self, cli_runner, tmp_path):
85
- result, mock_client, _ = _invoke(
86
- cli_runner, ["--command", "echo hi"], tmp_path
87
- )
83
+ result, mock_client, _ = _invoke(cli_runner, ["--command", "echo hi"], tmp_path)
88
84
  assert result.exit_code == 0, result.output
89
85
  call_kwargs = mock_client.submit_job.call_args[1]
90
86
  assert call_kwargs.get("image_override") is None
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