一种可推断的面向行的命令提示符解释器
inpromptu的Python项目详细描述
输入脉冲
自动推断交互式提示的库。在
什么是
Inpromptu几乎是Python内置的cmd.py实用程序的直接替代品。在
由于需要快速与现实世界的设备交互,以及由于手工开销而产生的挫败感命令行,Inpromptu通过利用Python的类型暗示和自省功能自动生成交互式提示会话。功能包括
- 使用方法的函数签名无缝自动完成制表符
- 使用方法的docstring自动生成帮助
- 交互式方法,可以提示用户在方法中的任何位置输入更多信息
- 可自定义的选项卡完成,可在方法中的任何位置重新配置
什么输入不是
Inpromptu创建一个交互式提示。Inpromptu不是:
- 命令行接口生成器。请参见argparse,python-fire,或click。在
- 直接替代api命令行. 有一些细微的差别。看看例子吧。在
要求
- Python 3.6或更高版本
- 要转换为交互式提示会话的类必须从Inpromptu对象继承
- 要作为命令公开给提示会话的方法必须用
@cli_method
修饰符修饰 - 所有将成为提示命令的方法都必须提示所有参数类型
示例时间
从文件中的一个类开始,比如test_驱动器.py. 在
classTestDrive(object):def__init__(self):"""initialization!"""self.vehicle_speed=0honk(self):"""beep the horn."""pass@propertyspeed(self):"""return the vehicle speed."""returnself.vehicle_speed
从Inpromptu继承。用@cli_method
装饰您的方法。在
快跑!在
python3 test_drive.py
这将产生一个提示:
>>>
按tab键两次以显示所有的@cli_method
修饰参数。在
honk speed
>>>
太好了!现在让我们演示论点完成。在{self}或第一个添加参数的函数。在
@cli_methodadd_fuel(self,gallons:float=0,top_off:bool=False):"""Add fuel in gallons."" pass
快跑!在
python3 test_drive.py
在提示下开始键入
>>> add_f
按tab键完成任何@cli_method
修饰函数。在
>>> add_fuel
在命令之间留出空格,然后按tab键两次。在
gallons=<float> top_off=<False>
>>> add_fuel
神奇!此时,您可以通过多种方式完成命令的输入。在
>>> add_fuel gallons=10 top_off=False
或者
>>> add_fuel 10 False
或者
>>> add_fuel 10 top_off=False
换句话说,参数可以按名称或位置填充,也可以先按位置填充,然后按名称填充——就像*args和**kwds在普通python函数上的行为一样。在
最后一个演示。可以通过函数签名自动推断制表符完成。但是如果你需要改变它的中间功能来建议用户输入呢?没问题。把它添加到完成列表中
add_specs_from_user(self):"""Add specs from user."""self.completions=["2","4","6"]self.door_count=self.input("How many doors does this vehicle have?")
完成的“制表符”将呈现此列表,当函数完成执行时,该列表将被清除。在
你还在等什么?为什么不试驾一下呢?从顶部目录运行:
python3 -m examples.test_drive
关于作者
Inpromptu是由使用命令行一次太多了。必须有更好的解决办法。。。。在写了Inpromptu之后,有!在
- 项目
标签: