{ "info": { "author": "Bogdan Kulynych", "author_email": "hello@bogdankulynych.me", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "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 :: Implementation :: CPython", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "**************\ndefaultcontext\n**************\n\n.. image:: https://badge.fury.io/py/defaultcontext.svg\n :target: https://badge.fury.io/py/defaultcontext\n.. image:: https://travis-ci.org/bogdan-kulynych/defaultcontext.svg?branch=master\n :target: https://travis-ci.org/bogdan-kulynych/defaultcontext\n\n------------\n\n*Tiny util for creating `tensorflow`_-like context managers for default instances of classes.*\n\n\nInstallation\n============\n\nYou can install ``defaultcontext`` using pip::\n\n pip install defaultcontext\n\n\nUsage\n=====\n\nThe library provides the ``with_default_context`` class decorator which simply does two things:\n\n- Adds static method ``Class.get_default()`` which returns the default object in the current context block.\n- Adds method ``instance.as_default()`` to the class, which manages a context within which the ``instance``\n becomes default\n\nThis is useful for creating psuedo-global objects that can be accessed from any code executed within a\ngiven context block without passing such objects around.\n\nThis idea is inspired by ``Graph`` and ``Session`` classes from Google's `tensorflow`_.\n\nBasic usage:\n\n.. code-block:: python\n\n from defaultcontext import with_default_context\n\n\n @with_default_context\n class Environment:\n def __init__(self, name):\n self.name = name\n\n def __str__(self):\n return 'Environment %s' % self.name\n\n\n with Environment(name='A').as_default():\n print(Environment.get_default()) # A\n\n with Environment(name='B').as_default():\n print(Environment.get_default()) # B\n\n print(Environment.get_default()) # None\n\nIf ``with_default_context`` was called without parameters the global default value of a class will be ``None``.\nThe global default can be added using ``global_default_factory``:\n\n.. code-block:: python\n\n def make_default_env():\n return Environment(name='default')\n\n @with_default_context(global_default_factory=make_default_env)\n class Environment:\n def __init__(self, name):\n self.name = name\n\n def __str__(self):\n return self.name\n\n Environment.get_default() # default\n\n with Environment(name='custom').as_default():\n print(Environment.get_default()) # custom\n\n Environment.get_default() # default\n\nAlternatively, if the class can be constructed without arguments, global default can be set to ``Class()`` by\nsetting ``use_empty_init`` to ``True``:\n\n.. code-block:: python\n\n @with_default_context(use_empty_init=True)\n class Environment:\n def __init__(self, name='default'):\n self.name = name\n\n def __str__(self):\n return self.name\n\n Environment.get_default() # default\n\n with Environment(name='custom').as_default():\n print(Environment.get_default()) # custom\n\n Environment.get_default() # default\n\n\n.. _tensorflow: https://www.tensorflow.org/\n\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/bogdan-kulynych/defaultcontext", "keywords": "utils", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "defaultcontext", "package_url": "https://pypi.org/project/defaultcontext/", "platform": "", "project_url": "https://pypi.org/project/defaultcontext/", "project_urls": { "Homepage": "https://github.com/bogdan-kulynych/defaultcontext" }, "release_url": "https://pypi.org/project/defaultcontext/1.1.1/", "requires_dist": null, "requires_python": "", "summary": "Tiny util for creating tensorflow-like context managers for default instances of classes", "version": "1.1.1" }, "last_serial": 3702656, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "d51961b71a6373d265e1d3ebb12dfc69", "sha256": "60d1ff19291cb6f93b86faf4d54ffabbe4604abb62231640fcb8c32f968dfa36" }, "downloads": -1, "filename": "defaultcontext-1.0.1.tar.gz", "has_sig": false, "md5_digest": "d51961b71a6373d265e1d3ebb12dfc69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7593, "upload_time": "2017-05-26T12:27:43", "url": "https://files.pythonhosted.org/packages/d2/29/4cb802488525eda392c59fc4931286147ecdd94bdb0997f2edafdb7bfb33/defaultcontext-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "91e0e751fd340dcce380e44d2434ebd1", "sha256": "e3bcc808f30af9b30e89d81c10f70512cddab48036183ca0492c20f50a7327e7" }, "downloads": -1, "filename": "defaultcontext-1.0.2.tar.gz", "has_sig": false, "md5_digest": "91e0e751fd340dcce380e44d2434ebd1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7899, "upload_time": "2017-05-27T15:30:26", "url": "https://files.pythonhosted.org/packages/1c/dd/7cc27145f283e3b43c488d4c957556f71f55550f9371c23b2514649f884a/defaultcontext-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "f67f6d6f0f99dd0f40e0a7e4415818f7", "sha256": "c111e635d1ee9dd45df482bd3d0b3a669a6768ea77ff34d8cba6727c805e53b0" }, "downloads": -1, "filename": "defaultcontext-1.0.3.tar.gz", "has_sig": false, "md5_digest": "f67f6d6f0f99dd0f40e0a7e4415818f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8210, "upload_time": "2017-06-08T11:05:01", "url": "https://files.pythonhosted.org/packages/ea/69/77762c3d5d6d9af696462eb9531316342c2022b242f6f775453a9be8d158/defaultcontext-1.0.3.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "8a9fcbf5ba9851a47565d0531989282b", "sha256": "d7c34186b5dc22548aca6ea3dd5f2abd155e962854af4f4749838131fabbcc21" }, "downloads": -1, "filename": "defaultcontext-1.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "8a9fcbf5ba9851a47565d0531989282b", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10048, "upload_time": "2018-03-25T01:29:18", "url": "https://files.pythonhosted.org/packages/4d/4d/d50d6e43f8125bee0a6bf2265e381cb8856f04794c4a1a961bb385c96b9a/defaultcontext-1.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7b29f9065747103c66000cc1f6dab117", "sha256": "7d5ac1317f8d2ada91a756d39fb019d84b3cd942e836c34b63e27b1732808817" }, "downloads": -1, "filename": "defaultcontext-1.1.0.tar.gz", "has_sig": false, "md5_digest": "7b29f9065747103c66000cc1f6dab117", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8433, "upload_time": "2018-03-25T01:30:53", "url": "https://files.pythonhosted.org/packages/a7/f8/53657dce455c00f352836b529e3f774d3fa3d20be5ce91808a4cadc510e2/defaultcontext-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "604494ebbcc49c6582e813e201f29acd", "sha256": "931762c2a5c3333adb20d18cca60a646020a4b40dace1d04009f01c26a29e18e" }, "downloads": -1, "filename": "defaultcontext-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "604494ebbcc49c6582e813e201f29acd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10052, "upload_time": "2018-03-25T01:52:40", "url": "https://files.pythonhosted.org/packages/4b/14/dba64ac445f3de0a62a7cc515302085bcbea7b182944582648c2feafbb0a/defaultcontext-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9a69afae1601d11308a022ecb291c30", "sha256": "d8b0eee5ff4d0065fea4f51a7ca0dcf2711d2e71ff5f83d29d8bf8804a33c3eb" }, "downloads": -1, "filename": "defaultcontext-1.1.1.tar.gz", "has_sig": false, "md5_digest": "a9a69afae1601d11308a022ecb291c30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8443, "upload_time": "2018-03-25T01:52:48", "url": "https://files.pythonhosted.org/packages/f4/27/3703ce9e86cc7d959fbc152c55ad95a0fe48fddbff49405a2b7d225859f7/defaultcontext-1.1.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "604494ebbcc49c6582e813e201f29acd", "sha256": "931762c2a5c3333adb20d18cca60a646020a4b40dace1d04009f01c26a29e18e" }, "downloads": -1, "filename": "defaultcontext-1.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "604494ebbcc49c6582e813e201f29acd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 10052, "upload_time": "2018-03-25T01:52:40", "url": "https://files.pythonhosted.org/packages/4b/14/dba64ac445f3de0a62a7cc515302085bcbea7b182944582648c2feafbb0a/defaultcontext-1.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a9a69afae1601d11308a022ecb291c30", "sha256": "d8b0eee5ff4d0065fea4f51a7ca0dcf2711d2e71ff5f83d29d8bf8804a33c3eb" }, "downloads": -1, "filename": "defaultcontext-1.1.1.tar.gz", "has_sig": false, "md5_digest": "a9a69afae1601d11308a022ecb291c30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8443, "upload_time": "2018-03-25T01:52:48", "url": "https://files.pythonhosted.org/packages/f4/27/3703ce9e86cc7d959fbc152c55ad95a0fe48fddbff49405a2b7d225859f7/defaultcontext-1.1.1.tar.gz" } ] }