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

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代码(a)和(b)的时间复杂性   java在生产服务器上这样安全吗?   增加java数组索引   java如何转换一个文件。wav文件到浮点数组(编辑浮点数组,例如添加两个信号)并返回到浮点数组。无白噪声的wav文件   java无法发布twitter状态更新,错误为“找不到可信证书”   java Map<String,Map<String,String>>使用流选择值的键   java将多个JTable打印为一个job Book对象只打印第一个表   java在JPA中字段为LocalDateTime时,如何查找今天创建的每个实例?   java删除订阅在Youtube API V3中不起作用   java如何在Hashmap中返回特定值的键?   java如何检查mysql连接的默认端口号?连接不工作!jdbc连接   Java重命名问题   通过Spring Boot app访问mongodb时发生java身份验证错误   Java中的通用InternPool<T>?