v1.2.7
Fix: Auto-config cardinality guards
Auto-config (dedupe_df(df) with no config) failed on datasets with near-unique ID columns, low-cardinality categorical columns, or long-text description fields. This release fixes all three root causes.
Bug fixes
- Blocking on unique IDs — Columns with
cardinality_ratio >= 0.95(e.g.,rec_id,id) are now excluded from blocking key selection. Previously, these produced single-row blocks with zero comparisons. - Exact matchkeys on low-cardinality columns — Columns with
cardinality_ratio < 0.01(e.g.,state,county) no longer get exact matchkeys. Previously, these caused quadratic pair explosions (50M+ pairs → MemoryError). - Description columns routed to fuzzy matching — Long-text columns (avg_len > 50) now get a
token_sortfuzzy scorer in addition torecord_embedding, ensuring they contribute to matching even without a sentence-transformer model. - Safe defaults — Guards only fire when
cardinality_ratiowas actually measured (> 0), so manually-constructedColumnProfileobjects are unaffected. - Config-altering decisions now log warnings instead of info-level messages.
Testing
- 64 autoconfig tests (was 49), including boundary value tests and integration tests on real Febrl and DBLP-ACM benchmark datasets.
- Full suite: 1244 tests passing.