这个包将允许运行主文件并检索cls中修饰过的特性方法的列表
lusidfeature的Python项目详细描述
Lusid功能Python装饰器扫描器
说明
这个存储库包含源代码,它提供了一个名为“lusid_feature”的python修饰符,然后可以使用它 在python项目中扫描所需项目包中的所有“lusid_feature”装饰器值。跑步者 然后将生成一个输出文本文件,其中包含所需的名称和路径以及所有lusid_功能部件代码。在
生成的文本文件随后被传递到Lusid feature reporter python脚本中,该脚本将功能代码映射到 完整的特性名称及其实现状态,最终在所有Lusid sdk中创建一个可视化的特性报告。在
使用
安装
运行:
pip install lusidfeature
导入
这个存储库有两个主要功能需要导入才能使扫描仪工作
- lusid中的lusid_功能_功能.py-与函数和方法一起使用的装饰器
- 在reporter中extract_features_to_file(argv)函数提取所有装饰器值并将其写入文件
实现lusid_feature
decorator
导入成功后,可以使用lusid_feature decorator按以下方式装饰函数和方法:
^{pr2}$关于使用lusidüfeature decorator的规则:
- 必须始终用括号调用修饰符,并传递字符串值。它可以选择包含多个值。
{用法:
@lusid_feature - 装饰器不能传递空字符串。以下情况将引发错误:
@lusid_feature("")
- 装饰器在正在扫描的包文件中不能有重复的功能值。 如果在同一个包中发现具有相同功能代码的两个函数/方法,则会引发错误:
@lusid_feature("F1")
def some_function():
pass # function/method implementation
@lusid_feature("F1")
def some_other_function():
pass # function/method implementation
运行装饰器扫描仪
要提取特征值并将其写入文件,必须从主.py文件:
from lusidfeature.reporter import extract_features_to_file
def main(argv):
extract_features_to_file(argv)
if __name__ == "__main__":
main(sys.argv)
我们必须在entry main函数中使用“ifname=”main“,因为decorator scanner 必须与严格要求的“根项目目录”、“项目包名称”一起直接运行 和“输出文件路径”参数。在
输入参数(系统argv)
命令行需要两个参数
- --outpath或-o
这是创建输出文件的位置的完全限定文件名
示例:
Windows:
-o <your-absolute-path>\<your-filename>.txt
-o C:\\home\src\output\features.txt
Unix(Mac/Linux):
-o <your-absolute-path>/<your-filename>.txt
-o home/src/output/features.txt
- --或包装
这是decorator扫描仪应该在其中查找decorator的包 示例:
-p lusid.submodule
-p lusid.submodule.anothersubmodule
-p tests.tutorials
- --根或-r
根目录的路径,装饰器扫描程序应从该路径开始遍历包和模块。 路径必须指向项目文件夹内的目录,而不是项目外部的目录。 (建议是根SDK文件夹或src文件夹,而不是基本项目路径。)
示例:
Windows:
-r C:\\home\lusid-sdk-python\sdk
Unix(Mac/Linux):
-r home/lusid-sdk-python/sdk
要运行,请为所需文件夹设置PYTHONPATH,并以类似的方式运行以下示例:
python main.py -p "tests.tutorials" -o "/usr/app/features.txt"
输出文件
decorator scanner应该使用示例内容将文件写入指定路径:
在功能.txt在
F1
F32
F2
F3
F10
F11
F8
etc...
局限性
使用带有参数注入修饰符的lusid_特性(例如参数化)
当使用parameterized
包或任何其他向函数/方法注入参数的修饰符时,
那么lusid_feature
装饰器必须位于另一个装饰器的top
正确用法:
@lusid_feature("F2", "F5", "F6")
@parameterized.expand(
[
("test1", 1),
("test2", 2)
]
)
def test_dummy_method_2(cls, test1, test2):
pass # Empty for testing purposes
错误用法:
@parameterized.expand(
[
("test1", 1),
("test2", 2)
]
)
@lusid_feature("F2", "F5", "F6")
def test_dummy_method_2(cls, test1, test2):
pass # Empty for testing purposes
堆叠装饰器
目前不支持lusid_功能的装饰器堆叠。fol公司降低成本不会产生预期的结果。在
错误用法:
@lusid_feature("F1")
@lusid_feature("F2")
def some_function():
pass # function/method implementation
- 项目
标签: