Skip to content

Releases: Shadow-linux/ex_dataclass

1.2.0

25 Mar 03:09

Choose a tag to compare

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

27 Nov 06:06

Choose a tag to compare

1、修正使用EXpack的类,被其他dataclass类继承时字段无法正确赋值。

1.1.4

21 Jul 09:54

Choose a tag to compare

publish v1.1.4

1.1.3

21 Jul 09:44

Choose a tag to compare

1、修复ex_dataclass 类型对象赋值失败;

1.1.2

21 Jul 07:14
74b45ec

Choose a tag to compare

  1. 更新EXpack 支持 loads_ 方法;
  2. 修正已知Bug;

1.1.1

06 Jul 10:24
ad27de2

Choose a tag to compare

1、EXpack 使用的动态解析json,传值改变;
2、修复重大bug,typing.Union 及 typing.Type 的算法及无法发现继承属性;
3、修复已知bug;

1.0.4

05 Jul 04:11
c9acabf

Choose a tag to compare

1、开放ex_dataclass 类型可以不用设置属性即创建一个空属性的类;
2、替换了原有的field函数,加入了新的属性字段required,当required时字段不存在便会抛出 ‘FieldRequiredError’;
3、增加 example/example_complex_data.py 用于展示如何处理复杂数据;
4、EXPack 更名为 EXpack 并去掉 dict_loads 方法;

1.0.2

02 Jul 09:06
8251924

Choose a tag to compare

The official version

  1. 支持ExDataclass类型继承的正反解析;
  2. 支持List中ExDataclass类型正反解析;
  3. 支持List嵌套正反解析,如:{a: [[{a:1, b:2}, {a:3, b:4}]]}
  4. 支持typing.Union 和 typing.Type 特殊容器类型注解的多态行为,精确匹配字段存在最多ExDataclass(类型断言上,仅支持普通pytho类型;如:int,float等)
  5. 支持typing.Union 和 typing.Type 特殊容器类型相互嵌套场景