https://github.com/zweifisch/slack
a DI container
https://github.com/zweifisch/slack
Last synced: over 1 year ago
JSON representation
a DI container
- Host: GitHub
- URL: https://github.com/zweifisch/slack
- Owner: zweifisch
- Created: 2014-03-25T13:07:22.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2014-05-27T08:05:41.000Z (about 12 years ago)
- Last Synced: 2024-10-30T00:10:49.484Z (over 1 year ago)
- Language: Python
- Size: 152 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# slack
a DI Container
## register and provide
```python
from slack import Container
c = Container()
class Component:
def __init__(self):
pass
c.register('component', Component)
c1 = c.provide('component')
c2 = c.provide('component') # c1 is c2
```
## dependency inject
```python
class Component:
def __init__(self, dep1, dep2):
pass
c.register('dep1', Dep1)
c.register('dep2', Dep2)
c.register('component', Component)
c.provide('component')
```
## partial inject
```python
class Component:
def __init__(self, dep1, dep2):
pass
NewComponent = c.inject(Component, 'dep1')
c = NewComponent(dep2)
```
## using decorator
```python
c.register('comp1')
def comp1(dep1, dep2):
return SomeClass()
```
## apply
```python
def fn(a, b):
pass
@c.register('b')
def provide_b():
pass
c.apply(fn, a=val)
```
## groups and reset
```python
@c.register('comp', group='once')
class Component:
pass
comp1 = c.provide('comp')
comp2 = c.provide('comp') # comp1 is comp2
c.reset('once')
comp3 = c.provide('comp') # comp3 is not comp2
```
## from config
```python
conf = dict(
db_host='localhost',
db_port='2345'
)
c.config(conf)
@c.register(db)
def get_db(host, port):
assert host == conf.host
assert port == conf.port
```
component registration in config
```python
conf = dict(
cache='redis:Redis',
cache_host='localhost',
cache_port='2345'
)
c.config(conf)
c.cache.set('key', 'value')
```