Использование namedtuple очень просто, вы можете получить экземпляр namedtuple и получить его развернутым в качестве следующего входного преобразования:
import bonobo
import collections
Hero = collections.namedtuple("Hero", ["name", "power"])
def produce():
yield Hero(name="Road Runner", power="speed")
yield Hero(name="Wile E. Coyote", power="traps")
yield Hero(name="Guido", power="dutch")
def consume(name, power):
print(name, "has", power, "power")
def get_graph():
graph = bonobo.Graph()
graph >> produce >> consume
return graph
if __name__ == "__main__":
with bonobo.parse_args() as options:
bonobo.run(get_graph())
"Поля вывода" produce()
будут установлены из полей namedtupleи «поля ввода» consume(...)
будут обнаружены из первой строки ввода.
Метод context.set_output_fields(...)
полезен, только если по какой-либо причине вы не хотите использовать именованные структуры данных (например, namedtuples) но предпочитаю использовать кортежи, но при этом необходимо указывать имена в кортеже.
Надеюсь, это поможет!