diffx-python 0.4.4__tar.gz → 0.5.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- diffx_python-0.5.2/Cargo.toml +56 -0
- {diffx_python-0.4.4 → diffx_python-0.5.2}/PKG-INFO +36 -27
- {diffx_python-0.4.4 → diffx_python-0.5.2}/README.md +18 -10
- diffx_python-0.5.2/diffx-core/Cargo.toml +34 -0
- diffx_python-0.5.2/diffx-core/README.md +317 -0
- diffx_python-0.5.2/diffx-core/benches/diff_benchmark.rs +255 -0
- diffx_python-0.5.2/diffx-core/src/lib.rs +1085 -0
- diffx_python-0.5.2/diffx-python/Cargo.lock +732 -0
- diffx_python-0.5.2/diffx-python/Cargo.toml +31 -0
- diffx_python-0.5.2/diffx-python/README.md +92 -0
- diffx_python-0.5.2/diffx-python/examples.py +531 -0
- {diffx_python-0.4.4 → diffx_python-0.5.2/diffx-python}/src/diffx/__init__.py +14 -1
- {diffx_python-0.4.4 → diffx_python-0.5.2/diffx-python}/src/diffx/diffx.py +34 -15
- diffx_python-0.5.2/diffx-python/src/main.rs +817 -0
- diffx_python-0.5.2/diffx-python/target/.rustc_info.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.cargo-lock +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/aho-corasick-e95540c81a65a99a/dep-lib-aho_corasick +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/aho-corasick-e95540c81a65a99a/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/aho-corasick-e95540c81a65a99a/lib-aho_corasick +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/aho-corasick-e95540c81a65a99a/lib-aho_corasick.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstream-76b2a5128d6533f5/dep-lib-anstream +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstream-76b2a5128d6533f5/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstream-76b2a5128d6533f5/lib-anstream +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstream-76b2a5128d6533f5/lib-anstream.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-301b1a3367315f20/dep-lib-anstyle +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-301b1a3367315f20/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-301b1a3367315f20/lib-anstyle +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-301b1a3367315f20/lib-anstyle.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-parse-68b35f75f4040196/dep-lib-anstyle_parse +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-parse-68b35f75f4040196/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-parse-68b35f75f4040196/lib-anstyle_parse +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-parse-68b35f75f4040196/lib-anstyle_parse.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-query-a11039aea6ff4c9e/dep-lib-anstyle_query +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-query-a11039aea6ff4c9e/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-query-a11039aea6ff4c9e/lib-anstyle_query +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anstyle-query-a11039aea6ff4c9e/lib-anstyle_query.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-0ab5e60545e805e2/build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-0ab5e60545e805e2/build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-0ab5e60545e805e2/dep-build-script-build-script-build +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-0ab5e60545e805e2/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-39922d21f1cdd6cf/run-build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-39922d21f1cdd6cf/run-build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-a89081b19e6cc63a/dep-lib-anyhow +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-a89081b19e6cc63a/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-a89081b19e6cc63a/lib-anyhow +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/anyhow-a89081b19e6cc63a/lib-anyhow.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap-8124f7f7a4c7cd1b/dep-lib-clap +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap-8124f7f7a4c7cd1b/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap-8124f7f7a4c7cd1b/lib-clap +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap-8124f7f7a4c7cd1b/lib-clap.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_builder-24ac0d899e9a2962/dep-lib-clap_builder +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_builder-24ac0d899e9a2962/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_builder-24ac0d899e9a2962/lib-clap_builder +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_builder-24ac0d899e9a2962/lib-clap_builder.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_derive-919f91c141671618/dep-lib-clap_derive +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_derive-919f91c141671618/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_derive-919f91c141671618/lib-clap_derive +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_derive-919f91c141671618/lib-clap_derive.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_lex-013b899981973448/dep-lib-clap_lex +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_lex-013b899981973448/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_lex-013b899981973448/lib-clap_lex +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/clap_lex-013b899981973448/lib-clap_lex.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colorchoice-d1aec6c9d198d595/dep-lib-colorchoice +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colorchoice-d1aec6c9d198d595/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colorchoice-d1aec6c9d198d595/lib-colorchoice +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colorchoice-d1aec6c9d198d595/lib-colorchoice.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colored-11999f931d4af629/dep-lib-colored +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colored-11999f931d4af629/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colored-11999f931d4af629/lib-colored +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/colored-11999f931d4af629/lib-colored.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/configparser-c597ca3199b89a2a/dep-lib-configparser +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/configparser-c597ca3199b89a2a/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/configparser-c597ca3199b89a2a/lib-configparser +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/configparser-c597ca3199b89a2a/lib-configparser.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-489d4d2a34898e2a/dep-lib-csv +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-489d4d2a34898e2a/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-489d4d2a34898e2a/lib-csv +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-489d4d2a34898e2a/lib-csv.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-core-a3123bac4b897654/dep-lib-csv_core +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-core-a3123bac4b897654/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-core-a3123bac4b897654/lib-csv_core +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/csv-core-a3123bac4b897654/lib-csv_core.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-core-486df61314eaf31b/dep-lib-diffx_core +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-core-486df61314eaf31b/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-core-486df61314eaf31b/lib-diffx_core +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-core-486df61314eaf31b/lib-diffx_core.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-python-f8984021816d4bb3/bin-diffx +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-python-f8984021816d4bb3/bin-diffx.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-python-f8984021816d4bb3/dep-bin-diffx +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/diffx-python-f8984021816d4bb3/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-abda198a4afaf854/dep-lib-dirs +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-abda198a4afaf854/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-abda198a4afaf854/lib-dirs +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-abda198a4afaf854/lib-dirs.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-sys-e4f0e08290708f00/dep-lib-dirs_sys +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-sys-e4f0e08290708f00/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-sys-e4f0e08290708f00/lib-dirs_sys +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/dirs-sys-e4f0e08290708f00/lib-dirs_sys.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/equivalent-d1815b64a2780ed4/dep-lib-equivalent +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/equivalent-d1815b64a2780ed4/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/equivalent-d1815b64a2780ed4/lib-equivalent +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/equivalent-d1815b64a2780ed4/lib-equivalent.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/hashbrown-59b4e3fd11a2a426/dep-lib-hashbrown +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/hashbrown-59b4e3fd11a2a426/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/hashbrown-59b4e3fd11a2a426/lib-hashbrown +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/hashbrown-59b4e3fd11a2a426/lib-hashbrown.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/heck-413fe27b787870ca/dep-lib-heck +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/heck-413fe27b787870ca/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/heck-413fe27b787870ca/lib-heck +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/heck-413fe27b787870ca/lib-heck.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/indexmap-fea09edc9defab23/dep-lib-indexmap +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/indexmap-fea09edc9defab23/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/indexmap-fea09edc9defab23/lib-indexmap +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/indexmap-fea09edc9defab23/lib-indexmap.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/is_terminal_polyfill-890dcf447c84dc42/dep-lib-is_terminal_polyfill +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/is_terminal_polyfill-890dcf447c84dc42/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/is_terminal_polyfill-890dcf447c84dc42/lib-is_terminal_polyfill +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/is_terminal_polyfill-890dcf447c84dc42/lib-is_terminal_polyfill.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/itoa-b9fb253aa9ff1b2a/dep-lib-itoa +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/itoa-b9fb253aa9ff1b2a/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/itoa-b9fb253aa9ff1b2a/lib-itoa +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/itoa-b9fb253aa9ff1b2a/lib-itoa.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/lazy_static-c2da0801ab16584f/dep-lib-lazy_static +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/lazy_static-c2da0801ab16584f/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/lazy_static-c2da0801ab16584f/lib-lazy_static +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/lazy_static-c2da0801ab16584f/lib-lazy_static.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-7d6ce672dc1410f0/run-build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-7d6ce672dc1410f0/run-build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-9fa2d3c310798377/dep-lib-libc +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-9fa2d3c310798377/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-9fa2d3c310798377/lib-libc +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-9fa2d3c310798377/lib-libc.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-d943ea62dcb30ccc/build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-d943ea62dcb30ccc/build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-d943ea62dcb30ccc/dep-build-script-build-script-build +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libc-d943ea62dcb30ccc/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libyml-f415419fb440ddd3/dep-lib-libyml +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libyml-f415419fb440ddd3/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libyml-f415419fb440ddd3/lib-libyml +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/libyml-f415419fb440ddd3/lib-libyml.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/memchr-8b3a23643251ebdc/dep-lib-memchr +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/memchr-8b3a23643251ebdc/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/memchr-8b3a23643251ebdc/lib-memchr +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/memchr-8b3a23643251ebdc/lib-memchr.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/option-ext-f8aa61870cbd0cb2/dep-lib-option_ext +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/option-ext-f8aa61870cbd0cb2/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/option-ext-f8aa61870cbd0cb2/lib-option_ext +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/option-ext-f8aa61870cbd0cb2/lib-option_ext.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-9702d12caf4464c3/dep-lib-proc_macro2 +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-9702d12caf4464c3/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-9702d12caf4464c3/lib-proc_macro2 +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-9702d12caf4464c3/lib-proc_macro2.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-ae3307c9e276fb1b/build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-ae3307c9e276fb1b/build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-ae3307c9e276fb1b/dep-build-script-build-script-build +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-ae3307c9e276fb1b/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-ebaa0c2f0c2a3438/run-build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/proc-macro2-ebaa0c2f0c2a3438/run-build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quick-xml-abcbbc32a5a3bd7a/dep-lib-quick_xml +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quick-xml-abcbbc32a5a3bd7a/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quick-xml-abcbbc32a5a3bd7a/lib-quick_xml +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quick-xml-abcbbc32a5a3bd7a/lib-quick_xml.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quote-f31617b36bf2c489/dep-lib-quote +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quote-f31617b36bf2c489/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quote-f31617b36bf2c489/lib-quote +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/quote-f31617b36bf2c489/lib-quote.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-27acad8398eaf438/dep-lib-regex +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-27acad8398eaf438/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-27acad8398eaf438/lib-regex +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-27acad8398eaf438/lib-regex.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-automata-d4521f6905de53c9/dep-lib-regex_automata +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-automata-d4521f6905de53c9/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-automata-d4521f6905de53c9/lib-regex_automata +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-automata-d4521f6905de53c9/lib-regex_automata.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-syntax-bf46e03b2b2875b5/dep-lib-regex_syntax +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-syntax-bf46e03b2b2875b5/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-syntax-bf46e03b2b2875b5/lib-regex_syntax +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/regex-syntax-bf46e03b2b2875b5/lib-regex_syntax.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/ryu-67ab0f84f199fa13/dep-lib-ryu +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/ryu-67ab0f84f199fa13/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/ryu-67ab0f84f199fa13/lib-ryu +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/ryu-67ab0f84f199fa13/lib-ryu.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/same-file-fa82aa2255c459b9/dep-lib-same_file +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/same-file-fa82aa2255c459b9/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/same-file-fa82aa2255c459b9/lib-same_file +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/same-file-fa82aa2255c459b9/lib-same_file.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-2256e136096171d6/run-build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-2256e136096171d6/run-build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-d775edc4ce9b520e/build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-d775edc4ce9b520e/build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-d775edc4ce9b520e/dep-build-script-build-script-build +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-d775edc4ce9b520e/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-fbc68ff5e30a50b1/dep-lib-serde +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-fbc68ff5e30a50b1/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-fbc68ff5e30a50b1/lib-serde +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde-fbc68ff5e30a50b1/lib-serde.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_derive-4b743fcceabd09c8/dep-lib-serde_derive +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_derive-4b743fcceabd09c8/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_derive-4b743fcceabd09c8/lib-serde_derive +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_derive-4b743fcceabd09c8/lib-serde_derive.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-ac73239020f8a961/run-build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-ac73239020f8a961/run-build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-c6cd6ebfca225c69/dep-lib-serde_json +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-c6cd6ebfca225c69/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-c6cd6ebfca225c69/lib-serde_json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-c6cd6ebfca225c69/lib-serde_json.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-d55d69208000e138/build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-d55d69208000e138/build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-d55d69208000e138/dep-build-script-build-script-build +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_json-d55d69208000e138/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_spanned-43fef65d89bb2c39/dep-lib-serde_spanned +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_spanned-43fef65d89bb2c39/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_spanned-43fef65d89bb2c39/lib-serde_spanned +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_spanned-43fef65d89bb2c39/lib-serde_spanned.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-3c622c3fa1a741d3/run-build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-3c622c3fa1a741d3/run-build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-599a4b3e50f3f6b9/dep-lib-serde_yml +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-599a4b3e50f3f6b9/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-599a4b3e50f3f6b9/lib-serde_yml +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-599a4b3e50f3f6b9/lib-serde_yml.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-79ebdee827206003/build-script-build-script-build +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-79ebdee827206003/build-script-build-script-build.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-79ebdee827206003/dep-build-script-build-script-build +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/serde_yml-79ebdee827206003/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/similar-0a7cea1453328e10/dep-lib-similar +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/similar-0a7cea1453328e10/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/similar-0a7cea1453328e10/lib-similar +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/similar-0a7cea1453328e10/lib-similar.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/strsim-6847bc0cdc71d217/dep-lib-strsim +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/strsim-6847bc0cdc71d217/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/strsim-6847bc0cdc71d217/lib-strsim +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/strsim-6847bc0cdc71d217/lib-strsim.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/syn-e618efa2efd2edd7/dep-lib-syn +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/syn-e618efa2efd2edd7/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/syn-e618efa2efd2edd7/lib-syn +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/syn-e618efa2efd2edd7/lib-syn.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml-a546fa02837b4ae6/dep-lib-toml +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml-a546fa02837b4ae6/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml-a546fa02837b4ae6/lib-toml +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml-a546fa02837b4ae6/lib-toml.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_datetime-7ded0c8a29fb7d1b/dep-lib-toml_datetime +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_datetime-7ded0c8a29fb7d1b/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_datetime-7ded0c8a29fb7d1b/lib-toml_datetime +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_datetime-7ded0c8a29fb7d1b/lib-toml_datetime.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_edit-88c1fd43557b78bb/dep-lib-toml_edit +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_edit-88c1fd43557b78bb/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_edit-88c1fd43557b78bb/lib-toml_edit +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_edit-88c1fd43557b78bb/lib-toml_edit.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_write-dcc6ce8c03db2c85/dep-lib-toml_write +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_write-dcc6ce8c03db2c85/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_write-dcc6ce8c03db2c85/lib-toml_write +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/toml_write-dcc6ce8c03db2c85/lib-toml_write.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/unicode-ident-7a079294cb35a080/dep-lib-unicode_ident +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/unicode-ident-7a079294cb35a080/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/unicode-ident-7a079294cb35a080/lib-unicode_ident +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/unicode-ident-7a079294cb35a080/lib-unicode_ident.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/utf8parse-861abfbba286c689/dep-lib-utf8parse +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/utf8parse-861abfbba286c689/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/utf8parse-861abfbba286c689/lib-utf8parse +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/utf8parse-861abfbba286c689/lib-utf8parse.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/version_check-24e6890dc0f31c03/dep-lib-version_check +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/version_check-24e6890dc0f31c03/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/version_check-24e6890dc0f31c03/lib-version_check +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/version_check-24e6890dc0f31c03/lib-version_check.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/walkdir-ec4a47fa5d85fa51/dep-lib-walkdir +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/walkdir-ec4a47fa5d85fa51/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/walkdir-ec4a47fa5d85fa51/lib-walkdir +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/walkdir-ec4a47fa5d85fa51/lib-walkdir.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/winnow-b1a889e18e3ebb11/dep-lib-winnow +0 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/winnow-b1a889e18e3ebb11/invoked.timestamp +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/winnow-b1a889e18e3ebb11/lib-winnow +1 -0
- diffx_python-0.5.2/diffx-python/target/release/.fingerprint/winnow-b1a889e18e3ebb11/lib-winnow.json +1 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/aho_corasick-e95540c81a65a99a.d +35 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/anstream-76b2a5128d6533f5.d +16 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/anstyle-301b1a3367315f20.d +12 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/anstyle_parse-68b35f75f4040196.d +11 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/anstyle_query-a11039aea6ff4c9e.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/anyhow-a89081b19e6cc63a.d +17 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/clap-8124f7f7a4c7cd1b.d +9 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/clap_builder-24ac0d899e9a2962.d +59 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/clap_derive-919f91c141671618.d +21 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/clap_lex-013b899981973448.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/colorchoice-d1aec6c9d198d595.d +7 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/colored-11999f931d4af629.d +12 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/configparser-c597ca3199b89a2a.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/csv-489d4d2a34898e2a.d +17 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/csv_core-a3123bac4b897654.d +9 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/diffx-f8984021816d4bb3 +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/diffx-f8984021816d4bb3.d +5 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/diffx_core-486df61314eaf31b.d +7 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/dirs-abda198a4afaf854.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/dirs_sys-e4f0e08290708f00.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/equivalent-d1815b64a2780ed4.d +7 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/hashbrown-59b4e3fd11a2a426.d +21 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/heck-413fe27b787870ca.d +15 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/indexmap-fea09edc9defab23.d +22 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/is_terminal_polyfill-890dcf447c84dc42.d +7 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/itoa-b9fb253aa9ff1b2a.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/lazy_static-c2da0801ab16584f.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libaho_corasick-e95540c81a65a99a.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libaho_corasick-e95540c81a65a99a.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstream-76b2a5128d6533f5.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstream-76b2a5128d6533f5.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstyle-301b1a3367315f20.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstyle-301b1a3367315f20.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstyle_parse-68b35f75f4040196.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstyle_parse-68b35f75f4040196.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstyle_query-a11039aea6ff4c9e.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanstyle_query-a11039aea6ff4c9e.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanyhow-a89081b19e6cc63a.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libanyhow-a89081b19e6cc63a.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libc-9fa2d3c310798377.d +18 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libclap-8124f7f7a4c7cd1b.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libclap-8124f7f7a4c7cd1b.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libclap_builder-24ac0d899e9a2962.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libclap_builder-24ac0d899e9a2962.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libclap_lex-013b899981973448.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libclap_lex-013b899981973448.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcolorchoice-d1aec6c9d198d595.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcolorchoice-d1aec6c9d198d595.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcolored-11999f931d4af629.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcolored-11999f931d4af629.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libconfigparser-c597ca3199b89a2a.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libconfigparser-c597ca3199b89a2a.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcsv-489d4d2a34898e2a.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcsv-489d4d2a34898e2a.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcsv_core-a3123bac4b897654.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libcsv_core-a3123bac4b897654.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libdiffx_core-486df61314eaf31b.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libdiffx_core-486df61314eaf31b.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libdirs-abda198a4afaf854.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libdirs-abda198a4afaf854.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libdirs_sys-e4f0e08290708f00.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libdirs_sys-e4f0e08290708f00.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libequivalent-d1815b64a2780ed4.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libequivalent-d1815b64a2780ed4.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libhashbrown-59b4e3fd11a2a426.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libhashbrown-59b4e3fd11a2a426.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libheck-413fe27b787870ca.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libheck-413fe27b787870ca.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libindexmap-fea09edc9defab23.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libindexmap-fea09edc9defab23.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libis_terminal_polyfill-890dcf447c84dc42.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libis_terminal_polyfill-890dcf447c84dc42.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libitoa-b9fb253aa9ff1b2a.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libitoa-b9fb253aa9ff1b2a.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liblazy_static-c2da0801ab16584f.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liblazy_static-c2da0801ab16584f.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liblibc-9fa2d3c310798377.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liblibc-9fa2d3c310798377.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liblibyml-f415419fb440ddd3.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liblibyml-f415419fb440ddd3.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libmemchr-8b3a23643251ebdc.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libmemchr-8b3a23643251ebdc.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liboption_ext-f8aa61870cbd0cb2.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/liboption_ext-f8aa61870cbd0cb2.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libproc_macro2-9702d12caf4464c3.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libproc_macro2-9702d12caf4464c3.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libquick_xml-abcbbc32a5a3bd7a.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libquick_xml-abcbbc32a5a3bd7a.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libquote-f31617b36bf2c489.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libquote-f31617b36bf2c489.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libregex-27acad8398eaf438.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libregex-27acad8398eaf438.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libregex_automata-d4521f6905de53c9.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libregex_automata-d4521f6905de53c9.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libregex_syntax-bf46e03b2b2875b5.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libregex_syntax-bf46e03b2b2875b5.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libryu-67ab0f84f199fa13.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libryu-67ab0f84f199fa13.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libsame_file-fa82aa2255c459b9.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libsame_file-fa82aa2255c459b9.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde-fbc68ff5e30a50b1.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde-fbc68ff5e30a50b1.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde_json-c6cd6ebfca225c69.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde_json-c6cd6ebfca225c69.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde_spanned-43fef65d89bb2c39.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde_spanned-43fef65d89bb2c39.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde_yml-599a4b3e50f3f6b9.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libserde_yml-599a4b3e50f3f6b9.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libsimilar-0a7cea1453328e10.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libsimilar-0a7cea1453328e10.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libstrsim-6847bc0cdc71d217.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libstrsim-6847bc0cdc71d217.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libsyn-e618efa2efd2edd7.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libsyn-e618efa2efd2edd7.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml-a546fa02837b4ae6.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml-a546fa02837b4ae6.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml_datetime-7ded0c8a29fb7d1b.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml_datetime-7ded0c8a29fb7d1b.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml_edit-88c1fd43557b78bb.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml_edit-88c1fd43557b78bb.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml_write-dcc6ce8c03db2c85.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libtoml_write-dcc6ce8c03db2c85.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libunicode_ident-7a079294cb35a080.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libunicode_ident-7a079294cb35a080.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libutf8parse-861abfbba286c689.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libutf8parse-861abfbba286c689.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libversion_check-24e6890dc0f31c03.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libversion_check-24e6890dc0f31c03.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libwalkdir-ec4a47fa5d85fa51.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libwalkdir-ec4a47fa5d85fa51.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libwinnow-b1a889e18e3ebb11.rlib +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libwinnow-b1a889e18e3ebb11.rmeta +0 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/libyml-f415419fb440ddd3.d +26 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/memchr-8b3a23643251ebdc.d +33 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/option_ext-f8aa61870cbd0cb2.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/proc_macro2-9702d12caf4464c3.d +14 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/quick_xml-abcbbc32a5a3bd7a.d +33 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/quote-f31617b36bf2c489.d +13 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/regex-27acad8398eaf438.d +17 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/regex_automata-d4521f6905de53c9.d +65 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/regex_syntax-bf46e03b2b2875b5.d +37 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/ryu-67ab0f84f199fa13.d +18 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/same_file-fa82aa2255c459b9.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/serde-fbc68ff5e30a50b1.d +24 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/serde_derive-4b743fcceabd09c8.d +22 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/serde_json-c6cd6ebfca225c69.d +22 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/serde_spanned-43fef65d89bb2c39.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/serde_yml-599a4b3e50f3f6b9.d +31 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/similar-0a7cea1453328e10.d +25 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/strsim-6847bc0cdc71d217.d +7 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/syn-e618efa2efd2edd7.d +53 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/toml-a546fa02837b4ae6.d +20 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/toml_datetime-7ded0c8a29fb7d1b.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/toml_edit-88c1fd43557b78bb.d +50 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/toml_write-dcc6ce8c03db2c85.d +11 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/unicode_ident-7a079294cb35a080.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/utf8parse-861abfbba286c689.d +8 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/version_check-24e6890dc0f31c03.d +10 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/walkdir-ec4a47fa5d85fa51.d +10 -0
- diffx_python-0.5.2/diffx-python/target/release/deps/winnow-b1a889e18e3ebb11.d +32 -0
- diffx_python-0.5.2/diffx-python/target/release/diffx +0 -0
- diffx_python-0.5.2/diffx-python/target/release/diffx.d +1 -0
- diffx_python-0.5.2/diffx-python/target/wheels/diffx_python-0.5.0-py3-none-manylinux_2_34_x86_64.whl +0 -0
- diffx_python-0.5.2/diffx-python/test_integration.py +287 -0
- diffx_python-0.5.2/diffx-python/test_manual.py +138 -0
- {diffx_python-0.4.4 → diffx_python-0.5.2}/pyproject.toml +12 -16
- diffx_python-0.5.2/src/diffx/__init__.py +46 -0
- diffx_python-0.5.2/src/diffx/compat.py +56 -0
- diffx_python-0.5.2/src/diffx/diffx.py +293 -0
- diffx_python-0.4.4/.gitignore +0 -78
- diffx_python-0.4.4/src/diffx/installer.py +0 -119
- {diffx_python-0.4.4 → diffx_python-0.5.2/diffx-python}/src/diffx/compat.py +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
[workspace]
|
|
2
|
+
resolver = "2"
|
|
3
|
+
members = [
|
|
4
|
+
"diffx-core",
|
|
5
|
+
"diffx-cli"
|
|
6
|
+
]
|
|
7
|
+
|
|
8
|
+
[workspace.package]
|
|
9
|
+
version = "0.5.2"
|
|
10
|
+
edition = "2021"
|
|
11
|
+
authors = ["kako-jun"]
|
|
12
|
+
license = "MIT"
|
|
13
|
+
description = "Blazing fast semantic diff for JSON/YAML/TOML/XML/INI/CSV. Features: array tracking, regex filters, float tolerance, directory compare, UNIX-compatible options"
|
|
14
|
+
homepage = "https://github.com/kako-jun/diffx"
|
|
15
|
+
repository = "https://github.com/kako-jun/diffx"
|
|
16
|
+
documentation = "https://docs.rs/diffx"
|
|
17
|
+
readme = "README.md"
|
|
18
|
+
keywords = ["diff", "json", "yaml", "toml", "semantic-diff"]
|
|
19
|
+
categories = ["command-line-utilities", "development-tools", "text-processing", "parsing", "data-structures"]
|
|
20
|
+
exclude = [
|
|
21
|
+
".github/",
|
|
22
|
+
"target/"
|
|
23
|
+
]
|
|
24
|
+
rust-version = "1.75"
|
|
25
|
+
|
|
26
|
+
[workspace.metadata.docs.rs.badges]
|
|
27
|
+
maintenance = { status = "actively-developed" }
|
|
28
|
+
|
|
29
|
+
[workspace.metadata.docs.rs]
|
|
30
|
+
all-features = true
|
|
31
|
+
rustdoc-args = ["--cfg", "docsrs"]
|
|
32
|
+
|
|
33
|
+
[workspace.dependencies]
|
|
34
|
+
anyhow = "1.0"
|
|
35
|
+
clap = { version = "4.0", features = ["derive", "cargo"] }
|
|
36
|
+
colored = "3.0"
|
|
37
|
+
csv = "1.3"
|
|
38
|
+
configparser = "3.0"
|
|
39
|
+
quick-xml = { version = "0.31", features = ["serialize"] }
|
|
40
|
+
serde = { version = "1.0", features = ["derive"] }
|
|
41
|
+
serde_json = "1.0"
|
|
42
|
+
serde_yml = "0.0.12"
|
|
43
|
+
toml = "0.8"
|
|
44
|
+
walkdir = "2.5"
|
|
45
|
+
dirs = "5.0"
|
|
46
|
+
regex = "1.0"
|
|
47
|
+
similar = "2.7"
|
|
48
|
+
tempfile = "3.0"
|
|
49
|
+
assert_cmd = "2.0"
|
|
50
|
+
predicates = "3.1"
|
|
51
|
+
criterion = { version = "0.5", features = ["html_reports"] }
|
|
52
|
+
|
|
53
|
+
[profile.release]
|
|
54
|
+
lto = true
|
|
55
|
+
codegen-units = 1
|
|
56
|
+
panic = "abort"
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: diffx-python
|
|
3
|
-
Version: 0.
|
|
4
|
-
Summary: Python wrapper for diffx - semantic diffing of JSON, YAML, TOML, XML, INI, and CSV files. Focuses on structural meaning rather than formatting.
|
|
5
|
-
Project-URL: Homepage, https://github.com/kako-jun/diffx
|
|
6
|
-
Project-URL: Repository, https://github.com/kako-jun/diffx
|
|
7
|
-
Project-URL: Issues, https://github.com/kako-jun/diffx/issues
|
|
8
|
-
Project-URL: Documentation, https://github.com/kako-jun/diffx/tree/main/docs
|
|
9
|
-
Author: kako-jun
|
|
10
|
-
License-Expression: MIT
|
|
11
|
-
Keywords: automation,ci-cd,comparison,configuration,csv,data-analysis,devops,diff,ini,json,semantic,structured-data,toml,xml,yaml
|
|
3
|
+
Version: 0.5.2
|
|
12
4
|
Classifier: Development Status :: 4 - Beta
|
|
13
5
|
Classifier: Intended Audience :: Developers
|
|
14
6
|
Classifier: License :: OSI Approved :: MIT License
|
|
@@ -22,15 +14,23 @@ Classifier: Programming Language :: Python :: 3.13
|
|
|
22
14
|
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
15
|
Classifier: Topic :: Text Processing
|
|
24
16
|
Classifier: Topic :: Utilities
|
|
25
|
-
Requires-
|
|
17
|
+
Requires-Dist: pytest>=6.0 ; extra == 'dev'
|
|
18
|
+
Requires-Dist: pytest-cov ; extra == 'dev'
|
|
19
|
+
Requires-Dist: black ; extra == 'dev'
|
|
20
|
+
Requires-Dist: isort ; extra == 'dev'
|
|
21
|
+
Requires-Dist: mypy ; extra == 'dev'
|
|
22
|
+
Requires-Dist: ruff ; extra == 'dev'
|
|
26
23
|
Provides-Extra: dev
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
Requires-
|
|
32
|
-
|
|
33
|
-
|
|
24
|
+
Summary: Python wrapper for diffx - semantic diffing of JSON, YAML, TOML, XML, INI, and CSV files. Focuses on structural meaning rather than formatting.
|
|
25
|
+
Keywords: diff,semantic,json,yaml,toml,xml,ini,csv,structured-data,comparison,devops,ci-cd,automation,data-analysis,configuration
|
|
26
|
+
Author: kako-jun
|
|
27
|
+
License: MIT
|
|
28
|
+
Requires-Python: >=3.8
|
|
29
|
+
Description-Content-Type: text/markdown; charset=UTF-8; variant=GFM
|
|
30
|
+
Project-URL: Homepage, https://github.com/kako-jun/diffx
|
|
31
|
+
Project-URL: Repository, https://github.com/kako-jun/diffx
|
|
32
|
+
Project-URL: Issues, https://github.com/kako-jun/diffx/issues
|
|
33
|
+
Project-URL: Documentation, https://github.com/kako-jun/diffx/tree/main/docs
|
|
34
34
|
|
|
35
35
|
# diffx-python
|
|
36
36
|
|
|
@@ -42,7 +42,7 @@ Python wrapper for the `diffx` CLI tool - semantic diff for structured data.
|
|
|
42
42
|
pip install diffx-python
|
|
43
43
|
```
|
|
44
44
|
|
|
45
|
-
|
|
45
|
+
The `diffx` binary is automatically included in the wheel - no additional downloads required! This package uses [maturin](https://github.com/PyO3/maturin) to embed the native binary directly in the Python wheel, similar to tools like `ruff`.
|
|
46
46
|
|
|
47
47
|
## Usage
|
|
48
48
|
|
|
@@ -93,26 +93,35 @@ string_result = diffx.diff_string(
|
|
|
93
93
|
- Floating-point tolerance
|
|
94
94
|
- Array element identification
|
|
95
95
|
- Path-based filtering
|
|
96
|
-
- **Cross-platform**:
|
|
96
|
+
- **Cross-platform**: Native binary embedded in platform-specific wheels
|
|
97
|
+
|
|
98
|
+
## Key Benefits
|
|
99
|
+
|
|
100
|
+
- **🚀 Zero setup**: No external downloads or binary management
|
|
101
|
+
- **📦 Self-contained**: Everything needed is in the wheel
|
|
102
|
+
- **⚡ Fast installation**: No network dependencies after `pip install`
|
|
103
|
+
- **🔒 Secure**: No runtime downloads from external sources
|
|
104
|
+
- **🌐 Offline-ready**: Works in air-gapped environments
|
|
97
105
|
|
|
98
106
|
## Development
|
|
99
107
|
|
|
100
|
-
To install in development mode
|
|
108
|
+
To install in development mode:
|
|
101
109
|
|
|
102
110
|
```bash
|
|
103
|
-
|
|
104
|
-
source .venv/bin/activate
|
|
105
|
-
uv pip install -e .[dev]
|
|
111
|
+
pip install -e .[dev]
|
|
106
112
|
```
|
|
107
113
|
|
|
108
|
-
##
|
|
114
|
+
## Verification
|
|
109
115
|
|
|
110
|
-
|
|
116
|
+
Verify the installation:
|
|
111
117
|
|
|
112
|
-
```
|
|
113
|
-
diffx
|
|
118
|
+
```python
|
|
119
|
+
import diffx
|
|
120
|
+
print("diffx available:", diffx.is_diffx_available())
|
|
121
|
+
print("Version:", diffx.__version__)
|
|
114
122
|
```
|
|
115
123
|
|
|
116
124
|
## License
|
|
117
125
|
|
|
118
126
|
This project is licensed under the MIT License.
|
|
127
|
+
|
|
@@ -8,7 +8,7 @@ Python wrapper for the `diffx` CLI tool - semantic diff for structured data.
|
|
|
8
8
|
pip install diffx-python
|
|
9
9
|
```
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
The `diffx` binary is automatically included in the wheel - no additional downloads required! This package uses [maturin](https://github.com/PyO3/maturin) to embed the native binary directly in the Python wheel, similar to tools like `ruff`.
|
|
12
12
|
|
|
13
13
|
## Usage
|
|
14
14
|
|
|
@@ -59,24 +59,32 @@ string_result = diffx.diff_string(
|
|
|
59
59
|
- Floating-point tolerance
|
|
60
60
|
- Array element identification
|
|
61
61
|
- Path-based filtering
|
|
62
|
-
- **Cross-platform**:
|
|
62
|
+
- **Cross-platform**: Native binary embedded in platform-specific wheels
|
|
63
|
+
|
|
64
|
+
## Key Benefits
|
|
65
|
+
|
|
66
|
+
- **🚀 Zero setup**: No external downloads or binary management
|
|
67
|
+
- **📦 Self-contained**: Everything needed is in the wheel
|
|
68
|
+
- **⚡ Fast installation**: No network dependencies after `pip install`
|
|
69
|
+
- **🔒 Secure**: No runtime downloads from external sources
|
|
70
|
+
- **🌐 Offline-ready**: Works in air-gapped environments
|
|
63
71
|
|
|
64
72
|
## Development
|
|
65
73
|
|
|
66
|
-
To install in development mode
|
|
74
|
+
To install in development mode:
|
|
67
75
|
|
|
68
76
|
```bash
|
|
69
|
-
|
|
70
|
-
source .venv/bin/activate
|
|
71
|
-
uv pip install -e .[dev]
|
|
77
|
+
pip install -e .[dev]
|
|
72
78
|
```
|
|
73
79
|
|
|
74
|
-
##
|
|
80
|
+
## Verification
|
|
75
81
|
|
|
76
|
-
|
|
82
|
+
Verify the installation:
|
|
77
83
|
|
|
78
|
-
```
|
|
79
|
-
diffx
|
|
84
|
+
```python
|
|
85
|
+
import diffx
|
|
86
|
+
print("diffx available:", diffx.is_diffx_available())
|
|
87
|
+
print("Version:", diffx.__version__)
|
|
80
88
|
```
|
|
81
89
|
|
|
82
90
|
## License
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[package]
|
|
2
|
+
name = "diffx-core"
|
|
3
|
+
version.workspace = true
|
|
4
|
+
edition.workspace = true
|
|
5
|
+
authors.workspace = true
|
|
6
|
+
license.workspace = true
|
|
7
|
+
description = "Core library for diffx - blazing fast semantic diff engine for structured data. Zero-copy parsing, streaming support, memory-efficient algorithms"
|
|
8
|
+
homepage.workspace = true
|
|
9
|
+
repository.workspace = true
|
|
10
|
+
documentation.workspace = true
|
|
11
|
+
readme = "README.md"
|
|
12
|
+
keywords = ["diff", "json", "yaml", "toml", "parser"]
|
|
13
|
+
categories = ["data-structures", "parsing", "algorithms", "text-processing"]
|
|
14
|
+
exclude.workspace = true
|
|
15
|
+
rust-version.workspace = true
|
|
16
|
+
|
|
17
|
+
[dependencies]
|
|
18
|
+
anyhow = { workspace = true }
|
|
19
|
+
csv = { workspace = true }
|
|
20
|
+
configparser = { workspace = true }
|
|
21
|
+
quick-xml = { workspace = true }
|
|
22
|
+
serde = { workspace = true }
|
|
23
|
+
serde_json = { workspace = true }
|
|
24
|
+
serde_yml = { workspace = true }
|
|
25
|
+
toml = { workspace = true }
|
|
26
|
+
regex = { workspace = true }
|
|
27
|
+
|
|
28
|
+
[dev-dependencies]
|
|
29
|
+
criterion = { workspace = true }
|
|
30
|
+
tempfile = { workspace = true }
|
|
31
|
+
|
|
32
|
+
[[bench]]
|
|
33
|
+
name = "diff_benchmark"
|
|
34
|
+
harness = false
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
# diffx
|
|
2
|
+
|
|
3
|
+
> **🚀 Semantic diff for structured data - Focus on what matters, not formatting**
|
|
4
|
+
|
|
5
|
+
[English README](README.md) | [日本語版 README](README_ja.md) | [中文版 README](README_zh.md)
|
|
6
|
+
|
|
7
|
+
[](https://github.com/kako-jun/diffx/actions/workflows/ci.yml)
|
|
8
|
+
[](https://crates.io/crates/diffx)
|
|
9
|
+
[](https://docs.rs/diffx-core)
|
|
10
|
+
[](https://www.npmjs.com/package/diffx-js)
|
|
11
|
+
[](https://pypi.org/project/diffx-python/)
|
|
12
|
+
[](https://github.com/kako-jun/diffx/tree/main/docs/index.md)
|
|
13
|
+
[](https://docs.rs/diffx-core)
|
|
14
|
+
[](LICENSE)
|
|
15
|
+
|
|
16
|
+
A next-generation diff tool that understands the **structure** and **meaning** of your data, not just text changes. Perfect for JSON, YAML, TOML, XML, INI, and CSV files.
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
# Traditional diff shows formatting noise (key order, trailing commas)
|
|
20
|
+
$ diff config_v1.json config_v2.json
|
|
21
|
+
< {
|
|
22
|
+
< "name": "myapp",
|
|
23
|
+
< "version": "1.0"
|
|
24
|
+
< }
|
|
25
|
+
> {
|
|
26
|
+
> "version": "1.1",
|
|
27
|
+
> "name": "myapp"
|
|
28
|
+
> }
|
|
29
|
+
|
|
30
|
+
# diffx shows only semantic changes
|
|
31
|
+
$ diffx config_v1.json config_v2.json
|
|
32
|
+
~ version: "1.0" -> "1.1"
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## ✨ Key Features
|
|
36
|
+
|
|
37
|
+
- **🎯 Semantic Awareness**: Ignores formatting, key order, whitespace, and trailing commas
|
|
38
|
+
- **🔧 Multiple Formats**: JSON, YAML, TOML, XML, INI, CSV support
|
|
39
|
+
- **🤖 AI-Friendly**: Clean CLI output perfect for automation and AI analysis
|
|
40
|
+
- **⚡ Fast**: Built in Rust for maximum performance
|
|
41
|
+
- **🔗 Meta-Chaining**: Compare diff reports to track change evolution
|
|
42
|
+
|
|
43
|
+
## 📊 Performance
|
|
44
|
+
|
|
45
|
+
Real benchmark results on AMD Ryzen 5 PRO 4650U:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Test files: ~600 bytes JSON with nested config
|
|
49
|
+
$ time diff large_test1.json large_test2.json # Shows 15+ lines of noise
|
|
50
|
+
$ time diffx large_test1.json large_test2.json # Shows 3 semantic changes
|
|
51
|
+
|
|
52
|
+
# Results:
|
|
53
|
+
Traditional diff: ~0.002s (but with formatting noise)
|
|
54
|
+
diffx: ~0.005s (clean semantic output)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
**Why CLI matters for the AI era**: As AI tools become essential in development workflows, having structured, machine-readable diff output becomes crucial. `diffx` provides clean, parseable results that AI can understand and reason about, making it perfect for automated code review, configuration management, and intelligent deployment pipelines.
|
|
58
|
+
|
|
59
|
+
## Why diffx?
|
|
60
|
+
|
|
61
|
+
Traditional `diff` tools show you formatting noise. `diffx` shows you what actually changed.
|
|
62
|
+
|
|
63
|
+
- **Focus on meaning**: Ignores key order, whitespace, and formatting
|
|
64
|
+
- **Multiple formats**: Works with JSON, YAML, TOML, XML, INI, CSV
|
|
65
|
+
- **Clean output**: Perfect for humans, scripts, and AI analysis
|
|
66
|
+
|
|
67
|
+
## Specification
|
|
68
|
+
|
|
69
|
+
### Supported Formats
|
|
70
|
+
|
|
71
|
+
- JSON
|
|
72
|
+
- YAML
|
|
73
|
+
- TOML
|
|
74
|
+
- XML
|
|
75
|
+
- INI
|
|
76
|
+
- CSV
|
|
77
|
+
|
|
78
|
+
### Types of Differences
|
|
79
|
+
|
|
80
|
+
- Key addition/deletion
|
|
81
|
+
- Value change
|
|
82
|
+
- Array insertion/deletion/modification
|
|
83
|
+
- Nested structure differences
|
|
84
|
+
- Value type change
|
|
85
|
+
|
|
86
|
+
### Output Formats
|
|
87
|
+
|
|
88
|
+
`diffx` outputs differences in the **diffx format** by default - a semantic diff representation designed specifically for structured data. The diffx format provides the richest expression of structural differences and can be complemented with machine-readable formats for integration:
|
|
89
|
+
|
|
90
|
+
- **diffx Format (Default)**
|
|
91
|
+
|
|
92
|
+
- The **diffx format** is a human-readable, semantic diff representation that clearly displays structural differences (additions, changes, deletions, type changes, etc.) using intuitive symbols and hierarchical paths.
|
|
93
|
+
- Differences are represented by `+` (addition), `-` (deletion), `~` (change), `!` (type change) symbols with full path context (e.g., `database.connection.host`).
|
|
94
|
+
- **Core Feature**: Focuses on semantic changes in data, ignoring changes in key order, whitespace, and formatting. This semantic focus is the fundamental value of both the tool and the diffx format.
|
|
95
|
+
|
|
96
|
+
- **JSON Format**
|
|
97
|
+
|
|
98
|
+
- Machine-readable format. Used for CI/CD and integration with other programs.
|
|
99
|
+
- Differences detected by `diffx` are output as a JSON array.
|
|
100
|
+
|
|
101
|
+
- **YAML Format**
|
|
102
|
+
|
|
103
|
+
- Machine-readable format. Used for CI/CD and integration with other programs, similar to JSON.
|
|
104
|
+
- Differences detected by `diffx` are output as a YAML array.
|
|
105
|
+
|
|
106
|
+
- **diff-compatible Format (Unified Format)**
|
|
107
|
+
- Provided with the `--output unified` option.
|
|
108
|
+
- Intended for integration with `git` and existing merge tools.
|
|
109
|
+
- **Note**: This format only shows the semantic differences detected by `diffx` in traditional diff format. Changes that are not semantic differences (e.g., key order changes, whitespace changes) are not displayed. This is purely for compatibility with existing tools.
|
|
110
|
+
|
|
111
|
+
## 🏗️ Architecture
|
|
112
|
+
|
|
113
|
+
### System Overview
|
|
114
|
+
|
|
115
|
+
```mermaid
|
|
116
|
+
graph TB
|
|
117
|
+
subgraph Core["diffx-core"]
|
|
118
|
+
B[Format Parsers]
|
|
119
|
+
C[Semantic Diff Engine]
|
|
120
|
+
D[Output Formatters]
|
|
121
|
+
B --> C --> D
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
E[CLI Tool] --> Core
|
|
125
|
+
F[NPM Package] --> E
|
|
126
|
+
G[Python Package] --> E
|
|
127
|
+
|
|
128
|
+
H[JSON] --> B
|
|
129
|
+
I[YAML] --> B
|
|
130
|
+
J[TOML] --> B
|
|
131
|
+
K[XML] --> B
|
|
132
|
+
L[INI] --> B
|
|
133
|
+
M[CSV] --> B
|
|
134
|
+
|
|
135
|
+
D --> N[CLI Display]
|
|
136
|
+
D --> O[JSON Output]
|
|
137
|
+
D --> P[YAML Output]
|
|
138
|
+
D --> Q[Unified Diff]
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
### Project Structure
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
diffx/
|
|
145
|
+
├── diffx-core/ # Diff extraction library (Crate)
|
|
146
|
+
├── diffx-cli/ # CLI wrapper
|
|
147
|
+
├── tests/ # All test-related files
|
|
148
|
+
│ ├── fixtures/ # Test input data
|
|
149
|
+
│ ├── integration/ # CLI integration tests
|
|
150
|
+
│ ├── unit/ # Core library unit tests
|
|
151
|
+
│ └── output/ # Test intermediate files
|
|
152
|
+
├── docs/ # Documentation and specifications
|
|
153
|
+
└── ...
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
### Technology Stack
|
|
157
|
+
|
|
158
|
+
- **Rust** (Fast, safe, cross-platform)
|
|
159
|
+
- `serde_json`, `serde_yml`, `toml`, `configparser`, `quick-xml`, `csv` parsers
|
|
160
|
+
- `clap` (CLI argument parsing)
|
|
161
|
+
- `colored` (CLI output coloring)
|
|
162
|
+
- `similar` (Unified Format output)
|
|
163
|
+
|
|
164
|
+
## 🔗 Meta-Chaining
|
|
165
|
+
|
|
166
|
+
Compare diff reports to track how changes evolve over time:
|
|
167
|
+
|
|
168
|
+
```mermaid
|
|
169
|
+
graph LR
|
|
170
|
+
A[config_v1.json] --> D1[diffx]
|
|
171
|
+
B[config_v2.json] --> D1
|
|
172
|
+
D1 --> R1[diff_report_v1.json]
|
|
173
|
+
|
|
174
|
+
B --> D2[diffx]
|
|
175
|
+
C[config_v3.json] --> D2
|
|
176
|
+
D2 --> R2[diff_report_v2.json]
|
|
177
|
+
|
|
178
|
+
R1 --> D3[diffx]
|
|
179
|
+
R2 --> D3
|
|
180
|
+
D3 --> M[Meta-Diff Report]
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
```bash
|
|
184
|
+
$ diffx config_v1.json config_v2.json --output json > report1.json
|
|
185
|
+
$ diffx config_v2.json config_v3.json --output json > report2.json
|
|
186
|
+
$ diffx report1.json report2.json # Compare the changes themselves!
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## 🚀 Quick Start
|
|
190
|
+
|
|
191
|
+
### Installation
|
|
192
|
+
|
|
193
|
+
```bash
|
|
194
|
+
# Rust (recommended - native performance)
|
|
195
|
+
cargo install diffx
|
|
196
|
+
|
|
197
|
+
# Node.js ecosystem
|
|
198
|
+
npm install diffx-js
|
|
199
|
+
|
|
200
|
+
# Python ecosystem (🆕 self-contained wheel with embedded binary)
|
|
201
|
+
pip install diffx-python
|
|
202
|
+
|
|
203
|
+
# Or download pre-built binaries from GitHub Releases
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
For detailed usage and examples, see the [documentation](docs/index.md).
|
|
207
|
+
|
|
208
|
+
### Quick Documentation Links
|
|
209
|
+
|
|
210
|
+
- **[Getting Started](docs/user-guide/getting-started.md)** - Learn the basics
|
|
211
|
+
- **[Installation Guide](docs/user-guide/installation.md)** - Platform-specific setup
|
|
212
|
+
- **[CLI Reference](docs/reference/cli-reference.md)** - Complete command reference
|
|
213
|
+
- **[Real-World Examples](docs/user-guide/examples.md)** - Industry use cases
|
|
214
|
+
- **[Integration Guide](docs/guides/integrations.md)** - CI/CD and automation
|
|
215
|
+
|
|
216
|
+
### Basic Usage
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
# Compare JSON files
|
|
220
|
+
diffx file1.json file2.json
|
|
221
|
+
|
|
222
|
+
# Compare with different output formats
|
|
223
|
+
diffx config.yaml config_new.yaml --output json
|
|
224
|
+
diffx data.toml data_updated.toml --output yaml
|
|
225
|
+
|
|
226
|
+
# Advanced filtering options
|
|
227
|
+
diffx large.json large_v2.json --ignore-keys-regex "^timestamp$|^_.*"
|
|
228
|
+
diffx users.json users_v2.json --array-id-key "id"
|
|
229
|
+
diffx metrics.json metrics_v2.json --epsilon 0.001
|
|
230
|
+
|
|
231
|
+
# High-demand practical options
|
|
232
|
+
diffx config.yaml config_new.yaml --ignore-case # Ignore case differences
|
|
233
|
+
diffx api.json api_formatted.json --ignore-whitespace # Ignore whitespace changes
|
|
234
|
+
diffx large.json large_v2.json --context 3 --output unified # Show 3 lines of context
|
|
235
|
+
diffx file1.json file2.json --quiet && echo "Files identical" # Script automation
|
|
236
|
+
diffx dir1/ dir2/ --recursive --brief # Quick file change check
|
|
237
|
+
|
|
238
|
+
# Performance optimization for large files
|
|
239
|
+
diffx huge_dataset.json huge_dataset_v2.json
|
|
240
|
+
# Directory comparison
|
|
241
|
+
diffx config_dir1/ config_dir2/ --recursive
|
|
242
|
+
|
|
243
|
+
# Meta-chaining for change tracking
|
|
244
|
+
diffx config_v1.json config_v2.json --output json > diff1.json
|
|
245
|
+
diffx config_v2.json config_v3.json --output json > diff2.json
|
|
246
|
+
diffx diff1.json diff2.json # Compare the changes themselves!
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Integration Examples
|
|
250
|
+
|
|
251
|
+
**CI/CD Pipeline:**
|
|
252
|
+
|
|
253
|
+
```yaml
|
|
254
|
+
- name: Check configuration changes
|
|
255
|
+
run: |
|
|
256
|
+
diffx config/prod.yaml config/staging.yaml --output json > changes.json
|
|
257
|
+
# Process changes.json for deployment validation
|
|
258
|
+
|
|
259
|
+
- name: Quick file change detection
|
|
260
|
+
run: |
|
|
261
|
+
if ! diffx config/current.json config/new.json --quiet; then
|
|
262
|
+
echo "Configuration changed, triggering deployment"
|
|
263
|
+
fi
|
|
264
|
+
|
|
265
|
+
- name: Compare with ignore options for cleaner diffs
|
|
266
|
+
run: |
|
|
267
|
+
diffx api_old.json api_new.json --ignore-case --ignore-whitespace --output json > api_changes.json
|
|
268
|
+
# Focus on semantic changes, ignore formatting
|
|
269
|
+
|
|
270
|
+
- name: Compare large datasets efficiently
|
|
271
|
+
run: |
|
|
272
|
+
diffx large_prod_data.json large_staging_data.json --output json > data_changes.json
|
|
273
|
+
# Optimized processing for large files in CI
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
**Git Hook:**
|
|
277
|
+
|
|
278
|
+
```bash
|
|
279
|
+
#!/bin/bash
|
|
280
|
+
# pre-commit hook
|
|
281
|
+
if diffx package.json HEAD~1:package.json --output json | jq -e '.[] | select(.Added)' > /dev/null; then
|
|
282
|
+
echo "New dependencies detected, running security audit..."
|
|
283
|
+
fi
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
## 🌍 Multi-Language Support
|
|
287
|
+
|
|
288
|
+
diffx is available across multiple ecosystems:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
# Rust (native CLI)
|
|
292
|
+
cargo install diffx
|
|
293
|
+
|
|
294
|
+
# Node.js wrapper
|
|
295
|
+
npm install diffx-js
|
|
296
|
+
|
|
297
|
+
# Python wrapper
|
|
298
|
+
pip install diffx-python
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
All packages provide the same semantic diff capabilities with automatic binary download.
|
|
302
|
+
|
|
303
|
+
## 🔮 Future Plans
|
|
304
|
+
|
|
305
|
+
- **Interactive TUI (`diffx-tui`)**: A powerful viewer showcasing diffx capabilities with side-by-side data display
|
|
306
|
+
- **AI agent integration**: Automated diff summarization and explanation
|
|
307
|
+
- **Web UI version** (`diffx-web`)
|
|
308
|
+
- **VSCode extension** (`diffx-vscode`)
|
|
309
|
+
- **Advanced CI/CD templates**: Pre-built workflows for common use cases
|
|
310
|
+
|
|
311
|
+
## 🤝 Contributing
|
|
312
|
+
|
|
313
|
+
We welcome contributions! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
314
|
+
|
|
315
|
+
## 📄 License
|
|
316
|
+
|
|
317
|
+
MIT License - see [LICENSE](LICENSE) for details.
|