跳转到主要内容

用于Zish格式的Python库。

项目描述

这是一个用于Zish格式的Python库,在MIT-0许可下发布。

Build Status

安装

  • 创建虚拟环境: python3 -m venv venv

  • 激活虚拟环境: source venv/bin/activate

  • 安装: pip install zish

快速入门

要从Python对象转换为Zish字符串,请使用 zish.dumps。要从Zish字符串转换为Python对象,请使用 zish.loads。例如。

>>> from zish import loads, dumps
>>> from datetime import datetime, timezone
>>> from decimal import Decimal
>>>
>>> # Take a Python object
>>> book = {
...     'title': 'A Hero of Our Time',
...     'read_date': datetime(2017, 7, 16, 14, 5, tzinfo=timezone.utc),
...     'would_recommend': True,
...     'description': None,
...     'number_of_novellas': 5,
...     'price': Decimal('7.99'),
...     'weight': 6.88,
...     'key': b'kshhgrl',
...     'tags': ['russian', 'novel', '19th century']}
>>>
>>> # Output it as an Zish string
>>> zish_str = dumps(book)
>>> print(zish_str)
{
  "description": null,
  "key": 'a3NoaGdybA==',
  "number_of_novellas": 5,
  "price": 7.99,
  "read_date": 2017-07-16T14:05:00Z,
  "tags": [
    "russian",
    "novel",
    "19th century",
  ],
  "title": "A Hero of Our Time",
  "weight": 6.88,
  "would_recommend": true,
}
>>>
>>> # Load the Zish string, to give us back the Python object
>>> reloaded_book = loads(zish_str)
>>>
>>> # Print the title
>>> print(reloaded_book['title'])
A Hero of Our Time
Python到Zish类型映射

Python类型

Zish类型

bool

bool

int

整数

str

字符串

datetime.datetime

时间戳

dict

映射

decimal.Decimal

decimal

float

decimal

bytearray

bytes

bytes

bytes

list

list

tuple

list

运行测试

  • 切换到 zish 目录: cd zish

  • 创建虚拟环境: python3 -m venv venv

  • 激活虚拟环境: source venv/bin/activate

  • 安装tox: pip install tox

  • 运行tox: tox

README.rst

此文件使用 reStructuredText 格式编写。要从它生成HTML页面,请执行

  • 激活虚拟环境: source venv/bin/activate

  • 安装Sphinx: pip install Sphinx

  • 运行 rst2html.pyrst2html.py README.rst README.html

发布新版本

运行 tox 确保所有测试通过,然后更新“发行说明”部分,然后执行

git tag -a x.y.z -m "version x.y.z"
rm -r dist
python -m build
twine upload --sign dist/*

发布说明

版本 0.1.11 (2023-10-09)

  • 修复了 dump() 没有正确转义 "\ 的错误。

  • 移除了对Python 3.7的支持,并增加了对Python 3.11的支持。

版本 0.1.10 (2022-10-29)

  • 切换到MIT-0许可证。

  • 使U+00A0 NO-BREAK SPACE字符成为空白字符

  • dump() 遇到未识别的类型时,提供更好的错误消息。

版本 0.1.9 (2021-04-05)

  • 允许映射和列表中的尾随逗号。

版本 0.1.8 (2020-06-25)

  • 在输出为列表之前对 set 类型进行排序。

版本 0.1.7 (2020-02-11)

  • 使用基于1的行和字符编号,而不是基于0。

  • 升级了箭头时间库。

  • 错误中现在可用的行和字符编号

版本 0.1.6 (2018-11-12)

  • 解析空字符串时提供更好的错误消息。

版本 0.1.5 (2018-10-30)

  • 修复了新的Flake8错误。

版本 0.1.4 (2018-10-30)

  • 如果映射中存在重复键,提供更好的错误消息。

版本 0.1.3 (2018-10-30)

  • 如果映射中存在重复键,则抛出异常。

版本 0.1.2 (2018-09-04)

  • dumps 中更改映射和列表的格式。尾随的}和]现在在一行下面并位于原始索引处。

版本 0.1.1 (2018-03-13)

  • 指数中有大写 'E' 的十进制数没有被识别。

版本 0.1.0 (2018-01-29)

  • 根据规范更改,映射键不能为null。

版本 0.0.26 (2018-01-29)

  • 根据规范更改,移除了注释 '//'。

  • 根据规范更改,允许十进制指数中使用 'e' 和 'E'。

版本 0.0.25 (2018-01-12)

  • 在未关闭映射的情况下达到文档末尾时提供更好的错误消息。

版本 0.0.24 (2018-01-11)

  • 修复了在映射中,值后的整数(在逗号或 } 之前)不会给出良好错误的错误。

版本 0.0.23 (2018-01-09)

  • 映射键现在不能是列表或映射。

版本 0.0.22 (2018-01-08)

  • 映射键现在可以是任何类型。

  • 已从Zish中删除 set 类型。

  • Zish现在识别完整的Unicode EOL序列。

  • 已从Zish中删除 float 类型。

  • 修复了当排序具有多个类型键的映射时的错误。

版本 0.0.21 (2018-01-04)

  • 如果文档末尾在完成映射之前到达,则提供更好的错误。

版本 0.0.20 (2018-01-04)

  • 如果有多个顶级值,则提供错误,而不是静默截断。

版本 0.0.19 (2017-09-27)

  • 十进制指数以 E 而不是 d 形式输出。

版本 0.0.18 (2017-09-12)

  • 添加了对浮点格式化的测试。

版本 0.0.17 (2017-09-12)

  • 加强容器类型的解析。

  • 确保浮点数不带大写E进行格式化。

版本 0.0.16 (2017-09-06)

  • 允许列表和集合作为键。

版本 0.0.15 (2017-09-05)

  • 修复了地图解析错误,当预期是冒号:但得到整数时,错误没有正确报告。

版本 0.0.14 (2017-09-05)

  • 修复了无法格式化集合的错误。

版本 0.0.13 (2017-08-30)

  • 性能提升。

版本 0.0.12 (2017-08-30)

  • 添加了Travis配置。

版本 0.0.11 (2017-08-30)

  • 如果字符串未关闭,给出更好的错误信息。

版本 0.0.10 (2017-08-29)

  • 添加了一个新的本地解析器,它不使用antlr。它大约快两倍。

版本 0.0.9 (2017-08-24)

  • 修复了将int解析为Decimal的错误。

  • 使字节类型返回bytes而不是bytearray

版本 0.0.8 (2017-08-24)

  • 容器类型不允许作为映射键。

  • 性能提升。

版本 0.0.7 (2017-08-22)

  • 修复了UTC时间戳格式化错误。

版本 0.0.6 (2017-08-22)

  • 修复了时间戳格式化错误。

  • 添加了关于注释的说明。

版本 0.0.5 (2017-08-18)

  • 修复了对于tupledumps失败的错误。

版本 0.0.4 (2017-08-15)

  • 简化整数类型。

版本 0.0.3 (2017-08-09)

  • 修复了解释器无法在eggs中找到zish.antlr包的错误。

  • 删除了一些不必要的转义序列。

版本 0.0.2 (2017-08-05)

  • 现在使用RFC3339进行时间戳。

版本 0.0.1 (2017-08-03)

  • 修复了EOF可能导致无限循环的错误。

版本 0.0.0 (2017-08-01)

  • 第一个公开版本。通过所有测试。

由以下支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面