python dependency injector
1.0.0
Dependency Injector
무엇입니까? Dependency Injector
Python용 종속성 주입 프레임워크입니다.
종속성 주입 원칙을 구현하는 데 도움이 됩니다.
Dependency Injector
의 주요 기능:
Factory
, Singleton
, Callable
, Coroutine
, Object
, List
, Dict
, Configuration
, Resource
, Dependency
및 Selector
공급자를 제공합니다. 공급자를 참조하세요.yaml
, ini
및 json
파일, pydantic
설정, 환경 변수 및 사전에서 구성을 읽습니다. 구성 공급자를 참조하세요.mypy
친화적인 타이핑 스텁을 제공합니다. 입력 및 mypy를 참조하세요.Cython
으로 작성되었습니다. from dependency_injector import containers , providers
from dependency_injector . wiring import Provide , inject
class Container ( containers . DeclarativeContainer ):
config = providers . Configuration ()
api_client = providers . Singleton (
ApiClient ,
api_key = config . api_key ,
timeout = config . timeout ,
)
service = providers . Factory (
Service ,
api_client = api_client ,
)
@ inject
def main ( service : Service = Provide [ Container . service ]) -> None :
...
if __name__ == "__main__" :
container = Container ()
container . config . api_key . from_env ( "API_KEY" , required = True )
container . config . timeout . from_env ( "TIMEOUT" , as_ = int , default = 5 )
container . wire ( modules = [ __name__ ])
main () # <-- dependency is injected automatically
with container . api_client . override ( mock . Mock ()):
main () # <-- overridden dependency is injected automatically
main()
함수를 호출하면 Service
종속성이 자동으로 조립되고 주입됩니다.
테스트를 수행할 때 실제 API 클라이언트를 모의 API 클라이언트로 대체하기 위해 container.api_client.override()
메서드를 호출합니다. main()
호출하면 모의 객체가 주입됩니다.
모든 공급자를 다른 공급자로 재정의할 수 있습니다.
또한 다양한 환경에 맞게 프로젝트를 재구성하는 데 도움이 됩니다. 개발 또는 단계에서 API 클라이언트를 스텁으로 교체합니다.
Dependency Injector
사용하면 객체 조립이 컨테이너에 통합됩니다. 종속성 주입은 명시적으로 정의됩니다. 이를 통해 애플리케이션 작동 방식을 더 쉽게 이해하고 변경할 수 있습니다.
Python의 종속성 주입 및 제어 반전에 대해 자세히 알아보려면 문서를 방문하세요.
패키지는 PyPi에서 사용할 수 있습니다.
pip 설치 종속성 주입기
문서는 여기에서 확인할 수 있습니다.
다음 중 하나를 선택하십시오.
다음 중 하나를 선택하십시오.
프레임워크는 PEP20(The Zen of Python) 원칙을 따릅니다.
Explicit is better than implicit
종속성을 명시적으로 어셈블하고 어디에 주입할지 지정해야 합니다.
프레임워크의 힘은 단순성에 있습니다. Dependency Injector
는 강력한 개념을 위한 간단한 도구입니다.
Dependency Injector
별표 표시하세요.Dependency Injector
로 새 프로젝트 시작Dependency Injector
에 대해 말해 보세요develop
브랜치에 대한 풀 요청 열기