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)