Skip to content

Repository files navigation

Ask for function args by Terminal UI / GUI, ensuring the type annotation. Inspired by python-fire, and it maybe need a human-friendly interactive UI.

Install

pip install ask4args -U

Simple Usage

python3 -m ask4args module:function

Terminal UI

demo.gif

GUI

demo2.png

More Usage Examples

fromask4args.coreimportAsk4Args, Ask4ArgsGUI, Ask4ArgsWebfromtypingimportList, Dictdeftest_normal_function(a: int, b: int=2, **args_dict: Dict[str, int]):
# first a value=1, args_dict['c']=3, others use default.# press 1, enter, enter, enter, c, enter, 3, enter, enterasserta==1assertb==2assertargs_dict['c'] ==3return ('success', vars())
deftest_keyword_only_function(a: float,
b: int=2,
*,
c: bool=False,
d: str='string',
e: int=None,
f: List[int] =None,
**args_dict: Dict[str, int]):
"""Read the doc, and test kw-only args. :param a: one float num :type a: float :param b: one int num, defaults to 4 :type b: int, optional :param c: boolen arg, defaults to False :type c: bool, optional :param d: string arg, defaults to 'string' :type d: str, optional :return: return the args_dict :rtype: Dict[str, list] """asserta==1.1assertb==2assertcisFalseassertd=='string'asserte==1assertf== [1, 2, 3]
assertargs_dict['h'] ==3return ('success', vars())
classTestClass(object):
deftest_method(self, a: str, b: int=1):
asserta==''assertb==1return ('success', vars())
@classmethoddeftest_class_method(cls, a: str, b: int=1):
asserta==''assertb==1return ('success', vars())
deftest_defaults(a: int):
asserta==1return ('success', vars())
if__name__=="__main__":
# cls = Ask4ArgsWebcls=Ask4Args# cls = Ask4ArgsGUI# =====================# =====================# ('success', {'a': 1, 'b': 2, 'args_dict': {'c': 3}})# cls(test_normal_function).run()# =====================# ('success', {'a': 1.1, 'b': 2, 'c': False, 'd': 'string', 'e': 1, 'f': [1, 2, 3], 'args_dict': {'h': 3}})# cls(test_keyword_only_function,# choices={# 'e': [1, 2, 3, 4, 5]# },# checkboxes={# 'f': [1, 2, 3, 4, 5]# }).run()# =====================# cls(TestClass().test_method).run()# =====================# cls(TestClass().test_class_method).run()# =====================# cls(test_defaults, defaults={'a': 1}).run()pass

TODO

  • Terminal UI
  • GUI
  • Web UI (no need to do)

About

Python-Fire-like, ask for function args by Terminal UI / GUI, ensuring the type annotation.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages