AXON的Python库
项目描述
pyaxon 是一个MIT许可的Python库,用于AXON。AXON是扩展对象表示法。它是一种简单的基于文本的格式,用于交换对象、文档和数据。它试图结合JSON、XML和YAML的最佳之处。
链接
安装
pyaxon 在Python 2.7、3.3、3.4和3.5下运行
可以通过pip安装
pip install pyaxon
可以从源安装
python setup.py install
快速开始
首先导入axon模块
>>> import axon
加载和转储列表、字典、元组
>>> from decimal import Decimal
>>> from datetime import datetime, time, date
>>> text = axon.dumps([['abc абв', 1, 3.14, True],
[datetime.now(), Decimal('3.14')]])
>>> print(text)
["abc абв" 1 3.14 true]
[^2015-05-12T13:08:37.078189 3.14D]
>>> vals = [{'id':1, 'nickname':'nick', 'time':time(12, 31, 34), 'text':'hello!'},
{'id':2, 'nickname':'mark', 'time':time(12, 32, 3), 'text':'hi!'}]
>>> text = axon.dumps(vals)
>>> print(text)
{id:1 nickname:"nick" text:"hello!" time:^12:31:34}
{id:2 nickname:"mark" text:"hi!" time:^12:32:03}
>>> text = axon.dumps(vals, pretty=1)
>>> print(text)
{ id: 1
nickname: "nick"
text: "hello!"
time: ^12:31:34}
{ id: 2
nickname: "mark"
text: "hi!"
time: ^12:32:03}
>>> vals == axon.loads(text)
True
>>> vals = [[{'a':1, 'b':2, 'c':3}, {'a':[1,2,3], 'b':(1,2,3), 'c':{1,2,3}}]]
>>> text = axon.dumps(vals)
>>> print(text)
[{a:1 b:2 c:3} {a:[1 2 3] b:(1 2 3) c:{1 2 3}}]
>>> text = axon.dumps(vals, pretty=1)
>>> print(text)
[ { a: 1
b: 2
c: 3}
{ a: [1 2 3]
b: (1 2 3)
c: {1 2 3}}]
>>> vals == axon.loads(text)
True
在“安全”模式下转储、加载对象
>>> vals = axon.loads('person{name:"nick" age:32 email:"nail@example.com"}')
>>> print(type(vals[0]))
<class 'axon._objects.Node'>
>>> print(vals[0])
node('person', {'email': 'nail@example.com', 'age': 32, 'name': 'nick'})
>>> text = axon.dumps(vals)
>>> print(text)
person{age:32 email:"nail@example.com" name:"nick"}
>>> text = axon.dumps(vals, pretty=1)
>>> print(text)
person
age: 32
email: "nail@example.com"
name: "nick"
>>> text = axon.dumps(vals, pretty=1, braces=1)
>>> print(text)
person {
age: 32
email: "nail@example.com"
name: "nick"}
在非安全模式下转储、加载对象
class Person:
def __init__(self, name, age, email):
self.name = name
self.age = age
self.email = email
def __str__(self):
return "Person(name=%r, age=%r, email=%r)" % (self.name, self.age, self.email)
@axon.reduce(Person)
def reduce_Person(p):
return axon.node('person', {'name':p.name, 'age':p.age, 'email': p.email})
@axon.factory('person')
def factory_Person(attrs, vals):
return Person(name=attrs['name'], age=attrs['age'], email=attrs['email'])
>>> p = Person('nick', 32, 'mail@example.com')
>>> text = axon.dumps([p])
>>> print(text)
person{age:32 email:"mail@example.com" name:"nick"}
>>> val = axon.loads(text, mode='strict')[0]
>>> print(val)
Person(name='nick', age=32, email='mail@example.com')
功能
提供简单API以加载和转储文本AXON格式中的对象。
默认提供安全加载和转储。
基于工厂/减少调用注册提供不安全的对象加载和卸载。
提供一种完全由应用程序/框架/库控制的不安全加载和卸载方法。
它足够快,以至于很有用。
项目详情
关闭
哈希 信息 for pyaxon-0.10-cp37-cp37m-macosx_10_9_x86_64.whl
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 611dcc7f3a8bbd96d4920ec155e762202d79701b8a3dcfa714f129cccb037c4a |
|
| MD5 | 5dd19d4c7f13d7527ccbd654cee0c45f |
|
| BLAKE2b-256 | 74ec8524565bf6287e50b147c06d9399c8adf5a1f35f686d94243f340ede250b |