Extensible Application Toolkit.
Project description
XAPPT - extensible application toolkit
XAPPT (pronounced like "zapped") is a toolkit that makes it easy to create custom command line tools and invoke them from a uniform interface.
XAPPT requires Python 3.7 or higher.
To get started just create a subclass of xappt.models.plugin.Plugin, and make sure it's loadable by invoking your package, or a plugins submodule of your package.
The name of your module should have the prefix "xappt". This allows automatic plugin discovery by scanning sys.path, and scanning paths defined on the environment variable XAPPT_PLUGIN_PATH.
Getting started
If xappt is installed to the system Python interpreter, it should be available on the command line just by running the xappt command.
If everything is installed properly you should get output that looks like this:
$ xappt
usage: xappt [-h] [--version] {} ...
positional arguments:
{} Sub command help
optional arguments:
-h, --help show this help message and exit
--version Display the version number
Let's walk through creating a custom plugin. I'll be doing this on Linux, but the process is pretty similar on other systems.
First, make sure that xappt is installed:
$ pip3 install xappt
Next, let's make sure that xappt is available on the command line:
$ xappt --version
xappt 0.0.3-4735e57
Now lets make a new plugin:
$ cd ~
$ mkdir -p temp/xappt_plugin
$ cd temp/xappt_plugin
$ touch __init__.py
We're created a folder named "temp", and inside of that a folder named "xappt_plugin".
The reason for the two folders is so that we can add "temp" to XAPPT_PLUGIN_PATH, so that the "xappt_plugin" folder can be found inside of it. We'll get to that momentarily.
Then we create a new file in "xappt_plugin" named "__init__.py".
Now in __init__.py add the following code:
import xappt
@xappt.register_plugin
class MyPlugin(xappt.BaseTool):
arg1 = xappt.ParamString(required=True)
arg2 = xappt.ParamString(required=True)
arg3 = xappt.ParamString(required=True)
@classmethod
def help(cls) -> str:
return str("A simple command that will just echo the passed in arguments")
def execute(self, **kwargs) -> int:
print(self.arg1.value)
print(self.arg2.value)
print(self.arg3.value)
return 0
Finally, we have to add that "temp" folder to an environment variable to make our plugin discoverable, and then invoke xappt.
On Linux this would look something like this:
$ export XAPPT_PLUGIN_PATH=~/temp
$ xappt
On Windows it would look like this:
set XAPPT_PLUGIN_PATH=C:\path\to\temp
xappt
The output should now look like this:
usage: xappt [-h] [--version] {myplugin} ...
positional arguments:
{myplugin} Sub command help
myplugin A simple command that will just echo the passed in arguments
optional arguments:
-h, --help show this help message and exit
--version Display the version number
And when running xappt myplugin:
$ xappt myplugin
usage: main.py example [-h] --arg1 ARG1 --arg2 ARG2 --arg3 ARG3
xappt myplugin: error: the following arguments are required: --arg1, --arg2, --arg3
So let's pass in some arguments:
$ xappt myplugin --arg1 123 --arg2 abc --arg3 xyz
123
abc
xyz
For more complicated plugins you can have a structure like this:
/xappt_plugin
/plugins
__init__.py
myplugin.py
__init__.py
In this case myplugin.py would contain the MyPlugin class. And xappt_plugin/plugins/__init__.py might look like this:
from .myplugin import MyPlugin
And that's it. Now feel free to make execute do something actually useful.
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 xappt-0.4.0.tar.gz.
File metadata
- Download URL: xappt-0.4.0.tar.gz
- Upload date:
- Size: 21.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97101b52ec56f623025ab01f89817db64f950935ea8835bd1d03495ce92fed89
|
|
| MD5 |
2d874ec22a87e6cf46c1977949ac9d33
|
|
| BLAKE2b-256 |
3ff19a5c87f20cf99272ee3da6588fac89eff35d7f0b62dbd0e58288233c3200
|
File details
Details for the file xappt-0.4.0-py3-none-any.whl.
File metadata
- Download URL: xappt-0.4.0-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/50.3.0 requests-toolbelt/0.9.1 tqdm/4.49.0 CPython/3.8.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cae40c9db6361fa81e7073c04039eacccd93e7dfb645149877bbef7f09c9f668
|
|
| MD5 |
e58bc021f6c9183162c69fde7d5fd1cc
|
|
| BLAKE2b-256 |
402547b146e2fe956ceb16bff050272e8ccf9f04f81139bc5fff2f9dd756e491
|