New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

typer-di

Package Overview
Dependencies
Maintainers
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

typer-di

Extension for `typer` for dependency injection like in FastAPI

  • 0.1.2
  • PyPI
  • Socket score

Maintainers
1

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

  • add py.typed marker 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+

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc