Metadata-Version: 2.1
Name: starlette-web
Version: 0.1.6
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
Provides-Extra: apispec
Provides-Extra: admin
Provides-Extra: auth
Provides-Extra: postgres
Provides-Extra: redis
Provides-Extra: scheduler
Provides-Extra: deploy
Provides-Extra: develop
Provides-Extra: testing
Provides-Extra: all
Provides-Extra: full
License-File: LICENSE

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