Skip to main content

FastDepends - extracted and cleared from HTTP domain logic FastAPI Dependency Injection System. Async and sync are both supported.

Project description

FastDepends

Tests coverage Coverage Package version downloads
Supported Python versions GitHub


Documentation: https://lancetnik.github.io/FastDepends/


FastDepends - extracted and cleared from HTTP domain logic Fastapi Dependency Injection System. This is a little library, providing you ability to use lovely Fastapi interfaces at your own projects or tools.

Thanks to fastapi and pydantic projects for this greate functional. This package just a little change Fasapi sources to provide DI functionality pyre-python way.

Async and sync code supported as well.

Installation

pip install fast-depends

Usage

There is no way to make Dependency Injection easier

You can use this library without any frameworks at sync and async code both

Async code

import asyncio

from fast_depends import inject, Depends

async def dependency(a: int) -> int:
    return a

@inject
async def main(
    a: int,
    b: int,
    c: int = Depends(dependency)
) -> float:
    return a + b + c

assert asyncio.run(main("1", 2)) == 4.0

Sync code

from fast_depends import inject, Depends

def dependency(a: int) -> int:
    return a

@inject
def main(
    a: int,
    b: int,
    c: int = Depends(dependency)
) -> float:
    return a + b + c

assert main("1", 2) == 4.0

@inject decorator playing multiple roles at the same time:

  • resolve Depends classes
  • cast types according python annotation
  • validate incoming parameters using pydantic

Features

Syncronous code is fully supported at this package: without any async_to_sync, run_sync, syncify or any other tricks.

Also, FastDepends casts function return the same way, it can be very felpfull to build your own tools.

There is two main defferences from native Fastapi DI System.


Note

Library was build by actual 0.95.0 FastAPI version.

If we'll be too far behind, please, contact me or contubute yourself. Really appreciate your help.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fast_depends-1.0.1.tar.gz (10.8 kB view hashes)

Uploaded Source

Built Distribution

fast_depends-1.0.1-py3-none-any.whl (11.1 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page