Skip to content

Injecting with typing.Annotated #693

Closed
@maintain0404

Description

@maintain0404

Hello. Thank you for building and maintaining awesome project.

FastAPI recently announced a new feature called Annotated. link
Currently, dependency-injector is not compatible with this feature. How about modify it to be compatible?
Like fastapi, wiring with Annotated can make several benefits like re-using, more compatibility with type checkers and so on.

See sample code following.

from typing import Annotated
from dependency_injector.containers import DeclarativeContainer
from dependency_injector.providers import Factory
from dependency_injector.wiring import inject


class Service:
    ...


class Container(DeclarativeContainer):
    service = Factory(Service)


WiredService = Annotated[Service, Provide[Container.service]]


@inject
def to_be_injected(service: WiredService):
    ...

I already made it for using at my personal work.
If PR is welcome, I'll made PR with the code I've wrote and other work.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions