This release is a pre-release and may not be stable for production use.
matchlab
A local-first library for building, running and evaluating entity resolution pipelines.
Record matching is a chore. matchlab makes it a pipeline you can build, run, query and measure — on your machine, against your warehouse, with nothing to deploy.
from matchlab import Source
from matchlab.models.dedupers import NaiveDeduper
companies = Source(
location=warehouse,
name="crn",
extract_transform="select pk, company, town from companies",
key_field="pk",
)
entities = (
companies.clean({"name": "lower(crn_company)"})
.dedupe(model_class=NaiveDeduper, model_settings={"unique_fields": ["name"]})
.resolve()
.collect()
)
entities.lookup_key(from_source="crn", to_sources=["dh"], key="a1")
Read the full documentation.
What it does
- A lazy plan.
Source(...).dedupe(...).resolve()builds a tree of steps. Nothing runs until youcollect(). - Content-addressed caching. Re-collecting an unchanged plan does no work. Adding a step runs only that step.
- Materialised resolver output. A collected resolver writes a complete
(root, leaf, key, source)table, so lookups are reads, not re-derivations. - Measurement as a first-class job. Sample clusters, record judgements, score precision and recall, and compare methodologies on equal terms.
What it doesn't do
No server, no accounts, no permissions, nothing to deploy. If you need a shared, governed matching service, matchlab is not that.
Installation
pip install matchlab
Coming from Matchbox?
matchlab is the successor to matchbox-db, with the server removed and the client API rebuilt. It's a hard break — see the migration guide.
Development
See our full development guide and coding standards on our contribution guide.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file matchlab-0.1.0.dev1.tar.gz.
File metadata
- Download URL: matchlab-0.1.0.dev1.tar.gz
- Upload date:
- Size: 388.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e2b5074a9dc1f8b56f6387db591e3a53f7f45d060e577cce64e0f28c3e82539
|
|
| MD5 |
7341e90298a7ee4d0582bbf03f242783
|
|
| BLAKE2b-256 |
5a5fcc17d2ca432ab432f609cf06750ef126fac338c25945d8777e33690e2ed5
|
File details
Details for the file matchlab-0.1.0.dev1-py3-none-any.whl.
File metadata
- Download URL: matchlab-0.1.0.dev1-py3-none-any.whl
- Upload date:
- Size: 153.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c413d305f8fb2dc9a066dc4e10bc286c2d681c1523af09c3cdfcedf02b2a4441
|
|
| MD5 |
a64572af8ad6741b5d52442eb5a38306
|
|
| BLAKE2b-256 |
a8298af4f6b815cd885da870281b6358adeb4ecab93072c1aa402635081841b3
|