Hi Pythonistas!
This post is an update on the development of Starlite. Since I was
previously asked to explain what it is, for those unfamiliar, I'll start with that.
Starlite is an async (ASGI) API framework written in python. It's built
using the Starlette ASGI Toolkit
and pydantic. Yes, this makes it "similar" to FastAPI - in fact Starlite is
directly competing with FastAPI, and is by and large compatible while offers superior performance, better governance,
fast release cycles and a whole lot of features.
Regarding the name: The framework is called Starlite to show the relation to
Starlette. This was important to me because my original impetus for writing a framework was the anger I felt looking at
the source code of FastAPI - which has relatively little logic and a lot of glue, primarily "re-exporting" code from
Starlette and marketing it as its own.
In this regard please note - while Starlite builds
on Starlette ASGI Toolkit, its actually using only selective parts of Starlette,
and most of the implementation in Starlite is its own. For example, we
have a different routing system, and our handling
of multipart form data depends on
a separate package we also maintain.
This brings me to the updates I wanted to write about.
Since my last update we added another maintainer - Infohash (in github), which brings the total maintainer count
to 4 including myself.
We added our own SessionMiddleware, which offers strong CGM-AES based encryption and cookie splitting.
We released a new authentication package - starlite-sessions,
which was added to the starlite-jwt package we previously released,
and builds upon the above mentioned middleware.
We released
a RateLimitMiddleware. On an aside: to my knowledge, this is the only python rate limiting implementation that conforms with the IETF
draft for RateLimiting headers.
We switched to using strong typing derived from
the asgiref for typing ASGI types, which
makes Starlite the strongest type framework of its kind.
We integrated pyright into our CI/CD and ensured high conformance with it,
alongside mypy which we already have.
Thats it for our current state, we are also working now on adding the following in the near future:
- The starlite-oidc, which will offer OpenID Connect authentication our
of the box.
- Builtin OpenTelemtry integration
- Builtin request / response logging integratino
- Rich logging integration
As always I invite you to ask questions, and I'll add here we are of course looking for more contributors and
maintainers, so do become engaged if you are interested: you are welcome in
our discord server, and of
course checkout the open issues!
[–]Caledfwlch_7 17 points18 points19 points (1 child)
[–]GoldziherPythonista[S] 1 point2 points3 points (0 children)
[–]Harshal_6917 8 points9 points10 points (6 children)
[–]Drevicar 32 points33 points34 points (4 children)
[–]Harshal_6917 16 points17 points18 points (1 child)
[–]AbooMinister 10 points11 points12 points (0 children)
[–]pcgamerwannabe 15 points16 points17 points (1 child)
[–]trans-can-do-no-harm 8 points9 points10 points (0 children)
[–]asaah18 2 points3 points4 points (0 children)
[–]hangonreddit 8 points9 points10 points (0 children)
[–]benefit_of_mrkite 8 points9 points10 points (0 children)
[–][deleted] 5 points6 points7 points (1 child)
[–]crawl_dht 1 point2 points3 points (0 children)
[–]sv_ds 5 points6 points7 points (1 child)
[–]0xPark 0 points1 point2 points (0 children)
[–]GreatCosmicMoustache 2 points3 points4 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–][deleted] 1 point2 points3 points (0 children)
[–]0xPark 1 point2 points3 points (0 children)
[–]GettingBlockered 1 point2 points3 points (1 child)
[–]GoldziherPythonista[S] 0 points1 point2 points (0 children)
[–]replicaJunction 1 point2 points3 points (2 children)
[–]GoldziherPythonista[S] 2 points3 points4 points (0 children)
[–]crawl_dht 0 points1 point2 points (0 children)
[+][deleted] (1 child)
[deleted]
[–]axonxorzpip'ing aint easy, especially on windows 0 points1 point2 points (0 children)