Skip to main content

Dataclasses married with yaml.

Project description

yamliz

Python's 3.7 dataclasses got maried with pyyaml.

Installation:

pip install yamliz

Usage example:

import dataclasses
import yamliz
from yamliz import fields

@dataclasses.dataclass
class Some(yamliz.Able):
    id: int = fields.Integer()
    mac: str = fields.MacAddress()
    ip: str = fields.IPv4()
    version: int = fields.Integer(default=411)

Now the Some object can be created as a pure python object (thanks to dataclass) it is equipped with __init__, __repr__, __eq__ and some other methods.

>>> obj = Some(123, 'aa:bb:cc:11:22:33', '192.168.11.6')
>>> obj
Some(id=123, mac='aa:bb:cc:11:22:33', ip='192.168.11.6', version=411)

>>> print(obj)
!iz/Some
id: 123
ip: 192.168.11.6
mac: aa:bb:cc:11:22:33
version: 411

It's attributes are regular python attributes:

>>> obj.id
123

>>> obj.mac
'aa:bb:cc:11:22:33'

>>> obj.ip
'192.168.11.6'

>>> obj.version = 0  # can be assigned
>>> print(repr(obj))
Ints(id=123, mac='aa:bb:cc:11:22:33', ip='192.168.11.6', version=0)

It can be also deserialized from yaml directly to the custom object:

>>> yaml_string = """
!iz/Some
id: 22001
ip: 12.13.14.15
mac: aa:bb:cc:11:22:33
version: 0
"""

>>> import yaml
>>> obj2 = yaml.load(yaml_string, Loader=yaml.Loader)
>>> repr(obj2)
Some(id=22001, mac='aa:bb:cc:11:22:33', ip='12.13.14.15', version=0)

To be further documented...

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

yamliz-0.1.2.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

yamliz-0.1.2-py2.py3-none-any.whl (13.2 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file yamliz-0.1.2.tar.gz.

File metadata

  • Download URL: yamliz-0.1.2.tar.gz
  • Upload date:
  • Size: 5.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.3

File hashes

Hashes for yamliz-0.1.2.tar.gz
Algorithm Hash digest
SHA256 f191d409c9d7aa8bf141c5179d7b1c2bdff3c98b75befdb73dda6c10b133b8e3
MD5 bacd5276ce0b38917e5307ae87b74f20
BLAKE2b-256 2d4028a6c9d8b622b644a9fccf321a50008f99017e831d8a171d66ec9946e978

See more details on using hashes here.

File details

Details for the file yamliz-0.1.2-py2.py3-none-any.whl.

File metadata

  • Download URL: yamliz-0.1.2-py2.py3-none-any.whl
  • Upload date:
  • Size: 13.2 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.1.0 requests-toolbelt/0.9.1 tqdm/4.34.0 CPython/3.7.3

File hashes

Hashes for yamliz-0.1.2-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 b46a904bce40c058f01a3802dc538b6a4536a0ec03a293947906c8fd0a4142fb
MD5 499d5043a02ed7516057d3eab9ada26b
BLAKE2b-256 92f89ea780d407553017a1120e07dfbb7237e9edd0877b7a78f1afc817b1d34a

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page