openapi-cli4ai 0.4.0__tar.gz → 0.5.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.
- openapi_cli4ai-0.5.0/.github/workflows/ci.yml +48 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.github/workflows/codeql.yml +2 -2
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.github/workflows/publish.yml +3 -3
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.gitignore +8 -0
- openapi_cli4ai-0.5.0/.pre-commit-config.yaml +7 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/CHANGELOG.md +23 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/PKG-INFO +2 -2
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/pyproject.toml +24 -2
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/src/openapi_cli4ai/cli.py +957 -339
- openapi_cli4ai-0.5.0/tests/__init__.py +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/conftest.py +0 -4
- openapi_cli4ai-0.5.0/tests/test_auth_flow_security.py +265 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_auth_flows.py +15 -16
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_caching.py +8 -4
- openapi_cli4ai-0.5.0/tests/test_cli_commands.py +455 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_commands.py +23 -10
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_coverage_gaps.py +4 -3
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_device_flow.py +6 -7
- openapi_cli4ai-0.5.0/tests/test_error_handling.py +180 -0
- openapi_cli4ai-0.5.0/tests/test_features.py +313 -0
- openapi_cli4ai-0.5.0/tests/test_foundation.py +101 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_run_command.py +85 -0
- openapi_cli4ai-0.5.0/tests/test_schema_composition.py +349 -0
- openapi_cli4ai-0.5.0/tests/test_security.py +740 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_sse_streaming.py +2 -2
- openapi_cli4ai-0.5.0/tests/test_v040_hardening.py +279 -0
- openapi_cli4ai-0.4.0/.github/workflows/ci.yml +0 -36
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.github/CODEOWNERS +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.github/dependabot.yml +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/.github/release.yml +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/CONTRIBUTING.md +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/LICENSE +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/README.md +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/SECURITY.md +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/demo.gif +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/examples/profiles.toml.example +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/openapi-cli4ai +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/src/openapi_cli4ai/__init__.py +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/src/openapi_cli4ai/__main__.py +0 -0
- /openapi_cli4ai-0.4.0/tests/__init__.py → /openapi_cli4ai-0.5.0/src/openapi_cli4ai/py.typed +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/fixtures/petstore_spec.json +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_auth.py +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_integration.py +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_oidc.py +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_profile_management.py +0 -0
- {openapi_cli4ai-0.4.0 → openapi_cli4ai-0.5.0}/tests/test_spec_parsing.py +0 -0
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
permissions:
|
|
10
|
+
contents: read
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
test:
|
|
14
|
+
runs-on: ubuntu-latest
|
|
15
|
+
strategy:
|
|
16
|
+
matrix:
|
|
17
|
+
python-version: ["3.11", "3.12", "3.13"]
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
20
|
+
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
|
21
|
+
with:
|
|
22
|
+
enable-cache: true
|
|
23
|
+
- name: Set up Python ${{ matrix.python-version }}
|
|
24
|
+
run: uv python install ${{ matrix.python-version }}
|
|
25
|
+
- name: Sync dependencies
|
|
26
|
+
run: uv sync --python ${{ matrix.python-version }}
|
|
27
|
+
- name: Run unit tests with coverage
|
|
28
|
+
run: uv run --python ${{ matrix.python-version }} pytest tests/ -m "not integration" -v --cov=openapi_cli4ai --cov-report=term-missing
|
|
29
|
+
|
|
30
|
+
lint:
|
|
31
|
+
runs-on: ubuntu-latest
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
34
|
+
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
|
35
|
+
- name: Ruff check
|
|
36
|
+
run: uvx ruff check .
|
|
37
|
+
- name: Ruff format check
|
|
38
|
+
run: uvx ruff format --check .
|
|
39
|
+
|
|
40
|
+
typecheck:
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
steps:
|
|
43
|
+
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
44
|
+
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
|
45
|
+
- name: Sync dependencies
|
|
46
|
+
run: uv sync
|
|
47
|
+
- name: Run mypy
|
|
48
|
+
run: uv run mypy src/openapi_cli4ai/ --ignore-missing-imports
|
|
@@ -17,7 +17,7 @@ jobs:
|
|
|
17
17
|
runs-on: ubuntu-latest
|
|
18
18
|
steps:
|
|
19
19
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
20
|
-
- uses: github/codeql-action/init@
|
|
20
|
+
- uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
|
|
21
21
|
with:
|
|
22
22
|
languages: python
|
|
23
|
-
- uses: github/codeql-action/analyze@
|
|
23
|
+
- uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
|
|
@@ -14,11 +14,11 @@ jobs:
|
|
|
14
14
|
contents: read
|
|
15
15
|
steps:
|
|
16
16
|
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
|
|
17
|
-
- uses: astral-sh/setup-uv@
|
|
17
|
+
- uses: astral-sh/setup-uv@cec208311dfd045dd5311c1add060b2062131d57 # v8.0.0
|
|
18
18
|
- name: Build sdist and wheel
|
|
19
19
|
run: uv build
|
|
20
20
|
- name: Upload artifacts
|
|
21
|
-
uses: actions/upload-artifact@
|
|
21
|
+
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
|
|
22
22
|
with:
|
|
23
23
|
name: dist
|
|
24
24
|
path: dist/
|
|
@@ -46,4 +46,4 @@ jobs:
|
|
|
46
46
|
with:
|
|
47
47
|
subject-path: dist/*
|
|
48
48
|
- name: Publish to PyPI
|
|
49
|
-
uses: pypa/gh-action-pypi-publish@
|
|
49
|
+
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b # v1.14.0
|
|
@@ -4,6 +4,29 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/).
|
|
6
6
|
|
|
7
|
+
## [0.5.0] - 2026-04-21
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- `--force-login` flag to bypass cached tokens (#9)
|
|
12
|
+
- Non-interactive `init` flags for scripted profile creation (#9)
|
|
13
|
+
- Security hardening across CLI surfaces (#10)
|
|
14
|
+
- OpenAPI spec composition support (#10)
|
|
15
|
+
- `py.typed` marker for downstream type checkers (#13)
|
|
16
|
+
|
|
17
|
+
### Changed
|
|
18
|
+
|
|
19
|
+
- SHA-pinned publish workflow and simplified CI (#13)
|
|
20
|
+
- Dependency updates: `rich` (#12), GitHub Actions group (#11)
|
|
21
|
+
|
|
22
|
+
## [0.4.0] - 2026-04-15
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
|
|
26
|
+
- OIDC Device Flow auth type for headless/SSH environments
|
|
27
|
+
- Token exchange and auto-discovery of OIDC endpoints
|
|
28
|
+
- Token injection from environment for CI use cases
|
|
29
|
+
|
|
7
30
|
## [0.3.0] - 2026-03-28
|
|
8
31
|
|
|
9
32
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: openapi-cli4ai
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.5.0
|
|
4
4
|
Summary: Turn any REST API with an OpenAPI spec into an AI-ready CLI
|
|
5
5
|
Project-URL: Homepage, https://github.com/dbgorilla/openapi-cli4ai
|
|
6
6
|
Project-URL: Repository, https://github.com/dbgorilla/openapi-cli4ai
|
|
@@ -21,7 +21,7 @@ Requires-Python: >=3.11
|
|
|
21
21
|
Requires-Dist: httpx<1,>=0.28
|
|
22
22
|
Requires-Dist: python-dotenv<2,>=1.0
|
|
23
23
|
Requires-Dist: pyyaml<7,>=6
|
|
24
|
-
Requires-Dist: rich<
|
|
24
|
+
Requires-Dist: rich<16,>=13
|
|
25
25
|
Requires-Dist: tomli-w<2,>=1.0
|
|
26
26
|
Requires-Dist: typer<1,>=0.24
|
|
27
27
|
Description-Content-Type: text/markdown
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "openapi-cli4ai"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.5.0"
|
|
8
8
|
description = "Turn any REST API with an OpenAPI spec into an AI-ready CLI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "MIT"
|
|
@@ -26,7 +26,7 @@ classifiers = [
|
|
|
26
26
|
dependencies = [
|
|
27
27
|
"typer>=0.24,<1",
|
|
28
28
|
"httpx>=0.28,<1",
|
|
29
|
-
"rich>=13,<
|
|
29
|
+
"rich>=13,<16",
|
|
30
30
|
"pyyaml>=6,<7",
|
|
31
31
|
"python-dotenv>=1.0,<2",
|
|
32
32
|
"tomli-w>=1.0,<2",
|
|
@@ -40,6 +40,14 @@ Issues = "https://github.com/dbgorilla/openapi-cli4ai/issues"
|
|
|
40
40
|
[project.scripts]
|
|
41
41
|
openapi-cli4ai = "openapi_cli4ai.cli:app"
|
|
42
42
|
|
|
43
|
+
[dependency-groups]
|
|
44
|
+
dev = [
|
|
45
|
+
"pytest>=8",
|
|
46
|
+
"pytest-cov>=5",
|
|
47
|
+
"mypy>=1.10,<2",
|
|
48
|
+
"types-PyYAML>=6,<7",
|
|
49
|
+
]
|
|
50
|
+
|
|
43
51
|
[tool.hatch.build.targets.wheel]
|
|
44
52
|
packages = ["src/openapi_cli4ai"]
|
|
45
53
|
|
|
@@ -50,3 +58,17 @@ target-version = "py311"
|
|
|
50
58
|
[tool.pytest.ini_options]
|
|
51
59
|
testpaths = ["tests"]
|
|
52
60
|
markers = ["integration: live API tests (may be slow)"]
|
|
61
|
+
|
|
62
|
+
[tool.mypy]
|
|
63
|
+
python_version = "3.11"
|
|
64
|
+
warn_return_any = false
|
|
65
|
+
warn_unused_configs = true
|
|
66
|
+
disallow_untyped_defs = false
|
|
67
|
+
check_untyped_defs = true
|
|
68
|
+
|
|
69
|
+
[tool.coverage.run]
|
|
70
|
+
source = ["openapi_cli4ai"]
|
|
71
|
+
|
|
72
|
+
[tool.coverage.report]
|
|
73
|
+
show_missing = true
|
|
74
|
+
skip_empty = true
|