pyinvoke - 我可以向 pyinvoke 任务添加条件“预”任务吗?
问题描述
pyinvoke支持所谓的“预”任务,必须在运行任务之前执行:
@task(pre=[required_precondition])
def mytask(c, param1=False):
pass
是否可以向“pre”任务添加条件(即仅当 param1 为 True 时才运行“required_precondition”)?
解决方案
据我所见,没有,前置条件和后置条件是在“编译时”创建的,这意味着它们无法访问参数。或者,它是完美的一部分,但您可以使用可以从另一个任务调用一个任务的事实(文档中没有解释)来手动执行您的预任务条件。
from invoke import Collection, task
@task
def hello(c):
print("hello")
@task
def goodbye(c, a=False):
if a:
col = Collection()
col.add_task(hello)
col['hello'](c)
print('goodbye')
输出
> invoke goodbye
goodbye
> invoke goodbye -a
hello
goodbye
它确实感觉“hacky”,但据我所知,这是更简单的方法。
注意:如果由于某种原因您的任务已经是 anamespace
或ns
变量的一部分,则不需要创建新集合,只需从命名空间本身调用它们,如下所示
namespace['hello'](c)
推荐阅读
- python - Convert dataframe to dictionary ignoring certain values
- installation - 声音固件安装因内部原因失败
- graphql - 如何使用 GraphQL 让孩子在 Strapi 的一对多关系中计数?
- firebase - 存储桶的 Firebase 存储规则不允许访问
- python - Python 3 如何在特定域上抓取/爬行?
- python - 如何在 for 循环中更新熊猫数据框中的值?
- jquery - 我正在尝试制作我的 jquery '
- '+搜索历史+'
' 每次搜索都换行/ - '+搜索历史+'
- java - 捕获视频流并在文件系统中保存为多个 mp4 视频
- python - 使用 if 语句查找特定值
- google-apps-script - 文档保存完成后是否可以在 Google App Scripts 中运行函数?