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 |