mirror of
https://github.com/suyiiyii/nonebot-bison.git
synced 2025-06-05 19:36:43 +08:00
* feat: 实现导出存储的订阅信息的功能 * test: 编写导出功能测试 * test: 使用tmp_path * feat: 实现导入订阅文件功能 * refactor: 将订阅导入导出部分独立出来 * fix: 修复一些拼写错误 test: 完成import的第一个测试 * feat: 将订阅导入导出函数加入nb script test: 添加cli测试 * test: 完善subs import测试 * 🐛 fix nb cli entrypoint name error * fix: 修改错误的entry_point, 关闭yaml导出时对键名的排序 * fix: 使用更简短的命令名 * 🚚 将subs_io迁移到config下 * ♻️ 不再使用抛出异常的方式创建目录 * refactor: 将subscribe_export类转为函数 * refactor: 将subscribe_import类转为函数 * refactor: 根据重写的subs_io重新调整cli * test: 调整重写subs_io后的test * chore: 清理未使用的import内容 * feat(cli): 将--yaml更改为--format * test: 调整测试 * fix(cli): 为import添加不支持格式的报错 * ⚡ improve export performace * feat: subscribes_import函数不再需要传入参数函数,而是指定为add_subscribes fix: nbesf_parser在传入str时将调用parse_raw, 否则调用parse_obj * feat: subscribes_import现在会根据nbesf_data的版本选择合适的导入方式 * fix(test): 调整测试 * feat: nb bison export命令不再将文件导出到data目录,而是当前工作目录 * docs: 增添相关文档 * fix(test): 修复错误的变量名 --------- Co-authored-by: felinae98 <731499577@qq.com>
82 lines
1.4 KiB
Python
82 lines
1.4 KiB
Python
""" nbexf is Nonebot Bison Enchangable Subscribes File! """
|
||
|
||
from pydantic import BaseModel
|
||
|
||
from ...types import Category, Tag
|
||
|
||
# ===== nbesf 定义格式 ====== #
|
||
NBESF_VERSION = 1
|
||
|
||
|
||
class UserHead(BaseModel, orm_mode=True):
|
||
"""Bison快递包收货信息"""
|
||
|
||
type: str
|
||
uid: int
|
||
|
||
def __hash__(self):
|
||
return hash((self.type, self.uid))
|
||
|
||
|
||
class Target(BaseModel, orm_mode=True):
|
||
"""Bsion快递包发货信息"""
|
||
|
||
target_name: str
|
||
target: str
|
||
platform_name: str
|
||
default_schedule_weight: int
|
||
|
||
|
||
class SubPayload(BaseModel, orm_mode=True):
|
||
"""Bison快递包里的单件货物"""
|
||
|
||
categories: list[Category]
|
||
tags: list[Tag]
|
||
target: Target
|
||
|
||
|
||
class SubPack(BaseModel):
|
||
"""Bison给指定用户派送的快递包"""
|
||
|
||
user: UserHead
|
||
subs: list[SubPayload]
|
||
|
||
|
||
class SubGroup(BaseModel):
|
||
"""
|
||
Bison的全部订单(按用户分组)
|
||
|
||
结构参见`nbesf_model.py`
|
||
"""
|
||
|
||
version: int = NBESF_VERSION # 表示nbesf格式版本,从1开始
|
||
groups: list[SubPack]
|
||
|
||
|
||
# ======================= #
|
||
|
||
|
||
class SubReceipt(BaseModel):
|
||
"""
|
||
快递包中每件货物的收据
|
||
|
||
导入订阅时的Model
|
||
"""
|
||
|
||
user: int
|
||
user_type: str
|
||
target: str
|
||
target_name: str
|
||
platform_name: str
|
||
cats: list[Category]
|
||
tags: list[Tag]
|
||
# default_schedule_weight: int
|
||
|
||
|
||
class NBESFVerMatchErr(Exception):
|
||
...
|
||
|
||
|
||
class NBESFParseErr(Exception):
|
||
...
|