A simple dependency injection library
Project description
A simple dependency injection library.
Usage example
First decorate a class with @provides('a lookup name').
>>> import syringe
>>>
>>> @syringe.provides('cure')
... class Syrup:
... def drink(self, person):
... print('Nom nom')
... person.health = 100
...
Instantiate it. Note that it is not possible to instanciate another instance of a class decorated with the name cure.
>>> syrup = Syrup()
Next inject it in another class using inject('a lookup name').
>>> class Person:
... cure = syringe.inject('cure')
...
... def drink_medicine(self):
... self.cure.drink(self)
...
When an instance of the Person class is created, the value of the injecte name is the instance of the provided and instantiated class.
>>> person = Person() >>> person.health = 20 >>> assert person.cure == syrup >>> person.drink_medicine() Nom nom >>> assert person.health == 100
Mocking
A mock instance can be inserted using syringe.mock('a lookup name')
>>> try:
... from unittest import mock
... except:
... import mock
...
>>> m = syringe.mock('cure')
>>> person.drink_medicine()
>>> m.drink.assert_called_once_with(person)
Installing
The package can be installed from the cheese shop by typing:
pip install syringe
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
syringe-0.4.0.tar.gz
(2.9 kB
view details)
File details
Details for the file syringe-0.4.0.tar.gz.
File metadata
- Download URL: syringe-0.4.0.tar.gz
- Upload date:
- Size: 2.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50b9eab6147459a018fc580bc329ced5bdb83e811f368661d87dbdb63bbf345c
|
|
| MD5 |
e9cff341b90e82d10f7a39465e9eb222
|
|
| BLAKE2b-256 |
21e83a56049c47a67aabcad7e66bab29935c2de1ee090a129d5a02255f479e90
|