assertion-cli 0.5.3__tar.gz → 0.5.4__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 (29) hide show
  1. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/PKG-INFO +1 -1
  2. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/assertion_cli.egg-info/PKG-INFO +1 -1
  3. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/main.py +34 -1
  4. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/pyproject.toml +1 -1
  5. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_api.py +1 -1
  6. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_main.py +28 -1
  7. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/README.md +0 -0
  8. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/api.py +0 -0
  9. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/assertion_cli.egg-info/SOURCES.txt +0 -0
  10. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/assertion_cli.egg-info/dependency_links.txt +0 -0
  11. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/assertion_cli.egg-info/entry_points.txt +0 -0
  12. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/assertion_cli.egg-info/requires.txt +0 -0
  13. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/assertion_cli.egg-info/top_level.txt +0 -0
  14. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/bundle.py +0 -0
  15. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/git.py +0 -0
  16. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/link.py +0 -0
  17. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/models.py +0 -0
  18. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/session.py +0 -0
  19. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/setup.cfg +0 -0
  20. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/templates/ACTIVATION.md +0 -0
  21. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/templates/SKILL.md +0 -0
  22. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/templates/__init__.py +0 -0
  23. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_bundle.py +0 -0
  24. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_decision.py +0 -0
  25. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_git.py +0 -0
  26. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_init.py +0 -0
  27. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_link.py +0 -0
  28. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_prompt.py +0 -0
  29. {assertion_cli-0.5.3 → assertion_cli-0.5.4}/tests/test_session.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assertion-cli
3
- Version: 0.5.3
3
+ Version: 0.5.4
4
4
  Summary: CLI for the Assertion API
5
5
  Requires-Python: >=3.13
6
6
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: assertion-cli
3
- Version: 0.5.3
3
+ Version: 0.5.4
4
4
  Summary: CLI for the Assertion API
5
5
  Requires-Python: >=3.13
6
6
  Description-Content-Type: text/markdown
@@ -1,4 +1,5 @@
1
1
  import base64
2
+ import importlib.metadata
2
3
  import importlib.resources
3
4
  import json
4
5
  import re
@@ -8,6 +9,27 @@ from pathlib import Path
8
9
  import httpx
9
10
  import typer
10
11
 
12
+
13
+ _VERSION: str | None = None
14
+
15
+
16
+ def _get_version() -> str:
17
+ global _VERSION
18
+ if _VERSION is not None:
19
+ return _VERSION
20
+ try:
21
+ _VERSION = importlib.metadata.version("assertion-cli")
22
+ except importlib.metadata.PackageNotFoundError:
23
+ pyproject = Path(__file__).resolve().parent / "pyproject.toml"
24
+ if pyproject.exists():
25
+ import tomllib
26
+
27
+ data = tomllib.loads(pyproject.read_text(encoding="utf-8"))
28
+ _VERSION = data["project"]["version"]
29
+ else:
30
+ _VERSION = "0.0.0"
31
+ return _VERSION
32
+
11
33
  from api import AssertionClient
12
34
  from bundle import build_bundle
13
35
  from git import (
@@ -52,8 +74,19 @@ def render_checkpoint_response(resp: CheckpointResponse) -> str:
52
74
 
53
75
 
54
76
  @app.callback(invoke_without_command=True)
55
- def main(ctx: typer.Context) -> None:
77
+ def main(
78
+ ctx: typer.Context,
79
+ version: bool = typer.Option(
80
+ False,
81
+ "--version",
82
+ "-v",
83
+ help="Show version and exit.",
84
+ ),
85
+ ) -> None:
56
86
  """Assertion command group."""
87
+ if version:
88
+ typer.echo(f"assertion-cli {_get_version()}")
89
+ raise typer.Exit()
57
90
  if ctx.invoked_subcommand is None:
58
91
  typer.echo(ctx.get_help())
59
92
  raise typer.Exit(code=0)
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "assertion-cli"
7
- version = "0.5.3"
7
+ version = "0.5.4"
8
8
  description = "CLI for the Assertion API"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.13"
@@ -22,7 +22,7 @@ def test_client_init() -> None:
22
22
  200,
23
23
  json={
24
24
  "session_id": "s-99",
25
- "stacks": [{"id": "stack-1", "name": "Browser", "description": "desc"}],
25
+ "stacks": [{"id": "stack-1", "name": "Browser", "description": "desc", "repo": "owner/repo"}],
26
26
  },
27
27
  )
28
28
  )
@@ -4,9 +4,14 @@ import base64
4
4
 
5
5
  import httpx
6
6
  from _pytest.monkeypatch import MonkeyPatch
7
+ from typer.testing import CliRunner
7
8
 
8
- from models import CheckpointResponse, ReviewDetail
9
+ import main
9
10
  from main import _decode_screenshot, _write_screenshots, render_checkpoint_response
11
+ from models import CheckpointResponse, ReviewDetail
12
+
13
+
14
+ runner = CliRunner()
10
15
 
11
16
 
12
17
  def test_decode_screenshot_data_uri() -> None:
@@ -80,3 +85,25 @@ def test_render_checkpoint_response() -> None:
80
85
  assert "checkpoint_id: cp-1" in output
81
86
  assert "outcome: failed" in output
82
87
  assert "Needs work" in output
88
+
89
+
90
+ def test_version_long_flag(monkeypatch: MonkeyPatch) -> None:
91
+ monkeypatch.setattr(main, "_get_version", lambda: "1.2.3")
92
+ result = runner.invoke(main.app, ["--version"])
93
+ assert result.exit_code == 0
94
+ assert "assertion-cli 1.2.3" in result.stdout
95
+
96
+
97
+ def test_version_short_flag(monkeypatch: MonkeyPatch) -> None:
98
+ monkeypatch.setattr(main, "_get_version", lambda: "1.2.3")
99
+ result = runner.invoke(main.app, ["-v"])
100
+ assert result.exit_code == 0
101
+ assert "assertion-cli 1.2.3" in result.stdout
102
+
103
+
104
+ def test_version_not_confused_with_help(monkeypatch: MonkeyPatch) -> None:
105
+ """--version should exit with version string, not show help."""
106
+ monkeypatch.setattr(main, "_get_version", lambda: "1.2.3")
107
+ result = runner.invoke(main.app, ["--version"])
108
+ assert result.exit_code == 0
109
+ assert result.stdout.strip() == "assertion-cli 1.2.3"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes