Skip to content
/ pytidy Public

Python DI (Dependency Injection) library using type annotation

License

Notifications You must be signed in to change notification settings

taxpon/pytidy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

34 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Build Status Coverage Status

Pytidy

A type hint based dependency injection library for python language (+3.6). While there are already several DI libraries for python, this library is inspired by Java Spring and aims to provide similar interface and functionality to Java Spring.

Supports Python 3.7 and 3.8.

Usage

Super simple. Attach @component decorator to any classes which need to be injected in somewhere constructor, and attach @autowired decorator to constructors which need dependency injection.

from pytidy.decorators import component, autowired


@component
class Hello:
    def say(self):
        print("Hello")


class Injected:
    @autowired
    def __init__(self, instance: Hello):
        self.instance = instance

    def say_proxy(self):
        self.instance.say()


a = Injected()
a.say_proxy()

Also supports dataclass of Python3.7+.

from dataclasses import dataclass
from pytidy.decorators import component, autowired_cls


@component
class Hello:
    def say(self):
        print("Hello")


@autowired_cls
@dataclass
class Injected:
    instance: Hello

    def say_proxy(self):
        self.instance.say()


a = Injected()
a.say_proxy()

License

MIT

About

Python DI (Dependency Injection) library using type annotation

Resources

License

Stars

Watchers

Forks

Packages

No packages published