Automatically turn functions into executables.
Project description
Automatically turn python functions into executable scripts
Whenever you have written some code and want to run it on a cluster, the first step is to turn it into an executable. This typically leads to a quick stop over at the docs for argparse, together with a lot of duplicated effort in reproducing the function signature. This can be error-prone and annoying, especially if one edits the function.
This script automates this process, using information about types provided either through function annotation, default values in keyword arguments, or type information in numpydoc-style docstrings. Like any shell script, this limits the functions to arguments that can be passed in the terminal, (str, int, float,…).
Example
Let’s say you’ve written the following function in example.py, which provides all kinds of different type information
def add(a: int, b, c=5, d=7., e=None):
"""Some cool addition.
It's super complicated.
You know, adding and stuff.
Parameters
----------
b : int
This is the second complicated parameter
super complicated
e : int, optional
"""
if e is None:
e = 0
return a + b + c + d + e
Now all you have to do to turn this into an executable is add the following code at the bottom
if __name__ == '__main__':
import autoexec
res = autoexec.execute_function(add)
print(res)
and run chmod +x example.py. Now if you run ./example.py --help you get the following output
❯❯❯ ./example.py --help
usage: example.py [-h] --a A --b B [--c C] [--d D] [--e E]
Some cool addition.
It's super complicated.
You know, adding and stuff.
optional arguments:
-h, --help show this help message and exit
--a A int
--b B This is the second complicated parameter
super complicated
--c C int, default: 5
--d D float, default: 7.0
--e E int, default: None
And you’re ready to call the script from the command line
❯❯❯ ./example.py --a 1 --b 2 --c 3
13.0
There is type-checking by argparse
❯❯❯ ./example.py --a 1 --b stringy
usage: example.py [-h] --a A --b B [--c C] [--d D] [--e E]
example.py: error: argument --b: invalid int value: 'stringy'
and it complains about missing arguments
❯❯❯ ./example.py --a 1
usage: example.py [-h] --a A --b B [--c C] [--d D] [--e E]
example.py: error: the following arguments are required: --b
There is also support for multiple functions via autoexec.execute_functions.
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 autoexec-0.1.1.tar.gz
.
File metadata
- Download URL: autoexec-0.1.1.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3dee1722d8fafad4e8adbe3290316aff9848e9838c91c73e30040e06cb9fe75a |
|
MD5 | eeaffa4630628ce204bdad9775fbb283 |
|
BLAKE2b-256 | 2c0c4d0113bc56f7c887ae6a7ab174228f876782b63cb513c5491927eadc8429 |
File details
Details for the file autoexec-0.1.1-py3-none-any.whl
.
File metadata
- Download URL: autoexec-0.1.1-py3-none-any.whl
- Upload date:
- Size: 6.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | b927a073bd639a38caf7c128a7a6c08675eb10c94a099c9fa131d74f5db4a45a |
|
MD5 | 5883798455ba4bf029e96b0dbf0e5827 |
|
BLAKE2b-256 | d6545cb39e0f6a96c43ef1497e7d3f80e4ee3e800b5986472b3e6d9024bea08a |