Package description here.
Project description
databind.tagline
Databind is a library inspired by Jackson-databind to describe and bind data models for
object-oriented programming. The databind.tagline
module provides functionality to (de-)
serialize strings of comma-separated key-value pairs.
Syntax
- An object is defined of a comma-separated sequence of key-value pairs
- An array is defined as a sequence of values
- Key-value pairs or values can be grouped/nested with surrounding braces
- Unions can be instantiated by prefixing a brace with the union member name
Notation | Syntax | JSON representation |
---|---|---|
Object | a=b,c=d |
{"a": "b", "c": "d"} |
Array | a,b,c |
["a", "b", "c"] |
Union | a{b=c} |
{"type": "a", "a": {"b": "c"}} |
Nesting | a={b=c} |
{"a": {"b": "c"}} |
Nesting | a,{b=c},d |
["a", {"b": "c"}, "d"] |
Quickstart
from databind.core import datamodel, field, uniontype
from databind.tagline import from_str
@datamodel
class BindMount:
src: str
dst: str
read_only: bool = field(altname='readonly', default=False)
@uniontype({
'bind': BindMount
} flat=False)
class Mount:
pass
assert from_str(Mount, 'bind{src=data/,dst=/opt/data}') == BindMount('data/', '/opt/data')
assert from_str(Mount, 'type=bind,bind={src=data/,dst=/opt/data}') == BindMount('data/', '/opt/data')
assert from_str(BindMount, 'src=data/,dst=/opt/data,readonly=true') == BindMount('data/', '/opt/data')
Notes
- All values are loaded as strings. It is up to the user of the
load()
function to interpret the values as needed. Thedump()
function converts numbers to string for convenience. - The union syntax is loaded into nested form, which requires that
@uniontype()
are configured withflat=False
. - The actual data binding is out-sourced with the
databind.json
module (using a custom registry initialized with non-strict JSON converters, seedatabind.tagline:registry
). - The loader/dumper does not currently support escaping control characters. Dumping a string
that contains a control character (like
{
or,
) will result in output that cannot be parsed.
Copyright © 2020 Niklas Rosenstein
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
databind.tagline-0.1.0.tar.gz
(4.8 kB
view hashes)
Built Distribution
Close
Hashes for databind.tagline-0.1.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c60afd661fc70d4ca1802c7389e8fe25e6c75ab5ec0ac974b716846be2aa4011 |
|
MD5 | 8f7f3c99b972ef3fbd66391bff767e02 |
|
BLAKE2b-256 | be47e7aff8e69b43b24921419245c8dea04acded99f8d9aa651b592f3833fa8a |