56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
from enum import Enum
|
|
from typing import Any, Callable, List, Type, TypeVar, overload
|
|
|
|
T = TypeVar("T")
|
|
|
|
class MissingDependencyException(Exception): ...
|
|
class MissingDependencyError(MissingDependencyException): ...
|
|
class InvalidRegistrationException(Exception): ...
|
|
class InvalidRegistrationError(InvalidRegistrationException): ...
|
|
class InvalidForwardReferenceException(Exception): ...
|
|
class InvalidForwardReferenceError(InvalidForwardReferenceException): ...
|
|
|
|
class Scope(Enum):
|
|
transient = 0
|
|
singleton = 1
|
|
|
|
class _Empty: ...
|
|
|
|
empty: _Empty
|
|
|
|
class Container:
|
|
def __init__(self) -> None: ...
|
|
|
|
@overload
|
|
def register(
|
|
self,
|
|
service: Type[T],
|
|
factory: Type[T] | Callable[..., T] | _Empty = ...,
|
|
instance: T | _Empty = ...,
|
|
scope: Scope = ...,
|
|
**kwargs: Any,
|
|
) -> Container: ...
|
|
|
|
@overload
|
|
def register(
|
|
self,
|
|
service: str,
|
|
factory: Callable[..., Any] | _Empty = ...,
|
|
instance: Any | _Empty = ...,
|
|
scope: Scope = ...,
|
|
**kwargs: Any,
|
|
) -> Container: ...
|
|
|
|
def register(
|
|
self,
|
|
service: Type[T] | str,
|
|
factory: Type[T] | Callable[..., T] | _Empty = ...,
|
|
instance: T | _Empty = ...,
|
|
scope: Scope = ...,
|
|
**kwargs: Any,
|
|
) -> Container: ...
|
|
|
|
def resolve(self, service_key: Type[T], **kwargs: Any) -> T: ...
|
|
def resolve_all(self, service: Type[T], **kwargs: Any) -> List[T]: ...
|
|
def instantiate(self, service_key: Type[T], **kwargs: Any) -> T: ...
|