Skip to content

Latest commit

 

History

14 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

farspec

farspec 是一个纯 Python 的任务协议规范包:提供 Request/Response/Task 基类, 以及 dataclass ↔ dict(JSON 友好)的通用序列化工具,方便在不同服务/任务系统之间 约定统一的输入输出结构。不依赖网络、数据库或云服务。

特性

  • BaseRequest:请求基类,自动生成 request_idmeta 承载版本/追踪等横切信息
  • BaseResponse:响应基类,内置 status/events/耗时统计与成功/失败标记方法
  • BaseTask:模板方法基类,run() 统一处理开始/结束时间戳、事件记录与异常捕获
  • to_jsonable/from_jsonable/dataclass_to_dict/dataclass_from_dict:通用的 dataclass ↔ JSON 友好 dict 转换工具,支持 X | NonelistdictEnumdatetime、嵌套 dataclass

环境要求

  • Python 3.10 或更高版本

安装

pip install farspec

快速开始

from farspec.task import BaseRequest, BaseResponse, BaseTask


class EchoTask(BaseTask[BaseRequest, BaseResponse]):
    def build_response(self) -> BaseResponse:
        return BaseResponse()

    def execute(self, response: BaseResponse, *args, **kwargs) -> BaseResponse:
        response.add_event("echo", "doing work")
        response.mark_succeeded(payload={"echoed": True})
        return response


task = EchoTask(BaseRequest(request_id="req-42"))
result = task.run()

print(result.status)   # TaskStatus.SUCCEEDED
print(result.payload)  # {'echoed': True}
print(result.to_dict())  # JSON 友好 dict,可直接 json.dumps

开发

uv sync
python -m pytest tests/ -v

许可证

本项目使用 MIT License


关于 farfarfun

farfarfun 是一个专注于实用工具库的开源组织, 涵盖云存储、数据处理、AI、多媒体与开发工具链等方向。

本项目基于 MIT 协议开源。

About

任务契约规范库(PyPI: nltspec)— 基于 dataclass 的泛型 BaseRequest/BaseResponse/BaseTask 抽象,统一任务状态流转、事件记录与字典序列化,零第三方依赖

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages