Automation Mojo Extension Package
Project description
Automation Mojo Extension Package
This is a python package that provides a mechanism for extending other python packages. This package is different from other python extension packages in that it uses the python Protocol type to query for a type.
For example, if we want to be able to create instance of object like these from a factory.
class Hey:
def __str__(self):
return "Hey"
class Ho:
def __str__(self):
return "Ho"
class MyExtTypeProtocol(ExtProtocol):
ext_protocol_name = "mojo-myextypeprotocol"
@classmethod
def give_me_a_hey(cls):
...
@classmethod
def give_me_a_ho(cls):
...
class MyExtTypeFactory(ExtFactory, MyExtTypeProtocol):
@classmethod
def give_me_a_hey(cls):
return Hey
@classmethod
def give_me_a_ho(cls):
return Ho
Then what we do i we register the module where the type is found.
from mojo.extension.extensionconfiguration import ExtensionConfiguration
from mojo.extension.wellknown import ConfiguredSuperFactorySingleton
ExtensionConfiguration.CONFIGURED_FACTORY_MODULES = [
"myextinst",
"myexttype"
]
Then we get an instance of the super factory singleton.
from mojo.extension.wellknown import ConfiguredSuperFactorySingleton
superfactory = ConfiguredSuperFactorySingleton()
Then when we want to get the type from the extension, we utilize the protocol that was declared and ask for the type using the function on the protocol that will return the type.
hey_type = self._super_factory.get_override_types_by_order(MyExtTypeProtocol.give_me_a_hey)
ho_type = self._super_factory.get_override_types_by_order(MyExtTypeProtocol.give_me_a_ho)
hey = hey_type()
ho = ho_type()
print("")
print(f"{hey}... {ho}... {hey}... {ho}...")
References
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
File details
Details for the file mojo_extension-0.0.1.tar.gz
.
File metadata
- Download URL: mojo_extension-0.0.1.tar.gz
- Upload date:
- Size: 5.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.0 CPython/3.10.6 Linux/5.19.0-41-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | dcac222766845af8a2d5038c1419335e1a777c727b64966c13108df88b3d3d83 |
|
MD5 | 2a39139417f3d1aa613dd4393d85b951 |
|
BLAKE2b-256 | 921470d9c384c1cbed20db39feafaa6ed263bd9f875662d6682022fcd381c75e |
File details
Details for the file mojo_extension-0.0.1-py3-none-any.whl
.
File metadata
- Download URL: mojo_extension-0.0.1-py3-none-any.whl
- Upload date:
- Size: 6.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.0 CPython/3.10.6 Linux/5.19.0-41-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6a9810e2dd1980ad80b57ff90a0befa68d14917f0884db159467713ff574eb2b |
|
MD5 | 64d815479f64fb5b2a5a5a1483121dd3 |
|
BLAKE2b-256 | c8a4148437645d5e5db98f7263afd4b2cc269edfd36b3c4e937a6b124529dd2b |