deepcompare
deepcompare
is a library to deeply compare data structures with each other. It can check if two data
structures contain the same data, or if a data structure is a subset of another data structure. The library
supports Sequence
(e.g. list
or tuple
) and Mapping
(e.g. dict
) types for the deep comparison.
Installation
With a correctly configured pipenv
toolchain:
pipenv install python-deepcompare
You may also use classic pip
to install the package:
pip install python-deepcompare
Getting started
How it works
- As a default, the comparison treats all
Sequence
and all Mapping
types the same (e.g. (1, 2, 3)
is equal to
[1, 2, 3]
). To enable strict type checks, use the strict
keyword argument. - The
partial_compare
method checks if the data structure given as the second parameter is a subset of the data
structure given as the first parameter.
- For
Mapping
types this means, that all keys of the second data structure are also keys on the first data
structure, and the values of the keys are also equal (e.g. {'a': 1, 'b': 2}
is a subset
of {'a': 1, 'b': 2, 'c': 3}
, but {'a': 1, 'b': 2, 'd': 4}
is not). - For
Sequence
types this means, that all values of the second data structure are also values of the first data
structure, and the values are in the same order (e.g. [1, 3, 5]
is a subset
of [1, 2, 3, 4, 5]
, but [1, 5, 3]
is not).
Usage
import deepcompare
deepcompare.compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}},
{'key1': [1, 2, 3], 'key2': {'key3': (4, 5, 6)}},
)
deepcompare.compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}},
{'key1': [1, 2, 3], 'key2': {'key3': (4, 5, 6)}},
strict=True,
)
deepcompare.partial_compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}, 'key4': True},
{'key1': [1, 2], 'key2': {'key3': (4, 6)}},
)
deepcompare.partial_compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}, 'key4': True},
{'key1': [1, 2], 'key2': {'key3': (4, 6)}},
strict=True,
)
List of developers