A plugin extends power of attrs library.
Project description
Welcome to attrs_mate Documentation
Usage: more utility methods.
import attr
from attrs_mate import AttrsClass
@attr.s
class User(AttrsClass):
id = attr.ib()
name = attr.ib()
user = User(id=1, name="Alice")
user.keys() # ["id", "name"]
user.values() # [1, "Alice"]
user.items() # [("id", 1), ("name": "Alice")]
user.to_dict() # {"id": 1, "name": "Alice"}
user.to_OrderedDict() # OrderedDict([("id", 1), ("name": "Alice")])
Feature: allow attrs to load complex object from dict data.
import attr
from attrs_mate import AttrsClass
@attr.s
class Profile(AttrsClass):
"""
firstname, lastname, ssn are generic data type field.
"""
firstname = attr.ib(default=None)
lastname = attr.ib(default=None)
ssn = attr.ib(default=None)
@attr.s
class Degree(AttrsClass):
name = attr.ib(default=None)
year = attr.ib(default=None)
@attr.s
class People(AttrsClass):
"""
- ``profile`` is nested field.
- ``degrees`` is collection type field.
"""
id = attr.ib(default=None)
profile = attr.ib(
convert=Profile.from_dict,
factory=Profile,
)
degrees = attr.ib(
convert=lambda degrees: [
Degree.from_dict(degree) for degree in degrees],
factory=list,
)
people = People(
id=1,
profile=Profile(
firstname="David",
lastname="John",
ssn="123-45-6789",
),
degrees=[
Degree(name="Bachelor", year=2004),
Degree(name="Master", year=2006),
],
)
people_data = people.to_dict()
# {
# 'id': 1,
# 'profile': {
# 'lastname': 'John', 'ssn': '123-45-6789', 'firstname': 'David'
# },
# 'degrees': [
# {'name': 'Bachelor', 'year': 2004},
# {'name': 'Master', 'year': 2006}
# ]
# }
print(people_data)
people = People.from_dict(people_data)
# People(id=1, profile=Profile(firstname='David', lastname='John', ssn='123-45-6789'), degrees=[Degree(name='Bachelor', year=2004), Degree(name='Master', year=2006)])
print(people)
Quick Links
Install
attrs_mate is released on PyPI, so all you need is:
$ pip install attrs_mate
To upgrade to latest version:
$ pip install --upgrade attrs_mate
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
attrs_mate-0.0.2.tar.gz
(9.7 kB
view hashes)
Built Distribution
Close
Hashes for attrs_mate-0.0.2-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 124528d2a869d8179529c0f1fed8009531ca6025afc700a3571990ff3fe8d54f |
|
MD5 | 046f822d0983eb39f1c25d0b6adf9978 |
|
BLAKE2b-256 | 88fbbb6360762eb6138c219af0ea95b851a238574c17d3ec1d4d3e420ae09f18 |