一种允许创建自动数据处理管道的工具。

autopipe的Python项目详细描述


自动管道

一种允许创建自动数据处理管道的工具。在

如何使用

要创建管道,必须创建协调器。为此,请创建一个文件和一个实现基本协调器类的类。 例如,下面是一个简单的协调器的代码,它从googleimage下载与查询相对应的图像。在

fromtypingimportList,Union,CallablefromautopipeimportCoordinator,Pipe,APData,Outputfromautopipe.inputimportRssInputfromautopipe.pipeimportFileData,DownloaderPipeclassDownloadExample(Coordinator):def__init__(self,query:str="raccoon"):super().__init__()self.query=query@classmethoddefname(cls):return"DownloadExample"@propertydefinput(self):returnRssInput(f"http://www.obsrv.com/General/ImageFeed.aspx?{self.query}",lambdax:FileData(None,x["media_content"][0]["url"],False))@propertydefpipeline(self)->List[Union[Pipe,Callable[[APData],Union[APData,Pipe]]]]:return[Output(DownloaderPipe())]

要使autopipe找到此协调器,必须使用以下三种方法之一

  1. 将协调器文件放入autopipe/coordinators文件夹,在autopipe/coordinators/__init__.py文件中导入协调器,并将协调器名称放入该文件的__all__数组中。在
  2. 运行autopipe时,将协调器参数设置为文件的路径,后跟“:”和协调器的类名。例如,如果协调器的文件名为coordinator.py,位于当前目录中,并且协调器的名称是DownloadExample,那么协调器参数将是../coordinator.py:DownloadExample
  3. 将协调器文件发送到autopipe的标准输入,并使用-作为协调器名称。SOON

要运行这个,有三种方法

  1. 使用bin文件夹中的autopipe文件如下:./autopipe <coordinator> [coordinator_parameters]
  2. 使用模块语法如下:python -m autopipe <coordinator> [coordinator_parameters]
  3. 使用shebang#!/usr/bin/env autopipe -,设置您的协调器文件可执行文件(chmod +x file.py)并执行它。SOON

协调员选项

管道总是以Input开头。指定将在get_input()方法中使用的输入管理器的实例。在

一个输入将返回一个或多个将被逐个发送到管道的数据。在

管道

每个项目都被发送到您在协调器的pipeline属性中指定的Pipe。在这个属性中,您可以放置以单个APData作为参数并返回APDataPipe的管道或函数实例。 当到达Output管道时,项目的管道结束。这可以通过使用一个预先生成的输出,或者用一个Pipe或一个Output()调用来包装Pipe。在

拦截器

您可以将拦截器添加到您的协调器。拦截器是一个函数,如果指定的条件匹配,将在管道的步骤之间调用该函数。这允许您处理数据的无效情况或不需要在管道中执行特定步骤的特定情况。可以使用@autopipe.interceptor(lambda data: condition)修饰符指定拦截器。在

默认处理程序

可以在协调器中指定default_handler方法。一旦整个管道被消耗,但没有返回任何输出,将调用此特殊方法。您还可以通过从协调器中删除该属性(或返回空列表)来使用此方法来代替pipeline属性。在

使用

^{pr2}$

安装

要安装autopipe,请运行sudo pip install autopipe。要使用开发版本,可以克隆这个项目并运行pip install -e .。在

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

推荐PyPI第三方库


热门话题
java Android Studio:我的短信应用程序不是默认短信应用程序的选项之一   java处理字符串问题   java为什么我的程序打印“null”而不是字符串?   java为什么要创建一个无限循环?   java循环在一段时间后将布尔值更改为false?   java Android Rest Api Post 400错误请求   java调用另一个方法以获取resultset并正确关闭连接?   java我想在2d数组中添加一行   Java:我需要从outputstream中获取字节数组   C语言中Java元注释的等价物#   java如何在从web下载图像时保持原始图像的dpi?   java中基于输入值的spring boot动态值   java从请求中获取主机名   java可以复制Swing代码并在intelliJ中的designer中查看它吗   spring如何使用java配置多个ldap   安卓如何在Java中使用具有多个类似参数的JSON请求/响应循环?   java LIbGDX如何在语言更改时翻译所有文本?