快速且灵活的对象映射(序列化、打包)
项目描述
Lion
Lion是一个非常灵活且快速的将对象映射到字典的库。它使用声明式API,并支持类似于GraphQL的查询语言。与其他序列化库不同,它还允许跳过整个字段,而不是在字典中使用null
值。
它受到了像serpy、marshmallow、Django REST Framework和Kim这样的库的启发。
示例
import lion
class GroupMapper(lion.Mapper):
id = lion.UUIDField()
name = lion.StrField()
class UserMapper(lion.Mapper):
id = lion.UUIDField()
email = lion.StrField(condition=lion.skip_empty)
first_name = lion.StrField()
last_name = lion.StrField()
groups = lion.ListField(GroupMapper)
user = User(
id=UUID('ad94d0e8-2526-4d9b-ad76-0fbffcf41033'),
email='john.doe@example.com',
first_name='John',
last_name='Doe',
groups=[
Group(
id=UUID('95a326fc-32e5-4d9b-a385-1ea1257d98da'),
name='Awesome people'
)
]
)
# Dump all fields to a dictionary
assert UserMapper().dump(user) == {
'id': 'ad94d0e8-2526-4d9b-ad76-0fbffcf41033',
'email': 'john.doe@example.com',
'first_name': 'John',
'last_name': 'Doe',
'groups': [
{
'id': '95a326fc-32e5-4d9b-a385-1ea1257d98da',
'name': 'Awesome people'
}
]
}
# Load user object from a dictionary
assert user == UserMapper().load({
'id': 'ad94d0e8-2526-4d9b-ad76-0fbffcf41033',
'email': 'john.doe@example.com',
'first_name': 'John',
'last_name': 'Doe',
'groups': [
{
'id': '95a326fc-32e5-4d9b-a385-1ea1257d98da',
'name': 'Awesome people'
}
]
})
查询语言
通过使用类似GraphQL的查询语言,可以只转储和加载给定结构的部分
# Dump a subset of fields
assert UserMapper('{id,email}').dump(user) == {
'id': 'ad94d0e8-2526-4d9b-ad76-0fbffcf41033',
'email': 'john.doe@example.com'
}
# Dump subset of a nested mapper
assert UserMapper('{id,email,groups{id}}').dump(user) == {
'id': 'ad94d0e8-2526-4d9b-ad76-0fbffcf41033',
'email': 'john.doe@example.com',
'groups': [
'id': '95a326fc-32e5-4d9b-a385-1ea1257d98da'
]
}
性能
性能略慢于serpy,但仍然远快于marshmallow和Django REST Framework。
注意事项
狮子也支持加载数据(序列化/打包),但目前不执行任何类型的验证。如果您将狮子作为使用类似connexion的项目的一部分,而该工具已经使用提供的OpenAPI规范文件执行了验证,这并不是什么大问题。但请注意,使用狮子加载未经验证的数据结构可能会产生一些看起来很奇怪的数据。
项目详情
下载文件
下载适合您平台的文件。如果您不确定选择哪一个,请了解更多关于安装包的信息。
源代码分发
lion-0.5.0.tar.gz (7.3 kB 查看哈希)
构建分发
lion-0.5.0-py3-none-any.whl (8.0 kB 查看哈希)
关闭
lion-0.5.0.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f5e8fc19653ce702702ce8ba03723abb030505cf2949935532003b12fd1f87ff |
|
MD5 | aa97b68f712a97096724d9c4f2d43c94 |
|
BLAKE2b-256 | 399913d5473c5b586f6f3b4d92d69f6ee8d2dac9b4e426d1c9a38bfc7f45ee8a |
关闭
lion-0.5.0-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ce567e6904e49bdde44ac75a892a289d9d655f26fb414be35b50344f0f69c476 |
|
MD5 | 4e285660750019ee0d3700cc42671f6d |
|
BLAKE2b-256 | 165f02a5031ab2e375749eb916724d1da3eda51ce944c3607b00b2cdf6800ea1 |