Extension for `typer` for dependency injection like in FastAPI
Project description
Dependency injection for Typer
Add dependency injection functionality to Typer library. Implement the same DI behavior as in FastAPI.
Description
With typer_di you can easely move common parts of your commands to dependency functions.
Any dependency function can depends on other functions and etc. All args and options will be merged to interface of each command that uses corresponding dependencies.
typer_di ensures to call each dependency callback only once.
Usage
Lets say you have a method that validates and parses a config:
def get_config(config_path: Path) -> Config:
...
In case of multiple commands you need to duplicate annotation code:
from typing import Annotated
from typer import Typer, Option
app = Typer()
@app.command()
def first(..., config_path: Annotated[Path, Option("--config")]):
config = get_config(config_path)
...
@app.command()
def second(..., config_path: Annotated[Path, Option("--config")]):
config = get_config(config_path)
...
With typer_di you can move annotations to parsing methods.
All you need is to use Depends annotation and replace the original Typer by TyperDI (it's a thin layer that transforms all passed functions unwrapping dependencies).
from typing import Annotated
from typer import Option
from typer_di import TyperDI, Depends
app = TyperDI()
def get_config(config_path: Annotated[Path, Option("--config")]) -> Config:
...
@app.command()
def first(..., config: Config = Depends(get_config)):
...
@app.command()
def second(..., config: Config = Depends(get_config)):
...
Release Notes
v0.1.5
- update package meta info for python 3.14
v0.1.4
- support python 3.14
- drop python 3.7
v0.1.3
- depend on
typer-slim - use strict typing
v0.1.2
- add
py.typedmarker to the package
v0.1.1
- fix invalid validation for duplicated names
- check for loops in dependency graph
v0.1.0
- first public version
- support py37+
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file typer_di-0.1.5.tar.gz.
File metadata
- Download URL: typer_di-0.1.5.tar.gz
- Upload date:
- Size: 6.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.1 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
daf4c36350d7ae055f1ca9584089110cddef3109d4c9ed36b2fd319cb099eba1
|
|
| MD5 |
03a560b3ba62face66757e94bb6503f3
|
|
| BLAKE2b-256 |
b2c5252818853cfe303cef47d93fc87cae56ee8dce63b7a852b9e477225eaf76
|