============
DICT-TOOLBOX
INSTALLATION
.. code-block:: bash
pip install dict-toolbox
Contains various dict tools from the Salt Project <https://github.com/saltstack/salt>
_.
Differ
.. code-block:: python
from dict_tools import differ
deep_diff
Computes the difference between to dictionaries.
recursive_diff
Computes the recursive difference between two dictionaries.
Trim
.. code-block:: python
from dict_tools import trim
trim_dict
Takes a dictionary and iterates over its keys, looking for
large values and replacing them with a trimmed string.
Update
.. code-block:: python
from dict_tools import trim
update
Merges "upd" recursively into the target
merge_list
merge_recurse
merge_aggregate
merge_overwrite
merge
ensure_dict_key
Ensures that in_dict contains the series of recursive keys defined in keys.
set_dict_key_value
Ensures that in_dict contains the series of recursive keys defined in keys.
Also sets whatever is at the end of in_dict
traversed with keys
to value
.
update_dict_key_value
Ensures that in_dict contains the series of recursive keys defined in keys.
Also updates the dict, that is at the end of in_dict
traversed with keys
,
with value
.
append_dict_key_value
Ensures that in_dict contains the series of recursive keys defined in keys.
Also appends value
to the list that is at the end of in_dict
traversed
with keys
.
extend_dict_key_value
Ensures that in_dict contains the series of recursive keys defined in keys.
Also extends the list, that is at the end of in_dict
traversed with keys
,
with value
.
XML
.. code-block:: python
from dict_tools import xml
to_dict
Convert an XML tree into a dict. The tree that is passed in must be an
ElementTree object.
YAMLEX
.. code-block:: python
from dict_tools import yamlex
YAMLEX is a format that allows for things like sls files to be
more intuitive.
SLSMap
Ensures that dict str() and repr() are YAML friendly.
SLSString
Ensures that str str() and repr() are YAML friendly.
AggregatedMap
AggregatedSequence
Dumper
sls dumper.
merge_recursive
Merge obj_b into obj_a.
MySQL
.. code-block:: python
from dict_tools import mysql
to_num
Convert a string to a number.
to_dict
Convert MySQL-style output to a python dictionary.
DATA
.. code-block:: python
from dict_tools import data
CaseInsensitiveDict
Inspired by requests' case-insensitive dict implementation, but works with
non-string keys as well.
ImmutableDict
An immutable mapping that can access it's keys via the namespace
NamespaceDict
A dictionary that can access it's string keys through the namespace
compare_dicts
Compare before and after results from various functions, returning a
dict describing the chagnes that were made.
is_dictlist
Returns True if data is a list of one-element dicts (as found in many SLS schemas)
object_to_dict
Convert an arbitrary object to a dictionary
recursive_diff
Performs a recursive diff on mappings and/or iterables and returns the result
in a {'old': values, 'new': values}-style.
Compares dicts and sets unordered (obviously), OrderedDicts and Lists ordered
(but only if both old
and new
are of the same type),
all other Mapping types unordered, and all other iterables ordered.
repack_dictlist
Takes a list of one-element dicts (as found in many SLS schemas) and
repacks into a single dictionary.
subdict_match
Check for a match in a dictionary using a delimiter character to denote
levels of subdicts, and also allowing the delimiter character to be
matched. Thus, 'foo:bar:baz' will match data['foo'] == 'bar:baz' and
data['foo']['bar'] == 'baz'. The latter would take priority over the
former, as more deeply-nested matches are tried first.
traverse_dict
Traverse a dict using a colon-delimited (or otherwise delimited, using the
'delimiter' param) target string. The target 'foo:bar:baz' will return
data['foo']['bar']['baz'] if this value exists, and will otherwise return
the dict in the default argument.
traverse_dict_and_list
Traverse a dict or list using a colon-delimited (or otherwise delimited,
using the 'delimiter' param) target string. The target 'foo:bar:0' will
return data['foo']['bar'][0] if this value exists, and will otherwise
return the dict in the default argument.
Function will automatically determine the target type.
The target 'foo:bar:0' will return data['foo']['bar'][0] if data like
{'foo':{'bar':['baz']}} , if data like {'foo':{'bar':{'0':'baz'}}}
then return data['foo']['bar']['0']
Arg
.. code-block:: python
from dict_tools import arg
yamlify_arg
yaml.safe_load the arg
Aggregation
.. code-block:: python
from dict_tools import aggregation
Makes it possible to introspect dataset and aggregate nodes
when it is instructed
levelise
Describe which levels are allowed to do deep merging.
mark
Convert obj into an Aggregate instance
aggregate
Merge obj_b into obj_a.