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.2.tar.gz (341.8 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.2-cp314-cp314-win_amd64.whl (1.1 MB view details)

Uploaded CPython 3.14Windows x86-64

kanoniv-0.3.2-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.2-cp314-cp314-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

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

Uploaded CPython 3.14macOS 10.12+ x86-64

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

Uploaded CPython 3.13Windows x86-64

kanoniv-0.3.2-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.2-cp313-cp313-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows x86-64

kanoniv-0.3.2-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.2-cp312-cp312-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

kanoniv-0.3.2-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.2-cp311-cp311-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

kanoniv-0.3.2-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.2-cp310-cp310-macosx_11_0_arm64.whl (1.3 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.12+ x86-64

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

Uploaded CPython 3.9Windows x86-64

kanoniv-0.3.2-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.2.tar.gz.

File metadata

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

File hashes

Hashes for kanoniv-0.3.2.tar.gz
Algorithm Hash digest
SHA256 ab91337797bc1564f6e7b6f26a4724e24a9d7ea895fea0a3cb67f5d7d0773495
MD5 e42f9ec9d36e492509b3344620236049
BLAKE2b-256 afe09fbe76f53c21d7d7e73c7f3ed1fa5723bdcb5e5c9ec266ece585043f0d7e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kanoniv-0.3.2-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.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 8781568acf332378aa5ac83c2d187f4a5c474793f80ba8e7bb6cf0992c070fe7
MD5 422c875640ee6951e50a350e4b337e02
BLAKE2b-256 b2462e6fbbae929ac45a007be0df608469ce3f0b944e32ffb62130684f45e4d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6c67da5ba3a74153d3c39083a746c15188ad88bc9ba890bb32617d416a03fb73
MD5 74f0093b859817b73b6e25e5e5728d1e
BLAKE2b-256 cda7e5d55a39a3e6adc9be878071f1a477458f519a95e39e5d638299b42f4ed9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 19bc4c951426589ac40e47099c5e2f1c672effe75d77e4ea06b31d2537d0fe49
MD5 022cabdc806988a22bc6d8d5708b6573
BLAKE2b-256 e978c261e1a4e3027b61dc01ffd99c29d37e42af58ccf4ae7aac506fdeb94084

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 77c230b63834844ac81ebbe0765735b131f8c391f6be0e47e34f7cab9e6e87a0
MD5 389ff86002d3ab895f42e6474f1564c5
BLAKE2b-256 70827097bff7c0540b77669a116407fd44c28bd1fef2e6005213dcebffb4c6f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kanoniv-0.3.2-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.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c97d524ff3829f6de0783ad245227280babfa6442da68961375ee18e7a7e3c71
MD5 c7512e2c5481d43cdd83383abfe6b50d
BLAKE2b-256 a48742d0d411fb57369d159334308a3ebd5c74348ec2f9a5bffa31a1035c07bb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f9954d805a970eec99f96fb763fd504f39eb4c7f0dff010bfe89975493fd08d
MD5 c17df4efb85906524a70f8b1e172866a
BLAKE2b-256 c9ac4649cb9e4217c70e7ca28a7414d0f1c6241ed0124e0208572d2ba36e42ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2cb3e44b86ce86d21bc8a5d22e8d1dd1972e972a4beb2055e124e29257805a98
MD5 433e34f47bae3d8c2451d106d004da14
BLAKE2b-256 d3732a11cdc0fd7598d47bb1a1f83cb839dcdd3d4e938ff2b59a9c3128b3773f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 2ad22c8a816dfa2d9bf44ddc9c29d8b75c9590dabe3d62d7bd5e165d5c6f3d91
MD5 84a9bb17a6e8abead91f981c5709cc68
BLAKE2b-256 e1214e9163a61220542ece7a9267ee3fb198e8e02fb97666d8450b98995086f4

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kanoniv-0.3.2-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.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 24a46d32689e1701dc9f4568eb3e2e310ba5e2441cb16b7eb13a11c26036e5fd
MD5 867daedccd2b0f2a443eeaf93dabb685
BLAKE2b-256 4bfae017997f8835b8844c833d2a0f468a7f6a02d47c6f2861381af15da6cc2f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 804999061cba07782a5d9763edf9955468f582ba07afbc2580f7b0eb6c2b2553
MD5 3bf91cb55b1b705d900581f220b12eec
BLAKE2b-256 5eb554249e532a886b3c87e26b2fff5a92f2dd7eb76eb99d9f6967becacab4e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ac54458c1b880c6c30b3a74ed045200a2b5aac635b91706114045a3504eaddb8
MD5 e24109f6b3af8adafa7d6325fec69c92
BLAKE2b-256 122118b7b11d208947a4ae5ba3d74340e205a95c38f99fda8f85976786ff0c87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 25029d98057a7a9c9b61757adcab77a0a8c18281bfca755202ec458b9ee73873
MD5 0a77c23acf159fbe8b73893e27f65cb5
BLAKE2b-256 cd3f8f231cf4a404289a0da49f43230681671e528338bb6287056cef68b66b80

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kanoniv-0.3.2-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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 f8d0c9bb6c7f8bc283f9dd989ca5165af168616d1df5d8598d0054ea9f831a4d
MD5 71cad56e91b9be2044f50fcd316a2ef0
BLAKE2b-256 203aeac8767fa487184027ef6c4504f739668b45e4799a37e75e7f48eb043207

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d27a070f0ee928d6f7dff7d41a502e6fd96b4a277dfbbc4b8a8cf7ff41c9d592
MD5 a3f82c18e5b1d88826652c14dfb89326
BLAKE2b-256 200baa841a5921150bc526148ea87f02baf61257d0ca0f1275057167e6895d08

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c75f00f219a229ee2d6a60677b76c30367c0f8e1a78a41081f6c517448957ba0
MD5 99285666713e38fa6a7fa1591916a28b
BLAKE2b-256 5adc8a4a163355c464de744969d52ad74be002264138ffe987188d478f7f4c7a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e63686f0223fdefc6b3e911a77ff685b13c4365267b7d5f3af2ec817d1005490
MD5 961018021ea04eba4a780c84eaeffb2a
BLAKE2b-256 1926208e498477583c034326724e92944d957fe0f66a352585a24a1114d17c33

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kanoniv-0.3.2-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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c4e565d0326680482ce16c7bc761d35f55463717eec3359f91899220c5428da5
MD5 69a9b414b261a18891f15b08fb0ea165
BLAKE2b-256 bccdeccd25f67bc17e0f92925def8947985b67daa94bd0b1ebda5b11cc2415f6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6adadda6d0ca46a3c3c6d933e3fe8e4db898944267f51175397aa5de639be8d1
MD5 9fb85986b1603fa29f29341d2582d629
BLAKE2b-256 e274992a11cb0e2076b64a28e666d8f257fb5e32d76f7a50bd6433470199539f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 acb0f14eff0aa0a34794f3c6e1d262915c417ba180b49e0af07204167305a12d
MD5 635aa963031ac5247801f74c31fa7d53
BLAKE2b-256 65ecb13e509bf8aa106abf6210869410f4bdf09f064d2021d61d03e8cc9657f8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 41d02426a276a3f81a871fb6f39f2ea3c67cb5ca896e5ca5e17222234a8de326
MD5 70c84ef58ddaaa26bd7ed9c7029a1d62
BLAKE2b-256 72c6154f361d59b88813e8382521553e9ea7de460e322074c3700564b244a2c6

See more details on using hashes here.

File details

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

File metadata

  • Download URL: kanoniv-0.3.2-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.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f6c24d2e9567f761b123501ef764d21de76f5aee241b1259bcf5ef3d10296715
MD5 a2ef2b7f3b3ebb52acffd03e71c82beb
BLAKE2b-256 bb0ea6b75cbf34de6745e71328725ca16697f75e7e48efad761072c689f71c7d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for kanoniv-0.3.2-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6b611604991492564635a731ac8303f14e8340ab0b7c3503772a8369c1cd8ada
MD5 f38435d15c883f93d058b12ac0cc47b2
BLAKE2b-256 fb5be68257e2d19a91b084405fc0ba2f28fa3252c72749c181f41a17d35b17fc

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