Skip to content

Commit

Permalink
Add contributing file
Browse files Browse the repository at this point in the history
  • Loading branch information
Paul Hallett committed Oct 3, 2023
1 parent 1164888 commit d9dc894
Show file tree
Hide file tree
Showing 6 changed files with 120 additions and 18 deletions.
96 changes: 96 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
# Contributing

First things first: thank you for contributing! This project will be succesful thanks to everyone who contributes, and we're happy to have you.

## Bug or issue?

To raise a bug or issue please use [our GitHub](https://github.com/phalt/clientele/issues).

Please check the issue has not be raised before by using the search feature.

When submitting an issue or bug, please make sure you provide thorough detail on:

1. The version of clientele you are using
2. Any errors or outputs you see in your terminal
3. The OpenAPI schema you are using (this is particularly important).

## Contribution

If you want to directly contribute you can do so in two ways:

1. Documentation
2. Code

### Documentation

We use [mkdocs](https://www.mkdocs.org/) and [GitHub pages](https://pages.github.com/) to deploy our docs.

Fixing grammar, spelling mistakes, or expanding the documentation to cover features that are not yet documented, are all valuable contributions.

Please see the **Set up** instructions below to run the docs locally on your computer.

### Code

Contribution by writing code for new features, or fixing bugs, is a great way to contribute to the project.

#### Set up

Clone the repo:

```sh
git@github.com:phalt/clientele.git
cd clientele
```

Move to a feature branch:

```sh
git branch -B my-branch-name
```

Install all the dependencies:

```sh
python3.11 -m venv .venv
source .venv/bin/activate
make install
```

To make sure you have things set up correctly, please run the tests:

```sh
make test
```

### Preparing changes for review

Once you have made changes, here is a good check list to run through to get it published for review:

Regenerate the test clients to see what has changed, and if tests pass:

```sh
make generate-test-clients
make test
```

Check your `git diff` to see if anything drastic has changed. If changes happen that you did not expect, something has gone wrong. We want to make sure the clients do not change drastically when adding new features unless it is intended.

Format and lint the code:

```sh
make lint
```

Make sure you add to `CHANGELOG.md` and `docs/CHANGELOG.md` what changes you have made.

Make sure you add your name to `CONTRIBUTORS.md` as well!

### Making a pull request

Please push your changes up to a feature branch and make a new [pull request](https://github.com/phalt/clientele/compare) on GitHub.

Please add a description to the PR and some information about why the change is being made.

After a review you might need to make more changes.

Once accepted, a core contributor will merge your changes!
6 changes: 6 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -37,3 +37,9 @@ test: ## Run tests

shell: ## Run an ipython shell
poetry run ipython

generate-test-clients: ## regenerate the test clients in the tests/ directory
poetry install
clientele generate -f example_openapi_specs/best.json -o tests/test_client/
clientele generate -f example_openapi_specs/best.json -o tests/async_test_client/ --asyncio t
black tests/
16 changes: 8 additions & 8 deletions tests/async_test_client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
async def complex_model_request_complex_model_request_get() -> schemas.ComplexModelResponse:
"""Complex Model Request"""

response = await http.get(url="/complex-model-request")
response = await http.get(url=f"/complex-model-request")
return http.handle_response(
complex_model_request_complex_model_request_get, response
)
Expand All @@ -24,14 +24,14 @@ async def header_request_header_request_get(
headers_dict = (
headers and headers.model_dump(by_alias=True, exclude_unset=True) or None
)
response = await http.get(url="/header-request", headers=headers_dict)
response = await http.get(url=f"/header-request", headers=headers_dict)
return http.handle_response(header_request_header_request_get, response)


async def optional_parameters_request_optional_parameters_get() -> schemas.OptionalParametersResponse:
"""Optional Parameters Request"""

response = await http.get(url="/optional-parameters")
response = await http.get(url=f"/optional-parameters")
return http.handle_response(
optional_parameters_request_optional_parameters_get, response
)
Expand All @@ -42,7 +42,7 @@ async def request_data_request_data_post(
) -> typing.Union[schemas.HTTPValidationError, schemas.RequestDataResponse]:
"""Request Data"""

response = await http.post(url="/request-data", data=data.model_dump())
response = await http.post(url=f"/request-data", data=data.model_dump())
return http.handle_response(request_data_request_data_post, response)


Expand All @@ -51,7 +51,7 @@ async def request_data_request_data_put(
) -> typing.Union[schemas.HTTPValidationError, schemas.RequestDataResponse]:
"""Request Data"""

response = await http.put(url="/request-data", data=data.model_dump())
response = await http.put(url=f"/request-data", data=data.model_dump())
return http.handle_response(request_data_request_data_put, response)


Expand All @@ -69,14 +69,14 @@ async def request_data_path_request_data(
async def request_delete_request_delete_delete() -> schemas.DeleteResponse:
"""Request Delete"""

response = await http.delete(url="/request-delete")
response = await http.delete(url=f"/request-delete")
return http.handle_response(request_delete_request_delete_delete, response)


async def security_required_request_security_required_get() -> schemas.SecurityRequiredResponse:
"""Security Required Request"""

response = await http.get(url="/security-required")
response = await http.get(url=f"/security-required")
return http.handle_response(
security_required_request_security_required_get, response
)
Expand All @@ -103,7 +103,7 @@ async def query_request_optional_query_get(
async def simple_request_simple_request_get() -> schemas.SimpleResponse:
"""Simple Request"""

response = await http.get(url="/simple-request")
response = await http.get(url=f"/simple-request")
return http.handle_response(simple_request_simple_request_get, response)


Expand Down
2 changes: 1 addition & 1 deletion tests/async_test_client/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def handle_response(func, response):

auth_key = c.get_bearer_token()
headers = c.additional_headers()
headers.update(Authorization="Bearer " + auth_key)
headers.update(Authorization=f"Bearer " + auth_key)
client = httpx.AsyncClient(headers=headers)


Expand Down
16 changes: 8 additions & 8 deletions tests/test_client/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
def complex_model_request_complex_model_request_get() -> schemas.ComplexModelResponse:
"""Complex Model Request"""

response = http.get(url="/complex-model-request")
response = http.get(url=f"/complex-model-request")
return http.handle_response(
complex_model_request_complex_model_request_get, response
)
Expand All @@ -24,7 +24,7 @@ def header_request_header_request_get(
headers_dict = (
headers and headers.model_dump(by_alias=True, exclude_unset=True) or None
)
response = http.get(url="/header-request", headers=headers_dict)
response = http.get(url=f"/header-request", headers=headers_dict)
return http.handle_response(header_request_header_request_get, response)


Expand All @@ -33,7 +33,7 @@ def optional_parameters_request_optional_parameters_get() -> (
):
"""Optional Parameters Request"""

response = http.get(url="/optional-parameters")
response = http.get(url=f"/optional-parameters")
return http.handle_response(
optional_parameters_request_optional_parameters_get, response
)
Expand All @@ -44,7 +44,7 @@ def request_data_request_data_post(
) -> typing.Union[schemas.HTTPValidationError, schemas.RequestDataResponse]:
"""Request Data"""

response = http.post(url="/request-data", data=data.model_dump())
response = http.post(url=f"/request-data", data=data.model_dump())
return http.handle_response(request_data_request_data_post, response)


Expand All @@ -53,7 +53,7 @@ def request_data_request_data_put(
) -> typing.Union[schemas.HTTPValidationError, schemas.RequestDataResponse]:
"""Request Data"""

response = http.put(url="/request-data", data=data.model_dump())
response = http.put(url=f"/request-data", data=data.model_dump())
return http.handle_response(request_data_request_data_put, response)


Expand All @@ -69,7 +69,7 @@ def request_data_path_request_data(
def request_delete_request_delete_delete() -> schemas.DeleteResponse:
"""Request Delete"""

response = http.delete(url="/request-delete")
response = http.delete(url=f"/request-delete")
return http.handle_response(request_delete_request_delete_delete, response)


Expand All @@ -78,7 +78,7 @@ def security_required_request_security_required_get() -> (
):
"""Security Required Request"""

response = http.get(url="/security-required")
response = http.get(url=f"/security-required")
return http.handle_response(
security_required_request_security_required_get, response
)
Expand All @@ -105,7 +105,7 @@ def query_request_optional_query_get(
def simple_request_simple_request_get() -> schemas.SimpleResponse:
"""Simple Request"""

response = http.get(url="/simple-request")
response = http.get(url=f"/simple-request")
return http.handle_response(simple_request_simple_request_get, response)


Expand Down
2 changes: 1 addition & 1 deletion tests/test_client/http.py
Original file line number Diff line number Diff line change
Expand Up @@ -114,7 +114,7 @@ def handle_response(func, response):

auth_key = c.get_bearer_token()
headers = c.additional_headers()
headers.update(Authorization="Bearer " + auth_key)
headers.update(Authorization=f"Bearer " + auth_key)
client = httpx.Client(headers=headers)


Expand Down

0 comments on commit d9dc894

Please sign in to comment.