Generate options from function.
Project description
Call function directly in cmd line
Features
- Allow user call functions directly in command line.
- Generate help tips automatically.
- Add default called functions if not function was specific.
Notice
- It's better to add argument type for each autocall functions.
- Function with @optfunc_default has @optfunc implicitly.
- Arguments of function with @optfunc_default should be optional or no argument.
- Not support two type of variadic arguments.
TODO
- Beautiful print.
Code example
from optfunc import *
@optfunc
def arg_test_positional_only(pos_only0, pos_only1: int, pos_only2 = 5, pos_only3: int = 6):
"""summary for the function
Args:
pos_only0 (_type_): This is the first positional-only argument.
pos_only1 (int): This is the second positional-only argument.
pos_only2 (int, optional): This is the third positional-only argument. Defaults to 5.
pos_only3 (int, optional): This is the fourth positional-only argument. Defaults to 6.
"""
" Argument test for positional-only arguments. "
print(f'pos_only0: {pos_only0}, pos_only1: {pos_only1}, pos_only2: {pos_only2}, pos_only3: {pos_only3}')
pass
@optfunc
def arg_test_positional_or_keyword(pos_or_kw, pos_or_kw1: int, pos_or_kw2 = 3, pos_or_kw3: int = 4):
" Argument test for positional-or-keyword arguments. "
print(f'pos_or_kw: {pos_or_kw}, pos_or_kw1: {pos_or_kw1}, pos_or_kw2: {pos_or_kw2}, pos_or_kw3: {pos_or_kw3}')
pass
@optfunc
def arg_test_kw_only(*, kw_only0, kw_only1: int, kw_only2 = 9, kw_only3: int = 10):
" Argument test for keyword-only arguments. "
print(f'kw_only0: {kw_only0}, kw_only1: {kw_only1}, kw_only2: {kw_only2}, kw_only3: {kw_only3}')
pass
if __name__ == '__main__':
optfunc_start(globals=globals(), has_abbrev=False, header_doc='This is a test file for the module "autocall".')
Run the code
~/:$ python3 test.py -h
Usage: test.py [command] [<args>|--help]
This is a test file for the module "autocall".
commands:
arg_test_positional_only summary for the function
arg_test_positional_or_keyword Argument test for positional-or-keyword arguments.
arg_test_kw_only Argument test for keyword-only arguments.
~/:$ python3 test.py arg_test_positional_only -h
Usage: test.py arg_test_positional_only [OPTIONS]
summary for the function
Arguments:
+-------------+------+---------+-------------------------------------------------------------+
| Opt | Type | Default | Desc |
+-------------+------+---------+-------------------------------------------------------------+
| --pos_only0 | any | | This is the first positional-only argument. |
| --pos_only1 | int | | This is the second positional-only argument. |
| --pos_only2 | any | 5 | This is the third positional-only argument. Defaults to 5. |
| --pos_only3 | int | 6 | This is the fourth positional-only argument. Defaults to 6. |
+-------------+------+---------+-------------------------------------------------------------+
~/:$ python3 test.py arg_test_positional_only --pos_only0 "good day" --pos_only1 2
pos_only0: good day, pos_only1: 2, pos_only2: 5, pos_only3: 6
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 Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
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 optfunc2-0.1.1-py3-none-any.whl.
File metadata
- Download URL: optfunc2-0.1.1-py3-none-any.whl
- Upload date:
- Size: 7.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.0.1 CPython/3.10.16
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e01e7e0decb96bdeb966bcba94c0e5164069c8729faa2bebcc9fc0bb061e027
|
|
| MD5 |
f4611edc2ef6a45c925f7c846c107e3e
|
|
| BLAKE2b-256 |
adbe168f40fc98cb0719a09d5b197476bbf8898cfcd0e044f0eecc9a40a547f9
|