|
1 | 1 | """ Generate modern Python clients from OpenAPI """ |
2 | 2 | from pathlib import Path |
3 | | -from typing import Any, Dict |
| 3 | +from typing import Any, Dict, Optional |
4 | 4 |
|
5 | 5 | import orjson |
6 | 6 | import requests |
|
9 | 9 | from .openapi_parser import OpenAPI, import_string_from_reference |
10 | 10 |
|
11 | 11 |
|
12 | | -def main(url: str) -> None: |
| 12 | +def main(*, url: Optional[str], path: Optional[str]) -> None: |
13 | 13 | """ Generate the client library """ |
14 | | - json = _get_json(url) |
15 | | - data_dict = _parse_json(json) |
| 14 | + data_dict = _get_json(url=url, path=path) |
16 | 15 | openapi = OpenAPI.from_dict(data_dict) |
17 | | - _build_project(openapi) |
| 16 | + _build_project(openapi=openapi) |
18 | 17 |
|
19 | 18 |
|
20 | | -def _get_json(url: str) -> bytes: |
21 | | - response = requests.get(url) |
22 | | - return response.content |
| 19 | +def _get_json(*, url: Optional[str], path: Optional[str]) -> Dict[str, Any]: |
| 20 | + json_bytes: bytes |
| 21 | + if url: |
| 22 | + response = requests.get(url) |
| 23 | + json_bytes = response.content |
| 24 | + else: |
| 25 | + json_bytes = Path(path).read_bytes() |
| 26 | + return orjson.loads(json_bytes) |
23 | 27 |
|
24 | 28 |
|
25 | | -def _parse_json(json: bytes) -> Dict[str, Any]: |
26 | | - return orjson.loads(json) |
27 | | - |
28 | | - |
29 | | -def _build_project(openapi: OpenAPI) -> None: |
| 29 | +def _build_project(*, openapi: OpenAPI) -> None: |
30 | 30 | env = Environment(loader=PackageLoader(__package__), trim_blocks=True, lstrip_blocks=True) |
31 | 31 |
|
32 | 32 | # Create output directories |
|
0 commit comments