用于分离业务应用程序中的数据输入、输出和处理的库。

super-mario的Python项目详细描述


马里奥

Build StatusMaintainabilityTest CoveragePyPI versionPyPI - Python Version

用于分离业务应用程序中的数据输入、输出和处理的库。在

Mario

免责声明:该库是sooo pre-alpha。在

动机和主旨

你有大量的商业逻辑。 你喜欢干净的建筑,但你是理智的。 您喜欢Python的动态结构,但您与运行时错误联系在一起。 你想少打破常规,继续快速前进。 你是对的地方。在

Mario是一个业务逻辑框架。 像Django或Flask for web服务。在

它让你把逻辑放到管道上:一组组管道, 每个管道只做一件事,并且只处理非复杂类型 可以从一个管道转移到另一个管道。在

每个管道是三种类型之一:输入、输出、处理。 输入和输出应该是非复杂的(比如真正的非复杂, 圈复杂度~3),处理管道应该是纯的。在

安装

pip install super-mario

文件

Here they are。在

使用示例

这里有一个简单的管道,在Jira中发送新评论的通知 要松懈的罚单。在

classJiraCommentsNotificationPipeline(BasePipeline):pipeline=['fetch_new_comments','fetch_users_mapping','generate_slack_message','send_slack_message',]@input_pipedeffetch_new_comments(jira_ticket_id:str)->ImmutableContext:return{'new_comments':fetch_jira_comments(ticket_id=jira_ticket_id,date_from=datetime.datetime.now().replace(hours=0,minutes=0,seconds=0,milliseconds=0),),}@input_pipedeffetch_users_mapping(new_comments:List[IssueComment])->ImmutableContext:return{'jira_to_slack_id_mapping':dict(User.objects.filter(jira_id__in=[c['user_id']forcinnew_comments],).values_list('jira_id','slack_id'))}@process_pipedefgenerate_slack_message(jira_ticket_id:str,new_comments:List[IssueComment],jira_to_slack_id_mapping:Mapping[str,str],)->ImmutableContext:message='\n'.join([f'@{jira_to_slack_id_mapping[c["user_id"]]} wrote comment for {jira_ticket_id}: "{c["text"]}"'forcinnew_comments])return{'message':message}@output_pipedefsend_slack_message(message:str)->None:send_message(destination='slack',channel=COMMENTS_SLACK_CHANNEL_ID,text=message,)# run pipeline for specific ticketJiraCommentsNotificationPipeline().run(jira_ticket_id='TST-12')

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

推荐PyPI第三方库


热门话题
java RxJava很适合分支工作流吗?   java如何映射SAP FileOpenDialog?   java部署的应用程序无法将oauth2代码交换为令牌   java如何将JTable数据读入具有特殊字符(如中文)的ArrayList?   Eclipse下Java中的不可访问代码错误与死代码警告?   JavaEclipse生成的方法参数final   Android NDK错误:java。lang.UnsatifiedLinkError:未找到void的实现   使用regex[Java]按域分组电子邮件登录数据   java错误:无法解析:安卓。支持:支持。v7:29.0.2   从单链表Java中删除特定元素   java如何将多个枚举数据写入单个pojo并将其作为列表返回   JAVAsql。SQLException:数据库连接已关闭   在Java中使用什么策略来实现分层可重入读/写锁定?   java如何用Selenium测试图形   java如何正确地将Node、Edge和Dijkstra类链接到Main方法   500 != 请解释一下