📘 dict subclass with keylist/keypath support, built-in I/O operations (base64, csv, ini, json, pickle, plist, query-string, toml, xls, xml, yaml), s3 support and many utilities.
Go to file
Fabio Caccamo 1780e1bf2b Improved code quality. 2019-05-30 15:24:01 +02:00
benedict Improved code quality. 2019-05-30 15:24:01 +02:00
tests Improved code quality. 2019-05-30 15:24:01 +02:00
.gitignore Added src. 2019-05-17 13:13:15 +02:00
.travis.yml Updated .travis.yml 2019-05-17 17:10:37 +02:00
LICENSE.txt Added src. 2019-05-17 13:13:15 +02:00
MANIFEST.in Added src. 2019-05-17 13:13:15 +02:00
README.md Improved code quality. 2019-05-30 13:16:59 +02:00
README.rst Improved code quality. 2019-05-30 15:24:01 +02:00
setup.cfg Added src. 2019-05-17 13:13:15 +02:00
setup.py Fixed tox testing issue and removed python 2.7 from ci. 2019-05-17 16:15:18 +02:00
tox.ini Fixed tox testing issue and removed python 2.7 from ci. 2019-05-17 16:15:18 +02:00

README.md

Build Status codecov Codacy Badge Requirements Status PyPI version PyPI downloads Py versions License

python-benedict

python-benedict is the Python dictionary for humans dealing with evil/complex data.

Features

  • Full keypath support (using the dot syntax)
  • Many utility methods to retrieve data as needed (all methods listed below)
  • 100% backward-compatible (you can replace existing dicts without pain)

Requirements

  • Python 3.4, 3.5, 3.6, 3.7

Installation

  • Run pip install python-benedict

Testing

  • Run tox / python setup.py test

Usage

benedict is a dict subclass, so it is possible to use it as a normal dict (you can just cast an existing dict).

Basic get/set using keypath

from benedict import benedict

d = benedict()
d['profile.firstname'] = 'Fabio'
d['profile.lastname'] = 'Caccamo'
print(d) # -> { 'profile':{ 'firstname':'Fabio', 'lastname':'Caccamo' } }
print(d['profile']) # -> { 'firstname':'Fabio', 'lastname':'Caccamo' }
print('profile.lastname' in d) # -> True

Extra methods

# Return a deepcopy of the dict.
d.deepcopy()
# Return a list of all keypaths in the dict.
d.get_keypaths()

Utility methods

# Get value by key or keypath trying to return it as bool.
# Values like `1`, `true`, `yes`, `on`, `ok` will be returned as `True`.
d.get_bool(key, default=False)
# Get value by key or keypath trying to return it as bool.
# Values like `1`, `true`, `yes`, `on`, `ok` will be returned as `True`.
d.get_bool(key, default=False)
# Get value by key or keypath trying to return it as list of bool values.
# If separator is specified and value is a string it will be splitted.
d.get_bool_list(key, default=[], separator=',')
# Get value by key or keypath trying to return it as datetime.
# If format is not specified it will be autodetected.
# If options and value is in options return value otherwise default.
d.get_datetime(key, default=None, format=None, options=[])
# Get value by key or keypath trying to return it as list of datetime values.
# If separator is specified and value is a string it will be splitted.
d.get_datetime_list(key, default=[], format=None, separator=',')
# Get value by key or keypath trying to return it as Decimal.
# If options and value is in options return value otherwise default.
d.get_decimal(key, default=Decimal('0.0'), options=[])
# Get value by key or keypath trying to return it as list of Decimal values.
# If separator is specified and value is a string it will be splitted.
d.get_decimal_list(key, default=[], separator=',')
# Get value by key or keypath trying to return it as dict.
# If value is a json string it will be automatically decoded.
d.get_dict(key, default={})
# Get value by key or keypath trying to return it as float.
# If options and value is in options return value otherwise default.
d.get_float(key, default=0.0, options=[])
# Get value by key or keypath trying to return it as list of float values.
# If separator is specified and value is a string it will be splitted.
d.get_float_list(key, default=[], separator=',')
# Get value by key or keypath trying to return it as int.
# If options and value is in options return value otherwise default.
d.get_int(key, default=0, options=[])
# Get value by key or keypath trying to return it as list of int values.
# If separator is specified and value is a string it will be splitted.
d.get_int_list(key, default=[], separator=',')
# Get value by key or keypath trying to return it as list.
# If separator is specified and value is a string it will be splitted.
d.get_list(key, default=[], separator=',')
# Get value by key or keypath trying to return it as slug.
# If options and value is in options return value otherwise default.
d.get_slug(key, default='', options=[])
# Get value by key or keypath trying to return it as list of slug values.
# If separator is specified and value is a string it will be splitted.
d.get_slug_list(key, default=[], separator=',')
# Get value by key or keypath trying to return it as string.
# Encoding issues will be automatically fixed.
# If options and value is in options return value otherwise default.
d.get_str(key, default='', options=[])
# Get value by key or keypath trying to return it as list of str values.
# If separator is specified and value is a string it will be splitted.
d.get_str_list(key, default=[], separator=',')

License

Released under MIT License.