Metadata-Version: 2.1
Name: starlette_web
Version: 0.1.9
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.4,>=4.3.0
Requires-Dist: starlette <1.0,>=0.37.2
Requires-Dist: webargs-starlette <2.2,>=2.1
Requires-Dist: python-multipart ==0.0.9
Requires-Dist: uvicorn[standard] <0.30,>=0.29.0
Requires-Dist: sqlalchemy <2.1,>=2.0.29
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
Requires-Dist: PyJWT[crypto] <2.9,>=2.8
Requires-Dist: exceptiongroup <2.0,>=1.2.1
Provides-Extra: admin
Requires-Dist: starlette-admin <0.12,>=0.11.2 ; extra == 'admin'
Provides-Extra: all
Requires-Dist: starlette-web[admin,apispec,auth,deploy,develop,mqtt,postgres,redis,scheduler,testing] ; extra == 'all'
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: deploy
Requires-Dist: gunicorn <22.0,>=21.2.0 ; extra == 'deploy'
Provides-Extra: develop
Requires-Dist: black ~=22.10.0 ; extra == 'develop'
Provides-Extra: full
Requires-Dist: starlette-web[all] ; extra == 'full'
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.1 ; (sys_platform == "win32") and extra == 'scheduler'
Provides-Extra: ssh
Requires-Dist: asyncssh <2.15,>=2.14.2 ; extra == 'ssh'
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'

## 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.
