Skip to content

Commit eebf045

Browse files
committed
update readme
1 parent 68fb8a6 commit eebf045

File tree

1 file changed

+24
-40
lines changed

1 file changed

+24
-40
lines changed

README.md

Lines changed: 24 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,26 @@
11
# LocalStack Python SDK
22

3-
This repository is a PoC for generating a Python SDK for the LocalStack public endpoint.
4-
5-
### Generate the spec
6-
7-
The first step is to generate the `openapi.yaml` spec.
8-
We have a script in `scripts/create_spec.py`
9-
- [ ] todo: fix the script; make sure it also fetches ext spec;
10-
`localstack-core` and `localstack-ext` are part of the dev dependencies for this very step.
11-
12-
### Generate the code
13-
We use openapi-generator from `openapitools`.
14-
To run the generation, run `./bin/generate.sh`.
15-
The script uses the docker image of the CLI and use the `openapi.yaml` file as input.
16-
By default, the generator creates a bunch of files, but the most important things are:
17-
- `api` package: with the all APIs categorized by tags;
18-
- `models` package: with the methods derived from the components or the inline specs;
19-
- [ ] the code from the inline components is much uglier, but we can overwrite some naming with come config (or move to components).
20-
21-
The python generator by default creates 3 functions for each path:
22-
- a normal function (the name is taken from the `operationId` in the specs) just with the validated response payload;
23-
- a function suffixed by `without_preloaded_content`: where the JSON responses are not validated;
24-
- a function suffixed by `with_http_info` which also returns the response header and status.
25-
26-
The code in these `api` files (but also in any other generated artifacts), can be modified by providing custom mustache templates.
27-
[These](https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator/src/main/resources/python) are the
28-
default for Python.
29-
Templates are not super immediate, but looking at them and at the generated code you can do it.
30-
For instance, I deleted the `without_preloaded_content` and `with_http_info` generated functions.
31-
32-
### Supporting files
33-
The generated code uses some supporting files, i.e., some utilities that are responsible of making the actual HTTP calls,
34-
validating and parsing the responses.
35-
I just checked in this code and take it as granted, but I am pretty sure we can come up with some simpler code and avoid
36-
to generate this part (would move out from `generated`).
37-
- [ ] see if I can write my own api client and all the necessary supporting code.
38-
39-
### TODO
40-
- [ ] understand if this can be viable at all;
41-
- [ ] devise a way to update the spec automatically and regenerate every time the code in `generated`;
42-
- much more...fill this list up
3+
This is the Python SDK for LocalStack.
4+
LocalStack offers a number of developer endpoints (see [docs](https://docs.localstack.cloud/references/internal-endpoints/)).
5+
This SDK provides a programmatic and easy way to interact with them.
6+
7+
> [!WARNING]
8+
> This project is still in a preview phase, and will be subject to fast and breaking changes.
9+
10+
### Project Structure
11+
12+
This project follows the following structure:
13+
14+
- `packages/localstack-sdk-generated` is a python project generated from the OpenAPI specs with [openapi-generator](https://github.com/OpenAPITools/openapi-generator).
15+
- `localstack-sdk-python` is the main project that has `localstack-sdk-generated` has the main dependency.
16+
17+
Developers are not supposed to modify at all `localstack-sdk-generated`.
18+
The code needs to be every time re-generated from specs using the `generate.sh` script in the `bin` folder.
19+
20+
This project uses [uv](https://github.com/astral-sh/uv) as package/project manager.
21+
22+
### Install & Run
23+
24+
You can simply run `make install-dev` to install the two packages and the needed dependencies.
25+
`make test` runs the test suite.
26+
Note that LocalStack (pro) should be running in the background to execute the test.

0 commit comments

Comments
 (0)