BlackSheep is a web framework for Python asyncio designed to facilitate the implementation of stateless APIs and general purpose web applications. It is inspired by Flask and ASP.NET Core; it recreates several features from both these web frameworks. The concept of automatic binding of request parameters by request handler's signature and dependency injection of required services (as it happens in ASP.NET Core) is what makes BlackSheep unique today, in the context of Python web frameworks.
The project, as several other web frameworks for Python, is the fruit of the creative ferment around Yury Selivanov’s work, and the article uvloop: Blazing fast Python networking from 2016.
The project originally included an implementation of HTTP Server, but this was removed, and the web framework was abstracted from an exact HTTP Server and made compatible with ASGI HTTP Servers. This was a good move because the effort on the project can stay focused on higher-level features, while benefitting from the existing ecosystem and help from the Python community in implementing HTTP Servers (e.g. support for HTTP2).
The project's home
Why the name BlackSheep
The name BlackSheep was chosen for two reasons:
- to refer to the "black sheep" idiom, used to describe one who is unlike other members of a family, group, or organization, sometimes due to intentional rebelliousness - especially for the choice of giving so much importance to dependency injection (which is not very popular in Python community), asynchronous coding and type annotations (which are still debated upon in Python community), and for being a Python web framework inspired by ASP.NET Core.
- as a tribute to the song The Sinking Belle (Black Sheep) of the album Altar, by Boris and Sunn O))).