Skip to main content

kanoniv

Identity resolution as code. Define matching rules in YAML, reconcile locally in Python.

PyPI License

Installation

pip install kanoniv

Quick Start

import kanoniv

# 1. Load your spec
spec = kanoniv.Spec.from_file("kanoniv.yml")

# 2. Validate it
result = kanoniv.validate(spec)
result.raise_on_error()

# 3. Load sources
sources = [
    kanoniv.Source.from_csv("crm", "data/crm_contacts.csv", primary_key="id"),
    kanoniv.Source.from_csv("billing", "data/billing_accounts.csv", primary_key="id"),
]

# 4. Reconcile
result = kanoniv.reconcile(sources, spec)

# 5. Golden records as a DataFrame
df = result.to_pandas()
print(f"{result.cluster_count} entities, {result.merge_rate:.0%} merge rate")

Every record in the output DataFrame gets a kanoniv_id — a stable identifier that groups duplicate records across sources into a single entity.

What the Spec Covers

The YAML spec is the single source of truth for your identity resolution pipeline:

  • Sources — canonical field mappings from each system
  • Blocking — composite keys to reduce O(n²) comparisons
  • Scoring — Fellegi-Sunter probabilistic matching with EM training
  • Normalizers — email, phone, name, nickname, domain (built-in)
  • Survivorship — golden record assembly rules (source priority, most complete)
  • Governance — freshness checks, schema validation, shadow-mode deploys

See the spec reference for the full schema.

Source Adapters

# Pandas DataFrame
source = kanoniv.Source.from_pandas("crm", df, primary_key="contact_id")

# CSV file
source = kanoniv.Source.from_csv("billing", "data/billing.csv", primary_key="account_id")

# Warehouse table (requires sqlalchemy)
source = kanoniv.Source.from_warehouse(
    "erp", table="raw.erp_customers", connection_string="postgresql://..."
)

# dbt model (requires sqlalchemy)
source = kanoniv.Source.from_dbt("staging", model="stg_customers")

Validation & Planning

# Validate spec for errors
result = kanoniv.validate(spec)
if not result:
    print(result.errors)

# Preview the execution plan
plan = kanoniv.plan(spec)
print(plan.summary())

Diffing Specs

# Compare two spec versions
diff = kanoniv.diff(spec_v1, spec_v2)
print(diff.summary)

Cloud API (Optional)

For managed reconciliation, monitoring, and collaboration, install with the cloud extra:

pip install kanoniv[cloud]
client = kanoniv.Client(api_key="kn_...")

result = client.resolve(system="crm", external_id="003xxx")
entities = client.entities.search(q="john@acme.com")

See the cloud API docs for the full reference.

Links

License

Apache-2.0

Metadata

Release files for kanoniv 0.3.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kanoniv 0.3.9
File Size Uploaded
kanoniv-0.3.9.tar.gz 538.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for kanoniv 0.3.9
File
kanoniv-0.3.9-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
kanoniv-0.3.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
kanoniv-0.3.9-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.13 CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64 Details
kanoniv-0.3.9-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
kanoniv-0.3.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
kanoniv-0.3.9-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) Details
kanoniv-0.3.9-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
kanoniv-0.3.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
kanoniv-0.3.9-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64, macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64) Details
kanoniv-0.3.9-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
kanoniv-0.3.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
kanoniv-0.3.9-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64 Details

Total release size: 33.9 MB

Release files / kanoniv-0.3.9.tar.gz

Download URL kanoniv-0.3.9.tar.gz
Size 538.2 kB
Tags Source
SHA-256 checksum
How to use checksums
46bc3eebe6dfb63f4c5567544a78d716656388f581320abc88a6c73a6b19aecd
BLAKE2b-256 checksum
How to use checksums
824231e47e66029c18273b5ae241504f00bc9fd700f653484df046d9cd2b896c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp313-cp313-win_amd64.whl

Download URL kanoniv-0.3.9-cp313-cp313-win_amd64.whl
Size 1.9 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
91286acf17988b81199275eabcc732b01be42d223ee04186c87155ba55f9e223
BLAKE2b-256 checksum
How to use checksums
104ba622d1716a599d49b5b44f1ab6f7377699e65ea3c85eeba06d4ae7693992
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL kanoniv-0.3.9-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6ff7e082795415e6f0b7ba8ad9a1c57c3afe6e71fa7dbb397918133ec48de716
BLAKE2b-256 checksum
How to use checksums
795919d4186eebe69d8f31cb91f3a0fb9464f24db6bf27e0fd4180a2e9f4fe38
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL kanoniv-0.3.9-cp313-cp313-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 4.0 MB
Tags CPython 3.13 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
133ab33f89e5673d7e93fdca22915c6eacbe0877ca77417809155accaded6fd8
BLAKE2b-256 checksum
How to use checksums
c3aad5d80a7bd587c94271bf81bdf914cf6e4c7c0e85288145d28948eee7a070
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp312-cp312-win_amd64.whl

Download URL kanoniv-0.3.9-cp312-cp312-win_amd64.whl
Size 1.9 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
4bfbce6e768e71e18055e868b10a5998083cdb476332bb91bc2df9cc1985011e
BLAKE2b-256 checksum
How to use checksums
8d7b4bf97a62edf5290d9fbbd888a82c4186a9c42650f6dc25a67e5710e7cf7e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL kanoniv-0.3.9-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d8988f22f07ba723338a70f22b1794733d083de40872e5e5f653265e7dd671ba
BLAKE2b-256 checksum
How to use checksums
7ceac6d26be352afae427ff0e52e031e96f1649f254d7bfba72ca096b09b75ce
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL kanoniv-0.3.9-cp312-cp312-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 4.0 MB
Tags CPython 3.12 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
317dce6508a583d75c4c655c9ee1f3d58f84e73418cedd07f8322e14e0a9a80f
BLAKE2b-256 checksum
How to use checksums
5264e55503acf01cdc03273551916964d53abfdc5dbc7bf5dc2ca090784ac97f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp311-cp311-win_amd64.whl

Download URL kanoniv-0.3.9-cp311-cp311-win_amd64.whl
Size 1.9 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
b840c5e329bfe3a9a521c6370a668491c6c76557ab8ab0daae52298bd457fcf7
BLAKE2b-256 checksum
How to use checksums
18fd263ef0ce5645e36aca50a2ed2617ed140030053e85b25f7d84a159e7db9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL kanoniv-0.3.9-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a55b31ef3b8c3da484a434c07fe1fef113851d4b00eefaefcc02e0d8f4dd51d7
BLAKE2b-256 checksum
How to use checksums
3c18a600039e086ddd81462d739cd10ce81263425e832ada1f36a07f0a532eee
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL kanoniv-0.3.9-cp311-cp311-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 4.0 MB
Tags CPython 3.11 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
609bc11100dbb070177dcebd8c7f923110f21b0823b149e79da4249a0e658170
BLAKE2b-256 checksum
How to use checksums
8ad8e4f5923d7383cd10318ed00ba8f94070ac6f464c23c058373fb44e5109d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp310-cp310-win_amd64.whl

Download URL kanoniv-0.3.9-cp310-cp310-win_amd64.whl
Size 1.9 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
cfa25823004efb0f3bedade2678eda243f6786f8bfbc64c1fd76cbbf06c711ad
BLAKE2b-256 checksum
How to use checksums
e9ca5875cd20090c70dc8f125ad115db9736f1ecad4ef6f349411c004b3e9812
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL kanoniv-0.3.9-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
0872ba3398f42de8ced48cb65032301353e84e72d801118e9692153a44c3e6ff
BLAKE2b-256 checksum
How to use checksums
8b7d08d715d9b333424a720d295be82d2b960ba7c8e41fbb5eaf7472c5ab9bfa
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release files / kanoniv-0.3.9-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl

Download URL kanoniv-0.3.9-cp310-cp310-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
Size 4.0 MB
Tags CPython 3.10 macOS 10.12+ universal2 (ARM64, x86-64) macOS 10.12+ x86-64 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ab7fa18bd5863fe7c519c710fab0f3b6f0bd295dbd2193e847ff3d0bfa6ced72
BLAKE2b-256 checksum
How to use checksums
0638c64a39eb25812f65d92353a323e4aa839ea8beca99fdb6033fb406487bef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.12.6

Release history Release notifications | RSS feed

This release

0.3.9 This release

13 release files

0.3.5

13 release files

0.3.4

13 release files

0.3.3

13 release files

0.3.2

23 release files

0.3.1

23 release files

0.3.0

23 release files

0.2.16

4 release files

0.2.14

4 release files

0.2.13

4 release files

0.2.12

4 release files

0.2.10

4 release files

0.2.9

4 release files

0.2.8

4 release files

0.2.7

4 release files

0.2.3

4 release files

0.2.2

2 release files

0.2.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page