Skip to main content

A friendly dependency injection package

Project description

Depinj

Depinj is a python dependency injection library based on type annotations, it allow's you to define members of a class, and if the type of those members are in the dependency injection system it will be injected once that is called. For example

import depinj 
import random

class RandomNumber:
	rnumber = random.random()

class TestClass:
	rnumber: RandomNumber

depinj.add_scoped(RandomNumber)
depinj.add_scoped(TestClass)

test_class = depinj.get_scoped(TestClass)

The test_class variable will have an scoped RandomNumber instance, there is support for singletons to, with the function add_singleton.

inject

There is an inject decorator that inject's the dependencies into function objects, for example following the previous code:

import depinj 

@depinj.inject
def print_number(rn: RandomNumber):
	print(rn.rnumber)

print_number()

It can also be used in the init method like this:

class TestClass:
	rnumber: RandomNumber

	@pydep.inject
	def __init__(self, rnumber: RandomNumber):
		self.rnumber = rnumber
	
test_class = TestClass()

Depinj object

from depinj import Injector 

dep = Injector()

dep.add_scoped(SomeClass)

This Injector object represent's the dependency injection system, in fact, the functions defined at top-level module are using a global instance of the Depinj class. This way you can have multiple dependency injection systems if you want to have different classes for each one.

If you are going to use a different Injector object than the global one, then you have pass that object into the inject function with the injector named parameter.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

depinj-0.1.1.tar.gz (3.8 kB view hashes)

Uploaded Source

Built Distribution

depinj-0.1.1-py3-none-any.whl (3.9 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page