Skip to content

Commit a4b87d6

Browse files
committed
feat: refactor OpenAPI parser functions and enhance CI workflow
1 parent c4e9faf commit a4b87d6

16 files changed

+121
-302
lines changed

.github/workflows/tests.yml

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,37 @@ jobs:
1717
fail-fast: false
1818

1919
steps:
20-
- uses: actions/checkout@v3
21-
- uses: actions/setup-python@v3
20+
- name: 📥 Checkout code
21+
uses: actions/checkout@v3
22+
23+
- name: 🐍 Setup Python ${{ matrix.python-version }}
24+
uses: actions/setup-python@v3
2225
with:
2326
python-version: ${{ matrix.python-version }}
2427
architecture: x64
25-
- run: pip install poetry==1.3.1
26-
- run: poetry install
27-
- run: poetry run pytest
28-
- run: poetry run pytest --cov=src/ --cov-report=xml --cov-fail-under 90 --cov-config=.coveragerc
29-
- uses: codecov/codecov-action@v2
28+
29+
- name: 📦 Install Poetry and dependencies
30+
run: |
31+
pip install poetry==1.3.1
32+
poetry install
33+
34+
- name: 🧪 Run tests
35+
run: poetry run pytest
36+
37+
- name: 📊 Run tests with coverage
38+
run: poetry run pytest --cov=src/ --cov-report=xml --cov-fail-under 90 --cov-config=.coveragerc
39+
40+
- name: 🔍 Type checking with mypy
41+
run: poetry run mypy src/
42+
43+
- name: 🎨 Code formatting with black
44+
run: poetry run black --check .
45+
46+
- name: 🔧 Linting
47+
run: poetry run ruff check .
48+
49+
- name: 📈 Upload coverage to Codecov
50+
uses: codecov/codecov-action@v2
3051
if: always()
3152
with:
3253
token: ${{ secrets.CODECOV_TOKEN }}

OPENAPI_31_STATUS.md

Lines changed: 0 additions & 178 deletions
This file was deleted.

poetry.lock

Lines changed: 1 addition & 21 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,6 @@ fastapi = "^0.115.5"
5353
uvicorn = "^0.18.1"
5454
respx = "^0.22.0"
5555
aiohttp = "^3.8.3"
56-
responses = "^0.25.7"
57-
types-PyYAML = "^6.0.12.20240808"
58-
types-requests = "^2.32.0.20241016"
59-
types-urllib3 = "^1.26.25.14"
6056

6157
[tool.poetry.scripts]
6258
openapi-python-generator = "openapi_python_generator.__main__:main"

src/openapi_python_generator/generate_data.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
from .models import ConversionResult
2121
from .version_detector import detect_openapi_version
2222
from .parsers import (
23-
parse_openapi_30,
24-
parse_openapi_31,
25-
generate_code_30,
26-
generate_code_31,
23+
parse_openapi_3_0,
24+
parse_openapi_3_1,
25+
generate_code_3_0,
26+
generate_code_3_1,
2727
)
2828

2929

@@ -109,9 +109,9 @@ def get_open_api(source: Union[str, Path]):
109109
version = detect_openapi_version(data)
110110

111111
if version == "3.0":
112-
openapi_obj = parse_openapi_30(data) # type: ignore[assignment]
112+
openapi_obj = parse_openapi_3_0(data) # type: ignore[assignment]
113113
elif version == "3.1":
114-
openapi_obj = parse_openapi_31(data) # type: ignore[assignment]
114+
openapi_obj = parse_openapi_3_1(data) # type: ignore[assignment]
115115
else:
116116
# Unsupported version detected (version detection already limited to 3.0 / 3.1)
117117
raise ValueError(
@@ -216,7 +216,7 @@ def generate_data(
216216

217217
# Use version-specific generator
218218
if version == "3.0":
219-
result = generate_code_30(
219+
result = generate_code_3_0(
220220
openapi_obj, # type: ignore
221221
library,
222222
env_token_name,
@@ -225,7 +225,7 @@ def generate_data(
225225
pydantic_version,
226226
)
227227
elif version == "3.1":
228-
result = generate_code_31(
228+
result = generate_code_3_1(
229229
openapi_obj, # type: ignore
230230
library,
231231
env_token_name,

src/openapi_python_generator/parsers/__init__.py

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22
OpenAPI parsers for different specification versions.
33
"""
44

5-
from .openapi_30 import parse_openapi_30, generate_code_30
6-
from .openapi_31 import parse_openapi_31, generate_code_31
5+
from .openapi_30 import parse_openapi_3_0, generate_code_3_0
6+
from .openapi_31 import parse_openapi_3_1, generate_code_3_1
77

88
__all__ = [
9-
"parse_openapi_30",
10-
"generate_code_30",
11-
"parse_openapi_31",
12-
"generate_code_31",
9+
"parse_openapi_3_0",
10+
"generate_code_3_0",
11+
"parse_openapi_3_1",
12+
"generate_code_3_1",
1313
]

src/openapi_python_generator/parsers/openapi_30.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from openapi_python_generator.models import ConversionResult
1414

1515

16-
def parse_openapi_30(spec_data: dict) -> OpenAPI:
16+
def parse_openapi_3_0(spec_data: dict) -> OpenAPI:
1717
"""
1818
Parse OpenAPI 3.0 specification data.
1919
@@ -29,7 +29,7 @@ def parse_openapi_30(spec_data: dict) -> OpenAPI:
2929
return OpenAPI(**spec_data)
3030

3131

32-
def generate_code_30(
32+
def generate_code_3_0(
3333
data: OpenAPI,
3434
library: HTTPLibrary = HTTPLibrary.httpx,
3535
env_token_name: Optional[str] = None,

src/openapi_python_generator/parsers/openapi_31.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
from openapi_python_generator.models import ConversionResult
1414

1515

16-
def parse_openapi_31(spec_data: dict) -> OpenAPI:
16+
def parse_openapi_3_1(spec_data: dict) -> OpenAPI:
1717
"""
1818
Parse OpenAPI 3.1 specification data.
1919
@@ -29,7 +29,7 @@ def parse_openapi_31(spec_data: dict) -> OpenAPI:
2929
return OpenAPI(**spec_data)
3030

3131

32-
def generate_code_31(
32+
def generate_code_3_1(
3333
data: OpenAPI,
3434
library: HTTPLibrary = HTTPLibrary.httpx,
3535
env_token_name: Optional[str] = None,

tests/conftest.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import pytest
88

99
from openapi_python_generator.version_detector import detect_openapi_version
10-
from openapi_python_generator.parsers import parse_openapi_30, parse_openapi_31
10+
from openapi_python_generator.parsers import parse_openapi_3_0, parse_openapi_3_1
1111

1212
test_data_folder = Path(__file__).parent / "test_data"
1313
test_data_path = test_data_folder / "test_api.json"
@@ -25,9 +25,9 @@ def model_data_fixture(json_data):
2525
"""Parse OpenAPI spec with version-aware parser."""
2626
version = detect_openapi_version(json_data)
2727
if version == "3.0":
28-
yield parse_openapi_30(json_data)
28+
yield parse_openapi_3_0(json_data)
2929
elif version == "3.1":
30-
yield parse_openapi_31(json_data)
30+
yield parse_openapi_3_1(json_data)
3131
else:
3232
raise ValueError(f"Unsupported OpenAPI version: {version}")
3333

0 commit comments

Comments
 (0)