web_fractal
Конструктор веб-приложений поверх SQLAlchemy и Pydantic: типобезопасный DSL фильтров, CRUD-миксины, ABAC-правила доступа, контроллеры для нескольких транспортов. Ядро не привязано к веб-фреймворку — интеграции подключаются экстрами.
pip install web_fractal # ядро: db, dtos, filters, mixins, security
pip install "web_fractal[fastapi]" # + контроллеры и сборка FastAPI-приложения
Что внутри
| Модуль | Зачем |
|---|---|
web_fractal.db |
Base, UnitOfWork, paginate, apply_filters, copy_object |
web_fractal.dtos |
Pydantic-база с .not_blank, Pagination, MessageDTO |
web_fractal.types |
Unset/UNSET — sentinel «не фильтровать», в отличие от None |
web_fractal.filters |
FilterBase + FilterField[T]: DSL фильтрации с автогенерацией query-параметров |
web_fractal.mixins |
GenericRepo, GenericService — CRUD без копипасты |
web_fractal.core.security |
ABAC: SecurityContext, AccessRule, RowRule, FieldScope |
web_fractal.http |
HttpControllerABC, AutoHttpController (требует экстру fastapi) |
web_fractal.building_utils |
Сборка FastAPI-приложения из archtool-инжектора (экстра fastapi) |
web_fractal.transports |
Контроллеры Kafka / gRPC / GraphQL (свои экстры) |
Фильтры
from web_fractal.filters import FilterBase, FilterField
class UserFilter(FilterBase):
name: FilterField[str]
age: FilterField[int]
# FastAPI-зависимость с явными query-параметрами в Swagger
UserFilterDep = UserFilter.as_fastapi_dep()
Единица работы
from web_fractal.db import UnitOfWork
async with UnitOfWork(session_maker) as uow:
session = uow.get_session()
...
await session.commit()
Экстры
| Экстра | Что включает |
|---|---|
fastapi |
HTTP-контроллеры, middlewares, сборка приложения |
aiohttp |
utils.download_large_file |
kafka, grpc, graphql |
соответствующие транспорты |
django |
адаптеры для Django-проектов |
Пакет не импортирует подмодули на загрузке (PEP 562): import web_fractal.db
не требует ни FastAPI, ни aiohttp. Публичные имена доступны и из корня —
from web_fractal import UnitOfWork — но резолвятся лениво, при первом
обращении.
Разработка
uv sync --extra dev
pytest
MIT.
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 web_fractal-0.2.1.tar.gz.
File metadata
- Download URL: web_fractal-0.2.1.tar.gz
- Upload date:
- Size: 60.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d593c8179d203bf7b5b1a211ddbec14f35106c7c34d34571db9bc06858f5782d
|
|
| MD5 |
a5f160e3bf906c2d905e717979dd1071
|
|
| BLAKE2b-256 |
5e2c47c40a9de2dca176053693fd10ce1548513d5dde8b8aeb03c1d746f28c0a
|
File details
Details for the file web_fractal-0.2.1-py3-none-any.whl.
File metadata
- Download URL: web_fractal-0.2.1-py3-none-any.whl
- Upload date:
- Size: 47.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
007c90b543128af6d14cfeaa51f0c1832548870b1edd2512e5af80e429c08459
|
|
| MD5 |
22a85209b2d8ca814b0d6047f542f6e6
|
|
| BLAKE2b-256 |
5aa2833ba01967f3bcb4ef5d15a7b17d82288a2e257c83c8b9e87c14d68c7b24
|