Python package for creating and importing virtual modules.
Project description
virtualmod
Python package for creating and importing virtual modules.
Install
pip install virtualmod
Examples
Module object
Manually creating and registering a module with virtualmod.
import virtualmod
# Create a new empty virtual module
module = virtualmod.create_module('custom_module')
# Add attribute to module
module.key = 'value'
# Use decorator to add a function to the module
# NOTE: You can use `add_to_module(module, name='new_name')` to override the module attribute name
@virtualmod.add_to_module(module)
def module_function(name):
print('Hello', name)
# Use decorator to add a class to the module
@virtualmod.add_to_module(module)
class ModuleClass:
pass
# Import and use our virtual module
import custom_module
print('Key:', custom_module.key)
custom_module.module_function('virtualmod')
print(custom_module.ModuleClass())
Class definition
virtualmod also comes with the ability to use class definitions to define virtual modules.
import virtualmod
# Use class definition to define our virtual module "custom_module"
class CustomModule(virtualmod.VirtualModule):
# Define the module's name (would be "CustomModule" otherwise)
__module_name__ = 'custom_module'
# Add an attribute
key = 'value'
# Add a function
# NOTE: There is no `cls` or `self`
def module_function(name):
print('Hello', name)
# Add a class to the module
class ModuleClass:
pass
# Import and use our virtual module
import custom_module
print('Key:', custom_module.key)
custom_module.module_function('virtualmod')
print(custom_module.ModuleClass())
Override an existing module
virtualmod's module finder is registered before the standard builtin finders.
This means if you register a module under a name of an existing module yours would be found and loaded first
import virtualmod
# Create a virtual module under the name "socket"
my_socket = virtualmod.create_module('socket')
# Import socket module
import socket
# Test if the loaded socket module is the one we created
print(socket is my_socket)
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file virtualmod-1.0.0.tar.gz.
File metadata
- Download URL: virtualmod-1.0.0.tar.gz
- Upload date:
- Size: 3.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6be0e925aff122f706d9df4028290be6e58ecaec4db574e34d372a20c3098d10
|
|
| MD5 |
4492a6a1cc12ecd99fbcfbf114b626e6
|
|
| BLAKE2b-256 |
9e2a45f49fed95987b19767845616ee5b3af58a90948807b41ef7f8cfc1ab416
|
File details
Details for the file virtualmod-1.0.0-py3-none-any.whl.
File metadata
- Download URL: virtualmod-1.0.0-py3-none-any.whl
- Upload date:
- Size: 3.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/1.11.0 pkginfo/1.4.2 requests/2.19.1 setuptools/39.2.0 requests-toolbelt/0.8.0 tqdm/4.25.0 CPython/3.7.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca0c277f78d461e6287aad5c1929c53437443b9c1a17f6d676d7058aca7fe2f5
|
|
| MD5 |
82f226729e79c4ab6127d72556ea2f09
|
|
| BLAKE2b-256 |
2334f46d684f990177477599e8926fed29dfab183761837abdfb1f350258c5ab
|