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
Sequenceand allMappingtypes the same (e.g.(1, 2, 3)is equal to[1, 2, 3]). To enable strict type checks, use thestrictkeyword argument. - The
partial_comparemethod checks if the data structure given as the second parameter is a subset of the data structure given as the first parameter.- For
Mappingtypes 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
Sequencetypes 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).
- For
Usage
import deepcompare
# test if two data structures are equal, but the types to not need to match exactly
deepcompare.compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}},
{'key1': [1, 2, 3], 'key2': {'key3': (4, 5, 6)}},
) # returns: True
# test if two data structures are equal, and make sure the types match exactly
deepcompare.compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}},
{'key1': [1, 2, 3], 'key2': {'key3': (4, 5, 6)}},
strict=True,
) # returns: False
# test if the second data structure is contained within the first, but
# the types to not need to match exactly
deepcompare.partial_compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}, 'key4': True},
{'key1': [1, 2], 'key2': {'key3': (4, 6)}},
) # returns: True
# test if the second data structure is contained within the first, and
# make sure the types match exactly
deepcompare.partial_compare(
{'key1': (1, 2, 3), 'key2': {'key3': [4, 5, 6]}, 'key4': True},
{'key1': [1, 2], 'key2': {'key3': (4, 6)}},
strict=True,
) # returns: False
List of developers
- Andreas Stocker AStocker@anexia-it.com, Lead Developer
Metadata
Release files for python-deepcompare 2.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| python_deepcompare-2.2.0.tar.gz | 9.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| python_deepcompare-2.2.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 15.0 kB
Release files / python_deepcompare-2.2.0.tar.gz
| Download URL | python_deepcompare-2.2.0.tar.gz |
|---|---|
| Size | 9.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
facd3267f1f945b78079de9167e2b94d5c7d2e3fed8dac987c73d83f9eadc396
|
|
BLAKE2b-256 checksum How to use checksums |
5c57c43cbbb54bb6220b6d2589e05da598ce6adc7975c7aa473ed0b2181a1540
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / python_deepcompare-2.2.0-py3-none-any.whl
| Download URL | python_deepcompare-2.2.0-py3-none-any.whl |
|---|---|
| Size | 5.4 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
318835c5decbe8cc565b1c7c815f502037c61e2a84655717ab189906b3299a88
|
|
BLAKE2b-256 checksum How to use checksums |
b8f2801cca7c62e19c576124cdc172e77ca30382ec443dcc3eede62538359b65
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|