Skip to main content

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

Project description

python-deepcompare

PyPI Test Status Codecov

python-deepcompare is a library to deep 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-1.0.0.tar.gz (4.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

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

Uploaded Python 3

File details

Details for the file python-deepcompare-1.0.0.tar.gz.

File metadata

  • Download URL: python-deepcompare-1.0.0.tar.gz
  • Upload date:
  • Size: 4.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for python-deepcompare-1.0.0.tar.gz
Algorithm Hash digest
SHA256 9a5fbebde5d080109d64ad8f3421af7e84257572a7b84fc10412cb94db4650ed
MD5 fc3263a4ee9f2276a1cf84d847f3ad7a
BLAKE2b-256 0c6e7cbf19dc3f38427f0e67da7888ba4d10690839bb360ecf5c9d767080c96b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: python_deepcompare-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 4.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.2 importlib_metadata/4.8.1 pkginfo/1.7.1 requests/2.26.0 requests-toolbelt/0.9.1 tqdm/4.62.3 CPython/3.9.7

File hashes

Hashes for python_deepcompare-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4319134d43001ef918c1958bc8cd283d344f7e639f530f1c9a48335b1b453866
MD5 b2c04d388ea69292116e8931b0b3abfb
BLAKE2b-256 a583b7aac395ebf1d2a84c736227a06dc974fbea032e7c7c3d1574a78e22402a

See more details on using hashes here.

Supported by

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