Skip to content

Commit c0ea66d

Browse files
committed
Add some basic usage to generated README
Closes #2
1 parent 78c0ad2 commit c0ea66d

File tree

4 files changed

+43
-2
lines changed

4 files changed

+43
-2
lines changed

openapi_python_client/__init__.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ def _build_metadata(self) -> None:
7070
# README.md
7171
readme = self.project_dir / "README.md"
7272
readme_template = self.env.get_template("README.md")
73-
readme.write_text(readme_template.render(description=package_description))
73+
readme.write_text(
74+
readme_template.render(
75+
project_name=self.project_name, description=package_description, package_name=self.package_name
76+
)
77+
)
7478

7579
def _build_models(self) -> None:
7680
# Generate models
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,34 @@
1+
# {{ project_name }}
12
{{ description }}
3+
4+
## Usage
5+
First, create a client:
6+
7+
```python
8+
from {{ package_name }} import Client
9+
10+
client = Client(base_url="https://api.example.com")
11+
```
12+
13+
If the endpoints you're going to hit require authentication, use `AuthenticatedClient` instead:
14+
15+
```python
16+
from {{ package_name }} import AuthenticatedClient
17+
18+
client = AuthenticatedClient(base_url="https://api.example.com", token="SuperSecretToken")
19+
```
20+
21+
Now call your endpoint and use your models:
22+
23+
```python
24+
from {{ package_name }}.models import MyDataModel
25+
from {{ package_name }}.api.my_tag import get_my_data_model
26+
27+
my_data: MyDataModel = get_my_data_model(client=client)
28+
```
29+
30+
Things to know:
31+
1. Every path/method combo becomes a Python function with type annotations.
32+
1. All path/query params, and bodies become method arguments.
33+
1. If your endpoint had any tags on it, the first tag will be used as a module name for the function (my_tag above)
34+
1. Any endpoint which did not have a tag will be in `{{ package_name }}.api.default`

openapi_python_client/templates/client.pyi

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ class Client:
66
""" A class for keeping track of data related to the API """
77

88
base_url: str
9+
910
def get_headers(self) -> Dict[str, str]:
1011
""" Get headers to be used in all endpoints """
1112
return {}
@@ -15,6 +16,7 @@ class AuthenticatedClient(Client):
1516
""" A Client which has been authenticated for use on secured endpoints """
1617

1718
token: str
19+
1820
def get_headers(self) -> Dict[str, str]:
1921
""" Get headers to be used in authenticated endpoints """
2022
return {"Authorization": f"Bearer {self.token}"}

tests/test___init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,9 @@ def test__build_metadata(self, mocker):
135135
project_name=project.project_name, package_name=project.package_name, description=description
136136
)
137137
pyproject_path.write_text.assert_called_once_with(pyproject_template.render())
138-
readme_template.render.assert_called_once_with(description=description)
138+
readme_template.render.assert_called_once_with(
139+
description=description, project_name=project.project_name, package_name=project.package_name,
140+
)
139141
readme_path.write_text.assert_called_once_with(readme_template.render())
140142

141143
def test__build_models(self, mocker):

0 commit comments

Comments
 (0)