278 lines
6.0 KiB
Plaintext
278 lines
6.0 KiB
Plaintext
Metadata-Version: 2.1
|
|
Name: dict-toolbox
|
|
Version: 1.12
|
|
Summary: Dict tools for Python projects
|
|
Home-page: https://gitlab.com/saltstack/open/dict-toolbox
|
|
Author: Tyler Johnson
|
|
Author-email: tjohnson@saltstack.com
|
|
License: UNKNOWN
|
|
Platform: UNKNOWN
|
|
Classifier: Operating System :: OS Independent
|
|
Classifier: Programming Language :: Python
|
|
Classifier: Programming Language :: Python :: 3.6
|
|
Classifier: Programming Language :: Python :: 3.7
|
|
Classifier: Programming Language :: Python :: 3.8
|
|
Classifier: Development Status :: 5 - Production/Stable
|
|
Requires-Python: >=3.6
|
|
Description-Content-Type: text/x-rst
|
|
Requires-Dist: msgpack
|
|
Requires-Dist: pyyaml (>=5.1)
|
|
|
|
============
|
|
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.
|
|
|
|
|