{ "info": { "author": "Brett Langdon", "author_email": "me@brett.is", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python", "Programming Language :: Python :: 3" ], "description": "virtualmod\n==========\n\n[![PyPI version](https://badge.fury.io/py/virtualmod.svg)](https://badge.fury.io/py/virtualmod)\n\nPython package for creating and importing virtual modules.\n\n## Install\n\n```bash\npip install virtualmod\n```\n\n## Examples\n### Module object\nManually creating and registering a module with `virtualmod`.\n\n```python\nimport virtualmod\n\n# Create a new empty virtual module\nmodule = virtualmod.create_module('custom_module')\n\n# Add attribute to module\nmodule.key = 'value'\n\n\n# Use decorator to add a function to the module\n# NOTE: You can use `add_to_module(module, name='new_name')` to override the module attribute name\n@virtualmod.add_to_module(module)\ndef module_function(name):\n print('Hello', name)\n\n\n# Use decorator to add a class to the module\n@virtualmod.add_to_module(module)\nclass ModuleClass:\n pass\n\n\n# Import and use our virtual module\nimport custom_module\n\nprint('Key:', custom_module.key)\ncustom_module.module_function('virtualmod')\nprint(custom_module.ModuleClass())\n```\n\n### Class definition\n`virtualmod` also comes with the ability to use class definitions to define virtual modules.\n\n```python\nimport virtualmod\n\n\n# Use class definition to define our virtual module \"custom_module\"\nclass CustomModule(virtualmod.VirtualModule):\n # Define the module's name (would be \"CustomModule\" otherwise)\n __module_name__ = 'custom_module'\n\n # Add an attribute\n key = 'value'\n\n # Add a function\n # NOTE: There is no `cls` or `self`\n def module_function(name):\n print('Hello', name)\n\n # Add a class to the module\n class ModuleClass:\n pass\n\n\n# Import and use our virtual module\nimport custom_module\n\nprint('Key:', custom_module.key)\ncustom_module.module_function('virtualmod')\nprint(custom_module.ModuleClass())\n```\n\n### Override an existing module\n`virtualmod`'s module finder is registered before the standard builtin finders.\nThis means if you register a module under a name of an existing module yours would be found and loaded first\n\n```python\nimport virtualmod\n\n# Create a virtual module under the name \"socket\"\nmy_socket = virtualmod.create_module('socket')\n\n# Import socket module\nimport socket\n\n# Test if the loaded socket module is the one we created\nprint(socket is my_socket)\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/brettlangdon/virtualmod", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "virtualmod", "package_url": "https://pypi.org/project/virtualmod/", "platform": "any", "project_url": "https://pypi.org/project/virtualmod/", "project_urls": { "Homepage": "https://github.com/brettlangdon/virtualmod" }, "release_url": "https://pypi.org/project/virtualmod/1.0.0/", "requires_dist": null, "requires_python": "", "summary": "Python package for creating and importing virtual modules.", "version": "1.0.0" }, "last_serial": 4207276, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "82f226729e79c4ab6127d72556ea2f09", "sha256": "ca0c277f78d461e6287aad5c1929c53437443b9c1a17f6d676d7058aca7fe2f5" }, "downloads": -1, "filename": "virtualmod-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "82f226729e79c4ab6127d72556ea2f09", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3017, "upload_time": "2018-08-25T22:09:39", "url": "https://files.pythonhosted.org/packages/23/34/f46d684f990177477599e8926fed29dfab183761837abdfb1f350258c5ab/virtualmod-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4492a6a1cc12ecd99fbcfbf114b626e6", "sha256": "6be0e925aff122f706d9df4028290be6e58ecaec4db574e34d372a20c3098d10" }, "downloads": -1, "filename": "virtualmod-1.0.0.tar.gz", "has_sig": false, "md5_digest": "4492a6a1cc12ecd99fbcfbf114b626e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3802, "upload_time": "2018-08-25T22:09:40", "url": "https://files.pythonhosted.org/packages/9e/2a/45f49fed95987b19767845616ee5b3af58a90948807b41ef7f8cfc1ab416/virtualmod-1.0.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "82f226729e79c4ab6127d72556ea2f09", "sha256": "ca0c277f78d461e6287aad5c1929c53437443b9c1a17f6d676d7058aca7fe2f5" }, "downloads": -1, "filename": "virtualmod-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "82f226729e79c4ab6127d72556ea2f09", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 3017, "upload_time": "2018-08-25T22:09:39", "url": "https://files.pythonhosted.org/packages/23/34/f46d684f990177477599e8926fed29dfab183761837abdfb1f350258c5ab/virtualmod-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4492a6a1cc12ecd99fbcfbf114b626e6", "sha256": "6be0e925aff122f706d9df4028290be6e58ecaec4db574e34d372a20c3098d10" }, "downloads": -1, "filename": "virtualmod-1.0.0.tar.gz", "has_sig": false, "md5_digest": "4492a6a1cc12ecd99fbcfbf114b626e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3802, "upload_time": "2018-08-25T22:09:40", "url": "https://files.pythonhosted.org/packages/9e/2a/45f49fed95987b19767845616ee5b3af58a90948807b41ef7f8cfc1ab416/virtualmod-1.0.0.tar.gz" } ] }