这个包将允许运行主文件并检索cls中修饰过的特性方法的列表

lusidfeature的Python项目详细描述


LUSID_by_Finbourne

Lusid功能Python装饰器扫描器

说明

这个存储库包含源代码,它提供了一个名为“lusid_feature”的python修饰符,然后可以使用它 在python项目中扫描所需项目包中的所有“lusid_feature”装饰器值。跑步者 然后将生成一个输出文本文件,其中包含所需的名称和路径以及所有lusid_功能部件代码。在

生成的文本文件随后被传递到Lusid feature reporter python脚本中,该脚本将功能代码映射到 完整的特性名称及其实现状态,最终在所有Lusid sdk中创建一个可视化的特性报告。在

使用

安装

运行:

pip install lusidfeature

导入

这个存储库有两个主要功能需要导入才能使扫描仪工作

  1. lusid中的lusid_功能_功能.py-与函数和方法一起使用的装饰器
  2. 在reporter中extract_features_to_file(argv)函数提取所有装饰器值并将其写入文件

实现lusid_featuredecorator

导入成功后,可以使用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

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

推荐PyPI第三方库


热门话题
java从提供的列表中获取非重复值   java为什么Thymeleaf从HashMap返回字符串?   java将矩阵推到窗口的中心   java如何包含webapp_配置。txt到播放的dist-zip?   java实现产品密钥   WebSphereJava。lang.UnsupportedClassVersionError:JVMCFRE003错误的主要版本;class=org/slf4j/impl/StaticLoggerBinder,偏移量=6   使用java创建动态树结构   java为什么JVM在一次繁忙的旋转暂停后,会对同一代码块显示更多的延迟?   java无法使用distrolessdebug访问jarfile docker   java JMeter如何将多行响应数据传递给ForEach控制器请求   java空指针异常碎片活动   java改变JFileChooser的外观   性能Java位集:高效地查找所有真实位?   java可扩展的recyclerview实现