remapping dict
Project description
dictremapper is remapping dict library
- ordered (important)
- support inheritance (of mapper)
- support nested structure
- (excludes option of each layer)
simple example
import requests import json from dictremapper import Remapper, Path class SummaryRemapper(Remapper): fullname = Path("full_name") url = Path("html_url") description = Path("description") url = "https://api.github.com/repos/podhmo/dictremapper" data = requests.get(url).json() data = SummaryRemapper()(data) print(json.dumps(data, indent=2))
output
{ "fullname": "podhmo/dictremapper", "url": "https://github.com/podhmo/dictremapper", "description": "remapping dict" }
support inheritance (of mapper)
from dictremapper import Remapper, Path class URLRemapper(Remapper): url = Path("html_url") class DescriptionRemapper(Remapper): fullname = Path("full_name") description = Path("description") class SummaryRemapper(URLRemapper, DescriptionRemapper): star = Path("stargazers_count") url = "https://api.github.com/repos/podhmo/dictremapper" data = requests.get(url).json() remapped = SummaryRemapper()(data) print(json.dumps(remapped, indent=2))
output
{ "url": "https://github.com/podhmo/dictremapper", "fullname": "podhmo/dictremapper", "description": "remapping dict", "star": 0 }
If you want to change order. ChangeOrder is helpful, maybe.
from dictremapper import ChangeOrder class SummaryRemapper2(URLRemapper, DescriptionRemapper): url = ChangeOrder(URLRemapper.url) description = ChangeOrder(DescriptionRemapper.description) star = Path("stargazers_count") remapped = SummaryRemapper2()(data) print(json.dumps(remapped, indent=2))
output
{ "fullname": "podhmo/dictremapper", "url": "https://github.com/podhmo/dictremapper", "description": "remapping dict", "star": 0 }
support nested structure
class MyMapper3(Remapper): body = Path("body", callback=MyMapper()) children = Path("children", callback=MyMapper2(many=True))
excludes option of each layer
class MyMapper3(Remapper): body = Path("body", callback=MyMapper()) children = Path("children", callback=MyMapper2(many=True, excludes=["object.name", "object.age", "id"])) MyMapper3(excludes=["children.object.description", "body"])(d)
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
dictremapper-0.0.2.tar.gz
(3.7 kB
view hashes)