{ "info": { "author": "Kilte Leichnam", "author_email": "nwotnbm@gmail.com", "bugtrack_url": null, "classifiers": [], "description": "======\nRumple\n======\n\nSimple Dependency Injection Container inspired by `Pimple `_.\n\n.. image:: https://img.shields.io/travis/Komtet/rumple.svg?style=flat-square\n :target: https://travis-ci.org/Komtet/rumple\n\nInstallation\n============\n\nUsing pip:\n\n.. code:: sh\n\n # pip install rumple\n\nManually:\n\n.. code:: sh\n\n $ git clone https://github.com/Komtet/rumple\n $ cd rumple\n # python setup.py install\n\nUsage\n=====\n\n.. code:: python\n\n from rumple import Container\n\n c1 = Container()\n c2 = Container({\n 'param': 'value',\n 'service': lambda: object()\n })\n\n\nDefining services\n-----------------\n\n.. code:: python\n\n from rumple import Container\n\n\n class Service(object):\n pass\n\n\n class AnotherService(object):\n def __init__(self, service):\n self.service = service\n\n container = Container()\n container['service'] = lambda: Service()\n container['another_service'] = lambda c: AnotherService(c['service'])\n another_service = container['another_service']\n assert isinstance(another_service, AnotherService)\n assert another_service.service is container['service']\n\nDefining parameters\n-------------------\n\n.. code:: python\n\n from rumple import Container\n\n container = Container()\n container['parameter'] = 'value'\n assert container['parameter'] == 'value'\n\nExtending services\n------------------\n\n.. code:: python\n\n from rumple import Container\n\n\n class Service(object):\n def __init__(self):\n self.optional_dependency = None\n\n def set_optional_dependency(self, dependency):\n self.optional_dependency = dependency\n\n\n class OptionalDependency(object):\n pass\n\n\n def extend_service(service, container): # Note: you can omit \"container\" argument\n service.set_optional_dependency(container['optional_dependency'])\n return service\n\n container = Container()\n container['service'] = lambda: Service()\n container['optional_dependency'] = lambda: OptionalDependency()\n container.extend('service', extend_service)\n\nProviders\n---------\n\n.. code-block:: python\n\n from rumple import Container, extend, share, value\n\n\n class Provider(object):\n @share()\n def service(self):\n return object()\n\n @share('renamed_service')\n def another_service(self):\n return object()\n\n @share()\n def service_for_extend(self):\n return object()\n\n @value()\n def first_option(self):\n return 'value_1'\n\n @value('second_option_renamed')\n def second_option(self):\n return 'value_2'\n\n @value()\n def _ignored(self):\n return 'value'\n\n\n class AnotherProvider(object):\n @extend('service_for_extend')\n def extend_service(self, service_for_extend):\n assert isinstance(service_for_extend, object)\n return str(object)\n\n class SomeLibProvider(object):\n __prefix__ = 'some_lib.'\n\n @share()\n def service(self):\n return object()\n\n @extend('some_lib.service')\n def extend(self, service):\n return str(service)\n\n\n container = Container()\n container.register(Provider())\n container.register(AnotherProvider(), {'additional_option': 'value1'})\n container.register(SomeLibProvider(), {'additional_option': 'value2'})\n assert isinstance(container['service'], object)\n assert isinstance(container['renamed_service'], object)\n assert isinstance(container['service_for_extend'], str)\n assert container['first_option'] == 'value_1'\n assert container['second_option_renamed'] == 'value_2'\n assert '_ignored' not in container\n assert container['additional_option'] == 'value1'\n assert isinstance(container['some_lib.service'], str)\n assert container['some_lib.additional_option'] == 'value2'\n\nIterating through a container\n-----------------------------\n\n.. code:: python\n\n from rumple import Container\n\n container = Container({'k1': 'v1', 'k2': 'v2'})\n for item in container:\n print(item)\n\n # Output:\n # ('k1', 'v1')\n # ('k2', 'v2')\n\nChangelog\n=========\n\n0.2.0 (25.01.2019)\n------------------\n\n- Ablity to specify vendor prefix in providers\n- Fix of `inspect.getargspec()` deprecation\n\n0.1.0 (15.07.2015)\n------------------\n\n- First release\n\nContributing\n============\n\n- Fork and clone it\n- Create your feature branch (git checkout -b awesome-feature)\n- Make your changes\n- Write/update tests, if it's necessary\n- Update README.md, if it's necessary\n- Push your branch (git push origin awesome-feature)\n- Send a pull request\n\nLICENSE\n=======\n\nThe MIT License (MIT)\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Kilte/rumple", "keywords": "container", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rumple", "package_url": "https://pypi.org/project/rumple/", "platform": "", "project_url": "https://pypi.org/project/rumple/", "project_urls": { "Homepage": "https://github.com/Kilte/rumple" }, "release_url": "https://pypi.org/project/rumple/0.2.0/", "requires_dist": null, "requires_python": "", "summary": "A simple dependency injection container", "version": "0.2.0" }, "last_serial": 4739707, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "9200698ba7cef58b04b5a854c026fce5", "sha256": "a61e88a6acedd9acf62b31ec679f34feeac74b032b1bbf88da3549a7389cf2ae" }, "downloads": -1, "filename": "rumple-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9200698ba7cef58b04b5a854c026fce5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3593, "upload_time": "2015-07-14T23:13:24", "url": "https://files.pythonhosted.org/packages/5a/ca/bc2b7782b0d1064b11645b8a5a8042c5e22033d4dff3e01a9f1912692c5b/rumple-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "0bde3736a4ec9642c0dcc0c34cf81498", "sha256": "de4b61c4dd06d78b1bbe8255da964d1d19535e603532a1f5830a4682c150cccf" }, "downloads": -1, "filename": "rumple-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0bde3736a4ec9642c0dcc0c34cf81498", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4023, "upload_time": "2019-01-25T11:32:17", "url": "https://files.pythonhosted.org/packages/27/07/ce3d637dddc64b9b405f1fb231676112ee9e565995e0e490933554d7aa16/rumple-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0bde3736a4ec9642c0dcc0c34cf81498", "sha256": "de4b61c4dd06d78b1bbe8255da964d1d19535e603532a1f5830a4682c150cccf" }, "downloads": -1, "filename": "rumple-0.2.0.tar.gz", "has_sig": false, "md5_digest": "0bde3736a4ec9642c0dcc0c34cf81498", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 4023, "upload_time": "2019-01-25T11:32:17", "url": "https://files.pythonhosted.org/packages/27/07/ce3d637dddc64b9b405f1fb231676112ee9e565995e0e490933554d7aa16/rumple-0.2.0.tar.gz" } ] }