slack


Nameslack JSON
Version 0.0.3 PyPI version JSON
download
home_pagehttps://github.com/zweifisch/slack
Summarya DI container
upload_time
maintainerNone
docs_urlNone
authorFeng Zhou
requires_pythonNone
licenseMIT
keywords di container
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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
```
            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/zweifisch/slack",
    "name": "slack",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "DI Container",
    "author": "Feng Zhou",
    "author_email": "zf.pascal@gmail.com",
    "download_url": "UNKNOWN",
    "platform": "UNKNOWN",
    "description": "# slack\n\na DI Container\n\n## register and provide\n\n```python\nfrom slack import Container\n\nc = Container()\n\nclass Component:\n    def __init__(self):\n        pass\n\nc.register('component', Component)\n\nc1 = c.provide('component')\nc2 = c.provide('component')  # c1 is c2\n```\n\n## dependency inject\n\n```python\nclass Component:\n    def __init__(self, dep1, dep2):\n        pass\n\nc.register('dep1', Dep1)\nc.register('dep2', Dep2)\nc.register('component', Component)\nc.provide('component')\n```\n\n## partial inject\n\n```python\nclass Component:\n    def __init__(self, dep1, dep2):\n        pass\n\nNewComponent = c.inject(Component, 'dep1')\n\nc = NewComponent(dep2)\n```\n\n## using decorator\n\n```python\nc.register('comp1')\ndef comp1(dep1, dep2):\n    return SomeClass()\n```\n\n## apply\n\n```python\ndef fn(a, b):\n    pass\n\n@c.register('b')\ndef provide_b():\n    pass\n\nc.apply(fn, a=val)\n```\n\n## groups and reset\n\n```python\n@c.register('comp', group='once')\nclass Component:\n    pass\n\ncomp1 = c.provide('comp')\ncomp2 = c.provide('comp') # comp1 is comp2\n\nc.reset('once')\n\ncomp3 = c.provide('comp') # comp3 is not comp2\n```",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "a DI container",
    "version": "0.0.3",
    "split_keywords": [
        "di",
        "container"
    ],
    "urls": [],
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "github_user": "zweifisch",
    "github_project": "slack",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": false,
    "tox": true,
    "lcname": "slack"
}
        
Elapsed time: 0.36712s