API 参考
Geyser
基本用法
从geyser
导入Geyser
类。
Examples:
from geyser import Geyser
Geyser
类是 Geyser 的入口,同时你也可以通过Geyser.task和Geyser.functor引入你自定义的任务。
Exceptions:
Type | Description |
---|---|
FileNotFoundError |
当配置文件路径搜索不到文件时,会触发该异常。 |
NotImplementedError |
当配置文件格式不受支持时,会触发该异常。 |
task(provides=(), requires=(), revert_requires=())
classmethod
任务注册器
注册一个任务,你可以完全继承Atom来定义任务所有的行为,也可以通过继承Task来简单定义任务行为。
提供参数
任务的返回值需要按照Results specification中返回值的规定。
简单来讲,即符合以下规则:
provides 类型 |
示例 | 返回值 |
---|---|---|
tuple(...) |
('foo',) |
return 'FOO', |
set(...) |
{'set',} |
return {'foo': 'FOO'} |
Warning
当provides
只包含一个参数名时,需要在返回值时确保返回的参数被打包成序列的形式。
Example
from geyser import Geyser
from taskflow.task import Task
@Geyser.task(provides=('foo',))
class Foo(Task):
def execute(self, foo):
return 'FOO', # 或者 ['FOO']
# ^ 注意这里的逗号!
注入日志记录器
当execute
函数中定义了 logger 参数, Geyser 将自动注入一个Logger实例,但 logger 作为参数不需要在provides
中定义。
其他
关于任务行为的定义方法,详见Task。
Geyser.task
是一个装饰器函数,如果需要显式调用,可以依照如下方式。
Examples:
from geyser import Geyser
from taskflow.task import Task
class Foo(Task):
def execute(self, foo):
return 'FOO', # 或者 ['FOO']
# ^ 注意这里的逗号!
Geyser.task(provides=('foo',))(Foo)
Geyser.task
不会改变代码原类定义的任何性质,仍然可以通过显式调用的方式对任务进行调用。
Parameters:
Name | Type | Description | Default |
---|---|---|---|
provides |
Sequence[Text] |
任务提供的参数。 |
() |
requires |
Sequence[Text] |
任务依赖的参数。 |
() |
revert_requires |
Sequence[Text] |
任务回退提供的参数。 |
() |
Returns:
Type | Description |
---|---|
Callable[[Type[Atom]], Type[Atom]] |
注册函数。 |
functor(provides=(), requires=(), revert_requires=())
classmethod
函数注册器
通过FunctorTask对函数进行封装,注册封装后的FunctorTask
。
其他特性与Geyser.task相同。
Warning
通过 Geyser 进行任务编排时位置形参会失效,需要再次封装将位置形参作为某个参数传入函数,关于这方面的语言特定详见函数定义。
Parameters:
Name | Type | Description | Default |
---|---|---|---|
provides |
Sequence[Text] |
[description]. Defaults to (). |
() |
requires |
Sequence[Text] |
[description]. Defaults to (). |
() |
revert_requires |
Sequence[Text] |
[description]. Defaults to (). |
() |
Returns:
Type | Description |
---|---|
Callable[[Callable], Callable] |
[description] |
entry()
classmethod
入口
Geyser 主程序入口。
Examples:
# 通过`geyser`命令
geyser --help
# 通过调用`geyser`包:
python -m geyser --help
reflect(reference)
反射器
Parameters:
Name | Type | Description | Default |
---|---|---|---|
reference |
Text |
定义需要反射的对象路径 |
required |
Exceptions:
Type | Description |
---|---|
ImportError |
当对应路径的对象不存在时,会触发该异常。 |
Returns:
Type | Description |
---|---|
object |
反射到的对象 |
inject_logger(type_, *args, **kwargs)
日志记录器注入
当函数或类构造函数包含名为logger
的形参时,注入一个名称为该类构造或函数路径的日志记录器。
首个参数必须为该类构造或函数,之后为调用调用该类构造或函数的参数。
Returns:
Type | Description |
---|---|
object |
原函数或类构造函数的输出 |
reference(obj)
对象路径获取
获取某个对象路径的工具函数,当不确定某个任务或函数的实际路径时可通过该函数获取。
Parameters:
Name | Type | Description | Default |
---|---|---|---|
obj |
[type] |
需要获取路径的对象 |
required |
Returns:
Type | Description |
---|---|
Text |
该对象的路径 |