A modern, high-performance Python web framework designed to transform your SQLAlchemy models directly into fully-featured, production-ready REST APIs with minimal code. Built with asyncio, SQLAlchemy, and Pydantic.
Project description
Jetio
The Zero-Boilerplate Python Framework for Rapid API Development
Jetio is a modern, high-performance Python web framework designed to transform your SQLAlchemy models directly into fully-featured, production-ready REST APIs with minimal code. Stop writing boilerplate and start building what matters.
Key Features
- Model-Driven APIs: Use standard SQLAlchemy models as your single source of truth for your database, validation, and API serialization.
- Automatic CRUD: Instantly generate robust Create, Read, Update, and Delete endpoints for any model with a single line of code.
- Secure by Design: Easily secure your auto-generated endpoints with a single flag and plug in your own authentication logic.
- Async First: Built from the ground up on an async core (powered by Starlette) for maximum performance and scalability.
- Automatic Docs: Get interactive and functional Swagger UI out of the box.
- Flexible & Familiar: Escape the generator whenever you need to. Use familiar decorator-based routing for custom endpoints, giving you the best of both worlds.
- Visit Jetio Framework You can deliver more than 500 times faster with Jetio - see how it works.
- Jetio Framework oneBenchmark Results: We compared Jetio speed with Flask & FastAPI See the result for yourself.
Example
# model.py
from sqlalchemy.orm import Mapped
from jetio import JetioModel
class User(JetioModel):
username: Mapped[str]
email: Mapped[str]
class Minister(JetioModel):
first_name: Mapped[str]
last_name: Mapped[str]
Get Jetio to make your app
# app.py
from jetio import Jetio, CrudRouter, add_swagger_ui
from model import User, Minister
app = Jetio()
add_swagger_ui(app)
# Generate 5 CRUD routes per model
CrudRouter(model=User).register_routes(app)
CrudRouter(model=Minister).register_routes(app)
if __name__ == "__main__":
app.run()
Database setup
Use your preferred DB tool.
or for quick dev environment, you can also change your app.py above to:
# app.py
from jetio import Jetio, CrudRouter, add_swagger_ui, Base, engine
from model import User, Minister
import asyncio
app = Jetio()
add_swagger_ui(app)
# Generate 5 CRUD routes per model
CrudRouter(model=User).register_routes(app)
CrudRouter(model=Minister).register_routes(app)
# --- Database and Server Startup ---
async def create_db_and_tables():
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
print("Database tables created.")
if __name__ == "__main__":
asyncio.run(create_db_and_tables())
app.run()
Simplified Single File Setup
You could simply have the model classes in the main file as follows.
from jetio import Jetio, CrudRouter, JetioModel, add_swagger_ui, Base, engine
import asyncio
from sqlalchemy.orm import Mapped
class Staff(JetioModel):
username: Mapped[str]
email: Mapped[str]
class Report(JetioModel):
title: Mapped[str]
content: Mapped[str]
app = Jetio()
add_swagger_ui(app)
# Generate 5 CRUD routes per model
CrudRouter(model=Staff).register_routes(app)
CrudRouter(model=Report).register_routes(app)
# --- Database and Server Startup ---
async def create_db_and_tables():
async with engine.begin() as conn:
await conn.run_sync(Base.metadata.create_all)
print("Database tables created.")
if __name__ == "__main__":
asyncio.run(create_db_and_tables())
app.run()
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file jetio-1.0.5.tar.gz.
File metadata
- Download URL: jetio-1.0.5.tar.gz
- Upload date:
- Size: 19.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.9.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7eb97facb7a49fcd40f0c3104543816427e6017e4086b05d0712f6442bc6a2f6
|
|
| MD5 |
227af37d5f89f9b3d36f4cac5594f280
|
|
| BLAKE2b-256 |
4e8e782800af2bbaf23f9055170fdcdb0708f283b17ee6deea6697f957bca6aa
|