{ "info": { "author": "Ihor Kalnytskyi", "author_email": "ihor@kalnytskyi.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: PyPy", "Topic :: Software Development :: Libraries" ], "description": "Picobox\n=======\n\n.. image:: https://img.shields.io/pypi/v/picobox.svg\n :target: https://pypi.python.org/pypi/picobox\n\n.. image:: https://travis-ci.com/ikalnytskyi/picobox.svg?branch=master\n :target: https://travis-ci.com/ikalnytskyi/picobox.svg?branch=master\n\n.. image:: https://codecov.io/gh/ikalnytskyi/picobox/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/ikalnytskyi/picobox\n\n.. image:: https://img.shields.io/badge/Say%20Thanks-!-1EAEDB.svg\n :target: https://saythanks.io/to/ikalnytskyi\n\nPicobox is opinionated dependency injection framework designed to be clean,\npragmatic and with Python in mind. No complex graphs, no implicit injections,\nno type bindings \u2013 just picoboxes, and explicit demands!\n\n\nWhy?\n----\n\nBecause we usually want to decouple our code and Python lack of clean and\npragmatic solutions (even third parties).\n\n\nFeatures\n--------\n\n* Support both values and factories.\n* Support scopes (e.g. singleton, threadlocal, contextvars).\n* Push boxes on stack, and use the top one to access values.\n* Thread-safe.\n* Lightweight (~213 LOC including scopes).\n* Zero dependencies (on python3).\n* Pure Python.\n\n\n\nQuickstart\n----------\n\nFirst\n\n.. code:: bash\n\n $ [sudo] python -m pip install picobox\n\nand then\n\n.. code:: python\n\n import picobox\n import requests\n\n @picobox.pass_('conf')\n @picobox.pass_('requests', as_='session')\n def get_resource(uri, session, conf):\n return session.get(conf['base_uri'] + uri)\n\n box = picobox.Box()\n box.put('conf', {'base_uri': 'http://example.com'})\n box.put('requests', factory=requests.Session, scope=picobox.threadlocal)\n\n with picobox.push(box):\n get_resource('/resource', requests.Session(), {})\n get_resource('/resource', requests.Session())\n get_resource('/resource')\n\n\nLinks\n-----\n\n* Documentation: https://picobox.readthedocs.io\n* Source: https://github.com/ikalnytskyi/picobox\n* Bugs: https://github.com/ikalnytskyi/picobox/issues\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ikalnytskyi/picobox", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "picobox", "package_url": "https://pypi.org/project/picobox/", "platform": "", "project_url": "https://pypi.org/project/picobox/", "project_urls": { "Bugs": "https://github.com/ikalnytskyi/picobox/issues", "Documentation": "https://picobox.readthedocs.io", "Homepage": "https://github.com/ikalnytskyi/picobox", "Source": "https://github.com/ikalnytskyi/picobox" }, "release_url": "https://pypi.org/project/picobox/2.2.0/", "requires_dist": [ "funcsigs ; python_version < \"3\"" ], "requires_python": "", "summary": "Dependency injection framework designed with Python in mind.", "version": "2.2.0" }, "last_serial": 4632111, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "2b591653ade92cd4386fdcb74e6e44aa", "sha256": "24787466e993e3ba7786e8646cc1e79b55477e30c1c6540698c80ea2914eb82c" }, "downloads": -1, "filename": "picobox-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2b591653ade92cd4386fdcb74e6e44aa", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9042, "upload_time": "2017-11-25T08:41:35", "url": "https://files.pythonhosted.org/packages/dd/4a/b1409cdd6b6667d103d032585f894cda72cf9ed5803bfabd65581c2fa33c/picobox-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac2e6ad6b7b85c19bae4873809f76db7", "sha256": "5b4b35217ed18045303dfd9da0e967816ea286dff97b5dc3dfab20a43205d296" }, "downloads": -1, "filename": "picobox-1.0.0.tar.gz", "has_sig": false, "md5_digest": "ac2e6ad6b7b85c19bae4873809f76db7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 22857, "upload_time": "2017-11-25T08:34:33", "url": "https://files.pythonhosted.org/packages/6c/d9/fce8710de62bb1190c10c92f0df344cb09f8a2c88b9b9573a402108108e9/picobox-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b74a3fbcf55ea67d2af2f31e6e98d348", "sha256": "7366b336a36353aa181886f4128c3cb1bb4fdee7589bc8da8dd3eb81fc504ee9" }, "downloads": -1, "filename": "picobox-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b74a3fbcf55ea67d2af2f31e6e98d348", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24151, "upload_time": "2017-12-19T19:54:57", "url": "https://files.pythonhosted.org/packages/51/e4/5145cfe8f8883c878efbbda4d788070edf1a9a08c203db36d4121f1b52ec/picobox-1.1.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "37e95b182f8275e55f35b0f41815d2da", "sha256": "fdfe618bbeec13e4a83db7c1ccfbf78e38ac0c67e5840b234a3bb5517cc02af0" }, "downloads": -1, "filename": "picobox-2.0.0.tar.gz", "has_sig": false, "md5_digest": "37e95b182f8275e55f35b0f41815d2da", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 25124, "upload_time": "2018-03-18T09:00:22", "url": "https://files.pythonhosted.org/packages/74/dc/7fad7afc2b4b54e065efeafe2d387ebdc0ffa37c65aa8352289bc5efb65a/picobox-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "251a860059d5e9beb5c5c538c1bc3cd2", "sha256": "682ca3d7dfa0b81525ab45faedca34fb8d71e37481ff734cbfd682c1bd8a9b25" }, "downloads": -1, "filename": "picobox-2.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "251a860059d5e9beb5c5c538c1bc3cd2", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 9416, "upload_time": "2018-09-25T02:44:42", "url": "https://files.pythonhosted.org/packages/15/dc/f0c3e3a75226338b39997cc5a561eb8927da8248a8ce6cf57d400296f934/picobox-2.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a736982a1a8ac68afb130ec00f1022d5", "sha256": "b72168b9158620f7244a1999db072b09ff670144b30ad3a5fe6a4cbb1b8bc8a4" }, "downloads": -1, "filename": "picobox-2.1.0.tar.gz", "has_sig": false, "md5_digest": "a736982a1a8ac68afb130ec00f1022d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27757, "upload_time": "2018-09-25T02:44:43", "url": "https://files.pythonhosted.org/packages/2b/fb/f5c0f7e32a1d891490fc28322a3cb526a260a01b3ee167fb9542da5aaa70/picobox-2.1.0.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "0ad3edb58bcc8bf876520a0a01fc1a0b", "sha256": "0a14f8fae386a46e61671a3ce16e0d54d24fb8f15169b0971483228a3e274622" }, "downloads": -1, "filename": "picobox-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ad3edb58bcc8bf876520a0a01fc1a0b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12376, "upload_time": "2018-12-24T20:15:21", "url": "https://files.pythonhosted.org/packages/93/9c/138280941d49dca7d4b19853f24110eaabf0113434b8f047b8d53923625e/picobox-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c88674f252ea19bb332654329b58daa9", "sha256": "c446ea34b5ee396ab8dc7cbed8f036e73e52403593088656b9b45b7d6382c926" }, "downloads": -1, "filename": "picobox-2.2.0.tar.gz", "has_sig": false, "md5_digest": "c88674f252ea19bb332654329b58daa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30231, "upload_time": "2018-12-24T20:15:23", "url": "https://files.pythonhosted.org/packages/a2/14/e8d9f54b2344c7bae1c0accf6bedd80658e0e9157e7a8aff4f1e86a8e1ef/picobox-2.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0ad3edb58bcc8bf876520a0a01fc1a0b", "sha256": "0a14f8fae386a46e61671a3ce16e0d54d24fb8f15169b0971483228a3e274622" }, "downloads": -1, "filename": "picobox-2.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0ad3edb58bcc8bf876520a0a01fc1a0b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 12376, "upload_time": "2018-12-24T20:15:21", "url": "https://files.pythonhosted.org/packages/93/9c/138280941d49dca7d4b19853f24110eaabf0113434b8f047b8d53923625e/picobox-2.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "c88674f252ea19bb332654329b58daa9", "sha256": "c446ea34b5ee396ab8dc7cbed8f036e73e52403593088656b9b45b7d6382c926" }, "downloads": -1, "filename": "picobox-2.2.0.tar.gz", "has_sig": false, "md5_digest": "c88674f252ea19bb332654329b58daa9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 30231, "upload_time": "2018-12-24T20:15:23", "url": "https://files.pythonhosted.org/packages/a2/14/e8d9f54b2344c7bae1c0accf6bedd80658e0e9157e7a8aff4f1e86a8e1ef/picobox-2.2.0.tar.gz" } ] }