A convenience wrapper around serialization libraries to handle common tasks.
This project has been archived.
The maintainers of this project have marked this project as archived. No new releases are expected.
Project description
Overview
Does this look familiar?
>>> import json
>>> from datetime import date
>>> MY_DATA = {'foo': 123, 'bar': date(2018, 5, 22)}
>>> json.dumps(MY_DATA)
Traceback (most recent call last):
...
TypeError: datetime.date(2018, 5, 22) is not JSON serializable
It’s one thing when your serialization tools don’t know how to handle your custom classes, but it’s annoying when they don’t handle the built-in and/or common data types. Thus, basicserial was born.
This package is a thin wrapper around the common serialization tools that can do the following for you when working with JSON, YAML, and TOML:
Automatically serializes the following types to common-sense representations:
Type
JSON
YAML
TOML
array
sequence
array
array
sequence
array
number
float
float
string
string
string
string (ISO 8601)
timestamp
string (ISO 8601)
string (ISO 8601)
string (ISO 8601)
string (ISO 8601)
string (ISO 8601)
timestamp
string (ISO 8601)
string
string
string
object
map
key/value
object
map
key/value
object
map
key/value
object
map
key/value
array
sequence
array
string
string
string
Can automatically deserialize dates, times, and datetimes into the native Python objects.
Provides a simple flag for generating “pretty” strings.
Usage
To use this package, install it from PyPI (pip install basicserial). Then, if you want to use YAML or TOML, you’ll also need to install a package that provides that functionality (for YAML basicserial supports PyYAML and ruamel.yaml, for TOML it supports toml or pytoml). basicserial will use Python’s built-in json module to handle JSON.
JSON:
>>> print(basicserial.to_json(MY_DATA))
{"foo": 123, "bar": "2018-05-22"}
>>> print(basicserial.to_json(MY_DATA, pretty=True))
{
"foo": 123,
"bar": "2018-05-22"
}
>>> basicserial.from_json(basicserial.to_json(MY_DATA))
{u'foo': 123, u'bar': datetime.date(2018, 5, 22)}
>>> basicserial.from_json(basicserial.to_json(MY_DATA), native_datetimes=False)
{u'foo': 123, u'bar': u'2018-05-22'}
YAML:
>>> print(basicserial.to_yaml(MY_DATA))
{bar: 2018-05-22, foo: 123}
>>> print(basicserial.to_yaml(MY_DATA, pretty=True))
bar: 2018-05-22
foo: 123
>>> basicserial.from_yaml(basicserial.to_yaml(MY_DATA))
{u'foo': 123, u'bar': datetime.date(2018, 5, 22)}
>>> basicserial.from_yaml(basicserial.to_yaml(MY_DATA), native_datetimes=False)
{'foo': 123, 'bar': u'2018-05-22'}
TOML:
>>> print(basicserial.to_toml(MY_DATA))
foo = 123
bar = "2018-05-22"
>>> print(basicserial.to_toml(MY_DATA, pretty=True))
foo = 123
bar = "2018-05-22"
>>> basicserial.from_toml(basicserial.to_toml(MY_DATA))
{u'foo': 123, u'bar': datetime.date(2018, 5, 22)}
>>> basicserial.from_toml(basicserial.to_toml(MY_DATA), native_datetimes=False)
{u'foo': 123, u'bar': u'2018-05-22'}
License
This project is released under the terms of the MIT License.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file basicserial-0.1.0.tar.gz.
File metadata
- Download URL: basicserial-0.1.0.tar.gz
- Upload date:
- Size: 6.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1cda10e3defb4a34f37525edbdd48d292d8b83f93a3a5ddd0d44b790da9023b4
|
|
| MD5 |
1559789cfcb032b283185a59753eb21f
|
|
| BLAKE2b-256 |
d8b80d6c46e3262fc51f2137beffc4d52fcf62a74b3c3c083c9b67e26cda5861
|
File details
Details for the file basicserial-0.1.0-py2.py3-none-any.whl.
File metadata
- Download URL: basicserial-0.1.0-py2.py3-none-any.whl
- Upload date:
- Size: 5.6 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e235d158f32c44afae65eaebf0f03e106bc4ea942ac12322778ce095c2185aec
|
|
| MD5 |
cbca9030d81048e225b287386cf135cc
|
|
| BLAKE2b-256 |
806f0da8ffa2fc03f122539cc42581e1736c98fb5021d7e362e7911b77e27494
|