From 92e8657af61e77e041530c82af943c8ce478be4b Mon Sep 17 00:00:00 2001 From: fdosani Date: Wed, 16 Oct 2024 15:38:55 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20capitalo?= =?UTF-8?q?ne/datacompy@b1dc88616cc4d9b9f8ecd436e548b2660314d1c0=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .buildinfo | 2 +- .doctrees/api/datacompy.doctree | Bin 1049540 -> 1050952 bytes .doctrees/api/datacompy.spark.doctree | Bin 361294 -> 361294 bytes .doctrees/environment.pickle | Bin 203728 -> 203728 bytes .doctrees/index.doctree | Bin 193591 -> 193591 bytes _static/documentation_options.js | 2 +- api/datacompy.html | 14 ++++++++++---- api/datacompy.spark.html | 8 ++++---- api/modules.html | 8 ++++---- benchmark.html | 8 ++++---- developer_instructions.html | 8 ++++---- fugue_usage.html | 8 ++++---- genindex.html | 8 ++++---- index.html | 8 ++++---- install.html | 8 ++++---- objects.inv | Bin 1646 -> 1646 bytes pandas_usage.html | 8 ++++---- polars_usage.html | 8 ++++---- py-modindex.html | 8 ++++---- search.html | 8 ++++---- searchindex.js | 2 +- spark_usage.html | 8 ++++---- 22 files changed, 65 insertions(+), 59 deletions(-) diff --git a/.buildinfo b/.buildinfo index 9b9bb36..77ce989 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: c62431fe503d761093114ee9d4ed161e +config: 8eb14ef0987ca17d9dfbb8af61480095 tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/api/datacompy.doctree b/.doctrees/api/datacompy.doctree index 73b198df4a5e3bb1f8855ac55caa5ae26f2d7831..318b2ac7bc4c1d07b4f7c38b1260f5230745e5b5 100644 GIT binary patch delta 149289 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 Tv5I3{$iv^ic1%&F23h|H_tqZB delta 147724 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 a<;lYtqf8#1J@T*-!5G@}V@&*D>;D1D{48z& diff --git a/.doctrees/api/datacompy.spark.doctree b/.doctrees/api/datacompy.spark.doctree index ba7774b24d33373f314ce59026514bc09ef3a3b0..d4387b05a0e1421606affa47d2ff48a81ed98229 100644 GIT binary patch delta 2247 zcmY+GZBUd|6vyY@=RUCPvM%hxf(o%HR!XUa(?UX|V^$8h(aS(K0U0y0Au3B#Ij)F) zu(aW2WgU0$cVHymyrfs z=O?YQmQb*_l-M9tLVgjmm2pmvh1v!}G{il@>&{fLLllwa~PXq`{dPrVq*k za(O(u58W(T7%zK5s-zsYQ|HqkT)L|IYL24JF($c?~yt=N@?Ke zCx6Tk!qeXqw~B>;t27KACpJ|*1krOO88UAepX1Ibc_L9IN{&l@Bg>o`?Y&CeP;$p8 z#rLm~iShyPjv){ni~k^3bye&fBw=m9HUE%iwSy4W-zK$sN$4LT-{=_JrPPh92u+C_ zIO@=aA&^8(@aHlgY`9IlSYoGn+BzEiZxYK#mQ3G?SMAE6E*$5kp14(_9Ui(#lt#Xd z4^?bE?DWtQ+?qwZRNFA_n@rP`Aq-qOap4qtHs0dSRGNgF^XZoO1SR^ike*g$LQqyr zZBSLoj^c^g)Sjv*D>yE!p#5HrI$LNOWZy8H7_Fxj;!TJX43ltB;L3s5 z+Uc+@X0OFkpkDb?!INu&s|@_1hwfH~T8roR(t+{H4qUmh=p=1@Kq1Wdi;n)-$O>HL zp?!p|a47=>yhb(-+l^axg^;7!+JOC2jFq|}aFv0-7a9d_ZC^Iu=uFnC=6Rz~CU0#p zsT~F!7HjJlSnj$pew9bCWTpOvH|i7){XCYq+4{I4Q;DeTH3*M|1r5 zlJT)T5P>k|hA|{hOd7ayV%vaGCRU3a9aqV%2W;$uN((|t0`p)^B3q>5G4!Z|Jtyx( zrJF5>*Kd;?%uHo|u~6j5AuI5YrLdIH=}>9m)TPCmvmAw&X<+4R` zyWG`?Ba_%R)us_1n$E_7%T04dy@6P%82-pZAIB@x*ys;k^K8}vK0iyuo&x5T^)v$h z7|O7@ki9Lta^41qCes|)_!zq`*3U^%d;${}uw?YjWnF4|LFDLU+;HYqmKd3ND;1Yi zvQOnr=kp9g3^VL_ja`)YSmMCD%ms()X%DVj#SX~J66c#+`0F^hf%T<}%}MUt#uDIi zJ2lbX!)C-!L2(=I-_9<{XTUGWOK|xZv%{7zm=j(AIv=0j!~T}HRR@s=cc@z@{po0( zU_}nmQn}Lc<#Q}GMWbQEbYt%|_T7C7AxFV{rQpyE^X^!Yj`;=Vki5>he)CtkPyVq2 z8=f==<&b2n?t0UKUssuH<)aV?IdaM6@jn#>*w||NySiV)OrKL!tj-yU97)-?&4o-IOW$#`5_WXb6f6lr0 z+%6gb-cN2C)L#OAlhj%j>>`Vc7OOj@aE=nuSf$M>ugD<^Sh33D7vmxv_3iRl z9ozF%ZrJkeTBAiYh_>izE5*8hPov5YYv|dxG)315V!D-du*19uWFKxy(qQnY2b%Lp znl<6r?u3m~tK!Eu#@d|G!{=?$o?d2Eo;@|zDFaqdZ%DhXRaX`!R=es-rd5BveoV@s zH`=k?X;t?ZXqPoOn5{&s6&Wf~8*7b5hHOw%#az}Cw+6=Xbt9kbX3-0Oc92}vGy=i# z#EC21q(&p;=mXXFEvU~W4&-}%N;Qh3;sVlrkITg1G%{C}kuDQBO2u418IjhOa?*%v z1EfvX5(@T~5gUX{$uDBIGS0~nu@B@bN2P^ucrMwh(n84Q6H6_q4w@H`3^+5x^g%_C zTo9G`ZsT~G-+TtIK1|nV;BU-l0V2*T@^bANkkiP^*^LV?I4T|w@IB|5(Y-dH#!D)DRtvYLemlk zjyCGT5KN&a1oD{=*54*xEVa`DZ5<8%H;EM@OQr85s&-{j7mjmNPr@qE4iDWVN+aLK zhbp!Xc6w+jZq1=xs%-@KO{N*j5CN{7xL^uBn`m)oDow%7g>*||f)agML{Fj z9dy_hx7T4AP_O){;K_BsRTloxLwBn~t;6$s>A-kp2d>;$e3G_3pb%#LMMr;ZWCgAY z&^|(!yOaTfULzNW?Zz#;LdelTpgS#O#Gu6Pj(yC@<62O++<8C7qKHFMl*Ev8ZKx&PRejupJA8d(H#H1 zWPB_SL?BGNVGPL=lLoGw*gjyCi`61W$5nFM0UNuZ(n64y#5`D=%oeJ696jP-&&fMc z@ZWpBb+`D~%w zE_XHI$RxH+wP}Kfrn7P2a?^ZKZy;VOjz99y$MDKDHu^)?GMlx6FTj$q$Ira7o<_hQ zLpin-vA1Pc&fDS8WSR#X9%a|X`Z+01Okm=CmWsYPtV>NVgdCkr7|y)PlA|+krQ_l% z_Nlz-e4ZhQV}=`FV;AK;mN@t>bHSko+JkFXvIFw6B>3i5{yGk>XMLGsbCUbEu_U83 zuPh2d=vs9M=rTM{-?r^eXZtxxjFF<2>ux{i{xSQ7g~$$ZRY4z W;dwPUt39qn9`L+Eyt&3)ME(c+ZNNkT diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle index 99f4913bd5118a789c419b6d5b5b6fcdf893bbc5..0ea6ce8095a29a5efae187344fc04e8eda298d93 100644 GIT binary patch delta 9799 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 delta 9178 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 DpX0~p diff --git a/_static/documentation_options.js b/_static/documentation_options.js index e2ba211..9242cb8 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -1,5 +1,5 @@ const DOCUMENTATION_OPTIONS = { - VERSION: '0.13.3', + VERSION: '0.14.0', LANGUAGE: 'en', COLLAPSE_INDEX: false, BUILDER: 'html', diff --git a/api/datacompy.html b/api/datacompy.html index 1c8d422..dfe06df 100644 --- a/api/datacompy.html +++ b/api/datacompy.html @@ -6,7 +6,7 @@ - datacompy package - datacompy 0.13.3 documentation + datacompy package - datacompy 0.14.0 documentation @@ -166,7 +166,7 @@

+
diff --git a/developer_instructions.html b/developer_instructions.html index 8f09cad..f3998a7 100644 --- a/developer_instructions.html +++ b/developer_instructions.html @@ -6,7 +6,7 @@ - Developer Instructions - datacompy 0.13.3 documentation + Developer Instructions - datacompy 0.14.0 documentation @@ -166,7 +166,7 @@
+
diff --git a/index.html b/index.html index 2965479..49687b3 100644 --- a/index.html +++ b/index.html @@ -6,7 +6,7 @@ - datacompy 0.13.3 documentation + datacompy 0.14.0 documentation @@ -166,7 +166,7 @@
@@ -188,7 +188,7 @@ -
+
diff --git a/search.html b/search.html index e26015f..07d1d92 100644 --- a/search.html +++ b/search.html @@ -7,7 +7,7 @@ -Search - datacompy 0.13.3 documentation +Search - datacompy 0.14.0 documentation @@ -166,7 +166,7 @@
diff --git a/searchindex.js b/searchindex.js index 65bf8cb..de8c2b4 100644 --- a/searchindex.js +++ b/searchindex.js @@ -1 +1 @@ -Search.setIndex({"alltitles": {"API Reference": [[6, null]], "Basic Usage": [[5, "basic-usage"], [9, "basic-usage"]], "Benchmarks": [[3, null]], "Caveats": [[8, "caveats"]], "Caveats and Limitations": [[9, "caveats-and-limitations"]], "Compare Object Setup": [[8, "compare-object-setup"], [9, "compare-object-setup"]], "Contents": [[6, "contents"]], "Contributors": [[6, "contributors"]], "Convenience Methods": [[8, "convenience-methods"], [9, "convenience-methods"], [10, "convenience-methods"]], "Cross Comparing": [[5, "cross-comparing"]], "DataComPy": [[6, null]], "Developer Instructions": [[4, null]], "Duplicate rows": [[8, "duplicate-rows"], [9, "duplicate-rows"], [10, "duplicate-rows"]], "Fugue Detail": [[5, null]], "Future releases": [[5, "future-releases"]], "Generating Documentation": [[4, "generating-documentation"]], "Generating distribution archives (PyPI)": [[4, "generating-distribution-archives-pypi"]], "How it works": [[5, "how-it-works"]], "Indices and tables": [[6, "indices-and-tables"]], "Installation": [[7, null]], "Installing extras": [[6, "installing-extras"]], "Legacy Spark Deprecation": [[6, "legacy-spark-deprecation"]], "Limitations": [[8, "limitations"]], "Management of Requirements": [[4, "management-of-requirements"]], "Module contents": [[0, "module-datacompy"], [1, "module-datacompy.spark"]], "Overview": [[8, "overview"], [9, "overview"]], "Pandas Usage": [[8, null]], "Polars Usage": [[9, null]], "Pre-Commit Hooks": [[4, "pre-commit-hooks"]], "PyPI (basic)": [[7, "pypi-basic"]], "Quick Installation": [[6, "quick-installation"]], "Release Guide": [[4, "release-guide"]], "Reports": [[8, "reports"], [9, "reports"], [10, "reports"]], "Roadmap": [[6, "roadmap"]], "Run unit tests": [[4, "run-unit-tests"]], "Setup used": [[3, "setup-used"]], "Spark Usage": [[10, null]], "SparkPandasCompare and SparkSQLCompare Object Setup": [[10, "sparkpandascompare-and-sparksqlcompare-object-setup"]], "Submodules": [[0, "submodules"], [1, "submodules"]], "Subpackages": [[0, "subpackages"]], "Supported Version": [[10, "supported-version"]], "Supported backends": [[6, "supported-backends"]], "Supported versions and dependncies": [[6, "supported-versions-and-dependncies"]], "TLDR": [[3, "tldr"]], "The Data": [[3, "the-data"]], "conda (installs dependencies from Conda Forge)": [[7, "conda-installs-dependencies-from-conda-forge"]], "datacompy": [[2, null]], "datacompy package": [[0, null]], "datacompy.base module": [[0, "module-datacompy.base"]], "datacompy.core module": [[0, "module-datacompy.core"]], "datacompy.fugue module": [[0, "module-datacompy.fugue"]], "datacompy.polars module": [[0, "module-datacompy.polars"]], "datacompy.spark package": [[1, null]], "datacompy.spark.legacy module": [[1, "module-datacompy.spark.legacy"]], "datacompy.spark.pandas module": [[1, "module-datacompy.spark.pandas"]], "datacompy.spark.sql module": [[1, "module-datacompy.spark.sql"]], "edgetest": [[4, "edgetest"]], "virtualenv (install dependencies from PyPI)": [[7, "virtualenv-install-dependencies-from-pypi"]]}, "docnames": ["api/datacompy", "api/datacompy.spark", "api/modules", "benchmark", "developer_instructions", "fugue_usage", "index", "install", "pandas_usage", "polars_usage", "spark_usage"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/datacompy.rst", "api/datacompy.spark.rst", "api/modules.rst", "benchmark.rst", "developer_instructions.rst", "fugue_usage.rst", "index.rst", "install.rst", "pandas_usage.rst", "polars_usage.rst", "spark_usage.rst"], "indexentries": {"all_columns_match() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.all_columns_match", false]], "all_columns_match() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.all_columns_match", false]], "all_columns_match() (datacompy.compare method)": [[0, "datacompy.Compare.all_columns_match", false]], "all_columns_match() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.all_columns_match", false]], "all_columns_match() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.all_columns_match", false]], "all_columns_match() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.all_columns_match", false]], "all_columns_match() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.all_columns_match", false]], "all_columns_match() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.all_columns_match", false]], "all_columns_match() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.all_columns_match", false]], "all_columns_match() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.all_columns_match", false]], "all_columns_match() (in module datacompy)": [[0, "datacompy.all_columns_match", false]], "all_columns_match() (in module datacompy.fugue)": [[0, "datacompy.fugue.all_columns_match", false]], "all_mismatch() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.all_mismatch", false]], "all_mismatch() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.all_mismatch", false]], "all_mismatch() (datacompy.compare method)": [[0, "datacompy.Compare.all_mismatch", false]], "all_mismatch() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.all_mismatch", false]], "all_mismatch() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.all_mismatch", false]], "all_mismatch() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.all_mismatch", false]], "all_mismatch() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.all_mismatch", false]], "all_mismatch() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.all_mismatch", false]], "all_mismatch() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.all_mismatch", false]], "all_mismatch() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.all_mismatch", false]], "all_rows_overlap() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.compare method)": [[0, "datacompy.Compare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.all_rows_overlap", false]], "all_rows_overlap() (in module datacompy)": [[0, "datacompy.all_rows_overlap", false]], "all_rows_overlap() (in module datacompy.fugue)": [[0, "datacompy.fugue.all_rows_overlap", false]], "base_row_count (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.base_row_count", false]], "basecompare (class in datacompy)": [[0, "datacompy.BaseCompare", false]], "basecompare (class in datacompy.base)": [[0, "datacompy.base.BaseCompare", false]], "calculate_max_diff() (in module datacompy)": [[0, "datacompy.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.core)": [[0, "datacompy.core.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.polars)": [[0, "datacompy.polars.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.calculate_max_diff", false]], "calculate_null_diff() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.calculate_null_diff", false]], "columns_compared (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_compared", false]], "columns_equal() (in module datacompy)": [[0, "datacompy.columns_equal", false]], "columns_equal() (in module datacompy.core)": [[0, "datacompy.core.columns_equal", false]], "columns_equal() (in module datacompy.polars)": [[0, "datacompy.polars.columns_equal", false]], "columns_equal() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.columns_equal", false]], "columns_equal() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.columns_equal", false]], "columns_in_both (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_in_both", false]], "columns_only_base (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_only_base", false]], "columns_only_compare (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_only_compare", false]], "common_row_count (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.common_row_count", false]], "compare (class in datacompy)": [[0, "datacompy.Compare", false]], "compare (class in datacompy.core)": [[0, "datacompy.core.Compare", false]], "compare_row_count (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.compare_row_count", false]], "compare_string_and_date_columns() (in module datacompy)": [[0, "datacompy.compare_string_and_date_columns", false]], "compare_string_and_date_columns() (in module datacompy.core)": [[0, "datacompy.core.compare_string_and_date_columns", false]], "compare_string_and_date_columns() (in module datacompy.polars)": [[0, "datacompy.polars.compare_string_and_date_columns", false]], "compare_string_and_date_columns() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.compare_string_and_date_columns", false]], "count_matching_rows() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.compare method)": [[0, "datacompy.Compare.count_matching_rows", false]], "count_matching_rows() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.count_matching_rows", false]], "count_matching_rows() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.count_matching_rows", false]], "count_matching_rows() (in module datacompy)": [[0, "datacompy.count_matching_rows", false]], "count_matching_rows() (in module datacompy.fugue)": [[0, "datacompy.fugue.count_matching_rows", false]], "datacompy": [[0, "module-datacompy", false]], "datacompy.base": [[0, "module-datacompy.base", false]], "datacompy.core": [[0, "module-datacompy.core", false]], "datacompy.fugue": [[0, "module-datacompy.fugue", false]], "datacompy.polars": [[0, "module-datacompy.polars", false]], "datacompy.spark": [[1, "module-datacompy.spark", false]], "datacompy.spark.legacy": [[1, "module-datacompy.spark.legacy", false]], "datacompy.spark.pandas": [[1, "module-datacompy.spark.pandas", false]], "datacompy.spark.sql": [[1, "module-datacompy.spark.sql", false]], "decimal_comparator() (in module datacompy.spark.legacy)": [[1, "datacompy.spark.legacy.decimal_comparator", false]], "decimal_comparator() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.decimal_comparator", false]], "df1 (datacompy.base.basecompare property)": [[0, "datacompy.base.BaseCompare.df1", false]], "df1 (datacompy.basecompare property)": [[0, "datacompy.BaseCompare.df1", false]], "df1 (datacompy.compare property)": [[0, "datacompy.Compare.df1", false]], "df1 (datacompy.core.compare property)": [[0, "datacompy.core.Compare.df1", false]], "df1 (datacompy.polars.polarscompare property)": [[0, "datacompy.polars.PolarsCompare.df1", false]], "df1 (datacompy.polarscompare property)": [[0, "datacompy.PolarsCompare.df1", false]], "df1 (datacompy.spark.pandas.sparkpandascompare property)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df1", false]], "df1 (datacompy.spark.sql.sparksqlcompare property)": [[1, "datacompy.spark.sql.SparkSQLCompare.df1", false]], "df1 (datacompy.sparkpandascompare property)": [[0, "datacompy.SparkPandasCompare.df1", false]], "df1 (datacompy.sparksqlcompare property)": [[0, "datacompy.SparkSQLCompare.df1", false]], "df1_unq_columns() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.compare method)": [[0, "datacompy.Compare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.df1_unq_columns", false]], "df2 (datacompy.base.basecompare property)": [[0, "datacompy.base.BaseCompare.df2", false]], "df2 (datacompy.basecompare property)": [[0, "datacompy.BaseCompare.df2", false]], "df2 (datacompy.compare property)": [[0, "datacompy.Compare.df2", false]], "df2 (datacompy.core.compare property)": [[0, "datacompy.core.Compare.df2", false]], "df2 (datacompy.polars.polarscompare property)": [[0, "datacompy.polars.PolarsCompare.df2", false]], "df2 (datacompy.polarscompare property)": [[0, "datacompy.PolarsCompare.df2", false]], "df2 (datacompy.spark.pandas.sparkpandascompare property)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df2", false]], "df2 (datacompy.spark.sql.sparksqlcompare property)": [[1, "datacompy.spark.sql.SparkSQLCompare.df2", false]], "df2 (datacompy.sparkpandascompare property)": [[0, "datacompy.SparkPandasCompare.df2", false]], "df2 (datacompy.sparksqlcompare property)": [[0, "datacompy.SparkSQLCompare.df2", false]], "df2_unq_columns() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.compare method)": [[0, "datacompy.Compare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.df2_unq_columns", false]], "generate_id_within_group() (in module datacompy)": [[0, "datacompy.generate_id_within_group", false]], "generate_id_within_group() (in module datacompy.core)": [[0, "datacompy.core.generate_id_within_group", false]], "generate_id_within_group() (in module datacompy.polars)": [[0, "datacompy.polars.generate_id_within_group", false]], "generate_id_within_group() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.generate_id_within_group", false]], "get_merged_columns() (in module datacompy)": [[0, "datacompy.get_merged_columns", false]], "get_merged_columns() (in module datacompy.core)": [[0, "datacompy.core.get_merged_columns", false]], "get_merged_columns() (in module datacompy.polars)": [[0, "datacompy.polars.get_merged_columns", false]], "get_merged_columns() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.get_merged_columns", false]], "get_merged_columns() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.get_merged_columns", false]], "intersect_columns() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.intersect_columns", false]], "intersect_columns() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.intersect_columns", false]], "intersect_columns() (datacompy.compare method)": [[0, "datacompy.Compare.intersect_columns", false]], "intersect_columns() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.intersect_columns", false]], "intersect_columns() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.intersect_columns", false]], "intersect_columns() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.intersect_columns", false]], "intersect_columns() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.intersect_columns", false]], "intersect_columns() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.intersect_columns", false]], "intersect_columns() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.intersect_columns", false]], "intersect_columns() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.intersect_columns", false]], "intersect_columns() (in module datacompy)": [[0, "datacompy.intersect_columns", false]], "intersect_columns() (in module datacompy.fugue)": [[0, "datacompy.fugue.intersect_columns", false]], "intersect_rows_match() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.compare method)": [[0, "datacompy.Compare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.intersect_rows_match", false]], "is_match() (in module datacompy)": [[0, "datacompy.is_match", false]], "is_match() (in module datacompy.fugue)": [[0, "datacompy.fugue.is_match", false]], "known_difference (datacompy.spark.legacy.matchtype attribute)": [[1, "datacompy.spark.legacy.MatchType.KNOWN_DIFFERENCE", false]], "legacysparkcompare (class in datacompy.spark.legacy)": [[1, "datacompy.spark.legacy.LegacySparkCompare", false]], "match (datacompy.spark.legacy.matchtype attribute)": [[1, "datacompy.spark.legacy.MatchType.MATCH", false]], "matches() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.matches", false]], "matches() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.matches", false]], "matches() (datacompy.compare method)": [[0, "datacompy.Compare.matches", false]], "matches() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.matches", false]], "matches() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.matches", false]], "matches() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.matches", false]], "matches() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.matches", false]], "matches() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.matches", false]], "matches() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.matches", false]], "matches() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.matches", false]], "matchtype (class in datacompy.spark.legacy)": [[1, "datacompy.spark.legacy.MatchType", false]], "mismatch (datacompy.spark.legacy.matchtype attribute)": [[1, "datacompy.spark.legacy.MatchType.MISMATCH", false]], "module": [[0, "module-datacompy", false], [0, "module-datacompy.base", false], [0, "module-datacompy.core", false], [0, "module-datacompy.fugue", false], [0, "module-datacompy.polars", false], [1, "module-datacompy.spark", false], [1, "module-datacompy.spark.legacy", false], [1, "module-datacompy.spark.pandas", false], [1, "module-datacompy.spark.sql", false]], "polarscompare (class in datacompy)": [[0, "datacompy.PolarsCompare", false]], "polarscompare (class in datacompy.polars)": [[0, "datacompy.polars.PolarsCompare", false]], "render() (in module datacompy)": [[0, "datacompy.render", false]], "render() (in module datacompy.core)": [[0, "datacompy.core.render", false]], "render() (in module datacompy.polars)": [[0, "datacompy.polars.render", false]], "render() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.render", false]], "render() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.render", false]], "report() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.report", false]], "report() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.report", false]], "report() (datacompy.compare method)": [[0, "datacompy.Compare.report", false]], "report() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.report", false]], "report() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.report", false]], "report() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.report", false]], "report() (datacompy.spark.legacy.legacysparkcompare method)": [[1, "datacompy.spark.legacy.LegacySparkCompare.report", false]], "report() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.report", false]], "report() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.report", false]], "report() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.report", false]], "report() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.report", false]], "report() (in module datacompy)": [[0, "datacompy.report", false]], "report() (in module datacompy.fugue)": [[0, "datacompy.fugue.report", false]], "rows_both_all (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_both_all", false]], "rows_both_mismatch (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_both_mismatch", false]], "rows_only_base (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_only_base", false]], "rows_only_compare (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_only_compare", false]], "sample_mismatch() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.compare method)": [[0, "datacompy.Compare.sample_mismatch", false]], "sample_mismatch() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.sample_mismatch", false]], "sample_mismatch() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.sample_mismatch", false]], "sparkpandascompare (class in datacompy)": [[0, "datacompy.SparkPandasCompare", false]], "sparkpandascompare (class in datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.SparkPandasCompare", false]], "sparksqlcompare (class in datacompy)": [[0, "datacompy.SparkSQLCompare", false]], "sparksqlcompare (class in datacompy.spark.sql)": [[1, "datacompy.spark.sql.SparkSQLCompare", false]], "subset() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.subset", false]], "subset() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.subset", false]], "subset() (datacompy.compare method)": [[0, "datacompy.Compare.subset", false]], "subset() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.subset", false]], "subset() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.subset", false]], "subset() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.subset", false]], "subset() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.subset", false]], "subset() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.subset", false]], "subset() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.subset", false]], "subset() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.subset", false]], "temp_column_name() (in module datacompy)": [[0, "datacompy.temp_column_name", false]], "temp_column_name() (in module datacompy.base)": [[0, "datacompy.base.temp_column_name", false]], "unq_columns() (in module datacompy)": [[0, "datacompy.unq_columns", false]], "unq_columns() (in module datacompy.fugue)": [[0, "datacompy.fugue.unq_columns", false]]}, "objects": {"": [[0, 0, 0, "-", "datacompy"]], "datacompy": [[0, 1, 1, "", "BaseCompare"], [0, 1, 1, "", "Compare"], [0, 1, 1, "", "PolarsCompare"], [0, 1, 1, "", "SparkPandasCompare"], [0, 1, 1, "", "SparkSQLCompare"], [0, 4, 1, "", "all_columns_match"], [0, 4, 1, "", "all_rows_overlap"], [0, 0, 0, "-", "base"], [0, 4, 1, "", "calculate_max_diff"], [0, 4, 1, "", "columns_equal"], [0, 4, 1, "", "compare_string_and_date_columns"], [0, 0, 0, "-", "core"], [0, 4, 1, "", "count_matching_rows"], [0, 0, 0, "-", "fugue"], [0, 4, 1, "", "generate_id_within_group"], [0, 4, 1, "", "get_merged_columns"], [0, 4, 1, "", "intersect_columns"], [0, 4, 1, "", "is_match"], [0, 0, 0, "-", "polars"], [0, 4, 1, "", "render"], [0, 4, 1, "", "report"], [1, 0, 0, "-", "spark"], [0, 4, 1, "", "temp_column_name"], [0, 4, 1, "", "unq_columns"]], "datacompy.BaseCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.Compare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.PolarsCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.SparkPandasCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.SparkSQLCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.base": [[0, 1, 1, "", "BaseCompare"], [0, 4, 1, "", "temp_column_name"]], "datacompy.base.BaseCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.core": [[0, 1, 1, "", "Compare"], [0, 4, 1, "", "calculate_max_diff"], [0, 4, 1, "", "columns_equal"], [0, 4, 1, "", "compare_string_and_date_columns"], [0, 4, 1, "", "generate_id_within_group"], [0, 4, 1, "", "get_merged_columns"], [0, 4, 1, "", "render"]], "datacompy.core.Compare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.fugue": [[0, 4, 1, "", "all_columns_match"], [0, 4, 1, "", "all_rows_overlap"], [0, 4, 1, "", "count_matching_rows"], [0, 4, 1, "", "intersect_columns"], [0, 4, 1, "", "is_match"], [0, 4, 1, "", "report"], [0, 4, 1, "", "unq_columns"]], "datacompy.polars": [[0, 1, 1, "", "PolarsCompare"], [0, 4, 1, "", "calculate_max_diff"], [0, 4, 1, "", "columns_equal"], [0, 4, 1, "", "compare_string_and_date_columns"], [0, 4, 1, "", "generate_id_within_group"], [0, 4, 1, "", "get_merged_columns"], [0, 4, 1, "", "render"]], "datacompy.polars.PolarsCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.spark": [[1, 0, 0, "-", "legacy"], [1, 0, 0, "-", "pandas"], [1, 0, 0, "-", "sql"]], "datacompy.spark.legacy": [[1, 1, 1, "", "LegacySparkCompare"], [1, 1, 1, "", "MatchType"], [1, 4, 1, "", "decimal_comparator"]], "datacompy.spark.legacy.LegacySparkCompare": [[1, 3, 1, "", "base_row_count"], [1, 3, 1, "", "columns_compared"], [1, 3, 1, "", "columns_in_both"], [1, 3, 1, "", "columns_only_base"], [1, 3, 1, "", "columns_only_compare"], [1, 3, 1, "", "common_row_count"], [1, 3, 1, "", "compare_row_count"], [1, 2, 1, "", "report"], [1, 3, 1, "", "rows_both_all"], [1, 3, 1, "", "rows_both_mismatch"], [1, 3, 1, "", "rows_only_base"], [1, 3, 1, "", "rows_only_compare"]], "datacompy.spark.legacy.MatchType": [[1, 5, 1, "", "KNOWN_DIFFERENCE"], [1, 5, 1, "", "MATCH"], [1, 5, 1, "", "MISMATCH"]], "datacompy.spark.pandas": [[1, 1, 1, "", "SparkPandasCompare"], [1, 4, 1, "", "calculate_max_diff"], [1, 4, 1, "", "columns_equal"], [1, 4, 1, "", "compare_string_and_date_columns"], [1, 4, 1, "", "generate_id_within_group"], [1, 4, 1, "", "get_merged_columns"], [1, 4, 1, "", "render"]], "datacompy.spark.pandas.SparkPandasCompare": [[1, 2, 1, "", "all_columns_match"], [1, 2, 1, "", "all_mismatch"], [1, 2, 1, "", "all_rows_overlap"], [1, 2, 1, "", "count_matching_rows"], [1, 3, 1, "", "df1"], [1, 2, 1, "", "df1_unq_columns"], [1, 3, 1, "", "df2"], [1, 2, 1, "", "df2_unq_columns"], [1, 2, 1, "", "intersect_columns"], [1, 2, 1, "", "intersect_rows_match"], [1, 2, 1, "", "matches"], [1, 2, 1, "", "report"], [1, 2, 1, "", "sample_mismatch"], [1, 2, 1, "", "subset"]], "datacompy.spark.sql": [[1, 1, 1, "", "SparkSQLCompare"], [1, 4, 1, "", "calculate_max_diff"], [1, 4, 1, "", "calculate_null_diff"], [1, 4, 1, "", "columns_equal"], [1, 4, 1, "", "decimal_comparator"], [1, 4, 1, "", "get_merged_columns"], [1, 4, 1, "", "render"]], "datacompy.spark.sql.SparkSQLCompare": [[1, 2, 1, "", "all_columns_match"], [1, 2, 1, "", "all_mismatch"], [1, 2, 1, "", "all_rows_overlap"], [1, 2, 1, "", "count_matching_rows"], [1, 3, 1, "", "df1"], [1, 2, 1, "", "df1_unq_columns"], [1, 3, 1, "", "df2"], [1, 2, 1, "", "df2_unq_columns"], [1, 2, 1, "", "intersect_columns"], [1, 2, 1, "", "intersect_rows_match"], [1, 2, 1, "", "matches"], [1, 2, 1, "", "report"], [1, 2, 1, "", "sample_mismatch"], [1, 2, 1, "", "subset"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"], "4": ["py", "function", "Python function"], "5": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property", "4": "py:function", "5": "py:attribute"}, "terms": {"": [0, 1, 6, 8, 9, 10], "0": [0, 1, 3, 4, 5, 6, 8, 9, 10], "000": [3, 8, 9, 10], "0000": [8, 9, 10], "0001": [8, 9], "0005": [8, 9, 10], "01": [5, 8, 9, 10], "025": 3, "041": 3, "05": [5, 8, 9, 10], "0500": [8, 9, 10], "0701": 3, "1": [0, 1, 3, 4, 5, 6, 8, 9, 10], "10": [0, 1, 3, 5, 6, 8, 9, 10], "100": [1, 3], "1000": 3, "10000001234": [5, 8, 9, 10], "10000001235": [5, 8, 9, 10], "10000001236": [5, 8, 9, 10], "10000001237": [5, 8, 9, 10], "10000001238": [5, 8, 9, 10], "10000001239": [5, 10], "109": 3, "11": [3, 6, 9], "111": [5, 8, 9, 10], "1113": 3, "12": [5, 6, 7, 8, 9, 10], "120": 3, "123": [5, 8, 9, 10], "123456": [5, 8, 9, 10], "1257": 3, "127": 3, "13": [6, 10], "130": 3, "1345": [5, 8, 9, 10], "14530": [5, 8, 9, 10], "15": 3, "155": [5, 8, 9, 10], "1555": [5, 8, 9, 10], "16": 3, "17": 3, "175": 3, "18": 3, "193": 3, "194": 3, "196": 3, "2": [0, 1, 3, 6, 8, 9, 10], "20": 3, "2017": [5, 8, 9, 10], "21": 4, "2185": 3, "234": 3, "262": 3, "2763": 3, "2838": 3, "3": [3, 4, 6, 7, 8, 9, 10], "304": 3, "31": 3, "3112": 3, "3204": 3, "32gb": 3, "330": 3, "345": [5, 8, 9, 10], "4": [5, 6, 8, 9, 10], "44101": 10, "45": [5, 8, 9, 10], "455": 3, "47": 3, "494": 3, "5": [4, 6, 8, 9, 10], "50": 3, "500": 3, "560": 3, "57": 3, "5735": 3, "578": 3, "6": [3, 4, 8, 9, 10], "6094": 3, "62": 3, "6274": 3, "64gb": 3, "7": [4, 8], "743": 3, "8": [1, 3, 9], "804": 3, "827": 3, "9": [6, 7], "90": 3, "94": 3, "96": 3, "9814": 3, "A": [0, 1, 4, 7, 8, 9, 10], "And": [8, 10], "As": 9, "At": 6, "By": [1, 6], "For": [4, 5, 8, 9, 10], "If": [0, 1, 3, 6, 7, 8, 10], "In": [4, 5, 8], "It": [3, 4, 8, 10], "No": 10, "OR": [8, 9], "The": [0, 1, 4, 5, 6, 8, 9, 10], "Then": [0, 4, 6], "There": [8, 9, 10], "To": [6, 10], "Will": [0, 1], "With": [5, 6, 10], "_df1": [0, 1], "_io": 1, "_merge_left": 10, "_merge_right": 10, "_temp_x": 0, "ab": [0, 1], "abc": 0, "abl": 3, "about": [4, 8], "abov": [4, 6, 7, 8, 9, 10], "abs_tol": [0, 1, 5, 8, 9, 10], "absolut": [0, 1, 8, 9, 10], "abstract": 0, "accept": [6, 10], "access": 5, "acct_id": [5, 8, 9, 10], "acct_id_df1": 10, "acct_id_df2": 10, "accur": [0, 6], "achiev": 5, "across": [5, 6], "action": 4, "activ": [4, 7], "actual": [0, 1], "ad": [0, 1, 4], "add": 7, "addit": 4, "adher": 6, "adopt": 5, "after": [4, 8, 9, 10], "again": [8, 10], "against": 1, "aggreg": 5, "agreement": 6, "align": [6, 10], "all": [0, 1, 4, 6, 7, 8, 9, 10], "all_columns_match": [0, 1, 2, 5, 6], "all_mismatch": [0, 1, 2], "all_rows_overlap": [0, 1, 2, 5, 6], "allow": [0, 1], "alreadi": [1, 8], "also": [1, 4, 5, 6, 8, 9, 10], "alwai": 3, "amount": [0, 1, 3], "an": [0, 1, 3, 9], "ani": [0, 1, 4, 6, 8, 9, 10], "anoth": [0, 1], "anydatafram": 0, "apach": [9, 10], "api": [4, 10], "apidoc": 4, "append": [0, 1], "appli": [0, 1], "appreci": 6, "ar": [0, 1, 4, 5, 6, 7, 8, 9, 10], "archiv": 6, "arr1": 8, "arr2": 8, "arrow": [5, 6, 9], "artifact": 4, "ask": 6, "assert_almost_equ": 8, "assert_array_equ": 8, "assert_frame_equ": 8, "assert_series_equ": 8, "attempt": [0, 1], "attribut": 10, "autom": 4, "automag": [0, 1], "automat": 4, "avail": [8, 9, 10], "awar": 9, "b": 1, "back": 4, "backend": 5, "background": 5, "base": [1, 2, 3, 4, 5, 6, 8], "base_column_nam": 1, "base_df": 1, "base_row_count": [0, 1], "basecompar": [0, 1, 2, 6], "basi": 1, "basic": [0, 1, 6], "been": [6, 8, 9, 10], "befor": [0, 1, 4, 6, 8, 10], "behaviour": [6, 9, 10], "behind": [4, 8, 10], "being": [1, 4], "below": [4, 6], "benchmark": 6, "benefit": 5, "best": 3, "better": [6, 10], "between": [0, 1, 8], "bias": 3, "bin": 7, "black": 4, "bluth": [5, 8, 9, 10], "bob": [5, 8, 9, 10], "bool": [0, 1, 9], "boolean": [0, 1], "both": [0, 1, 10], "boto3": 4, "branch": 4, "break": 4, "brows": 10, "build": 4, "builder": [5, 10], "c": 4, "cach": 1, "cache_intermedi": 1, "calculate_max_diff": [0, 1, 2, 6], "calculate_null_diff": [0, 1], "call": [8, 9, 10], "can": [0, 1, 3, 4, 5, 6, 8, 9, 10], "canon": 1, "capabl": 8, "carri": [0, 6], "case": [0, 1, 5], "cast": [0, 1], "cast_column_names_low": [0, 1], "caus": 1, "caveat": 6, "certain": 1, "chang": 4, "channel": 7, "check": [0, 1, 8], "checkout": 4, "choic": 8, "chunk": 5, "cla": 6, "class": [0, 1, 5, 6, 8, 10], "clean": 4, "coars": 5, "code": [4, 5, 6, 9], "cogroup": 5, "col_1": [0, 1], "col_2": [0, 1], "col_match": 1, "collaps": 4, "collect": 4, "column": [0, 1, 3, 5, 8, 9, 10], "column_count": [0, 1], "column_map": 1, "columnar": 9, "columns_compar": [0, 1], "columns_equ": [0, 1, 2, 6], "columns_in_both": [0, 1], "columns_map": 1, "columns_only_bas": [0, 1], "columns_only_compar": [0, 1], "combin": [8, 10], "come": [4, 8, 9], "command": [0, 1, 4], "commit": 6, "common": [1, 8, 9, 10], "common_row_count": [0, 1], "commun": [4, 5], "compar": [0, 1, 2, 3, 6, 10], "compare_column_nam": 1, "compare_df": 1, "compare_row_count": [0, 1], "compare_string_and_date_column": [0, 1, 2, 6], "comparin": 1, "comparison": [0, 1, 5, 8, 9, 10], "compat": [5, 6], "compris": 1, "conda": 6, "conduct": 6, "config": 7, "configur": 4, "consid": [0, 1, 9], "consist": [1, 3, 5, 6, 10], "constraint": 8, "contain": [0, 1, 8], "content": 2, "contribut": [3, 6], "control": [0, 1], "conveni": 6, "convent": 1, "convert": [0, 1, 8], "core": [2, 3, 4, 6], "correspond": [4, 5], "could": 8, "count": [0, 1], "count_matching_row": [0, 1, 2, 6], "cpu": 3, "creat": [0, 1, 3, 7], "createdatafram": [5, 10], "creation": [0, 1], "cross": 6, "current": [6, 8, 10], "dai": 4, "dask": [5, 6], "data": [1, 5, 6, 8], "data1": [5, 8, 9, 10], "data2": [5, 8, 9, 10], "datacompi": [4, 5, 7, 8, 9, 10], "datacompy_nul": 8, "datafram": [0, 1, 3, 5, 6, 8, 9, 10], "dataset": [1, 3, 5, 8], "date": [0, 1, 4], "date_fld": [5, 8, 9, 10], "date_fld_df1": 10, "de": 1, "decim": [0, 1], "decimal_compar": [0, 1], "decis": 4, "dedup": 1, "dedupl": [0, 1], "default": [0, 1, 4, 5, 10], "defin": [1, 4], "denot": [1, 4], "depend": [4, 5, 6], "deprec": [5, 10], "describ": [1, 8], "detail": [4, 6], "dev": 4, "develop": 6, "df1": [0, 1, 2, 5, 8, 9, 10], "df1_name": [0, 1, 5, 8, 9, 10], "df1_unq_column": [0, 1, 2, 8, 9, 10], "df1_unq_row": [0, 1, 8, 9, 10], "df2": [0, 1, 2, 5, 8, 9, 10], "df2_name": [0, 1, 5, 8, 9, 10], "df2_unq_column": [0, 1, 2, 8, 9, 10], "df2_unq_row": [0, 1, 8, 9, 10], "dict": 1, "dictionari": 1, "did": 3, "diff": [1, 8, 9, 10], "differ": [0, 1, 5, 6, 8, 9, 10], "directli": 8, "directori": [0, 1, 4], "disconnect": 4, "disk": 8, "displai": [0, 1], "dist": 4, "distinguish": [0, 1], "distribut": [3, 6], "dnr": 3, "do": [1, 5], "doc": 4, "docstr": 4, "document": [6, 9], "doe": [8, 9, 10], "dollar_amt": [5, 8, 9, 10], "dollar_amt_df1": 10, "dollar_amt_df2": 10, "don": [0, 1, 8, 9, 10], "done": [1, 3, 10], "drop": [8, 10], "dtype": [8, 9, 10], "duckdb": [5, 6], "due": [3, 9], "dupe": 1, "duplic": 6, "e": [0, 1, 4], "each": [0, 1, 4, 5, 8, 10], "easier": 4, "easili": [0, 1], "edgetest": 6, "empti": 8, "encod": 1, "endless": 4, "engin": 9, "ensur": 4, "enter": 0, "enum": 1, "env": 7, "environ": [4, 7], "equal": [0, 1, 6, 8, 9, 10], "equival": 5, "evalu": [0, 1], "exact": [0, 1], "exactli": [0, 5, 8], "exampl": [1, 5, 8, 10], "excel": 4, "except": [0, 1], "exclud": 1, "execut": [0, 1, 4], "executor": 3, "exist": [0, 1], "expect": 6, "experi": 3, "experiment": 9, "export": 4, "extend": [0, 1, 6], "extra": 4, "f64": 9, "fail": [0, 8], "fals": [0, 1, 5, 8, 9, 10], "fast": [0, 3], "favour": 5, "featur": 4, "feedback": 5, "few": [8, 9, 10], "field": [0, 1, 8], "file": [0, 1], "filehandl": 1, "filenam": [0, 1], "fill": 8, "final": [4, 5], "fine": [6, 7], "first": [0, 1, 4, 8, 9, 10], "fit": 8, "flag": [0, 1], "float": [0, 1], "float64": [8, 9, 10], "float_fld": [5, 8, 9, 10], "float_fld_df1": 10, "float_fld_df2": 10, "folder": 4, "follow": [4, 5, 9], "for_displai": [0, 1], "forc": 0, "forg": 6, "form": 1, "format": [0, 1, 9], "forward": [3, 6, 10], "found": 6, "frame": [0, 1], "framework": 5, "from": [0, 1, 3, 4, 5, 6, 8, 9, 10], "from_panda": 10, "fugu": [2, 3, 6, 10], "full": 5, "fulli": [0, 1], "functioanl": [6, 7], "function": [0, 1, 5, 6, 9], "further": 3, "futur": [4, 6], "gather": 5, "gener": [0, 1, 3, 6, 8, 9, 10], "generate_id_within_group": [0, 1, 2, 6], "georg": [5, 8, 9, 10], "get": [0, 1, 5], "get_merged_column": [0, 1, 2, 6], "getorcr": [5, 10], "gh": 4, "ghpage": 4, "git": 4, "github": [4, 6], "given": 1, "go": [0, 1, 4], "goal": 8, "gold": 1, "good": 9, "googl": 4, "grain": 3, "great": 5, "group": [0, 1, 8, 10], "grow": 0, "guarante": 5, "guid": 6, "guidanc": 4, "gz": 4, "ha": [4, 6, 8, 9, 10], "handl": [0, 1, 3, 8, 9, 10], "hard": 3, "have": [0, 1, 3, 4, 5, 6, 8, 9, 10], "help": [3, 4], "helper": 4, "here": [4, 6, 8, 9, 10], "highli": 7, "honor": 6, "hook": 6, "hope": 5, "how": [0, 3, 4, 6], "html": [0, 1, 4], "html_file": [0, 1], "http": [4, 10], "human": [0, 1, 5, 8, 10], "i": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], "i64": 9, "id": [0, 1, 3, 8, 10], "idea": 3, "ident": [0, 1], "identifi": [0, 1], "ignor": [0, 1], "ignore_cas": [0, 1], "ignore_extra_column": [0, 1, 10], "ignore_matching_col": [0, 1], "ignore_spac": [0, 1], "implement": [3, 5, 6, 9, 10], "implementaion": [3, 10], "import": [5, 6, 8, 9, 10], "improv": 3, "includ": [0, 1, 4], "increas": 3, "independ": 4, "index": [0, 1, 6, 8, 9], "indic": [0, 1], "individu": [0, 1], "initi": 8, "input": 1, "instal": [4, 5], "instanc": [1, 8, 9, 10], "instanti": 1, "instead": [0, 1], "instruct": 6, "int": [0, 1], "integ": 0, "integr": [5, 6], "interact": 6, "interfac": [5, 6, 9], "intermedi": 1, "intersect": [0, 1], "intersect_column": [0, 1, 2, 5, 6, 8, 9, 10], "intersect_row": [0, 1, 8, 9, 10], "intersect_rows_match": [0, 1, 2], "introduc": [6, 10], "io": [5, 8, 9, 10], "is_match": [0, 2, 5, 6], "isclos": [0, 1], "isn": 0, "isort": 4, "issu": [3, 6, 10], "its": [0, 1, 3, 6], "jira": 10, "join": [0, 1, 3, 5, 8, 9, 10], "join_column": [0, 1, 5, 8, 9, 10], "join_nul": 9, "just": [0, 1, 4, 5, 6, 9], "keep": [4, 6, 10], "kei": 1, "kinda": [0, 1], "know": 8, "known": 1, "known_differ": [0, 1], "larg": [1, 3, 8], "lazi": 1, "legaci": [0, 2, 4, 10], "legacysparkcompar": [0, 1, 6, 10], "let": [0, 4, 6], "level": 6, "librari": [5, 6], "licens": 6, "like": [0, 4, 5, 6, 8, 9, 10], "limit": 6, "list": [0, 1, 5, 8, 9, 10], "ll": 4, "loblaw": [5, 8, 9, 10], "local": 4, "logic": [6, 10], "look": [0, 1, 8], "loos": [5, 8, 9, 10], "lot": [3, 8], "lower": [0, 1], "lowest": 6, "lucil": [5, 8, 9, 10], "m": 4, "machin": [3, 4], "mahari": [5, 8, 9, 10], "mai": [5, 8, 9], "main": [4, 8], "maintain": 5, "make": [1, 3, 4, 6], "makefil": 4, "manag": [5, 6], "mani": [5, 6], "map": 5, "match": [0, 1, 2, 6, 8, 9, 10], "match_rat": 1, "matchin": 0, "matchtyp": [0, 1], "matrix": 6, "max": [1, 8, 9, 10], "maximum": [0, 1], "mean": [3, 6], "meant": [0, 1], "medium": 3, "mediumish": 3, "memori": [1, 8, 9], "mention": 9, "merg": [0, 1, 4, 8, 10], "merged_df": [0, 1], "messag": 4, "method": [5, 6], "michael": [5, 8, 9, 10], "might": 9, "migrat": 9, "million": 3, "minim": 3, "mismatch": [0, 1], "mode": 1, "model": 9, "modul": [2, 6, 10], "montonicli": 3, "more": [0, 1, 4, 6, 8], "most": [3, 4], "move": [3, 6, 10], "much": 4, "multipl": 1, "must": [0, 4, 5, 9], "my_report": 1, "name": [0, 1, 5, 7, 8, 9, 10], "name_df1": [8, 9, 10], "name_df2": [8, 9, 10], "name_match": [8, 9, 10], "nan": [0, 1, 8, 9, 10], "nativ": [3, 5, 6, 10], "natur": 3, "na\u00efv": 8, "need": [4, 5, 8], "new": [0, 1, 4, 5, 6, 8, 9, 10], "newlin": [0, 1], "nice": [0, 1], "non": [0, 1, 5], "none": [0, 1, 4], "note": [1, 4, 5, 6, 7, 8, 9, 10], "notic": 5, "now": [6, 10], "np": [0, 1], "npt": 8, "null": [0, 1, 8, 9, 10], "number": [0, 1, 3, 8, 9, 10], "numer": [0, 1, 3], "numpi": [4, 8], "obj1": 8, "obj2": 8, "object": [1, 6], "obsolet": 3, "offic": 10, "offici": 4, "olap": 9, "old": [6, 10], "on_index": [0, 8, 10], "onc": 4, "one": [0, 1, 4, 9, 10], "onli": [0, 1, 4, 8, 9, 10], "open": [0, 1, 6], "oper": [0, 1, 5, 8], "option": [0, 1, 4, 5, 10], "order": [0, 1, 4, 5], "orderedset": [0, 1, 9, 10], "org": [4, 10], "origin": [0, 1, 5, 6, 8, 9, 10], "original_df": [0, 1], "orphan": 4, "other": [0, 1, 4, 5, 6, 8, 10], "otherwis": 1, "our": 3, "out": [0, 1, 4, 5, 6, 10], "output": [0, 1, 4, 8], "over": [0, 6], "overlap": [0, 1], "overview": 6, "overwrit": [0, 1], "p": 10, "packag": [2, 4, 6], "page": [4, 6], "panda": [0, 2, 3, 4, 5, 6, 7, 9, 10], "parallel": [0, 5], "paramet": [0, 1], "particip": 6, "partit": 5, "pass": [0, 1, 4, 5], "pd": [5, 8, 10], "peopl": 4, "per": 4, "perform": [1, 3, 5, 6, 10], "pertin": [0, 1], "pick": 8, "pilot": 5, "pip": [4, 5, 6, 7], "pl": 9, "plan": 6, "pleas": [3, 5, 6, 7, 9], "polar": [2, 3, 5, 6, 7], "polarscompar": [0, 2, 6, 9], "pollut": 4, "port": 9, "post": [0, 1], "pre": [0, 1, 6], "preform": 3, "prepend": [0, 1], "present": [0, 1], "prevent": [1, 4], "print": [0, 1, 5, 6, 8, 9, 10], "proc": [0, 1, 6, 8], "process": [3, 4, 5, 6], "produc": 5, "project": [4, 6], "properli": 4, "properti": [0, 1], "proport": 1, "provid": [0, 1, 5, 6, 8, 10], "pure": 3, "push": 4, "py": 4, "py3": 4, "pypi": 6, "pyproject": 4, "pysaprk": [6, 10], "pyspark": [0, 1, 5, 6, 10], "pytest": 4, "python": [4, 5, 6, 7], "pyyaml": 4, "qualiti": 4, "queri": 9, "question": 1, "rai": [5, 6], "rais": 0, "ram": 3, "rang": 3, "rate": 1, "raw": [0, 1], "re": [8, 10], "read": [0, 1], "read_csv": [5, 8, 9, 10], "readabl": [0, 1, 5, 8, 10], "readi": 1, "real": 4, "reason": 4, "recogn": [8, 10], "recommend": 7, "recomput": 1, "record": [0, 1, 3], "redirect": 1, "refer": 1, "regener": 4, "rel": [0, 1, 8, 9, 10], "rel_tol": [0, 1, 5, 8, 9, 10], "relat": 5, "releas": 6, "renam": [6, 10], "render": [0, 1, 2, 4, 6], "replac": [0, 1, 5, 6, 8, 9, 10], "repo": [4, 6], "report": [0, 1, 2, 5, 6], "report_fil": 1, "repositori": 4, "repres": 0, "represent": [0, 1], "requir": 6, "resili": [8, 9], "result": [1, 3, 5, 9], "return": [0, 1, 4, 8, 9, 10], "right": 4, "robert": [5, 8, 9, 10], "root": 4, "row": [0, 1, 3, 6], "rows_both_al": [0, 1], "rows_both_mismatch": [0, 1], "rows_only_bas": [0, 1], "rows_only_compar": [0, 1], "run": [3, 6, 8, 9, 10], "runner": 4, "rust": 9, "sa": [0, 1, 6, 8], "safe": 10, "salt": 3, "same": [0, 1, 5, 8], "sampl": [0, 1, 5, 8, 9, 10], "sample_count": [0, 1], "sample_mismatch": [0, 1, 2], "save": [0, 1], "scene": [8, 10], "schema": 0, "seal": [5, 8, 9, 10], "search": 6, "second": [0, 1, 3, 8, 10], "section": [4, 9], "see": [3, 6, 9], "seem": 3, "semant": [4, 5], "sens": 1, "separ": 8, "seri": [0, 1, 8], "seriestyp": 0, "serv": [1, 4], "set": [0, 1, 4, 8], "setup": [4, 6], "setuptool": 7, "sever": 4, "shape": 9, "share": [0, 1], "shine": 3, "should": [0, 1, 4, 6, 7, 8, 9, 10], "show": [0, 1], "show_all_column": 1, "shown": 1, "sign": 6, "significantli": 1, "similar": [0, 1, 9], "simpl": [4, 5, 6], "sinc": 4, "singl": [3, 4], "size": 1, "skip": [0, 1], "slightli": 9, "slower": 3, "small": 3, "so": [6, 8, 9, 10], "some": [0, 1, 3, 6, 8, 9, 10], "some_field": 8, "someth": [0, 4, 6], "somewhat": 8, "soon": 4, "sort": 8, "sourc": [6, 7], "spark": [0, 2, 3, 5], "spark_df2": 5, "spark_sess": [0, 1], "sparkcompar": [1, 5, 6, 10], "sparkpandascompar": [0, 1, 2, 6], "sparksess": [0, 1, 5, 10], "sparksqlcompar": [0, 1, 2, 6], "specif": 5, "specifi": [1, 5, 8, 9, 10], "speed": 1, "sphinx": 4, "sql": [0, 2, 3, 5, 6, 10], "squash": 4, "standard": 1, "start": [0, 3, 6], "stat": [0, 6], "statement": 1, "stdout": 1, "step": [1, 8], "still": 4, "store": 4, "str": [0, 1, 9], "streamlin": 4, "strict_schema": 0, "string": [0, 1, 3, 8, 9, 10], "stringio": [5, 8, 9, 10], "strip": [0, 1], "style": 4, "sub": [0, 1], "subfold": 4, "submodul": [2, 6, 10], "subpackag": [2, 6], "subsequ": [6, 10], "subset": [0, 1, 2, 4], "suffix": [0, 1], "summar": [5, 10], "summari": [1, 8, 9, 10], "support": [0, 7, 8, 9], "sure": [4, 6], "sy": 1, "synthet": 3, "t": [0, 1, 8, 9, 10], "tabl": [3, 5, 8, 9, 10], "tag": 4, "take": [1, 3], "taken": 4, "tar": 4, "temp": 0, "temp_column_nam": [0, 2, 6], "temp_id": [8, 10], "templat": [0, 1], "temporari": [0, 8, 10], "test": [6, 7, 8, 10], "textio": 1, "textiowrapp": 1, "than": [0, 5, 6], "thei": [4, 9], "them": 8, "thi": [0, 1, 4, 5, 6, 8, 9, 10], "thing": 9, "third": [8, 10], "though": 5, "time": [3, 6], "tldr": 6, "toler": [0, 1, 8, 9, 10], "toml": 4, "toni": [8, 10], "top": 9, "total": [8, 9, 10], "track": [0, 1], "transform": 1, "treat": 1, "tri": [0, 1, 3, 9], "trigger": [0, 1], "true": [0, 1, 4, 8, 9, 10], "try": [8, 9, 10], "tune": 3, "tupl": 1, "tweak": [0, 6], "twine": 4, "two": [0, 1, 5, 6, 8, 9, 10], "txt": 1, "type": [0, 1, 4, 8, 9, 10], "ultim": 1, "under": [4, 6, 10], "understand": 3, "unequ": [8, 9, 10], "unexpect": 9, "unifi": [5, 6], "uniqu": [0, 1, 8, 10], "unit": 6, "unittest": 4, "unlik": 9, "unq_column": [0, 2, 5, 6], "until": 10, "up": [1, 4, 8], "updat": 4, "upgrad": [4, 7], "upload": 4, "url": 4, "us": [0, 1, 4, 5, 6, 7, 8, 9, 10], "usag": 6, "user": [0, 1, 3, 4], "utf": 1, "util": 4, "v0": [6, 9, 10], "valu": [0, 1, 8, 9, 10], "valueerror": 8, "vanilla": 0, "variabl": [0, 1], "vast": 3, "ve": 3, "veri": [3, 8, 9], "versa": [0, 1], "version": [0, 1, 3, 4, 5, 9], "via": [4, 5, 6], "vice": [0, 1], "virtual": 7, "virtualenv": 6, "w": 1, "wa": [0, 1, 3, 6, 10], "wai": [0, 1, 5, 6], "want": [4, 5], "we": [3, 4, 5, 6, 10], "welcom": [3, 6], "what": [0, 1, 6, 8], "wheel": 4, "when": [0, 1, 3, 4, 8], "where": [0, 1, 4], "whether": [0, 1, 8], "which": [0, 1, 3, 4, 5, 6, 8, 9, 10], "while": 1, "whitespac": [0, 1], "whl": 4, "wide": 1, "wisdom": 4, "wise": [0, 1], "wish": [6, 10], "within": [0, 1, 6, 8, 10], "without": [0, 1], "wonder": [8, 10], "work": [1, 4, 6, 7], "workflow": 4, "world": 1, "would": [1, 6], "write": 1, "x": [0, 1], "y": 1, "ye": [8, 9], "yield": 9, "you": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], "your": [1, 4, 6, 8, 9, 10], "zero": 0}, "titles": ["datacompy package", "datacompy.spark package", "datacompy", "Benchmarks", "Developer Instructions", "Fugue Detail", "DataComPy", "Installation", "Pandas Usage", "Polars Usage", "Spark Usage"], "titleterms": {"The": 3, "api": 6, "archiv": 4, "backend": 6, "base": 0, "basic": [5, 7, 9], "benchmark": 3, "caveat": [8, 9], "commit": 4, "compar": [5, 8, 9], "conda": 7, "content": [0, 1, 6], "contributor": 6, "conveni": [8, 9, 10], "core": 0, "cross": 5, "data": 3, "datacompi": [0, 1, 2, 6], "depend": 7, "dependnci": 6, "deprec": 6, "detail": 5, "develop": 4, "distribut": 4, "document": 4, "duplic": [8, 9, 10], "edgetest": 4, "extra": 6, "forg": 7, "from": 7, "fugu": [0, 5], "futur": 5, "gener": 4, "guid": 4, "hook": 4, "how": 5, "indic": 6, "instal": [6, 7], "instruct": 4, "legaci": [1, 6], "limit": [8, 9], "manag": 4, "method": [8, 9, 10], "modul": [0, 1], "object": [8, 9, 10], "overview": [8, 9], "packag": [0, 1], "panda": [1, 8], "polar": [0, 9], "pre": 4, "pypi": [4, 7], "quick": 6, "refer": 6, "releas": [4, 5], "report": [8, 9, 10], "requir": 4, "roadmap": 6, "row": [8, 9, 10], "run": 4, "setup": [3, 8, 9, 10], "spark": [1, 6, 10], "sparkpandascompar": 10, "sparksqlcompar": 10, "sql": 1, "submodul": [0, 1], "subpackag": 0, "support": [6, 10], "tabl": 6, "test": 4, "tldr": 3, "unit": 4, "us": 3, "usag": [5, 8, 9, 10], "version": [6, 10], "virtualenv": 7, "work": 5}}) \ No newline at end of file +Search.setIndex({"alltitles": {"API Reference": [[6, null]], "Basic Usage": [[5, "basic-usage"], [9, "basic-usage"]], "Benchmarks": [[3, null]], "Caveats": [[8, "caveats"]], "Caveats and Limitations": [[9, "caveats-and-limitations"]], "Compare Object Setup": [[8, "compare-object-setup"], [9, "compare-object-setup"]], "Contents": [[6, "contents"]], "Contributors": [[6, "contributors"]], "Convenience Methods": [[8, "convenience-methods"], [9, "convenience-methods"], [10, "convenience-methods"]], "Cross Comparing": [[5, "cross-comparing"]], "DataComPy": [[6, null]], "Developer Instructions": [[4, null]], "Duplicate rows": [[8, "duplicate-rows"], [9, "duplicate-rows"], [10, "duplicate-rows"]], "Fugue Detail": [[5, null]], "Future releases": [[5, "future-releases"]], "Generating Documentation": [[4, "generating-documentation"]], "Generating distribution archives (PyPI)": [[4, "generating-distribution-archives-pypi"]], "How it works": [[5, "how-it-works"]], "Indices and tables": [[6, "indices-and-tables"]], "Installation": [[7, null]], "Installing extras": [[6, "installing-extras"]], "Legacy Spark Deprecation": [[6, "legacy-spark-deprecation"]], "Limitations": [[8, "limitations"]], "Management of Requirements": [[4, "management-of-requirements"]], "Module contents": [[0, "module-datacompy"], [1, "module-datacompy.spark"]], "Overview": [[8, "overview"], [9, "overview"]], "Pandas Usage": [[8, null]], "Polars Usage": [[9, null]], "Pre-Commit Hooks": [[4, "pre-commit-hooks"]], "PyPI (basic)": [[7, "pypi-basic"]], "Quick Installation": [[6, "quick-installation"]], "Release Guide": [[4, "release-guide"]], "Reports": [[8, "reports"], [9, "reports"], [10, "reports"]], "Roadmap": [[6, "roadmap"]], "Run unit tests": [[4, "run-unit-tests"]], "Setup used": [[3, "setup-used"]], "Spark Usage": [[10, null]], "SparkPandasCompare and SparkSQLCompare Object Setup": [[10, "sparkpandascompare-and-sparksqlcompare-object-setup"]], "Submodules": [[0, "submodules"], [1, "submodules"]], "Subpackages": [[0, "subpackages"]], "Supported Version": [[10, "supported-version"]], "Supported backends": [[6, "supported-backends"]], "Supported versions and dependncies": [[6, "supported-versions-and-dependncies"]], "TLDR": [[3, "tldr"]], "The Data": [[3, "the-data"]], "conda (installs dependencies from Conda Forge)": [[7, "conda-installs-dependencies-from-conda-forge"]], "datacompy": [[2, null]], "datacompy package": [[0, null]], "datacompy.base module": [[0, "module-datacompy.base"]], "datacompy.core module": [[0, "module-datacompy.core"]], "datacompy.fugue module": [[0, "module-datacompy.fugue"]], "datacompy.polars module": [[0, "module-datacompy.polars"]], "datacompy.spark package": [[1, null]], "datacompy.spark.legacy module": [[1, "module-datacompy.spark.legacy"]], "datacompy.spark.pandas module": [[1, "module-datacompy.spark.pandas"]], "datacompy.spark.sql module": [[1, "module-datacompy.spark.sql"]], "edgetest": [[4, "edgetest"]], "virtualenv (install dependencies from PyPI)": [[7, "virtualenv-install-dependencies-from-pypi"]]}, "docnames": ["api/datacompy", "api/datacompy.spark", "api/modules", "benchmark", "developer_instructions", "fugue_usage", "index", "install", "pandas_usage", "polars_usage", "spark_usage"], "envversion": {"sphinx": 62, "sphinx.domains.c": 3, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 9, "sphinx.domains.index": 1, "sphinx.domains.javascript": 3, "sphinx.domains.math": 2, "sphinx.domains.python": 4, "sphinx.domains.rst": 2, "sphinx.domains.std": 2}, "filenames": ["api/datacompy.rst", "api/datacompy.spark.rst", "api/modules.rst", "benchmark.rst", "developer_instructions.rst", "fugue_usage.rst", "index.rst", "install.rst", "pandas_usage.rst", "polars_usage.rst", "spark_usage.rst"], "indexentries": {"all_columns_match() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.all_columns_match", false]], "all_columns_match() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.all_columns_match", false]], "all_columns_match() (datacompy.compare method)": [[0, "datacompy.Compare.all_columns_match", false]], "all_columns_match() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.all_columns_match", false]], "all_columns_match() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.all_columns_match", false]], "all_columns_match() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.all_columns_match", false]], "all_columns_match() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.all_columns_match", false]], "all_columns_match() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.all_columns_match", false]], "all_columns_match() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.all_columns_match", false]], "all_columns_match() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.all_columns_match", false]], "all_columns_match() (in module datacompy)": [[0, "datacompy.all_columns_match", false]], "all_columns_match() (in module datacompy.fugue)": [[0, "datacompy.fugue.all_columns_match", false]], "all_mismatch() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.all_mismatch", false]], "all_mismatch() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.all_mismatch", false]], "all_mismatch() (datacompy.compare method)": [[0, "datacompy.Compare.all_mismatch", false]], "all_mismatch() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.all_mismatch", false]], "all_mismatch() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.all_mismatch", false]], "all_mismatch() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.all_mismatch", false]], "all_mismatch() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.all_mismatch", false]], "all_mismatch() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.all_mismatch", false]], "all_mismatch() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.all_mismatch", false]], "all_mismatch() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.all_mismatch", false]], "all_rows_overlap() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.compare method)": [[0, "datacompy.Compare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.all_rows_overlap", false]], "all_rows_overlap() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.all_rows_overlap", false]], "all_rows_overlap() (in module datacompy)": [[0, "datacompy.all_rows_overlap", false]], "all_rows_overlap() (in module datacompy.fugue)": [[0, "datacompy.fugue.all_rows_overlap", false]], "base_row_count (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.base_row_count", false]], "basecompare (class in datacompy)": [[0, "datacompy.BaseCompare", false]], "basecompare (class in datacompy.base)": [[0, "datacompy.base.BaseCompare", false]], "calculate_max_diff() (in module datacompy)": [[0, "datacompy.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.core)": [[0, "datacompy.core.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.polars)": [[0, "datacompy.polars.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.calculate_max_diff", false]], "calculate_max_diff() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.calculate_max_diff", false]], "calculate_null_diff() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.calculate_null_diff", false]], "columns_compared (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_compared", false]], "columns_equal() (in module datacompy)": [[0, "datacompy.columns_equal", false]], "columns_equal() (in module datacompy.core)": [[0, "datacompy.core.columns_equal", false]], "columns_equal() (in module datacompy.polars)": [[0, "datacompy.polars.columns_equal", false]], "columns_equal() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.columns_equal", false]], "columns_equal() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.columns_equal", false]], "columns_in_both (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_in_both", false]], "columns_only_base (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_only_base", false]], "columns_only_compare (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.columns_only_compare", false]], "common_row_count (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.common_row_count", false]], "compare (class in datacompy)": [[0, "datacompy.Compare", false]], "compare (class in datacompy.core)": [[0, "datacompy.core.Compare", false]], "compare_row_count (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.compare_row_count", false]], "compare_string_and_date_columns() (in module datacompy)": [[0, "datacompy.compare_string_and_date_columns", false]], "compare_string_and_date_columns() (in module datacompy.core)": [[0, "datacompy.core.compare_string_and_date_columns", false]], "compare_string_and_date_columns() (in module datacompy.polars)": [[0, "datacompy.polars.compare_string_and_date_columns", false]], "compare_string_and_date_columns() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.compare_string_and_date_columns", false]], "count_matching_rows() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.compare method)": [[0, "datacompy.Compare.count_matching_rows", false]], "count_matching_rows() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.count_matching_rows", false]], "count_matching_rows() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.count_matching_rows", false]], "count_matching_rows() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.count_matching_rows", false]], "count_matching_rows() (in module datacompy)": [[0, "datacompy.count_matching_rows", false]], "count_matching_rows() (in module datacompy.fugue)": [[0, "datacompy.fugue.count_matching_rows", false]], "datacompy": [[0, "module-datacompy", false]], "datacompy.base": [[0, "module-datacompy.base", false]], "datacompy.core": [[0, "module-datacompy.core", false]], "datacompy.fugue": [[0, "module-datacompy.fugue", false]], "datacompy.polars": [[0, "module-datacompy.polars", false]], "datacompy.spark": [[1, "module-datacompy.spark", false]], "datacompy.spark.legacy": [[1, "module-datacompy.spark.legacy", false]], "datacompy.spark.pandas": [[1, "module-datacompy.spark.pandas", false]], "datacompy.spark.sql": [[1, "module-datacompy.spark.sql", false]], "decimal_comparator() (in module datacompy.spark.legacy)": [[1, "datacompy.spark.legacy.decimal_comparator", false]], "decimal_comparator() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.decimal_comparator", false]], "df1 (datacompy.base.basecompare property)": [[0, "datacompy.base.BaseCompare.df1", false]], "df1 (datacompy.basecompare property)": [[0, "datacompy.BaseCompare.df1", false]], "df1 (datacompy.compare property)": [[0, "datacompy.Compare.df1", false]], "df1 (datacompy.core.compare property)": [[0, "datacompy.core.Compare.df1", false]], "df1 (datacompy.polars.polarscompare property)": [[0, "datacompy.polars.PolarsCompare.df1", false]], "df1 (datacompy.polarscompare property)": [[0, "datacompy.PolarsCompare.df1", false]], "df1 (datacompy.spark.pandas.sparkpandascompare property)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df1", false]], "df1 (datacompy.spark.sql.sparksqlcompare property)": [[1, "datacompy.spark.sql.SparkSQLCompare.df1", false]], "df1 (datacompy.sparkpandascompare property)": [[0, "datacompy.SparkPandasCompare.df1", false]], "df1 (datacompy.sparksqlcompare property)": [[0, "datacompy.SparkSQLCompare.df1", false]], "df1_unq_columns() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.compare method)": [[0, "datacompy.Compare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.df1_unq_columns", false]], "df1_unq_columns() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.df1_unq_columns", false]], "df2 (datacompy.base.basecompare property)": [[0, "datacompy.base.BaseCompare.df2", false]], "df2 (datacompy.basecompare property)": [[0, "datacompy.BaseCompare.df2", false]], "df2 (datacompy.compare property)": [[0, "datacompy.Compare.df2", false]], "df2 (datacompy.core.compare property)": [[0, "datacompy.core.Compare.df2", false]], "df2 (datacompy.polars.polarscompare property)": [[0, "datacompy.polars.PolarsCompare.df2", false]], "df2 (datacompy.polarscompare property)": [[0, "datacompy.PolarsCompare.df2", false]], "df2 (datacompy.spark.pandas.sparkpandascompare property)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df2", false]], "df2 (datacompy.spark.sql.sparksqlcompare property)": [[1, "datacompy.spark.sql.SparkSQLCompare.df2", false]], "df2 (datacompy.sparkpandascompare property)": [[0, "datacompy.SparkPandasCompare.df2", false]], "df2 (datacompy.sparksqlcompare property)": [[0, "datacompy.SparkSQLCompare.df2", false]], "df2_unq_columns() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.compare method)": [[0, "datacompy.Compare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.df2_unq_columns", false]], "df2_unq_columns() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.df2_unq_columns", false]], "generate_id_within_group() (in module datacompy)": [[0, "datacompy.generate_id_within_group", false]], "generate_id_within_group() (in module datacompy.core)": [[0, "datacompy.core.generate_id_within_group", false]], "generate_id_within_group() (in module datacompy.polars)": [[0, "datacompy.polars.generate_id_within_group", false]], "generate_id_within_group() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.generate_id_within_group", false]], "get_merged_columns() (in module datacompy)": [[0, "datacompy.get_merged_columns", false]], "get_merged_columns() (in module datacompy.core)": [[0, "datacompy.core.get_merged_columns", false]], "get_merged_columns() (in module datacompy.polars)": [[0, "datacompy.polars.get_merged_columns", false]], "get_merged_columns() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.get_merged_columns", false]], "get_merged_columns() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.get_merged_columns", false]], "intersect_columns() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.intersect_columns", false]], "intersect_columns() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.intersect_columns", false]], "intersect_columns() (datacompy.compare method)": [[0, "datacompy.Compare.intersect_columns", false]], "intersect_columns() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.intersect_columns", false]], "intersect_columns() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.intersect_columns", false]], "intersect_columns() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.intersect_columns", false]], "intersect_columns() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.intersect_columns", false]], "intersect_columns() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.intersect_columns", false]], "intersect_columns() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.intersect_columns", false]], "intersect_columns() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.intersect_columns", false]], "intersect_columns() (in module datacompy)": [[0, "datacompy.intersect_columns", false]], "intersect_columns() (in module datacompy.fugue)": [[0, "datacompy.fugue.intersect_columns", false]], "intersect_rows_match() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.compare method)": [[0, "datacompy.Compare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.intersect_rows_match", false]], "intersect_rows_match() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.intersect_rows_match", false]], "is_match() (in module datacompy)": [[0, "datacompy.is_match", false]], "is_match() (in module datacompy.fugue)": [[0, "datacompy.fugue.is_match", false]], "known_difference (datacompy.spark.legacy.matchtype attribute)": [[1, "datacompy.spark.legacy.MatchType.KNOWN_DIFFERENCE", false]], "legacysparkcompare (class in datacompy.spark.legacy)": [[1, "datacompy.spark.legacy.LegacySparkCompare", false]], "match (datacompy.spark.legacy.matchtype attribute)": [[1, "datacompy.spark.legacy.MatchType.MATCH", false]], "matches() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.matches", false]], "matches() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.matches", false]], "matches() (datacompy.compare method)": [[0, "datacompy.Compare.matches", false]], "matches() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.matches", false]], "matches() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.matches", false]], "matches() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.matches", false]], "matches() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.matches", false]], "matches() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.matches", false]], "matches() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.matches", false]], "matches() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.matches", false]], "matchtype (class in datacompy.spark.legacy)": [[1, "datacompy.spark.legacy.MatchType", false]], "mismatch (datacompy.spark.legacy.matchtype attribute)": [[1, "datacompy.spark.legacy.MatchType.MISMATCH", false]], "module": [[0, "module-datacompy", false], [0, "module-datacompy.base", false], [0, "module-datacompy.core", false], [0, "module-datacompy.fugue", false], [0, "module-datacompy.polars", false], [1, "module-datacompy.spark", false], [1, "module-datacompy.spark.legacy", false], [1, "module-datacompy.spark.pandas", false], [1, "module-datacompy.spark.sql", false]], "polarscompare (class in datacompy)": [[0, "datacompy.PolarsCompare", false]], "polarscompare (class in datacompy.polars)": [[0, "datacompy.polars.PolarsCompare", false]], "render() (in module datacompy)": [[0, "datacompy.render", false]], "render() (in module datacompy.core)": [[0, "datacompy.core.render", false]], "render() (in module datacompy.polars)": [[0, "datacompy.polars.render", false]], "render() (in module datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.render", false]], "render() (in module datacompy.spark.sql)": [[1, "datacompy.spark.sql.render", false]], "report() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.report", false]], "report() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.report", false]], "report() (datacompy.compare method)": [[0, "datacompy.Compare.report", false]], "report() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.report", false]], "report() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.report", false]], "report() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.report", false]], "report() (datacompy.spark.legacy.legacysparkcompare method)": [[1, "datacompy.spark.legacy.LegacySparkCompare.report", false]], "report() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.report", false]], "report() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.report", false]], "report() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.report", false]], "report() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.report", false]], "report() (in module datacompy)": [[0, "datacompy.report", false]], "report() (in module datacompy.fugue)": [[0, "datacompy.fugue.report", false]], "rows_both_all (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_both_all", false]], "rows_both_mismatch (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_both_mismatch", false]], "rows_only_base (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_only_base", false]], "rows_only_compare (datacompy.spark.legacy.legacysparkcompare property)": [[1, "datacompy.spark.legacy.LegacySparkCompare.rows_only_compare", false]], "sample_mismatch() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.compare method)": [[0, "datacompy.Compare.sample_mismatch", false]], "sample_mismatch() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.sample_mismatch", false]], "sample_mismatch() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.sample_mismatch", false]], "sample_mismatch() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.sample_mismatch", false]], "sparkpandascompare (class in datacompy)": [[0, "datacompy.SparkPandasCompare", false]], "sparkpandascompare (class in datacompy.spark.pandas)": [[1, "datacompy.spark.pandas.SparkPandasCompare", false]], "sparksqlcompare (class in datacompy)": [[0, "datacompy.SparkSQLCompare", false]], "sparksqlcompare (class in datacompy.spark.sql)": [[1, "datacompy.spark.sql.SparkSQLCompare", false]], "subset() (datacompy.base.basecompare method)": [[0, "datacompy.base.BaseCompare.subset", false]], "subset() (datacompy.basecompare method)": [[0, "datacompy.BaseCompare.subset", false]], "subset() (datacompy.compare method)": [[0, "datacompy.Compare.subset", false]], "subset() (datacompy.core.compare method)": [[0, "datacompy.core.Compare.subset", false]], "subset() (datacompy.polars.polarscompare method)": [[0, "datacompy.polars.PolarsCompare.subset", false]], "subset() (datacompy.polarscompare method)": [[0, "datacompy.PolarsCompare.subset", false]], "subset() (datacompy.spark.pandas.sparkpandascompare method)": [[1, "datacompy.spark.pandas.SparkPandasCompare.subset", false]], "subset() (datacompy.spark.sql.sparksqlcompare method)": [[1, "datacompy.spark.sql.SparkSQLCompare.subset", false]], "subset() (datacompy.sparkpandascompare method)": [[0, "datacompy.SparkPandasCompare.subset", false]], "subset() (datacompy.sparksqlcompare method)": [[0, "datacompy.SparkSQLCompare.subset", false]], "temp_column_name() (in module datacompy)": [[0, "datacompy.temp_column_name", false]], "temp_column_name() (in module datacompy.base)": [[0, "datacompy.base.temp_column_name", false]], "unq_columns() (in module datacompy)": [[0, "datacompy.unq_columns", false]], "unq_columns() (in module datacompy.fugue)": [[0, "datacompy.fugue.unq_columns", false]]}, "objects": {"": [[0, 0, 0, "-", "datacompy"]], "datacompy": [[0, 1, 1, "", "BaseCompare"], [0, 1, 1, "", "Compare"], [0, 1, 1, "", "PolarsCompare"], [0, 1, 1, "", "SparkPandasCompare"], [0, 1, 1, "", "SparkSQLCompare"], [0, 4, 1, "", "all_columns_match"], [0, 4, 1, "", "all_rows_overlap"], [0, 0, 0, "-", "base"], [0, 4, 1, "", "calculate_max_diff"], [0, 4, 1, "", "columns_equal"], [0, 4, 1, "", "compare_string_and_date_columns"], [0, 0, 0, "-", "core"], [0, 4, 1, "", "count_matching_rows"], [0, 0, 0, "-", "fugue"], [0, 4, 1, "", "generate_id_within_group"], [0, 4, 1, "", "get_merged_columns"], [0, 4, 1, "", "intersect_columns"], [0, 4, 1, "", "is_match"], [0, 0, 0, "-", "polars"], [0, 4, 1, "", "render"], [0, 4, 1, "", "report"], [1, 0, 0, "-", "spark"], [0, 4, 1, "", "temp_column_name"], [0, 4, 1, "", "unq_columns"]], "datacompy.BaseCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.Compare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.PolarsCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.SparkPandasCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.SparkSQLCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.base": [[0, 1, 1, "", "BaseCompare"], [0, 4, 1, "", "temp_column_name"]], "datacompy.base.BaseCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.core": [[0, 1, 1, "", "Compare"], [0, 4, 1, "", "calculate_max_diff"], [0, 4, 1, "", "columns_equal"], [0, 4, 1, "", "compare_string_and_date_columns"], [0, 4, 1, "", "generate_id_within_group"], [0, 4, 1, "", "get_merged_columns"], [0, 4, 1, "", "render"]], "datacompy.core.Compare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.fugue": [[0, 4, 1, "", "all_columns_match"], [0, 4, 1, "", "all_rows_overlap"], [0, 4, 1, "", "count_matching_rows"], [0, 4, 1, "", "intersect_columns"], [0, 4, 1, "", "is_match"], [0, 4, 1, "", "report"], [0, 4, 1, "", "unq_columns"]], "datacompy.polars": [[0, 1, 1, "", "PolarsCompare"], [0, 4, 1, "", "calculate_max_diff"], [0, 4, 1, "", "columns_equal"], [0, 4, 1, "", "compare_string_and_date_columns"], [0, 4, 1, "", "generate_id_within_group"], [0, 4, 1, "", "get_merged_columns"], [0, 4, 1, "", "render"]], "datacompy.polars.PolarsCompare": [[0, 2, 1, "", "all_columns_match"], [0, 2, 1, "", "all_mismatch"], [0, 2, 1, "", "all_rows_overlap"], [0, 2, 1, "", "count_matching_rows"], [0, 3, 1, "", "df1"], [0, 2, 1, "", "df1_unq_columns"], [0, 3, 1, "", "df2"], [0, 2, 1, "", "df2_unq_columns"], [0, 2, 1, "", "intersect_columns"], [0, 2, 1, "", "intersect_rows_match"], [0, 2, 1, "", "matches"], [0, 2, 1, "", "report"], [0, 2, 1, "", "sample_mismatch"], [0, 2, 1, "", "subset"]], "datacompy.spark": [[1, 0, 0, "-", "legacy"], [1, 0, 0, "-", "pandas"], [1, 0, 0, "-", "sql"]], "datacompy.spark.legacy": [[1, 1, 1, "", "LegacySparkCompare"], [1, 1, 1, "", "MatchType"], [1, 4, 1, "", "decimal_comparator"]], "datacompy.spark.legacy.LegacySparkCompare": [[1, 3, 1, "", "base_row_count"], [1, 3, 1, "", "columns_compared"], [1, 3, 1, "", "columns_in_both"], [1, 3, 1, "", "columns_only_base"], [1, 3, 1, "", "columns_only_compare"], [1, 3, 1, "", "common_row_count"], [1, 3, 1, "", "compare_row_count"], [1, 2, 1, "", "report"], [1, 3, 1, "", "rows_both_all"], [1, 3, 1, "", "rows_both_mismatch"], [1, 3, 1, "", "rows_only_base"], [1, 3, 1, "", "rows_only_compare"]], "datacompy.spark.legacy.MatchType": [[1, 5, 1, "", "KNOWN_DIFFERENCE"], [1, 5, 1, "", "MATCH"], [1, 5, 1, "", "MISMATCH"]], "datacompy.spark.pandas": [[1, 1, 1, "", "SparkPandasCompare"], [1, 4, 1, "", "calculate_max_diff"], [1, 4, 1, "", "columns_equal"], [1, 4, 1, "", "compare_string_and_date_columns"], [1, 4, 1, "", "generate_id_within_group"], [1, 4, 1, "", "get_merged_columns"], [1, 4, 1, "", "render"]], "datacompy.spark.pandas.SparkPandasCompare": [[1, 2, 1, "", "all_columns_match"], [1, 2, 1, "", "all_mismatch"], [1, 2, 1, "", "all_rows_overlap"], [1, 2, 1, "", "count_matching_rows"], [1, 3, 1, "", "df1"], [1, 2, 1, "", "df1_unq_columns"], [1, 3, 1, "", "df2"], [1, 2, 1, "", "df2_unq_columns"], [1, 2, 1, "", "intersect_columns"], [1, 2, 1, "", "intersect_rows_match"], [1, 2, 1, "", "matches"], [1, 2, 1, "", "report"], [1, 2, 1, "", "sample_mismatch"], [1, 2, 1, "", "subset"]], "datacompy.spark.sql": [[1, 1, 1, "", "SparkSQLCompare"], [1, 4, 1, "", "calculate_max_diff"], [1, 4, 1, "", "calculate_null_diff"], [1, 4, 1, "", "columns_equal"], [1, 4, 1, "", "decimal_comparator"], [1, 4, 1, "", "get_merged_columns"], [1, 4, 1, "", "render"]], "datacompy.spark.sql.SparkSQLCompare": [[1, 2, 1, "", "all_columns_match"], [1, 2, 1, "", "all_mismatch"], [1, 2, 1, "", "all_rows_overlap"], [1, 2, 1, "", "count_matching_rows"], [1, 3, 1, "", "df1"], [1, 2, 1, "", "df1_unq_columns"], [1, 3, 1, "", "df2"], [1, 2, 1, "", "df2_unq_columns"], [1, 2, 1, "", "intersect_columns"], [1, 2, 1, "", "intersect_rows_match"], [1, 2, 1, "", "matches"], [1, 2, 1, "", "report"], [1, 2, 1, "", "sample_mismatch"], [1, 2, 1, "", "subset"]]}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "class", "Python class"], "2": ["py", "method", "Python method"], "3": ["py", "property", "Python property"], "4": ["py", "function", "Python function"], "5": ["py", "attribute", "Python attribute"]}, "objtypes": {"0": "py:module", "1": "py:class", "2": "py:method", "3": "py:property", "4": "py:function", "5": "py:attribute"}, "terms": {"": [0, 1, 6, 8, 9, 10], "0": [0, 1, 3, 4, 5, 6, 8, 9, 10], "000": [3, 8, 9, 10], "0000": [8, 9, 10], "0001": [8, 9], "0005": [8, 9, 10], "01": [5, 8, 9, 10], "025": 3, "041": 3, "05": [5, 8, 9, 10], "0500": [8, 9, 10], "0701": 3, "1": [0, 1, 3, 4, 5, 6, 8, 9, 10], "10": [0, 1, 3, 5, 6, 8, 9, 10], "100": [1, 3], "1000": 3, "10000001234": [5, 8, 9, 10], "10000001235": [5, 8, 9, 10], "10000001236": [5, 8, 9, 10], "10000001237": [5, 8, 9, 10], "10000001238": [5, 8, 9, 10], "10000001239": [5, 10], "109": 3, "11": [3, 6, 9], "111": [5, 8, 9, 10], "1113": 3, "12": [5, 6, 7, 8, 9, 10], "120": 3, "123": [5, 8, 9, 10], "123456": [5, 8, 9, 10], "1257": 3, "127": 3, "13": [6, 10], "130": 3, "1345": [5, 8, 9, 10], "14": 0, "14530": [5, 8, 9, 10], "15": 3, "155": [5, 8, 9, 10], "1555": [5, 8, 9, 10], "16": 3, "17": 3, "175": 3, "18": 3, "193": 3, "194": 3, "196": 3, "2": [0, 1, 3, 6, 8, 9, 10], "20": 3, "2017": [5, 8, 9, 10], "21": 4, "2185": 3, "234": 3, "262": 3, "2763": 3, "2838": 3, "3": [3, 4, 6, 7, 8, 9, 10], "304": 3, "31": 3, "3112": 3, "3204": 3, "32gb": 3, "330": 3, "345": [5, 8, 9, 10], "4": [5, 6, 8, 9, 10], "44101": 10, "45": [5, 8, 9, 10], "455": 3, "47": 3, "494": 3, "5": [4, 6, 8, 9, 10], "50": 3, "500": 3, "560": 3, "57": 3, "5735": 3, "578": 3, "6": [3, 4, 8, 9, 10], "6094": 3, "62": 3, "6274": 3, "64gb": 3, "7": [4, 8], "743": 3, "8": [1, 3, 9], "804": 3, "827": 3, "9": [6, 7], "90": 3, "94": 3, "96": 3, "9814": 3, "A": [0, 1, 4, 7, 8, 9, 10], "And": [8, 10], "As": [0, 9], "At": 6, "By": [1, 6], "For": [4, 5, 8, 9, 10], "If": [0, 1, 3, 6, 7, 8, 10], "In": [4, 5, 8], "It": [3, 4, 8, 10], "No": 10, "OR": [8, 9], "The": [0, 1, 4, 5, 6, 8, 9, 10], "Then": [0, 4, 6], "There": [8, 9, 10], "To": [6, 10], "Will": [0, 1], "With": [5, 6, 10], "_df1": [0, 1], "_io": 1, "_merge_left": 10, "_merge_right": 10, "_temp_x": 0, "ab": [0, 1], "abc": 0, "abl": 3, "about": [4, 8], "abov": [4, 6, 7, 8, 9, 10], "abs_tol": [0, 1, 5, 8, 9, 10], "absolut": [0, 1, 8, 9, 10], "abstract": 0, "accept": [6, 10], "access": 5, "acct_id": [5, 8, 9, 10], "acct_id_df1": 10, "acct_id_df2": 10, "accur": [0, 6], "achiev": 5, "across": [5, 6], "action": 4, "activ": [4, 7], "actual": [0, 1], "ad": [0, 1, 4], "add": 7, "addit": 4, "adher": 6, "adopt": 5, "after": [4, 8, 9, 10], "again": [8, 10], "against": 1, "aggreg": 5, "agreement": 6, "align": [6, 10], "all": [0, 1, 4, 6, 7, 8, 9, 10], "all_columns_match": [0, 1, 2, 5, 6], "all_mismatch": [0, 1, 2], "all_rows_overlap": [0, 1, 2, 5, 6], "allow": [0, 1], "alreadi": [1, 8], "also": [1, 4, 5, 6, 8, 9, 10], "alwai": 3, "amount": [0, 1, 3], "an": [0, 1, 3, 9], "ani": [0, 1, 4, 6, 8, 9, 10], "anoth": [0, 1], "anydatafram": 0, "apach": [9, 10], "api": [4, 10], "apidoc": 4, "append": [0, 1], "appli": [0, 1], "appreci": 6, "ar": [0, 1, 4, 5, 6, 7, 8, 9, 10], "archiv": 6, "arr1": 8, "arr2": 8, "arrow": [5, 6, 9], "artifact": 4, "ask": 6, "assert_almost_equ": 8, "assert_array_equ": 8, "assert_frame_equ": 8, "assert_series_equ": 8, "attempt": [0, 1], "attribut": 10, "autom": 4, "automag": [0, 1], "automat": 4, "avail": [8, 9, 10], "awar": 9, "b": 1, "back": 4, "backend": 5, "background": 5, "base": [1, 2, 3, 4, 5, 6, 8], "base_column_nam": 1, "base_df": 1, "base_row_count": [0, 1], "basecompar": [0, 1, 2, 6], "basi": 1, "basic": [0, 1, 6], "been": [6, 8, 9, 10], "befor": [0, 1, 4, 6, 8, 10], "behaviour": [6, 9, 10], "behind": [4, 8, 10], "being": [1, 4], "below": [4, 6], "benchmark": 6, "benefit": 5, "best": 3, "better": [6, 10], "between": [0, 1, 8], "bias": 3, "bin": 7, "black": 4, "bluth": [5, 8, 9, 10], "bob": [5, 8, 9, 10], "bool": [0, 1, 9], "boolean": [0, 1], "both": [0, 1, 10], "boto3": 4, "branch": 4, "break": 4, "brows": 10, "build": 4, "builder": [5, 10], "c": 4, "cach": 1, "cache_intermedi": 1, "calculate_max_diff": [0, 1, 2, 6], "calculate_null_diff": [0, 1], "call": [8, 9, 10], "can": [0, 1, 3, 4, 5, 6, 8, 9, 10], "canon": 1, "capabl": 8, "carri": [0, 6], "case": [0, 1, 5], "cast": [0, 1], "cast_column_names_low": [0, 1], "caus": 1, "caveat": 6, "certain": 1, "chang": 4, "channel": 7, "check": [0, 1, 8], "checkout": 4, "choic": 8, "chunk": 5, "cla": 6, "class": [0, 1, 5, 6, 8, 10], "clean": 4, "coars": 5, "code": [4, 5, 6, 9], "cogroup": 5, "col_1": [0, 1], "col_2": [0, 1], "col_match": 1, "collaps": 4, "collect": 4, "column": [0, 1, 3, 5, 8, 9, 10], "column_count": [0, 1], "column_map": 1, "columnar": 9, "columns_compar": [0, 1], "columns_equ": [0, 1, 2, 6], "columns_in_both": [0, 1], "columns_map": 1, "columns_only_bas": [0, 1], "columns_only_compar": [0, 1], "combin": [8, 10], "come": [4, 8, 9], "command": [0, 1, 4], "commit": 6, "common": [1, 8, 9, 10], "common_row_count": [0, 1], "commun": [4, 5], "compar": [0, 1, 2, 3, 6, 10], "compare_column_nam": 1, "compare_df": 1, "compare_row_count": [0, 1], "compare_string_and_date_column": [0, 1, 2, 6], "comparin": 1, "comparison": [0, 1, 5, 8, 9, 10], "compat": [5, 6], "compris": 1, "conda": 6, "conduct": 6, "config": 7, "configur": 4, "consid": [0, 1, 9], "consist": [1, 3, 5, 6, 10], "constraint": 8, "contain": [0, 1, 8], "content": 2, "contribut": [3, 6], "control": [0, 1], "conveni": 6, "convent": 1, "convert": [0, 1, 8], "core": [2, 3, 4, 6], "correspond": [4, 5], "could": 8, "count": [0, 1], "count_matching_row": [0, 1, 2, 6], "cpu": 3, "creat": [0, 1, 3, 7], "createdatafram": [5, 10], "creation": [0, 1], "cross": 6, "current": [6, 8, 10], "dai": 4, "dask": [5, 6], "data": [0, 1, 5, 6, 8], "data1": [5, 8, 9, 10], "data2": [5, 8, 9, 10], "datacompi": [4, 5, 7, 8, 9, 10], "datacompy_nul": 8, "datafram": [0, 1, 3, 5, 6, 8, 9, 10], "dataset": [1, 3, 5, 8], "date": [0, 1, 4], "date_fld": [5, 8, 9, 10], "date_fld_df1": 10, "de": 1, "decim": [0, 1], "decimal_compar": [0, 1], "decis": 4, "dedup": 1, "dedupl": [0, 1], "default": [0, 1, 4, 5, 10], "defin": [1, 4], "denot": [1, 4], "depend": [4, 5, 6], "deprec": [5, 10], "describ": [1, 8], "detail": [4, 6], "dev": 4, "develop": 6, "df1": [0, 1, 2, 5, 8, 9, 10], "df1_name": [0, 1, 5, 8, 9, 10], "df1_unq_column": [0, 1, 2, 8, 9, 10], "df1_unq_row": [0, 1, 8, 9, 10], "df2": [0, 1, 2, 5, 8, 9, 10], "df2_name": [0, 1, 5, 8, 9, 10], "df2_unq_column": [0, 1, 2, 8, 9, 10], "df2_unq_row": [0, 1, 8, 9, 10], "dict": 1, "dictionari": 1, "did": 3, "diff": [1, 8, 9, 10], "differ": [0, 1, 5, 6, 8, 9, 10], "directli": 8, "directori": [0, 1, 4], "disconnect": 4, "disk": 8, "displai": [0, 1], "dist": 4, "distinguish": [0, 1], "distribut": [3, 6], "dnr": 3, "do": [1, 5], "doc": 4, "docstr": 4, "document": [6, 9], "doe": [8, 9, 10], "dollar_amt": [5, 8, 9, 10], "dollar_amt_df1": 10, "dollar_amt_df2": 10, "don": [0, 1, 8, 9, 10], "done": [1, 3, 10], "drop": [8, 10], "dtype": [8, 9, 10], "duckdb": [5, 6], "due": [3, 9], "dupe": 1, "duplic": 6, "e": [0, 1, 4], "each": [0, 1, 4, 5, 8, 10], "easier": 4, "easili": [0, 1], "edgetest": 6, "empti": 8, "encod": 1, "endless": 4, "engin": 9, "ensur": 4, "enter": 0, "enum": 1, "env": 7, "environ": [4, 7], "equal": [0, 1, 6, 8, 9, 10], "equival": 5, "evalu": [0, 1], "exact": [0, 1], "exactli": [0, 5, 8], "exampl": [1, 5, 8, 10], "excel": 4, "except": [0, 1], "exclud": 1, "execut": [0, 1, 4], "executor": 3, "exist": [0, 1], "expect": 6, "experi": 3, "experiment": 9, "export": 4, "extend": [0, 1, 6], "extra": 4, "f64": 9, "fail": [0, 8], "fals": [0, 1, 5, 8, 9, 10], "fast": [0, 3], "favour": 5, "featur": 4, "feedback": 5, "few": [8, 9, 10], "field": [0, 1, 8], "file": [0, 1], "filehandl": 1, "filenam": [0, 1], "fill": 8, "final": [4, 5], "fine": [6, 7], "first": [0, 1, 4, 8, 9, 10], "fit": 8, "flag": [0, 1], "float": [0, 1], "float64": [8, 9, 10], "float_fld": [5, 8, 9, 10], "float_fld_df1": 10, "float_fld_df2": 10, "folder": 4, "follow": [4, 5, 9], "for_displai": [0, 1], "forc": 0, "forg": 6, "form": 1, "format": [0, 1, 9], "forward": [3, 6, 10], "found": 6, "frame": [0, 1], "framework": 5, "from": [0, 1, 3, 4, 5, 6, 8, 9, 10], "from_panda": 10, "fugu": [2, 3, 6, 10], "full": 5, "fulli": [0, 1], "functioanl": [6, 7], "function": [0, 1, 5, 6, 9], "further": 3, "futur": [4, 6], "gather": 5, "gener": [0, 1, 3, 6, 8, 9, 10], "generate_id_within_group": [0, 1, 2, 6], "georg": [5, 8, 9, 10], "get": [0, 1, 5], "get_merged_column": [0, 1, 2, 6], "getorcr": [5, 10], "gh": 4, "ghpage": 4, "git": 4, "github": [4, 6], "given": 1, "go": [0, 1, 4], "goal": 8, "gold": 1, "good": 9, "googl": 4, "grain": 3, "great": 5, "group": [0, 1, 8, 10], "grow": 0, "guarante": 5, "guid": 6, "guidanc": 4, "gz": 4, "ha": [4, 6, 8, 9, 10], "handl": [0, 1, 3, 8, 9, 10], "hard": 3, "have": [0, 1, 3, 4, 5, 6, 8, 9, 10], "help": [3, 4], "helper": 4, "here": [4, 6, 8, 9, 10], "highli": 7, "honor": 6, "hook": 6, "hope": 5, "how": [0, 3, 4, 6], "html": [0, 1, 4], "html_file": [0, 1], "http": [4, 10], "human": [0, 1, 5, 8, 10], "i": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], "i64": 9, "id": [0, 1, 3, 8, 10], "idea": 3, "ident": [0, 1], "identifi": [0, 1], "ignor": [0, 1], "ignore_cas": [0, 1], "ignore_extra_column": [0, 1, 10], "ignore_matching_col": [0, 1], "ignore_spac": [0, 1], "implement": [3, 5, 6, 9, 10], "implementaion": [3, 10], "import": [5, 6, 8, 9, 10], "improv": 3, "includ": [0, 1, 4], "increas": 3, "independ": 4, "index": [0, 1, 6, 8, 9], "indic": [0, 1], "individu": [0, 1], "initi": 8, "input": 1, "instal": [4, 5], "instanc": [1, 8, 9, 10], "instanti": 1, "instead": [0, 1], "instruct": 6, "int": [0, 1], "integ": 0, "integr": [5, 6], "interact": 6, "interfac": [5, 6, 9], "intermedi": 1, "intersect": [0, 1], "intersect_column": [0, 1, 2, 5, 6, 8, 9, 10], "intersect_row": [0, 1, 8, 9, 10], "intersect_rows_match": [0, 1, 2], "introduc": [6, 10], "io": [5, 8, 9, 10], "is_match": [0, 2, 5, 6], "isclos": [0, 1], "isn": 0, "isort": 4, "issu": [3, 6, 10], "its": [0, 1, 3, 6], "jira": 10, "join": [0, 1, 3, 5, 8, 9, 10], "join_column": [0, 1, 5, 8, 9, 10], "join_nul": 9, "just": [0, 1, 4, 5, 6, 9], "keep": [4, 6, 10], "kei": 1, "kinda": [0, 1], "know": 8, "known": 1, "known_differ": [0, 1], "larg": [1, 3, 8], "lazi": 1, "legaci": [0, 2, 4, 10], "legacysparkcompar": [0, 1, 6, 10], "let": [0, 4, 6], "level": 6, "librari": [5, 6], "licens": 6, "like": [0, 4, 5, 6, 8, 9, 10], "limit": 6, "list": [0, 1, 5, 8, 9, 10], "ll": 4, "loblaw": [5, 8, 9, 10], "local": 4, "logic": [6, 10], "look": [0, 1, 8], "loos": [5, 8, 9, 10], "lot": [3, 8], "lower": [0, 1], "lowest": 6, "lucil": [5, 8, 9, 10], "m": 4, "machin": [3, 4], "mahari": [5, 8, 9, 10], "mai": [5, 8, 9], "main": [4, 8], "maintain": 5, "make": [1, 3, 4, 6], "makefil": 4, "manag": [5, 6], "mani": [5, 6], "map": 5, "match": [0, 1, 2, 6, 8, 9, 10], "match_rat": 1, "matchin": 0, "matchtyp": [0, 1], "matrix": 6, "max": [1, 8, 9, 10], "maximum": [0, 1], "mean": [3, 6], "meant": [0, 1], "medium": 3, "mediumish": 3, "memori": [1, 8, 9], "mention": 9, "merg": [0, 1, 4, 8, 10], "merged_df": [0, 1], "messag": 4, "method": [5, 6], "michael": [5, 8, 9, 10], "might": 9, "migrat": 9, "million": 3, "minim": 3, "mismatch": [0, 1], "mix": 0, "mode": 1, "model": 9, "modul": [2, 6, 10], "montonicli": 3, "more": [0, 1, 4, 6, 8], "most": [3, 4], "move": [3, 6, 10], "much": 4, "multipl": 1, "must": [0, 4, 5, 9], "my_report": 1, "name": [0, 1, 5, 7, 8, 9, 10], "name_df1": [8, 9, 10], "name_df2": [8, 9, 10], "name_match": [8, 9, 10], "nan": [0, 1, 8, 9, 10], "nativ": [3, 5, 6, 10], "natur": 3, "na\u00efv": 8, "need": [4, 5, 8], "new": [0, 1, 4, 5, 6, 8, 9, 10], "newlin": [0, 1], "nice": [0, 1], "non": [0, 1, 5], "none": [0, 1, 4], "note": [0, 1, 4, 5, 6, 7, 8, 9, 10], "notic": 5, "now": [6, 10], "np": [0, 1], "npt": 8, "null": [0, 1, 8, 9, 10], "number": [0, 1, 3, 8, 9, 10], "numer": [0, 1, 3], "numpi": [4, 8], "obj1": 8, "obj2": 8, "object": [1, 6], "obsolet": 3, "offic": 10, "offici": 4, "olap": 9, "old": [6, 10], "on_index": [0, 8, 10], "onc": 4, "one": [0, 1, 4, 9, 10], "onli": [0, 1, 4, 8, 9, 10], "open": [0, 1, 6], "oper": [0, 1, 5, 8], "option": [0, 1, 4, 5, 10], "order": [0, 1, 4, 5], "orderedset": [0, 1, 9, 10], "org": [4, 10], "origin": [0, 1, 5, 6, 8, 9, 10], "original_df": [0, 1], "orphan": 4, "other": [0, 1, 4, 5, 6, 8, 10], "otherwis": 1, "our": 3, "out": [0, 1, 4, 5, 6, 10], "output": [0, 1, 4, 8], "over": [0, 6], "overlap": [0, 1], "overview": 6, "overwrit": [0, 1], "p": 10, "packag": [2, 4, 6], "page": [4, 6], "panda": [0, 2, 3, 4, 5, 6, 7, 9, 10], "parallel": [0, 5], "paramet": [0, 1], "particip": 6, "partit": 5, "pass": [0, 1, 4, 5], "pd": [5, 8, 10], "peopl": 4, "per": 4, "perform": [1, 3, 5, 6, 10], "pertin": [0, 1], "pick": 8, "pilot": 5, "pip": [4, 5, 6, 7], "pl": 9, "plan": 6, "pleas": [3, 5, 6, 7, 9], "polar": [2, 3, 5, 6, 7], "polarscompar": [0, 2, 6, 9], "pollut": 4, "port": 9, "post": [0, 1], "pre": [0, 1, 6], "preform": 3, "prepend": [0, 1], "present": [0, 1], "prevent": [1, 4], "print": [0, 1, 5, 6, 8, 9, 10], "proc": [0, 1, 6, 8], "process": [3, 4, 5, 6], "produc": 5, "project": [4, 6], "properli": 4, "properti": [0, 1], "proport": 1, "provid": [0, 1, 5, 6, 8, 10], "pure": 3, "push": 4, "py": 4, "py3": 4, "pypi": 6, "pyproject": 4, "pysaprk": [6, 10], "pyspark": [0, 1, 5, 6, 10], "pytest": 4, "python": [4, 5, 6, 7], "pyyaml": 4, "qualiti": 4, "queri": 9, "question": 1, "rai": [5, 6], "rais": 0, "ram": 3, "rang": 3, "rate": 1, "raw": [0, 1], "re": [8, 10], "read": [0, 1], "read_csv": [5, 8, 9, 10], "readabl": [0, 1, 5, 8, 10], "readi": 1, "real": 4, "reason": 4, "recogn": [8, 10], "recommend": 7, "recomput": 1, "record": [0, 1, 3], "redirect": 1, "refer": 1, "regener": 4, "rel": [0, 1, 8, 9, 10], "rel_tol": [0, 1, 5, 8, 9, 10], "relat": 5, "releas": 6, "renam": [6, 10], "render": [0, 1, 2, 4, 6], "replac": [0, 1, 5, 6, 8, 9, 10], "repo": [4, 6], "report": [0, 1, 2, 5, 6], "report_fil": 1, "repositori": 4, "repres": 0, "represent": [0, 1], "requir": 6, "resili": [8, 9], "result": [1, 3, 5, 9], "return": [0, 1, 4, 8, 9, 10], "right": 4, "robert": [5, 8, 9, 10], "root": 4, "row": [0, 1, 3, 6], "rows_both_al": [0, 1], "rows_both_mismatch": [0, 1], "rows_only_bas": [0, 1], "rows_only_compar": [0, 1], "run": [3, 6, 8, 9, 10], "runner": 4, "rust": 9, "sa": [0, 1, 6, 8], "safe": 10, "salt": 3, "same": [0, 1, 5, 8], "sampl": [0, 1, 5, 8, 9, 10], "sample_count": [0, 1], "sample_mismatch": [0, 1, 2], "save": [0, 1], "scene": [8, 10], "schema": 0, "seal": [5, 8, 9, 10], "search": 6, "second": [0, 1, 3, 8, 10], "section": [4, 9], "see": [3, 6, 9], "seem": 3, "semant": [4, 5], "sens": 1, "separ": 8, "seri": [0, 1, 8], "seriestyp": 0, "serv": [1, 4], "set": [0, 1, 4, 8], "setup": [4, 6], "setuptool": 7, "sever": 4, "shape": 9, "share": [0, 1], "shine": 3, "should": [0, 1, 4, 6, 7, 8, 9, 10], "show": [0, 1], "show_all_column": 1, "shown": 1, "sign": 6, "significantli": 1, "similar": [0, 1, 9], "simpl": [4, 5, 6], "sinc": 4, "singl": [3, 4], "size": 1, "skip": [0, 1], "slightli": 9, "slower": 3, "small": 3, "so": [6, 8, 9, 10], "some": [0, 1, 3, 6, 8, 9, 10], "some_field": 8, "someth": [0, 4, 6], "somewhat": 8, "soon": 4, "sort": 8, "sourc": [6, 7], "spark": [0, 2, 3, 5], "spark_df2": 5, "spark_sess": [0, 1], "sparkcompar": [1, 5, 6, 10], "sparkpandascompar": [0, 1, 2, 6], "sparksess": [0, 1, 5, 10], "sparksqlcompar": [0, 1, 2, 6], "specif": 5, "specifi": [1, 5, 8, 9, 10], "speed": 1, "sphinx": 4, "sql": [0, 2, 3, 5, 6, 10], "squash": 4, "standard": 1, "start": [0, 3, 6], "stat": [0, 6], "statement": 1, "stdout": 1, "step": [1, 8], "still": 4, "store": 4, "str": [0, 1, 9], "streamlin": 4, "strict_schema": 0, "string": [0, 1, 3, 8, 9, 10], "stringio": [5, 8, 9, 10], "strip": [0, 1], "style": 4, "sub": [0, 1], "subfold": 4, "submodul": [2, 6, 10], "subpackag": [2, 6], "subsequ": [6, 10], "subset": [0, 1, 2, 4], "suffix": [0, 1], "summar": [5, 10], "summari": [1, 8, 9, 10], "support": [0, 7, 8, 9], "sure": [4, 6], "sy": 1, "synthet": 3, "t": [0, 1, 8, 9, 10], "tabl": [3, 5, 8, 9, 10], "tag": 4, "take": [1, 3], "taken": 4, "tar": 4, "temp": 0, "temp_column_nam": [0, 2, 6], "temp_id": [8, 10], "templat": [0, 1], "temporari": [0, 8, 10], "test": [6, 7, 8, 10], "textio": 1, "textiowrapp": 1, "than": [0, 5, 6], "thei": [4, 9], "them": 8, "thi": [0, 1, 4, 5, 6, 8, 9, 10], "thing": 9, "third": [8, 10], "though": 5, "time": [3, 6], "tldr": 6, "toler": [0, 1, 8, 9, 10], "toml": 4, "toni": [8, 10], "top": 9, "total": [8, 9, 10], "track": [0, 1], "transform": 1, "treat": 1, "tri": [0, 1, 3, 9], "trigger": [0, 1], "true": [0, 1, 4, 8, 9, 10], "try": [8, 9, 10], "tune": 3, "tupl": 1, "tweak": [0, 6], "twine": 4, "two": [0, 1, 5, 6, 8, 9, 10], "txt": 1, "type": [0, 1, 4, 8, 9, 10], "ultim": 1, "under": [4, 6, 10], "understand": 3, "unequ": [8, 9, 10], "unexpect": 9, "unifi": [5, 6], "uniqu": [0, 1, 8, 10], "unit": 6, "unittest": 4, "unlik": 9, "unq_column": [0, 2, 5, 6], "until": 10, "up": [1, 4, 8], "updat": 4, "upgrad": [4, 7], "upload": 4, "url": 4, "us": [0, 1, 4, 5, 6, 7, 8, 9, 10], "usag": 6, "user": [0, 1, 3, 4], "utf": 1, "util": 4, "v0": [6, 9, 10], "valu": [0, 1, 8, 9, 10], "valueerror": 8, "vanilla": 0, "variabl": [0, 1], "vast": 3, "ve": 3, "veri": [3, 8, 9], "versa": [0, 1], "version": [0, 1, 3, 4, 5, 9], "via": [4, 5, 6], "vice": [0, 1], "virtual": 7, "virtualenv": 6, "w": 1, "wa": [0, 1, 3, 6, 10], "wai": [0, 1, 5, 6], "want": [4, 5], "we": [3, 4, 5, 6, 10], "welcom": [3, 6], "what": [0, 1, 6, 8], "wheel": 4, "when": [0, 1, 3, 4, 8], "where": [0, 1, 4], "whether": [0, 1, 8], "which": [0, 1, 3, 4, 5, 6, 8, 9, 10], "while": 1, "whitespac": [0, 1], "whl": 4, "wide": 1, "wisdom": 4, "wise": [0, 1], "wish": [6, 10], "within": [0, 1, 6, 8, 10], "without": [0, 1], "wonder": [8, 10], "work": [1, 4, 6, 7], "workflow": 4, "world": 1, "would": [1, 6], "write": 1, "x": [0, 1], "y": 1, "ye": [8, 9], "yield": 9, "you": [0, 1, 3, 4, 5, 6, 7, 8, 9, 10], "your": [1, 4, 6, 8, 9, 10], "zero": 0}, "titles": ["datacompy package", "datacompy.spark package", "datacompy", "Benchmarks", "Developer Instructions", "Fugue Detail", "DataComPy", "Installation", "Pandas Usage", "Polars Usage", "Spark Usage"], "titleterms": {"The": 3, "api": 6, "archiv": 4, "backend": 6, "base": 0, "basic": [5, 7, 9], "benchmark": 3, "caveat": [8, 9], "commit": 4, "compar": [5, 8, 9], "conda": 7, "content": [0, 1, 6], "contributor": 6, "conveni": [8, 9, 10], "core": 0, "cross": 5, "data": 3, "datacompi": [0, 1, 2, 6], "depend": 7, "dependnci": 6, "deprec": 6, "detail": 5, "develop": 4, "distribut": 4, "document": 4, "duplic": [8, 9, 10], "edgetest": 4, "extra": 6, "forg": 7, "from": 7, "fugu": [0, 5], "futur": 5, "gener": 4, "guid": 4, "hook": 4, "how": 5, "indic": 6, "instal": [6, 7], "instruct": 4, "legaci": [1, 6], "limit": [8, 9], "manag": 4, "method": [8, 9, 10], "modul": [0, 1], "object": [8, 9, 10], "overview": [8, 9], "packag": [0, 1], "panda": [1, 8], "polar": [0, 9], "pre": 4, "pypi": [4, 7], "quick": 6, "refer": 6, "releas": [4, 5], "report": [8, 9, 10], "requir": 4, "roadmap": 6, "row": [8, 9, 10], "run": 4, "setup": [3, 8, 9, 10], "spark": [1, 6, 10], "sparkpandascompar": 10, "sparksqlcompar": 10, "sql": 1, "submodul": [0, 1], "subpackag": 0, "support": [6, 10], "tabl": 6, "test": 4, "tldr": 3, "unit": 4, "us": 3, "usag": [5, 8, 9, 10], "version": [6, 10], "virtualenv": 7, "work": 5}}) \ No newline at end of file diff --git a/spark_usage.html b/spark_usage.html index 39a16c8..603cb50 100644 --- a/spark_usage.html +++ b/spark_usage.html @@ -6,7 +6,7 @@ - Spark Usage - datacompy 0.13.3 documentation + Spark Usage - datacompy 0.14.0 documentation @@ -166,7 +166,7 @@
@@ -190,7 +190,7 @@