跳转至

API 参考

Geyser

基本用法

geyser导入Geyser类。

Examples:

from geyser import Geyser

Geyser类是 Geyser 的入口,同时你也可以通过Geyser.taskGeyser.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

该对象的路径