提供与许多类似dataclass库兼容性的工具
项目描述
dataclass-compat
统一API,用于与多个类似dataclass库一起工作
dataclass模式
有许多库实现了类似dataclass模式!
dataclasses.dataclass
import dataclasses
@dataclasses.dataclass
class SomeDataclass:
a: int = 0
b: str = "b"
c: list[int] = dataclasses.field(default_factory=list)
pydantic.BaseModel
import pydantic
class SomePydanticModel(pydantic.BaseModel):
a: int = 0
b: str = "b"
c: list[int] = pydantic.Field(default_factory=list)
attrs.define
import attr
@attr.define
class SomeAttrsModel:
a: int = 0
b: str = "b"
c: list[int] = attr.field(default=attr.Factory(list))
msgspec.Struct
import msgspec
class SomeMsgspecStruct(msgspec.Struct):
a: int = 0
b: str = "b"
c: list[int] = msgspec.field(default_factory=list)
等等...
统一API
这些都是非常棒的库,每个库都有其自身的优点和缺点。有时,你只是想能够查询类似dataclass对象的基本信息,例如获取字段名或类型,或将其转换为字典。
dataclass-compat
提供了对这些操作的统一API(尽可能遵循或扩展dataclasses
的API)。
def fields(obj: Any) -> tuple[Field, ...]:
"""Return a tuple of dataclass_compat.Field objects for the object."""
def replace(obj: Any, /, **changes: Any) -> Any:
"""Return a copy of obj with the specified changes."""
def asdict(obj: Any) -> dict[str, Any]:
"""Return a dict representation of obj."""
def astuple(obj: Any) -> tuple[Any, ...]:
"""Return a tuple representation of obj."""
def params(obj: Any) -> DataclassParams:
"""Return parameters used to define the dataclass."""
dataclass_compat.Field
和dataclass_compat.DataclassParam
对象是简单的dataclass,分别匹配dataclasses.Field
协议和(私有)dataclasses._DataclassParams
对象。字段对象还添加了一个native_field
属性,该属性是来自底层库的原始字段对象。
示例
from dataclass_compat import Field, fields
standardized_fields = (
Field(name="a", type=int, default=0),
Field(name="b", type=str, default="b"),
Field(name="c", type=list[int], default_factory=list),
)
assert (
fields(SomeDataclass)
== fields(SomePydanticModel)
== fields(SomeAttrsModel)
== fields(SomeMsgspecStruct)
== standardized_fields
)
支持的库
-
dataclasses
-
collections.namedtuple
-
pydantic
(v1和v2) -
attrs
-
msgspec
-
dataclassy
-
sqlmodel
(它是pydantic)
...也许有一天?
项目详情
下载文件
下载您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。
源分布
dataclass_compat-0.0.1.tar.gz (16.3 kB 查看哈希值)
构建分布
dataclass_compat-0.0.1-py3-none-any.whl (16.8 kB 查看哈希值)
关闭
dataclass_compat-0.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 282396691244ebd9c59a788497ae1f411e5cfa61ef86bd56d52a4b6e070b49d8 |
|
MD5 | ebff53289e69722c210f0f2a4193439c |
|
BLAKE2b-256 | bc9d1a8256322b6bbed04147ba5e09c14975d6e96a8f050b4628e73560d2b2e1 |
关闭
dataclass_compat-0.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c1b03af6137a37ec660c557b02f4cd0ddab4fa8c6f5314dd7cb67a71640e902d |
|
MD5 | 51cc50df285e35efc2da4895e699ebf7 |
|
BLAKE2b-256 | 8fee86930a3b7fa639bedc3e1ed9aeecd9a61ad43873e59429fc6052a4cea11d |