Skip to main content

A library for deep comparison of data structures consisting of `dict`, `list` and `tuple`.

Project description

deepcompare

PyPI Test Status Codecov

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

# 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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_deepcompare-2.1.0.tar.gz (6.5 kB view details)

Uploaded Source

Built Distribution

python_deepcompare-2.1.0-py3-none-any.whl (4.6 kB view details)

Uploaded Python 3

File details

Details for the file python_deepcompare-2.1.0.tar.gz.

File metadata

  • Download URL: python_deepcompare-2.1.0.tar.gz
  • Upload date:
  • Size: 6.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.13.0

File hashes

Hashes for python_deepcompare-2.1.0.tar.gz
Algorithm Hash digest
SHA256 0daea3199c0f822e38857fec56f4a6e74614172834035c4d810928452cea2b3b
MD5 3877946b9d409c4b6760da44f6395ae5
BLAKE2b-256 f223fb4ed9b52ff75f3e8d607a5fef8a4907122c1a27569e9467d22db1a5a080

See more details on using hashes here.

File details

Details for the file python_deepcompare-2.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for python_deepcompare-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f142e269cfdde274a35f417ecc2a92d50d0dec06460c49ad5aa37e7b7b1bf2dc
MD5 ea373314f91656ecd51328760d394c88
BLAKE2b-256 c8777c6f9ec8a5a5cee6ee69a230453fc974c2c964bfe6e27aa0fa5cc164c1f2

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page