Metadata-Version: 2.1
Name: starlette_web
Version: 0.1.7
Summary: Asynchronous web framework, based on Starlette and inspired by Django
Author-email: Sergey Sayamov <dolamroth@mail.ru>, Dmitry Burnaev <dmitry.burnaev@gmail.com>
License: MIT
Project-URL: Homepage, https://github.com/dolamroth/starlette-web
Project-URL: Issues, https://github.com/dolamroth/starlette-web/issues
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: License :: OSI Approved :: MIT License
Classifier: Development Status :: 2 - Pre-Alpha
Requires-Python: >=3.9
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: anyio<4.3,>=4.2.0
Requires-Dist: starlette<1.0,>=0.35.1
Requires-Dist: webargs-starlette<2.2,>=2.1
Requires-Dist: python-multipart==0.0.6
Requires-Dist: uvicorn[standard]<0.26,>=0.25.0
Requires-Dist: sqlalchemy<2.1,>=2.0.23
Requires-Dist: alembic<1.14,>=1.13.1
Requires-Dist: Jinja2<3.2,>=3.1
Requires-Dist: httpx<0.27,>=0.26.0
Requires-Dist: python-dotenv<0.22,>=0.21
Requires-Dist: traceback-with-variables<2.1,>=2.0.4
Requires-Dist: aiosmtplib<3.1,>=3.0.1
Requires-Dist: filelock<3.14,>=3.13.1
Requires-Dist: marshmallow<3.21,>=3.20.1
Requires-Dist: chardet<5.3,>=5.2.0
Provides-Extra: apispec
Requires-Dist: apispec<6.4,>=6.3.1; extra == "apispec"
Requires-Dist: pyyaml<6.1,>=6.0.1; extra == "apispec"
Requires-Dist: openapi-spec-validator<0.8,>=0.7.1; extra == "apispec"
Provides-Extra: admin
Requires-Dist: starlette-admin<0.12,>=0.11.2; extra == "admin"
Provides-Extra: auth
Requires-Dist: PyJWT[crypto]<2.9,>=2.8; extra == "auth"
Provides-Extra: mqtt
Requires-Dist: gmqtt<0.7,>=0.6.13; extra == "mqtt"
Provides-Extra: postgres
Requires-Dist: asyncpg<0.30,>=0.29; extra == "postgres"
Provides-Extra: redis
Requires-Dist: redis<5.1,>=5.0.1; extra == "redis"
Provides-Extra: scheduler
Requires-Dist: croniter<2.1,>=2.0.1; extra == "scheduler"
Requires-Dist: py-win-task-scheduler==0.2.0; sys_platform == "win32" and extra == "scheduler"
Provides-Extra: ssh
Requires-Dist: asyncssh<2.15,>=2.14.2; extra == "ssh"
Provides-Extra: deploy
Requires-Dist: gunicorn<22.0,>=21.2.0; extra == "deploy"
Provides-Extra: develop
Requires-Dist: black~=22.10.0; extra == "develop"
Provides-Extra: testing
Requires-Dist: pytest>=7.4.3; extra == "testing"
Requires-Dist: coverage>=6.2; extra == "testing"
Requires-Dist: psycopg2-binary>=2.9; extra == "testing"
Requires-Dist: requests>=2.28; extra == "testing"
Requires-Dist: flake8>=4.0; extra == "testing"
Provides-Extra: all
Requires-Dist: starlette-web[admin,apispec,auth,deploy,develop,mqtt,postgres,redis,scheduler,testing]; extra == "all"
Provides-Extra: full
Requires-Dist: starlette-web[all]; extra == "full"

## starlette_web

`starlette_web` is a native-asynchronous web-framework, based on [Starlette](https://www.starlette.io/) 
and inspired by [Django](https://www.djangoproject.com/) and its ecosystem.
It aims to provide most of the relevant features of Django in async-all-the-way setting.

Its priorities, from most important to least important, are as follows:

- **Providing a strict ecosystem** - all parts of framework are aimed to work well together and follow same ideas. 
  In a way, this goes against idea of mini-frameworks like Starlette, which favor a lot of contrib plug-ins, 
  written by different authors.
  Developer must follow the conventions of the framework in most cases.
- **Robustness** - `starlette_web` is written with **anyio** and aims to follow principles of structured concurrency.
- **Feature completeness** - while the aim is not to cover all the Django ecosystem 
  (especially, because a lot of it is legacy), many useful libraries are included.
- **Cross-platform support** - most of the features are supported for both POSIX and Windows systems. 
  However, a number of contrib modules aim specifically at certain OS, and obviously it's mostly Linux. 
- **Speed** - while framework is being used in multiple projects without speed issues, speed is not properly benchmarked.
  Probably, the framework is slower than all other async Python frameworks, though not by a large amount.

**SQLAlchemy** is used as framework's database toolkit and ORM.  
**Marshmallow** is used for (de)serialization in API.  
**OpenAPI** documentation (redoc) can be autogenerated with apispec contrib module.

The framework is not well suited for novice users. It assumes prior knowledge of Django and async development in Python.

<u>The framework is in active development stage, so expect some breaking changes.</u>

## Installation, usage and supported features

Installation and deploy instructions are in [docs/howto](./docs/howto/README.md) section.

For supported features, see [docs/README.md](./docs/README.md) section.

See tests for more examples of usage.

## Code borrowing

starlette-web borrows/adopts a lot of code from other open-source Python libraries. 
List of libraries is given in the [docs](./docs/borrowing.md), with links to repositories and licences.
