cometapi-cli 0.3.3__tar.gz → 0.3.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.
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/CHANGELOG.md +15 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/PKG-INFO +3 -3
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/pyproject.toml +3 -3
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/__init__.py +1 -1
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/balance.py +2 -1
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_balance.py +14 -6
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/uv.lock +3 -3
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/.github/workflows/ci.yml +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/.github/workflows/publish.yml +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/.gitignore +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/AGENTS.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/CODE_OF_CONDUCT.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/CONTRIBUTING.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/LICENSE +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/README.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/SECURITY.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/SKILL.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/README.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/authentication.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/account.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/balance.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/chat.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/config.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/doctor.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/init.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/logs.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/model.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/models.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/repl.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/run.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/stats.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/tasks.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/commands/tokens.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/configuration.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/errors.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/installation.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/docs/output-formats.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/skills/live-test/SKILL.md +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/app.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/catalog.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/client.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/__init__.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/account.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/chat.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/chat_repl.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/config_cmd.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/doctor.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/logs.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/model.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/models.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/repl.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/run.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/stats.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/tasks.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/commands/tokens.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/config.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/console.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/constants.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/errors.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/formatters.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/main.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/src/cometapi_cli/urls.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/__init__.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/conftest.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_account.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_catalog.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_chat.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_config.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_doctor.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_errors.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_formatters.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_help.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_logs.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_model_info.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_models.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_run.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_stats.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_tasks.py +0 -0
- {cometapi_cli-0.3.3 → cometapi_cli-0.3.5}/tests/test_tokens.py +0 -0
|
@@ -5,6 +5,21 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.3.5] — 2026-06-17
|
|
9
|
+
|
|
10
|
+
### Fixed
|
|
11
|
+
|
|
12
|
+
- Relaxed Click and Typer upper bounds after the CI-only failure was fixed in
|
|
13
|
+
`balance` validation/tests, avoiding unnecessary conflicts with other tools
|
|
14
|
+
installed in shared Python environments.
|
|
15
|
+
|
|
16
|
+
## [0.3.4] — 2026-06-17
|
|
17
|
+
|
|
18
|
+
### Fixed
|
|
19
|
+
|
|
20
|
+
- `balance --source` now validates invalid source values before loading credentials, so usage errors are reported consistently even in fresh CI or unauthenticated environments.
|
|
21
|
+
- Balance help tests now normalize ANSI output before checking option names.
|
|
22
|
+
|
|
8
23
|
## [0.3.3] — 2026-06-17
|
|
9
24
|
|
|
10
25
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cometapi-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.5
|
|
4
4
|
Summary: CometAPI CLI — official command-line interface for the CometAPI AI gateway
|
|
5
5
|
Project-URL: Homepage, https://pypi.org/project/cometapi-cli/
|
|
6
6
|
Project-URL: Documentation, https://apidoc.cometapi.com/libraries/cli/overview
|
|
@@ -21,14 +21,14 @@ Classifier: Topic :: Internet
|
|
|
21
21
|
Classifier: Topic :: Software Development :: Libraries
|
|
22
22
|
Classifier: Typing :: Typed
|
|
23
23
|
Requires-Python: >=3.10
|
|
24
|
-
Requires-Dist: click
|
|
24
|
+
Requires-Dist: click>=8.0
|
|
25
25
|
Requires-Dist: openai>=1.0.0
|
|
26
26
|
Requires-Dist: prompt-toolkit>=3.0
|
|
27
27
|
Requires-Dist: pyyaml>=6.0
|
|
28
28
|
Requires-Dist: rich>=13.0
|
|
29
29
|
Requires-Dist: tomli-w>=1.0
|
|
30
30
|
Requires-Dist: tomli>=2.0; python_version < '3.11'
|
|
31
|
-
Requires-Dist: typer
|
|
31
|
+
Requires-Dist: typer>=0.12
|
|
32
32
|
Provides-Extra: dev
|
|
33
33
|
Requires-Dist: pytest>=8.0; extra == 'dev'
|
|
34
34
|
Requires-Dist: ruff>=0.8; extra == 'dev'
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "cometapi-cli"
|
|
3
|
-
version = "0.3.
|
|
3
|
+
version = "0.3.5"
|
|
4
4
|
description = "CometAPI CLI — official command-line interface for the CometAPI AI gateway"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = { text = "MIT" }
|
|
@@ -24,9 +24,9 @@ classifiers = [
|
|
|
24
24
|
"Typing :: Typed",
|
|
25
25
|
]
|
|
26
26
|
dependencies = [
|
|
27
|
-
"click>=8.0
|
|
27
|
+
"click>=8.0",
|
|
28
28
|
"openai>=1.0.0",
|
|
29
|
-
"typer>=0.12
|
|
29
|
+
"typer>=0.12",
|
|
30
30
|
"rich>=13.0",
|
|
31
31
|
"tomli>=2.0; python_version < '3.11'",
|
|
32
32
|
"tomli-w>=1.0",
|
|
@@ -49,8 +49,9 @@ def balance(
|
|
|
49
49
|
to per-key billing stats. Use --source to force a specific view.
|
|
50
50
|
"""
|
|
51
51
|
fmt = resolve_format(ctx, json_output, output_format)
|
|
52
|
+
normalized_source = _normalize_balance_source(source)
|
|
52
53
|
client = get_client()
|
|
53
|
-
raw = client.get_balance(source=
|
|
54
|
+
raw = client.get_balance(source=normalized_source)
|
|
54
55
|
|
|
55
56
|
# For JSON output, pass raw data for maximum information
|
|
56
57
|
if fmt == OutputFormat.JSON:
|
|
@@ -3,6 +3,13 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import json
|
|
6
|
+
import re
|
|
7
|
+
|
|
8
|
+
ANSI_RE = re.compile(r"\x1b\[[0-?]*[ -/]*[@-~]")
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def clean_output(output: str) -> str:
|
|
12
|
+
return ANSI_RE.sub("", output)
|
|
6
13
|
|
|
7
14
|
|
|
8
15
|
def test_balance_json(cli_runner, patched_client):
|
|
@@ -56,12 +63,13 @@ def test_balance_source_account(cli_runner, patched_client):
|
|
|
56
63
|
def test_balance_help(cli_runner):
|
|
57
64
|
result = cli_runner("balance", "-h")
|
|
58
65
|
assert result.exit_code == 0
|
|
59
|
-
|
|
60
|
-
assert "
|
|
61
|
-
assert "
|
|
62
|
-
assert "
|
|
63
|
-
assert "
|
|
64
|
-
assert "
|
|
66
|
+
output = clean_output(result.output)
|
|
67
|
+
assert "--source" in output
|
|
68
|
+
assert "Data source:" in output
|
|
69
|
+
assert "'key'" in output
|
|
70
|
+
assert "API key" in output
|
|
71
|
+
assert "'token'" not in output
|
|
72
|
+
assert "--json" in output
|
|
65
73
|
|
|
66
74
|
|
|
67
75
|
def test_balance_source_invalid(cli_runner):
|
|
@@ -66,7 +66,7 @@ wheels = [
|
|
|
66
66
|
|
|
67
67
|
[[package]]
|
|
68
68
|
name = "cometapi-cli"
|
|
69
|
-
version = "0.3.
|
|
69
|
+
version = "0.3.5"
|
|
70
70
|
source = { editable = "." }
|
|
71
71
|
dependencies = [
|
|
72
72
|
{ name = "click" },
|
|
@@ -87,7 +87,7 @@ dev = [
|
|
|
87
87
|
|
|
88
88
|
[package.metadata]
|
|
89
89
|
requires-dist = [
|
|
90
|
-
{ name = "click", specifier = ">=8.0
|
|
90
|
+
{ name = "click", specifier = ">=8.0" },
|
|
91
91
|
{ name = "openai", specifier = ">=1.0.0" },
|
|
92
92
|
{ name = "prompt-toolkit", specifier = ">=3.0" },
|
|
93
93
|
{ name = "pytest", marker = "extra == 'dev'", specifier = ">=8.0" },
|
|
@@ -96,7 +96,7 @@ requires-dist = [
|
|
|
96
96
|
{ name = "ruff", marker = "extra == 'dev'", specifier = ">=0.8" },
|
|
97
97
|
{ name = "tomli", marker = "python_full_version < '3.11'", specifier = ">=2.0" },
|
|
98
98
|
{ name = "tomli-w", specifier = ">=1.0" },
|
|
99
|
-
{ name = "typer", specifier = ">=0.12
|
|
99
|
+
{ name = "typer", specifier = ">=0.12" },
|
|
100
100
|
]
|
|
101
101
|
provides-extras = ["dev"]
|
|
102
102
|
|
|
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
|
|
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
|
|
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
|
|
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
|