将用户选择与功能紧密绑定的包。基于python inquirer。
inquirer-executor的Python项目详细描述
python查询程序执行器
这是对python inquirer的包装。从该项目的自述文件:
< Buff行情>因此,查询者应简化向最终用户提出问题、解析、验证答案、管理分层提示和提供错误反馈的过程
这个包通过在其上构建类来扩展这种思想,从而创建提示,这些提示将自动调用一个或多个对应于用户选择的函数,同时保持代码美观、整洁和可读。这是通过将函数的docstring作为这些函数的面向用户的表示来实现的。
如何使用
安装
pip install inquirer-executor
由于整个代码都包含在一个文件中,并且只有一个依赖项(构建在inquirer包上),因此如果您是这样滚动的,也可以手动将其(或其部分)复制/粘贴到项目中。
创建单选题(列表)
frominquirer_executorimportInquirerExecutorListquestion=InquirerExecutorList("Question you want to ask the user?",list_of_functions)
函数的列表可以是由函数类型单独组成的任何iterable。该类将根据您作为第一个参数提供的字符串和作为可选选项提供给用户的函数列表生成问题。这些选项将由给定函数对应的docstring表示。
示例
frominquirer_executorimportInquirerExecutorListdefprint_one():"""One."""print("one")defprint_two():"""Two."""print("two")defprint_three():"""Three."""print("three")question=InquirerExecutorList("Of the given choices, how many puppies is best?",[print_one,print_two,print_three])
这将创建问题的实例。现在您可以使用prompt_user()
和prompt_和_execute()
方法了。一旦您使用了prompt\u user()
方法,并且用户提供了答案,您还可以:
- 使用
find_function()
方法将相应的函数返回给用户的答案 - 访问实例
答案
值以读取用户的答案(他们选择的作为字符串的docstring)
- 使用
execute()
方法在以后执行用户选择(函数返回被调用函数的返回值)
不过,现在我们只想使用prompt\u和execute()立即查看结果:
question.prompt_and_execute()
这给了我们这个输出:
[?] Of the given choices, how many puppies is best?: Three.
One.
Two.
> Three.
three
用户已从表示函数和已执行函数的docstring中选择,并打印"3"。整洁.
创建多项选择题(复选框)
frominquirer_executorimportInquirerExecutorCheckboxquestion=InquirerExecutorCheckbox("Question you want to ask the user?",list_of_functions)
初始化它的工作方式与inquirexecutorlist
类的工作方式完全相同。不同之处在于存在execution_stack
值,该值是一个包含用户选中的所有选项的列表。所以这个类永远不会返回一个函数,总是一个函数列表。
示例
frominquirer_executorimportInquirerExecutorCheckboxdefprint_puppies():"""Puppies."""print("puppies")defprint_rocks():"""Rocks."""print("rocks")defprint_kittens():"""Kittens."""print("kittens")question2=InquirerExecutorCheckbox("Of the given choices, which ones are furry and cuddly?",[print_puppies,print_rocks,print_kittens])
这将创建问题的实例。同样,现在您可以使用prompt_user()
和prompt_和_execute()
方法。使用prompt_user()
方法生成答案后,您可以:
- 使用
find_functions()
(注意复数形式)方法将相应的函数列表返回给用户答案 - 访问实例
答案
值以读取用户的答案(他们选择的文档字符串列表)
- 使用
execute()
方法在以后执行用户的选择(函数本身返回函数返回值的列表)
不过,现在我们再次使用prompt\u和execute()来获得这个结果:
[?] Of the given choices, which one's are furry and cuddly?:
X Puppies.
o Rocks.
> X Kittens.
puppies
kittens
用户已选中选项1和选项3,并调用了相应的函数。
请记住,在这种情况下 创建inquirexecutor实例后,有两种方法可以将函数添加到其中。第一个是 第二个是 您还可以根据自己的喜好设置新值 这里, inquirexecutor提供了一个 您还可以使用 inquirexecutor提供了一个 当然,您可以将您喜欢的任何参数传递给函数。请记住,可能会调用列表中的任何函数,因此所有函数都必须接受相同的参数。为了防止路上可能出现的错误,inquirexecuter在创建时执行此操作,如果函数的接受参数不匹配,则抛出断言错误。 您可以使用python inquirer内置的主题化选项来实现主题的实例化,这是使用主题之前必须先将主题实例化的关键区别。然后,使用 这个包有时需要动态生成docstring,或者至少更可取。这可以通过在像这样定义函数之后定义docstring来实现: 只要处理normal函数,这是可能和有效的。一旦您试图对类中的方法执行此操作,python将引发一个错误,告诉您方法的 因此,inquirexecutor提供了一个名为 好得多,干净得多! 根据你想要达到的目标,你可能想要用最适合你的用例的方式来组织问题。对于简单的应用程序,inquirexecutor提供了一个 假设用户选中了复选框中的两个选项,并在单选题中选择了"return 4",并且他是来自高谭市的亿万富翁,那么上面的代码将生成如下内容: 如果您想在更复杂的示例中看到这个包的应用,请参考存储库的示例文件夹。这些小项目的结构考虑到了人的可读性,并对其进行了大量评论,以指导您完成代码,使您能够在短时间内使用此软件包。 我自己需要这个。 我们非常欢迎您的贡献和改进。请为您的代码贡献编写一个测试,并在编辑此项目中的代码时使用黑色代码格式化程序。 如果您在软件包中玩过,并且您认为您创建的软件包是一个很好的示例项目,我非常希望将其合并到示例文件夹中,请确保对您的代码进行注释,以便其他人能够理解您正在做的工作。 版权所有(c)2019年,基于Miguel_ngel García的《Python Inquirer》(Python Inquirer)的《Python Inquirer》(Python Inquirer)(http://blog.vomkonstant.in" rel="nofollow")。 在麻省理工学院许可证下获得许可prompt_and_execute()
always返回列表
实例化后对问题进行变异
添加
+
运算符,它会将添加的函数附加到与问题相关的选项的末尾。insert(index,value)
方法,它将在index
处插入值
(在本例中必须是函数类型)。使用它就像您习惯于从列表中键入一样。
设置
instance[0]=new_value
new_value
需要是函数类型。重新排序
重新排序(索引)
方法,其中索引是表示新顺序的数字列表,因此当给定[2,0,1]
时,原始索引0将移动到索引2,原始索引1移动到0,2移动到1。reverse()
方法,该方法的工作方式与您习惯于从列表中选择类型一样。
拆卸
remove(value)
方法,除了一个函数名为string或一个索引为number作为它的值
参数之外。在这两种情况下,匹配功能都会从提供给用户的选项中删除。传递参数
主题化
theme
关键字将实例传递给prompt_user()
或prompt_and_execute()
方法,而不是主题类。动态设置docstrings
0
pip install inquirer-executor
\uu doc\uu
属性是不可写的。dynamic\u docstring\u decorator
的decorator,可用于设置动态docstring。上面用decorator重写的代码如下所示:
1
pip install inquirer-executor
将此作为整个问题目录的一部分
questionscatalogue
类,该类可以用一个包含inquirer
或inquirer\u executor
对象的可迭代类型来实例化。questionscatalogue
处理这些对象,使它们感觉就像一个函数列表,并为您提供prompt_all()
方法。此方法返回一个由两个项组成的元组:1)文本、路径等给出的所有答案的字典。提示您可以直接从inquirer
d 2)用户从questionscatalogue
中的单选和多选问题中选择的函数列表。为了使所有的东西都可读并且易于推理,这个类不提供直接调用所有函数的方法,您需要自己调用它们,无论何时,只要您认为合适。示例
2
pip install inquirer-executor
3
pip install inquirer-executor
示例
存在理由
贡献
许可证
推荐PyPI第三方库