avr-cli 0.3.0__tar.gz → 0.4.0__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.
- {avr_cli-0.3.0 → avr_cli-0.4.0}/PKG-INFO +3 -2
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avr_cli.egg-info/PKG-INFO +3 -2
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avr_cli.egg-info/SOURCES.txt +2 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avr_cli.egg-info/requires.txt +2 -1
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/_build_info.py +1 -1
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/api_client.py +21 -3
- avr_cli-0.4.0/avrea_cli/commands/sbom.py +757 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/helpers.py +15 -1
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/json_output.py +20 -5
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/main.py +1 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/vm.py +21 -3
- {avr_cli-0.3.0 → avr_cli-0.4.0}/pyproject.toml +5 -3
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_api_client.py +43 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_helpers.py +26 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_json_output.py +30 -0
- avr_cli-0.4.0/tests/test_sbom.py +903 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_vm.py +39 -4
- {avr_cli-0.3.0 → avr_cli-0.4.0}/LICENSE +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/README.md +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avr_cli.egg-info/dependency_links.txt +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avr_cli.egg-info/entry_points.txt +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avr_cli.egg-info/top_level.txt +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/__init__.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/assets/logo_mark.svg +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/audit.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/auth.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/billing.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/click_ext.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/__init__.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/auth_cmd.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/cache.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/config_cmd.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/health.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/internal.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/job.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/log.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/org.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/pr.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/repo.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/run.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/settings.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/status.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/commands/workflow.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/config.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/display.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/docs_gen.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/firewall.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/log_display.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/metrics_display.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/output.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/paths.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/repo_context.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/run_diagnostics.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/run_diagnostics_display.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/run_refs.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/transport.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/avrea_cli/version.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/setup.cfg +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_auth.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_auth_login.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_auth_sso.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_cache.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_config.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_config_cmd.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_display.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_docs_gen.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_env_conventions.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_firewall.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_global_flags.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_job_list.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_job_metrics_cmd.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_job_view_logs.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_lazy_registry.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_log_display.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_metrics_display.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_org_email_domain.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_org_saml.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_output.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_piped_output.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_pr_list.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_public_mirrors.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_repo_context.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_repo_mirror.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_run_attempts.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_run_command_refs.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_run_diagnose.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_run_list_flags.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_run_logs.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_run_refs.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_run_view.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_settings.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_transport.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_web_flag.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_workflow_actions.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_workflow_run.py +0 -0
- {avr_cli-0.3.0 → avr_cli-0.4.0}/tests/test_workflow_view.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: avr-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Avrea command-line client
|
|
5
5
|
Author-email: Avrea <support@avrea.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
14
14
|
Requires-Python: >=3.14
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
+
Requires-Dist: anyio>=4.14.2
|
|
17
18
|
Requires-Dist: click>=8.3.1
|
|
18
19
|
Requires-Dist: httpx>=0.28.1
|
|
19
20
|
Requires-Dist: platformdirs>=4.0
|
|
@@ -25,7 +26,7 @@ Provides-Extra: dev
|
|
|
25
26
|
Requires-Dist: pytest>=9.0.3; extra == "dev"
|
|
26
27
|
Requires-Dist: pytest-asyncio>=1.3.0; extra == "dev"
|
|
27
28
|
Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
|
|
28
|
-
Requires-Dist: ruff; extra == "dev"
|
|
29
|
+
Requires-Dist: ruff==0.15.13; extra == "dev"
|
|
29
30
|
Requires-Dist: ty==0.0.15; extra == "dev"
|
|
30
31
|
Dynamic: license-file
|
|
31
32
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: avr-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Avrea command-line client
|
|
5
5
|
Author-email: Avrea <support@avrea.com>
|
|
6
6
|
License-Expression: Apache-2.0
|
|
@@ -14,6 +14,7 @@ Classifier: Programming Language :: Python :: 3.14
|
|
|
14
14
|
Requires-Python: >=3.14
|
|
15
15
|
Description-Content-Type: text/markdown
|
|
16
16
|
License-File: LICENSE
|
|
17
|
+
Requires-Dist: anyio>=4.14.2
|
|
17
18
|
Requires-Dist: click>=8.3.1
|
|
18
19
|
Requires-Dist: httpx>=0.28.1
|
|
19
20
|
Requires-Dist: platformdirs>=4.0
|
|
@@ -25,7 +26,7 @@ Provides-Extra: dev
|
|
|
25
26
|
Requires-Dist: pytest>=9.0.3; extra == "dev"
|
|
26
27
|
Requires-Dist: pytest-asyncio>=1.3.0; extra == "dev"
|
|
27
28
|
Requires-Dist: pytest-timeout>=2.4.0; extra == "dev"
|
|
28
|
-
Requires-Dist: ruff; extra == "dev"
|
|
29
|
+
Requires-Dist: ruff==0.15.13; extra == "dev"
|
|
29
30
|
Requires-Dist: ty==0.0.15; extra == "dev"
|
|
30
31
|
Dynamic: license-file
|
|
31
32
|
|
|
@@ -45,6 +45,7 @@ avrea_cli/commands/org.py
|
|
|
45
45
|
avrea_cli/commands/pr.py
|
|
46
46
|
avrea_cli/commands/repo.py
|
|
47
47
|
avrea_cli/commands/run.py
|
|
48
|
+
avrea_cli/commands/sbom.py
|
|
48
49
|
avrea_cli/commands/settings.py
|
|
49
50
|
avrea_cli/commands/status.py
|
|
50
51
|
avrea_cli/commands/workflow.py
|
|
@@ -83,6 +84,7 @@ tests/test_run_list_flags.py
|
|
|
83
84
|
tests/test_run_logs.py
|
|
84
85
|
tests/test_run_refs.py
|
|
85
86
|
tests/test_run_view.py
|
|
87
|
+
tests/test_sbom.py
|
|
86
88
|
tests/test_settings.py
|
|
87
89
|
tests/test_transport.py
|
|
88
90
|
tests/test_vm.py
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
# Auto-generated by .github/workflows/release.yml; do not edit.
|
|
2
|
-
GIT_COMMIT = "
|
|
2
|
+
GIT_COMMIT = "5d74471e85fe9ce7a40209ef3daebaad435c38d8"
|
|
@@ -34,11 +34,17 @@ class ApiClient:
|
|
|
34
34
|
styled_status = click.style(status, fg="red")
|
|
35
35
|
click.echo(f" → {styled_method} {url} [{styled_status}]", err=True)
|
|
36
36
|
|
|
37
|
-
def public_get(
|
|
38
|
-
|
|
37
|
+
def public_get(
|
|
38
|
+
self, path: str, params: dict[str, Any] | None = None, timeout: float | None = None
|
|
39
|
+
) -> dict[str, Any]:
|
|
40
|
+
"""GET request to public API. ``timeout`` overrides the client default for
|
|
41
|
+
this call, e.g. so a polling loop never outlives its own deadline."""
|
|
39
42
|
url = f"{self.config.public_api_url}{path}"
|
|
43
|
+
effective_timeout = timeout if timeout is not None else self.timeout
|
|
40
44
|
try:
|
|
41
|
-
response = self._http.get(
|
|
45
|
+
response = self._http.get(
|
|
46
|
+
url, headers=self.config.get_api_headers(), timeout=effective_timeout, params=params
|
|
47
|
+
)
|
|
42
48
|
except httpx.HTTPError as exc:
|
|
43
49
|
self._log("GET", url, type(exc).__name__)
|
|
44
50
|
raise
|
|
@@ -58,6 +64,18 @@ class ApiClient:
|
|
|
58
64
|
response.raise_for_status()
|
|
59
65
|
return response.text
|
|
60
66
|
|
|
67
|
+
def public_get_bytes(self, path: str, params: dict[str, Any] | None = None) -> bytes:
|
|
68
|
+
"""GET a binary or opaque public API response, such as an SBOM artifact."""
|
|
69
|
+
url = f"{self.config.public_api_url}{path}"
|
|
70
|
+
try:
|
|
71
|
+
response = self._http.get(url, headers=self.config.get_api_headers(), timeout=self.timeout, params=params)
|
|
72
|
+
except httpx.HTTPError as exc:
|
|
73
|
+
self._log("GET", url, type(exc).__name__)
|
|
74
|
+
raise
|
|
75
|
+
self._log("GET", str(response.request.url), response.status_code)
|
|
76
|
+
response.raise_for_status()
|
|
77
|
+
return response.content
|
|
78
|
+
|
|
61
79
|
def public_post(
|
|
62
80
|
self,
|
|
63
81
|
path: str,
|