用于程序启动的依赖图解析器

startup的Python项目详细描述


Startup类实现函数调用图依赖项 用于分离复杂程序初始化序列的解析器。

要使用startup,您可以用它们所使用的变量注释函数 读或写(余数:必须注释全部非可选 参数)。然后startup从 注释,并以稳定和可预测的顺序调用它们。每个 函数将只被调用一次,如果一个函数从未被调用过 调用(由于不可满足的依赖关系),startup将引发 StartupError

示例用法:

fromstartupimportstartup# 'argv' is the variable name that parse_argv reads from, and# 'args' is the variable name that parse_argv writes to.# NOTE: All non-optional parameters must be annotated.@startupdefparse_argv(argv:'argv')->'args':args={'config_path':argv[1]}returnargs@startupdefread_config(args:'args')->'config':withopen(args['config_path'])asconfig_file:returnconfig_file.read()defmain(argv):# You may provide variable values to startup, like argv in this# case, and you may read variable, like config, which will be# returned by startup.call().config=startup.call(argv=argv)['config']

必须使用变量注释所有非可选参数 名称,但注释返回值是可选的。参数注释 可以用['var']形式进行注释,此函数将读取 所有写入'var'的值(见下文)。返回值注释 可以是变量名的元组,这意味着解包返回值。

函数注释中的变量不是实数,而是dictstartup内部存储的键(startup.call()将返回 这个dict,以便您也可以读取这些变量)。

注意:目前注释格式非常严格:参数 批注必须是strstr的一个元素列表, 返回值注释必须是strstr。灵活性是为了将来的扩展而保留的。

由同一组依赖项满足的函数是 按其词典名和限定名在词典编纂顺序中调用。 这样,即使您更改了代码布局和/或导入顺序, 函数仍将按相同的顺序调用,因此startup 是稳定和可预测的。

变量可以多次写入(如果多个函数 写在上面的注释)。在这种情况下,startup将调用 只有在调用了所有writer函数之后,才会调用reader函数。这个 读卡器功能可以选择读取最新值或所有值 写入该变量(通过['var']annotation表单)。

所有的读者都被所有的作者屏蔽的事实可以用来 表示程序初始化的常见模式,如连接或 排序函数调用。

为什么startup

启动程序可能很复杂,但不应该很复杂。 例如,main.pyimportsorm.pyorm.pyimports db.py。假设要按db.py的顺序初始化它们, main.py,然后orm.py。那么main.py必须知道 可传递地导入db.py,并应在之前初始化db.py。 本身。当每个模块需要阶段时,事情变得更加复杂 初始化。我们通常以main.py导入所有 其他模块和手动排序初始化。我觉得这种 在依赖关系上用拓扑排序可以更好地解决 图。基本上,您注释每个模块的依赖项,然后 startup将解析稳定且可预测的函数调用顺序 为你。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java IntelliJ找不到依赖项选项卡   java向字符串数组string[]添加元素并在Junit中测试结果   如何在eclipse中获取活动java项目的名称   如何使用java在mysql中插入时间   java ArrayList更新了插入一行,但Jtable仍然没有刷新   如何在JavaSwing中命名坐标(点)   java Matcher/模式不打印   java错误地设置了arraylist   使用UsernamePasswordCredential提供程序的java列表Azure AD   java在HTTP请求中设置UTC时间   未加载事件:jquery完整日历Java集成   java Maven插件依赖项无法从内部repo解析依赖项   Maven更新重置Java版本   java如何向中添加图片。带有Apache POI XWPF的docx,但不指定其大小   Java最大函数递归