Skip to main content

Dependency Injection made simple.

Project description

Dependency Injection made simple.

Instalation

pip instal simple-injector

Getting Started

from simple_injector import SimpleInjector, inject
from random import random

class Repository():
    def __init__(self):
        self.number = random()

    def get_a_number(self):
        return self.number

class Service():
    def __init__(self, repo: Repository):
        self.repo = repo

    def get_number(self):
        return {"n":self.repo.get_a_number()}

def bootstrap():
    SimpleInjector().register(Repository)
    SimpleInjector().singleton(Service)

bootstrap()

repo = inject(Repository)
serv = inject(Service)

Reference Guide

SimpleInjector()

This will always return the same instance of the SimpleInjector.

SimpleInjector().register(class, obj=None)

Used to register a class on the dependencies list. Can also receive an instance of the object that you want to assign to it.

SimpleInjector().singleton(class)

Used to register a class as a singleton on the dependencies list. This class' dependencies will be resolved at the moment of this method call, so all its dependencies must be already registered with SimpleInjector.

SimpleInjector().lazy(class, obj)

Used to register a class with its instantiate object on the dependencies list. any call to SimpleInjector().resolve(class) to this class will be resolved with the object previously provided.

SimpleInjector().resolve(class) or inject

Used to resolve a dependency of a class that has been registered prior to the execution of this resolve method. This method will return any object it has on the dependency list for this class, if it is a singleton, or a registered object, otherwise it will return a new instance for the class provided, injecting all needed dependencies, if they were registered prior to the execution of this method.

SimpleInjector().instantiate(class, extraParams={})

Can be used if you need to get a new instance of some class, or if you want a new instance and want to override some param on the constructor of the class.

SimpleInjector().reset()

Can be used if you need to be sure that the SimpleInjector has no dependencies registered on its list.

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

simple-injector-1.1.0.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

simple_injector-1.1.0-py3-none-any.whl (17.3 kB view details)

Uploaded Python 3

File details

Details for the file simple-injector-1.1.0.tar.gz.

File metadata

  • Download URL: simple-injector-1.1.0.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.3

File hashes

Hashes for simple-injector-1.1.0.tar.gz
Algorithm Hash digest
SHA256 74ac84aa0ea146fe97c374ab3981111366b8874321c7d8bd99146dad617d4cea
MD5 d81e15271077cdbba3ef2d88443d97ed
BLAKE2b-256 e981dce83259b3742fe0780d042f5d1d36ee46a41a748ba33856f002fdad2a72

See more details on using hashes here.

File details

Details for the file simple_injector-1.1.0-py3-none-any.whl.

File metadata

  • Download URL: simple_injector-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 17.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.23.0 setuptools/40.8.0 requests-toolbelt/0.9.1 tqdm/4.47.0 CPython/3.7.3

File hashes

Hashes for simple_injector-1.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 171a8cae79bcf60a2d16227d540cfa3e7fd7a4873f8e7b775aec9d58c9e77c3e
MD5 4b530ae0b3e8852e98518f37d8061db1
BLAKE2b-256 f04fbd6388b7a69344eee29bb80ea48386ae08e61e48a91efa1c5cd03dff588f

See more details on using hashes here.

Supported by

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