PySer(full documentation) is a library for serializing and deserializing data in different data formats through intuitive mappings in defined inside a Python class.
Current formats supported are JSON and config files, with more coming later on.
Examples
Class mappings for serializing and deserializing in JSON
from pyser import SchemaJSON, SerField, DeserField
class FruitBasketSchema(SchemaJSON):
def __init__(self):
self.name = DeserField()
self.fruit = DeserField()
self.iD = DeserField(name='ref', kind=int)
self.intString = DeserField(kind=int)
self.optionalString = DeserField(kind=str, optional=True)
self.items = DeserField(repeated=True)
self.name = SerField()
self.fruit = SerField()
self.iD = SerField(name='ref', kind=int)
self.intString = SerField(kind=int)
self.optionalString = SerField(optional=True)
self.items = SerField(repeated=True)
self.register = SerField(parent_keys=['checkout'], kind=int)
self.amount = SerField(parent_keys=['checkout'], kind=int)
fruit_basket_schema = FruitBasketSchema()
class FruitBasket():
def __init__(self):
self.name = 'basket'
self.fruit = 'banana'
self.iD = '123'
self.intString = '12345'
self.optionalString = None
self.items = ['paper', 'rock']
self.register = '1'
self.amount = '10'
Serializing to a JSON file
basket = FruitBasket()
fruit_basket_schema.to_json(basket, filename="basket.json")
File contents of basket.json after serializing:
{
"name": "basket",
"fruit": "banana",
"ref": 123,
"intString": 12345,
"items": [
"paper",
"rock"
],
"checkout": {
"register": 1,
"amount": 10
}
}
Similarly deserialization from a json file:
basket = FruitBasket()
fruit_basket_schema.from_json(basket, raw_json=raw_json)
Installation
Installation by hand: you can download the source files from PyPi or Github:
python setup.py install
Installation with pip: make sure that you have pip installed, type this in a terminal:
pip install pyser
Documentation
Running build_docs has additional dependencies that require installation.
pip install pyser[docs]
The documentation can be generated and viewed via:
$ python setup.py build_docs
You can pass additional arguments to the documentation build, such as clean build:
$ python setup.py build_docs -E
More information is available from the Sphinx documentation.
Running Tests
Run the python command
python setup.py test
Contribute
Fork the repository from Github
Clone your fork
git clone https://github.com/yourname/pyser.git
Add the main repository as a remote
git remote add upstream https://github.com/jonnekaunisto/pyser.git
Create a pull request and follow the guidelines
Maintainers
jonnekaunisto (owner)
Metadata
Release files for pyser 0.1.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pyser-0.1.5.tar.gz | 7.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pyser-0.1.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 14.5 kB
Release files / pyser-0.1.5.tar.gz
| Download URL | pyser-0.1.5.tar.gz |
|---|---|
| Size | 7.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
57e7adba7664d43b14e71519070b1e47925d71e027f50fc61441c051db7e5cc0
|
|
BLAKE2b-256 checksum How to use checksums |
7dd9974eef8b8c81f041a958479843bb2b5d4cf4c356777d0e9344d6b3e59bfd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
|
Release files / pyser-0.1.5-py3-none-any.whl
| Download URL | pyser-0.1.5-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fce24292257e7da175bafa2a8cff05a58bfef4045a11aa70d18a9d139adb5ef0
|
|
BLAKE2b-256 checksum How to use checksums |
7856abcb86f855ac3b57823f2da2beaea21336af604aefe66193b34e08321301
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.1.1 pkginfo/1.5.0.1 requests/2.23.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.46.1 CPython/3.7.7
|