Releases: Shadow-linux/ex_dataclass
Releases · Shadow-linux/ex_dataclass
1.2.0
1.2.0
-
支持 typing.Union 递归使用;
-
增加 typing.Union 对python基础类型的smart_choice, 之前仅支持ex-dataclass类型;
-
增加 ExFiled 属性 label,用于解决当非规范的字典key作为ex-dataclass属性变量名。;
@ex_dataclass class Header: x_token : str = field(default=None, label="X-Token")
-
增加 ExFiled 属性 loads_factory 和 asdict_factory, 用于解决自定义类型的转换(即非python基础类型和ex-dataclass类型);
import datetime from ex_dataclass import ex_dataclass, asdict, field, EXpack # dict -> 自定义类型; def loads_f(v: str) -> datetime.datetime: if v == "": return datetime.datetime.now() return datetime.datetime.strptime(v, "%Y-%m-%d") # 自定义类型 -> dict; def asdict_f(v: datetime.datetime) -> str: return v.strftime("%Y-%m-%d") @ex_dataclass class Date(EXpack): created: datetime.datetime = field(default=None, loads_factory=loads_f, asdict_factory=asdict_f) d = Date(**{"created": "2022-01-01"}) # Date(created=datetime.datetime(2022, 1, 1, 0, 0)) print(d) # {'created': '2022-01-01'} print(asdict(d))
1.1.6
1、修正使用EXpack的类,被其他dataclass类继承时字段无法正确赋值。
1.1.4
publish v1.1.4
1.1.3
1、修复ex_dataclass 类型对象赋值失败;
1.1.2
- 更新EXpack 支持 loads_ 方法;
- 修正已知Bug;
1.1.1
1、EXpack 使用的动态解析json,传值改变;
2、修复重大bug,typing.Union 及 typing.Type 的算法及无法发现继承属性;
3、修复已知bug;
1.0.4
1、开放ex_dataclass 类型可以不用设置属性即创建一个空属性的类;
2、替换了原有的field函数,加入了新的属性字段required,当required时字段不存在便会抛出 ‘FieldRequiredError’;
3、增加 example/example_complex_data.py 用于展示如何处理复杂数据;
4、EXPack 更名为 EXpack 并去掉 dict_loads 方法;
1.0.2
The official version
- 支持ExDataclass类型继承的正反解析;
- 支持List中ExDataclass类型正反解析;
- 支持List嵌套正反解析,如:{a: [[{a:1, b:2}, {a:3, b:4}]]}
- 支持typing.Union 和 typing.Type 特殊容器类型注解的多态行为,精确匹配字段存在最多ExDataclass(类型断言上,仅支持普通pytho类型;如:int,float等)
- 支持typing.Union 和 typing.Type 特殊容器类型相互嵌套场景