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 Bee 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.2.1.tar.gz
(2.8 kB
view details)
File details
Details for the file syringe-0.2.1.tar.gz
.
File metadata
- Download URL: syringe-0.2.1.tar.gz
- Upload date:
- Size: 2.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 96fd41ad30f61aa4ed49bef7f4692bf6d6554946c2bce100b01a427e292eba26 |
|
MD5 | b94e8c7c7bf0ca94a47f5274761a5c4e |
|
BLAKE2b-256 | 86d08a48421f53d175cd0dbe853135ad22ca68f8ff6841f2d7b7a5c1e332d391 |