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.
import matchlab as mb
companies = mb.read_database(
name="crn",
sql="select pk, company, town from companies",
client=warehouse,
key_field="pk",
)
entities = (
companies.clean({"name": "lower(crn_company)"})
.dedupe(
model_class=mb.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.
Metadata
Release files for matchlab 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| matchlab-0.1.3.tar.gz | 412.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| matchlab-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 580.7 kB
Release files / matchlab-0.1.3.tar.gz
| Download URL | matchlab-0.1.3.tar.gz |
|---|---|
| Size | 412.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9729dfc93c0da38fb626eb4c865f9422c154610a3fe505d85454d407061f6a48
|
|
BLAKE2b-256 checksum How to use checksums |
c9d9c1f10e435f21c9dfe03afaadd6931fc6448fd83da6c96a3fede3f33114c7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency logRelease files / matchlab-0.1.3-py3-none-any.whl
| Download URL | matchlab-0.1.3-py3-none-any.whl |
|---|---|
| Size | 168.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8984f6dd45831af67fbbeed0ed96b81c98b36c0c3e33db7dccb796d3bd7428c7
|
|
BLAKE2b-256 checksum How to use checksums |
6973afe0a651e461c3681a85956ceb9ba0bde3903ecb102b60b22712219c9994
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 16, 2026.
Transparency log