master
mrxn27umf 4 years ago
parent deae107739
commit 834a0c085f

@ -5,7 +5,7 @@ Expose functionality to user by archive them in a function / module / object / c
# Python fire 源码分析:
## __main__.py
## \_\_main__.py
主要负责import被使用的module或者file将其导入Fire.fire()函数。
## trace.py
@ -13,16 +13,23 @@ Expose functionality to user by archive them in a function / module / object / c
(INITIAL_COMPONENT,INSTANTIATED_CLASS,CALLED_ROUTINE,CALLED_CALLABLE,ACCESSED_PROPERTY,COMPLETION_SCRIPT,INTERACTIVE_MODE
)
FireTrace由一系列FireTraceElement对象组成。每个元素
FireTrace由一系列FireTraceElement对象组成内部用list表示。在需要时可以由GetLastHealthyElement().component返回当前被操作的元素。
表示一个fire执行时的操作。一项行动可能是实例化类、调用例程或访问属性。
每个操作都使用参数并产生一个新组件。最后一部分
由Fire序列化为stdout并由Fire方法返回。如果
出现Fire用法错误例如提供的参数不足无法调用
每个操作fire._CallAndUpdateTrace()都使用参数并产生一个新component。最后一部分由Fire序列化为stdout并由Fire方法返回。如果出现Fire使用错误例如提供的参数不足无法调用
一个函数则该Error将在trace中被capture并且final component将被设定为None。
## inspect.py/inspectutils.py
提供调用操作的功能支持
提供inspection操作的功能支持
## decorators.py
这些decorators为python fire提供函数metadata。
这里的fn是指被调用的函数是fire将准备好的参数传入的终端。
SetParseFn和SetParseFns允许设置被Fire用于解析命令行参数的函数。这些函数将被用于客户端代码。
### SetParseFns(*positional, **named)
设置fire的fns以便在调用被修饰的fn时用于解析参数。
返回一个decorator当应用于函数时它会将元数据添加到函数告诉Fire如何将字符串命令行参数转换为正确的用于调用函数的Python参数。
解析函数应该接受单个字符串参数并向在调用修饰函数时在其位置使用。
## core.py
@ -58,4 +65,6 @@ fire的一般执行过程如下
有了python提供的这些函数就可以实现变量的动态查找和识别然后根据这些变量的不同类别进行不同的操作。
当检测到component是class, routine, callable object时调用_CallAndUpdateTrace()来
当检测到component是class, routine, callable object时调用_CallAndUpdateTrace()
#### _CallAndUpdateTrace()实现
Loading…
Cancel
Save