Span
span_data is a Python library for customer data resolution and unification.
Early release. This package is under active development, and the public API and import paths may change between releases. We expect to follow semantic versioning more strictly after a 1.0 stable baseline; until then, treat upgrades as potentially breaking. Pin a specific version in production and review span_data/packaging_info/CHANGELOG.md before upgrading.
Modules
id_grapher
Identity resolution built on Splink and DuckDB. Links records that refer to the same entity across one or more source datasets and produces a unified ID graph keyed on profile_id.
from span_data.id_grapher import IDGrapher, FieldDefinitionMap, Overrides
Key capabilities:
- Ingest source data from pandas DataFrames, CSV files, and Snowflake tables or views.
- Clean and normalise source fields (text, email, phone number).
- Resolve entities into profile clusters with Splink-based probabilistic matching.
- Export graph results to DataFrames, CSV, Parquet, DuckDB relations, and Snowflake.
- Apply manual override workflows for merge, split, and assign operations.
See Span Product Documentation and the
in-package guide span_data/packaging_info/USAGE.md (ships with the wheel)
for usage examples.
c360_compiler
Customer 360 pipeline built on DuckDB. Driven by a SpanConfig
(span_data.io.SpanConfig) via C360Compiler.from_span_config.
from span_data.c360_compiler import C360Compiler
from span_data.io import load_span_config
span_config = load_span_config("span_config.yaml")
compiler = C360Compiler.from_span_config(span_config, app_name="MY_DB")
SpanConfig
Unified configuration for ID Graph and C360. Load from YAML, validate, and run
locally with the span-data CLI:
span-data validate-config span_config.yaml
span-data run span_config.yaml --data-dir ./data --output-dir ./out
Input CSVs under --data-dir are named {derive_source_name(dataset)}.csv
(for example ANALYTICS.SOURCES.CRM_CONTACTS → ANALYTICS_SOURCES_CRM_CONTACTS.csv).
from span_data.io import load_span_config
from span_data.io.config.adapters import to_splink_config, to_c360_compiler_config
Key capabilities:
- Merge customer demographics from multiple dimension sources with configurable waterfall precedence.
- Compute rolling-window metrics (6-month, 12-month, lifetime) from fact tables.
- Build a consent fact table with two-tier taxonomy (purpose / medium) and conflict resolution.
- Generate boolean and categorical customer segments.
- Enrich fact tables with
profile_idand deterministic hash keys.
See Span Product Documentation and the
in-package guide span_data/packaging_info/USAGE.md (ships with the wheel)
for configuration reference and usage.
Python Support
This package supports Python >=3.11 (3.11–3.14), shipped as a cp311-abi3 wheel.
Usage
See Span Product Documentation for usage instructions.
License
This project is licensed under the BSD 3-Clause License. See span_data/packaging_info/LICENSE.
Third-party dependency license information is documented in span_data/packaging_info/THIRD_PARTY_NOTICES.md.
Release history is documented in span_data/packaging_info/CHANGELOG.md.
Metadata
Release files for span-data 0.5.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| span_data-0.5.0-cp311-abi3-win_amd64.whl | CPython 3.11 | abi3 | Windows x86-64 | Details |
| span_data-0.5.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl | CPython 3.11 | abi3 | Linux glibc 2.17+ ARM64, Linux glibc 2.28+ ARM64 | Details |
| span_data-0.5.0-cp311-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl | CPython 3.11 | abi3 | Linux glibc 2.28+ x86-64, Linux glibc 2.5+ x86-64 | Details |
| span_data-0.5.0-cp311-abi3-macosx_11_0_arm64.whl | CPython 3.11 | abi3 | macOS 11.0+ ARM64 | Details |
Total release size: 6.4 MB
Release files / span_data-0.5.0-cp311-abi3-win_amd64.whl
| Download URL | span_data-0.5.0-cp311-abi3-win_amd64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
59a95dc548835af639c84fdb028e940ee977d0871a7793c5dca8e9d4a9c36062
|
|
BLAKE2b-256 checksum How to use checksums |
cd34341bb7b7b3ddd18d00d1ab7f0af506982fe033836a97fbe501fa7e752cc4
|
| 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 Aug 5, 2026.
Transparency logRelease files / span_data-0.5.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
| Download URL | span_data-0.5.0-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl |
|---|---|
| Size | 1.7 MB |
| Tags | CPython 3.11 Linux glibc 2.17+ ARM64 Linux glibc 2.28+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
535c0b1ef02cf3db42c12bb5b3aac08e90891708921de596d8a713f1847ef826
|
|
BLAKE2b-256 checksum How to use checksums |
a5b3b036fbb8f182c67aa72b7873688ffe9b608591e6bdefb1a700d0953983c7
|
| 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 Aug 5, 2026.
Transparency logRelease files / span_data-0.5.0-cp311-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
| Download URL | span_data-0.5.0-cp311-abi3-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl |
|---|---|
| Size | 1.8 MB |
| Tags | CPython 3.11 Linux glibc 2.28+ x86-64 Linux glibc 2.5+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
ef1f8177209cd6634b9a5b169876d7188aa8e9dae8e5961ded2550b9ac18c47f
|
|
BLAKE2b-256 checksum How to use checksums |
15c28b1953fee2cd4cb7cc7b8cd65391e350d6d5fb545cea090d904b62561b11
|
| 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 Aug 5, 2026.
Transparency logRelease files / span_data-0.5.0-cp311-abi3-macosx_11_0_arm64.whl
| Download URL | span_data-0.5.0-cp311-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.5 MB |
| Tags | CPython 3.11 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
c9c9e63964b202744bfffba4cee02b235462e01e86b387acb7cdddf234232af9
|
|
BLAKE2b-256 checksum How to use checksums |
c4c2a92f53353015e45e00101e7799b876bc339b59765b35443da3f47135bc80
|
| 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 Aug 5, 2026.
Transparency log