No project description provided
Project description
RestCodeGen
Generate Python clients from OpenAPI specifications with ease
🚀 Overview
RestCodeGen is a powerful tool for automatically generating Python client libraries from OpenAPI 3 specifications. It streamlines the process of interacting with REST APIs, allowing developers and testers to quickly integrate with services that provide OpenAPI documentation.
✨ Key Features
- Easy Client Generation: Create Python clients with a single command
- Async Support: Generate both synchronous and asynchronous clients
- Selective API Generation: Choose specific API tags to include
- Built-in Logging: Integrated with structlog for comprehensive request/response tracking
- Customizable: Use your own HTTPX client for advanced configurations
- Type Hints: All generated code includes proper type annotations
📦 Installation
RestCodeGen requires Python 3.10 or higher. Install it using pip:
pip install restcodegen
Or with Poetry:
poetry add restcodegen
🔧 Usage
Basic Command
restcodegen generate -u "http://example.com/openapi.json" -s "my-service" -a false
Command Parameters
| Parameter | Short | Description | Required | Default |
|---|---|---|---|---|
--url |
-u |
URL of the OpenAPI specification | Yes | - |
--service-name |
-s |
Name of the service | Yes | - |
--async-mode |
-a |
Enable asynchronous client generation | No | false |
--api-tags |
-t |
Comma-separated list of API tags to generate | No | All APIs |
Example
Generate a client for the Petstore API:
restcodegen generate -u "https://petstore3.swagger.io/api/v3/openapi.json" -s "petstore" -a false
📁 Generated Structure
After successful execution, a client library will be created with the following structure:
└── clients
└── http
├── schemas # OpenAPI 3.0.0 schemas for all generated APIs
└── service_name # Service name
├── apis # API client classes
└── models # Pydantic models
💻 Using the Generated Client
The generated client includes built-in logging with structlog and supports custom HTTPX clients:
from restcodegen.restclient import Client, Configuration
from clients.http.petstore import PetApi
import structlog
# Configure logging
structlog.configure(
processors=[
structlog.processors.JSONRenderer(
indent=4,
ensure_ascii=True,
)
]
)
# Create and use the client
if __name__ == '__main__':
# Configure the base URL
configuration = Configuration(host="https://petstore3.swagger.io/api/v3")
# Use the built-in client
api_client = Client(configuration)
# Or use your custom HTTPX client
# import httpx
# api_client = httpx.Client() # or httpx.AsyncClient() for async mode
# Initialize the API
pet_api = PetApi(api_client)
# Make API calls
response = pet_api.get_pet_pet_id(pet_id=1)
print(response)
🔄 Development Workflow
-
Install development dependencies:
poetry install -
Run tests:
poetry run pytest
-
Check code quality:
poetry run ruff check . poetry run mypy .
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
🤝 Contributing
Contributions are welcome! Feel free to open issues or submit pull requests.
📬 Contact
For questions or feedback, please open an issue in the repository.
RestCodeGen - Making API integration simple and efficient
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file restcodegen-1.0.3.tar.gz.
File metadata
- Download URL: restcodegen-1.0.3.tar.gz
- Upload date:
- Size: 13.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8b76d41e975045583c87b16abe86257e618052b08fdd615fed847993d7c057a9
|
|
| MD5 |
ea2bc663f9eaaefca5c88b3bab103463
|
|
| BLAKE2b-256 |
3ec9fcdf7709931da72b4b91aba20e9b0da01d4c390fcf9cea032abe07bc7db6
|
File details
Details for the file restcodegen-1.0.3-py3-none-any.whl.
File metadata
- Download URL: restcodegen-1.0.3-py3-none-any.whl
- Upload date:
- Size: 17.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.22
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2638725eb1c78c85dba9d0664d22c0c7f8ec908ed80a3ba008e52d8b1471ee5b
|
|
| MD5 |
170553e5e815a5480e9a0c928fafa37d
|
|
| BLAKE2b-256 |
be2de9e14b9aff5fcae68d450d598ec14433211c86a0089f80e0e2d5e7c758bc
|