No project description provided
Project description
quickdiff
quickdiff
is a python library for quickly finding nested differences between two python objects.
Usage:
from quickdiff import *
a = {1: 1, 2: 2, 3: [3], 4: 4}
b = {1: 1, 2: 4, 3: [3, 4], 5: 5, 6: 6}
report = quickdiff(a, b)
assert report == DiffReport(
val_changes=[ValChange(path=[2], a=2, b=4)],
type_and_val_changes=[],
dict_items_added=[DictDiff(path=[], key=5, val=5), DictDiff(path=[], key=6, val=6)],
dict_items_removed=[DictDiff(path=[], key=4, val=4)],
iter_len_mismatch=[IterLenMismatch(path=[3], a_len=1, b_len=2)]
)
Diff objects (ValChange
, DictDiff
, etc) are NamedTuples for improved ergonomics and thus can be unpacked as you would any tuple:
for path, a, b in report.val_changes:
print(path, a, b)
# ([2], 2, 4)
Why not DeepDiff
I wrote this because DeepDiff is quite slow as it's written in pure Python and has a lot of features.
Quickdiff on the other hand is simple and written in Rust. The current implementation yields a 16x performance boost on my personal benchmarks.
Development
Use maturin
for development:
pip install maturin
Compile development version with:
maturin development
Run tests:
python -m unittest discover tests
Roadmap
- support for sets (currently is treated as an iterator)
- parallelize for improved performance (by using
pyo3-ffi
to sidestep the Python runtime) - attribute diff checking for python objects
- support custom
__eq__()
implementations
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
quickdiff-0.1.4.tar.gz
(9.4 kB
view hashes)
Built Distributions
Close
Hashes for quickdiff-0.1.4-pp39-pypy39_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | df39b0608d63f2a2b57be748680c9f15ae0a4f5b8d8ffa3c1a22b4b2ad7db82e |
|
MD5 | 0abaa508df69fda2f0803065313e14a7 |
|
BLAKE2b-256 | cbd87807df3ec990b748253e99d6c02fa6f3e46388d9fe9197fc31c74dd977b7 |
Close
Hashes for quickdiff-0.1.4-pp38-pypy38_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0f6300643c0c7d3be659bd9f90e2c793f30c8feb306c37a239b418834ace9e4 |
|
MD5 | f760a6c18e0a2925826a533bf02cf589 |
|
BLAKE2b-256 | 8a2c22ef370088898bf3f1541395bce53159fbe0bba77314d062c1ecb1a86fb1 |
Close
Hashes for quickdiff-0.1.4-pp37-pypy37_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 7a5dce203ea626150f735ce12badcefe331844d9575e2b307a90e44565cc6eaf |
|
MD5 | 9892ccbc415a0982e85648c1f9035dc1 |
|
BLAKE2b-256 | f24ff04febd727c7eb48f67d0d135627ca8cc6fa62ee45cdee34b245b5e99b54 |
Close
Hashes for quickdiff-0.1.4-cp311-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 318ff50266e663c24c1ffbc2382db4e799b85e0363e5dc4c34e39d294bebe838 |
|
MD5 | b12f57e157651fadfa99e8cbf4cea3ee |
|
BLAKE2b-256 | 07346fa009d7d33067f7c54120a554a5bceafda37cb1c849dd55983e2796846b |
Close
Hashes for quickdiff-0.1.4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e1fdf36fed7e20220121e2fd1fea71fae5487abfc2dd74960c127cf6bf16c465 |
|
MD5 | 5ffa7a479313172988daadfc215c13f7 |
|
BLAKE2b-256 | 2d293af95304493bc1116417db0258893175981b17401b9b2f9049ebf4b6207b |
Close
Hashes for quickdiff-0.1.4-cp311-cp311-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 747ad474761926df848b283dbf28f9064f60199a0223e17981a7a19ef7a5a420 |
|
MD5 | d4c63b418e84e081a86ad2f081ced425 |
|
BLAKE2b-256 | 26af7cb21c82c4abe2c4d76dbf14abcf54b8c8df71f6f1eb7b51796c707e5ec9 |
Close
Hashes for quickdiff-0.1.4-cp310-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6150898d8a0e06a7ff9e1aad48dfa92a0649f9a24f173513b97d7bdb653fdf2f |
|
MD5 | c761392ceb6777308249e2bb6b53767a |
|
BLAKE2b-256 | 9179f8330e887f0caeb3108916b767536a7dc6674e97bf1ddec11ca5dcd18458 |
Close
Hashes for quickdiff-0.1.4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6254e290dfda279a9bbf9acb2a05ad51360c3ed8acd46bdd787727c41db339ea |
|
MD5 | 60d836e075d3dca404f8f6c630d760ba |
|
BLAKE2b-256 | 227acef22f5d4acf5adb9c18b36d4aff6755c8b272bb7b9b9789a522ae1fe5bb |
Close
Hashes for quickdiff-0.1.4-cp310-cp310-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c81cf4022e2a17e1f0e3816c4f1a3b3eb8345e1d2d5e6eeaa712cbbc58521fbe |
|
MD5 | 22b5fd364be1137fd999e3869f8e0d67 |
|
BLAKE2b-256 | 3122e3e2a90d1ef2b64cbae3f3ca7fe9e6dbead30b951a19be830a538ca391fc |
Close
Hashes for quickdiff-0.1.4-cp39-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6067a2c4bb57d1f22e13e5a612101e94b14971f7f0f2663d673bed81d84af612 |
|
MD5 | 87225cf67355b6cc1b2d80270171a682 |
|
BLAKE2b-256 | 0c47b4211545f32e60fbc897a54a36a7a6495107ef2e9dde1d44ef112a2f766b |
Close
Hashes for quickdiff-0.1.4-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97b6fb93a520d2ab745a57ff15cdd4000b38c2d2aea473f1f099f7bce0614686 |
|
MD5 | fa9f8746f91bebdc6fcd02a024f3a68f |
|
BLAKE2b-256 | 452c896998ccbac9c2a5aff502a69c867161122636a2d2d0c22a70c2de408c9e |
Close
Hashes for quickdiff-0.1.4-cp39-cp39-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 519a01702810a70a3a91067a69521e4bc0af3f170aa80885de484a430ce9ff87 |
|
MD5 | 73449d147618a40df1a9668c3c62ce2f |
|
BLAKE2b-256 | 25ad4bc4063798a10cf1b8e08a7f9cae64f3c5d17821d5706742eb3b16cdb3eb |
Close
Hashes for quickdiff-0.1.4-cp38-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 479c465e640497e1de0d1f601d1e2e56e4e63ed81167080e323e38a95e9916e0 |
|
MD5 | 2dbc8ce70cd3750ce81c086f80cae215 |
|
BLAKE2b-256 | dfaeeff50808d4afab161d47c77cbae51f5e7d25c8bb1f677704179fff0e8156 |
Close
Hashes for quickdiff-0.1.4-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a2366a942d5de6241e3c96c875263419453185281851f45141c22c745eb81d14 |
|
MD5 | 036e45ab5096e86c0e849c78d3edc787 |
|
BLAKE2b-256 | 59858bb7e03d13a120e5babfa200e2428916325f1b47755f7d6566e340762c87 |
Close
Hashes for quickdiff-0.1.4-cp38-cp38-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b57844005217f6bbcd93d3e28220d9166a0275e0f7abb6b58f3eae80bb0f4420 |
|
MD5 | 15e3e2926874e33875e6e7f1be5bb046 |
|
BLAKE2b-256 | e84ce8d11da56ec8ca6f1b56047c68eaf7f4e6583c85ce0100b3e275a3c51468 |
Close
Hashes for quickdiff-0.1.4-cp37-none-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ce98e927d8d2679b734fa78819c50dae9cb02382d9e2c2b350cceb0a0725fa62 |
|
MD5 | 3a51e0df812bed46fc488257e3cfd200 |
|
BLAKE2b-256 | 7752cab19c9eaf71b4e4f2461f2d30c9a30804138fe8a931acf8b612faa73ae5 |
Close
Hashes for quickdiff-0.1.4-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3ebb98a84c56f099ea961196c34731c73d57d3084c059366a8924bc52667cbc5 |
|
MD5 | 63d27106d85fde0b2ec11fbb16f62ff3 |
|
BLAKE2b-256 | 67bbf77747d207c7a484c9f71a13d2d9f8ea3ad1f5bde07bd3018e9acb74f584 |
Close
Hashes for quickdiff-0.1.4-cp37-cp37m-macosx_10_9_x86_64.macosx_11_0_arm64.macosx_10_9_universal2.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0cb7ed195c36620069fdcdef384f7eae228bec9d2ce062eee03060483c3c4ee |
|
MD5 | 4f2c27d1676e4bced453e3513bd6d1c3 |
|
BLAKE2b-256 | 93adc6465544c84c5a7cd9f82be75e51e064c0c5ea1dbf5af51de0230bbb6e23 |