Skip to main content

Identity resolution as code

Project description

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kanoniv-0.3.1.tar.gz (335.1 kB view details)

Uploaded Source

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

kanoniv-0.3.1-cp314-cp314-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.14Windows x86-64

kanoniv-0.3.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

kanoniv-0.3.1-cp314-cp314-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

kanoniv-0.3.1-cp314-cp314-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

kanoniv-0.3.1-cp313-cp313-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.13Windows x86-64

kanoniv-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

kanoniv-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

kanoniv-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

kanoniv-0.3.1-cp312-cp312-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.12Windows x86-64

kanoniv-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

kanoniv-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

kanoniv-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

kanoniv-0.3.1-cp311-cp311-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.11Windows x86-64

kanoniv-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

kanoniv-0.3.1-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

kanoniv-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

kanoniv-0.3.1-cp310-cp310-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.10Windows x86-64

kanoniv-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

kanoniv-0.3.1-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

kanoniv-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

kanoniv-0.3.1-cp39-cp39-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.9Windows x86-64

kanoniv-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (1.5 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.17+ x86-64

File details

Details for the file kanoniv-0.3.1.tar.gz.

File metadata

  • Download URL: kanoniv-0.3.1.tar.gz
  • Upload date:
  • Size: 335.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for kanoniv-0.3.1.tar.gz
Algorithm Hash digest
SHA256 0f94f570fe8f0a2b26d3fed43ce3b615063c557a66338284f86cbb2fedcd4cbf
MD5 25b93551d834ff3c626df53a65605b0a
BLAKE2b-256 9f3061b7bb01aee9367c62e0dd09f752325f98642f00410376b999eae7f59723

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: kanoniv-0.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for kanoniv-0.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 70248fe50faa956f06c4fd94e92f8dfebb903516489a4c44e38aec0f06e1a27c
MD5 72131cf5667883e33b4348cfe1171db2
BLAKE2b-256 0a387987237ebbb76df1a900a55e98326e0318670e6a98664071a42ded48c57a

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c37de34bfdaa946adf6b98237a62123c6b02b2e8d413439087b815d250d717c0
MD5 17773d5da1ff06b28b27d7c1e21401c3
BLAKE2b-256 4f426fc23e2593d7397750659da7badef965225472946118183e8510f1e6f908

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef8e0dd94bcb8196ccb2ef694ff5ffdc7c8a815bfc2baa7f0971c2f2b22d64f9
MD5 1c57097dd1b2815b4e8a1b89ad520f14
BLAKE2b-256 8a23646357c11c98e09bb2ccf2a43dad0b692394c539e743ffdd72fa282e5212

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fe8322df314969689bfeafbc9e4a6a086150e4f5633cb6dccd47a0165b510f6f
MD5 d27efe2f738f200ee5584eaaafd462f2
BLAKE2b-256 ec47fdab9844d753ca1648818b378210c101f84b5a52c30f9c228832d6b663ce

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: kanoniv-0.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for kanoniv-0.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 703af5355c18ba0f8253e8e458622b3f9c5f6b1382fa550ba060466baf5002c4
MD5 14114f47c9e58c3797b3fe77ba4cf910
BLAKE2b-256 aa56179699ac6a00b539bbebb38a23c33413ca21eed50e5cd6c356b0cdce7f13

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9c46a98131ef596da3c317d599d1e7b5ee85b215261e5acf11a77a31e9c1b6f1
MD5 d0ce3d40dc65f82a1c4e73903c0ec15f
BLAKE2b-256 8a9423ba5cbaf7f49e7ae13d5a9fa1fbe913f6c2ca16066282c987ca2c71fec9

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 58f1346db550585b01fbb4bd0d763fb7c9ee43a2f8754c50b2a81aa7e2804212
MD5 da2caa3eac8b29f45d258077b74290c8
BLAKE2b-256 66dc2d54b1d1a45e83d79c01f3f0952d2db27feb719d27e18735defe282868e4

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3c1d7e90451add58ad1f1982860c6fa134aca45abe4e1b4019a8855e22067eb4
MD5 0f056e969f1f552a859f6104b8143b31
BLAKE2b-256 15db394036585d474c307cff26078c3560d35fd7aec9dba88d89195dbfba1125

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: kanoniv-0.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for kanoniv-0.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 ab2f5844dad4ca74353476e11450b681505953085c7c16d0311267e25be07ade
MD5 3f5ec61bb221327a2540719f3648e8cc
BLAKE2b-256 ee8de1f488c6ad781c9a97f24263ae06632ad82ab411a5b1df188ecf42152ed2

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e3ba319ab156b11b2b01742281194bc64babc6a82983a336f3ce400ff3642383
MD5 0a7f4b3b8cf9eaae3ec64769b6854151
BLAKE2b-256 046033207456d1111b352a30869b450306b5299daa6ba21aeee3a25bcd0eee58

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4230ae2f08477ab4a60dd8aba9b16a6d602733f3980c2421c5955b7a43bb8e44
MD5 cb1fef201cbe881b41962cda68875381
BLAKE2b-256 bab9ecc0c8a2b810fb6facccbdc0d1f6b2cffe8791ef8a9dfa5df1766927155d

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 838f94ef304ca373822338024f9e2f7202a5f582cbc266ddaab974389a3f3cf4
MD5 ce7ef746c109fa5273c747e2d6d4e801
BLAKE2b-256 a91425de0d43b03ddd108ffe68604ae725125407aaf27a3271ed8d4353c78542

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: kanoniv-0.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for kanoniv-0.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 11b1de845d43b54ce6e072beee4b600e2ad2aa11f49a8407652601028b863dea
MD5 30b0a04d86c6d723b67164f1e1f217ff
BLAKE2b-256 5f68a72814837f7ada074ec77c6e33904adb9ade3bb5b89a167b3daff246d19f

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c68f5a5e54f0c3cb9face467fc15e59576cd13ca227c4a2de1349ad5d95d0bb0
MD5 f70e15eb48f783e03428928d7b7b0b76
BLAKE2b-256 995dc398174ed3a37125179fcebd13c159bc9ee9a7720082d954cd603b23d98b

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6426cab94cef646cecb4596efd1c05bae06e8ed579c83d962ba823b33ad62e3a
MD5 e05a410314764c90fe4c5d6e7b9bcd70
BLAKE2b-256 2223c6d501fc056aa4406afdbdb94dfe2a1bc0ffcff61adeb0e29f15ec56278b

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0cb3d8ac1407c263d52ad2ae7512209021811e5e247bdee0786268112856209e
MD5 3a49e3be0b23210febfba2078f783510
BLAKE2b-256 7e93a7804973f86829501e7c8e8eb1f5253a87c4d53bf8d5549bfb6796d2a7d1

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: kanoniv-0.3.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for kanoniv-0.3.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 d6a4013cbe0aba45e1e59f681c8b1cd6380513a4b52728e2a83c3858b8f17981
MD5 637e197d2c84ca6399c79caa875f6928
BLAKE2b-256 1cdd76f605b9acd9057b86687d81e34176f0eddee3ab6bbb49c224a07d9753ff

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bcf964b0be6866bd3cb718b02747090a0f1988d1c0b79e6801ed9db32c3bd7cc
MD5 5f854d1209ab28620291d788a7091514
BLAKE2b-256 34b90552ceb777d7aa663cd41322c0cf2e429aa39d682ddf3bd5115778f2c4cc

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 236e59d0cc377d1ccb84f0fe1307442b62c033d376a4c8831df627c7a44bbf4c
MD5 fc1bc8b31174a9428c05005c3b3079ec
BLAKE2b-256 4a814734249881e77481f9780a418ccb5511d3120e027ad8e51f286160d36bc7

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a12f37e0f6c65ba00340cb31b34e78c9fa23bbd1316051ba44c485adf92bec3f
MD5 89a7aae4fdd6eda1ea9c6e00e8740957
BLAKE2b-256 86ae719923432d3e9f8ae5d904b03ddca1e704885c82cdd6f269530ac48c8329

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: kanoniv-0.3.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.1 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: maturin/1.12.4

File hashes

Hashes for kanoniv-0.3.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 fc1250dd76dc94eabd7159f6418e3e4f77a35c9afd43d456394c74ffb3a835a2
MD5 4667fdf4a4f8c8805c4b648057391d86
BLAKE2b-256 17f4e6095a193d610dff8e07d7c12012bcc2d1e4997644f289b67bb3db99835b

See more details on using hashes here.

File details

Details for the file kanoniv-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for kanoniv-0.3.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b44f249f991edf3bcd67679f0b2c7006e66c9cd589b603f18d1bcef1b8f9d697
MD5 ba5eb1de1138bf2dfe8b09faf0c5a272
BLAKE2b-256 c34d6165d7932a5c201c82c2927e5fb72d0f014f30ae2f8cf4e4889a25fc758f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page