Skip to main content

Attestant

AI compliance for regulated lenders. Validate, approve, monitor, and defend AI-driven models and decisions.

Install

pip install attestant

Quick Start

import attestant
import pandas as pd

# Configure (or set ATTESTANT_API_KEY environment variable)
attestant.configure(api_key="pvt_live_...")

# 1. Declare data sources — provenance tracks automatically
data = attestant.source(pd.read_csv("applicants.csv"), "applicants")
demographics = attestant.source(
    pd.read_csv("demographics.csv"), "demographics",
    protected=["race", "gender", "age"],
)

# 2. Normal pandas — taint propagation happens behind the scenes
merged = data.merge(demographics, on="id")
X = merged[["income", "credit_score", "dti"]]
y = merged["approved"]

# 3. Validate before deployment
result = attestant.upload(
    model=model,
    X_test=X, y_test=y,
    protected_columns=["race", "gender", "age"],
    model_name="credit_approval",
    model_version="v2.1",
)
print(result.dashboard_url)

# 4. Gate in production (one line)
attestant.gate("credit_approval", "v2.1")

# 5. Log predictions for monitoring
attestant.log_predictions(
    model_name="credit_approval",
    model_version="v2.1",
    predictions=model.predict_proba(X_new)[:, 1],
    features=X_new,
    protected_data=demographics_new,
    protected_columns=["race", "gender", "age"],
    applicant_ids=df["application_id"].tolist(),
)

What It Does

  • 41 automated compliance checks across ECOA/Reg B, SR 11-7, and EU AI Act
  • Fairness analysis with disparate impact detection and SHAP-based adverse action reason codes
  • Model gating -- block unapproved models from production with one line
  • Inference monitoring -- track predictions, detect drift, generate alerts
  • Decision defense -- reconstruct any individual decision for examiner review
  • Data provenance -- automatic lineage tracking through pandas operations

Protected Columns

Mark columns containing protected attributes (race, gender, age, etc.) so Attestant can check for disparate impact and proxy discrimination:

data = attestant.source(df, "applicants", protected=["race", "gender", "age"])

Attestant automatically tracks whether protected data influences predictions -- even through indirect feature engineering.

Age Column Handling

Specify how age data is formatted:

result = attestant.upload(
    ...,
    age_column="applicant_age",
    age_format="years",  # or: "months", "days", "dob", "birth_year"
)

Vendor Models

Validate vendor/third-party models the same way -- just pass predictions instead of a model:

# Get predictions from vendor API
vendor_predictions = vendor_api.score(X_test)

# Validate with full compliance suite
result = attestant.upload(
    predictions=vendor_predictions,
    X_test=X_test, y_test=y_test,
    protected_columns=["race", "gender", "age"],
    model_name="vendor_credit_score",
    model_version="v3.2",
)

# Gate and monitor in production
attestant.gate("vendor_credit_score", "v3.2")
attestant.log_predictions(
    model_name="vendor_credit_score",
    model_version="v3.2",
    predictions=vendor_api.score(X_new),
    features=X_new,
    protected_data=demographics_new,
    protected_columns=["race", "gender", "age"],
)

All 41 compliance checks, fairness analysis, model gating, and inference monitoring work identically for vendor models.

CI/CD Integration

export ATTESTANT_API_KEY=pvt_live_...
attestant gate-check --model credit_approval --version v2.1
# Exit 0 = approved, 1 = blocked

Documentation

Full documentation at getattestant.com/docs

License

Apache 2.0

Metadata

Release files for attestant 0.23.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for attestant 0.23.1
File
attestant-0.23.1-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
attestant-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
attestant-0.23.1-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
attestant-0.23.1-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
attestant-0.23.1-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
attestant-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
attestant-0.23.1-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
attestant-0.23.1-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
attestant-0.23.1-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
attestant-0.23.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
attestant-0.23.1-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
attestant-0.23.1-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
attestant-0.23.1-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
attestant-0.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
attestant-0.23.1-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
attestant-0.23.1-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
attestant-0.23.1-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
attestant-0.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
attestant-0.23.1-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
attestant-0.23.1-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details

Total release size: 47.2 MB

Release files / attestant-0.23.1-cp313-cp313-win_amd64.whl

Download URL attestant-0.23.1-cp313-cp313-win_amd64.whl
Size 1.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
6768346357736f62180d6914c3fb10f96e69aa1eb6d212693b9c8c5250e4e9ab
BLAKE2b-256 checksum
How to use checksums
6ae0ef5ff9ac14e21b6b118cea64ad66b213c6738a5e190d12f347ecb341f4a0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL attestant-0.23.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.2 MB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6d63e0036f30342122d633022af482931bf25b267ddd6477371b82112f5981c3
BLAKE2b-256 checksum
How to use checksums
6155521eeddb0dec257d4d7432df4fcbeef1fddd8b48456030743c86d7cc9463
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp313-cp313-macosx_11_0_arm64.whl

Download URL attestant-0.23.1-cp313-cp313-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
25f83fab1ffa3d64959b6a7e86fa898b6f233a5931f3cbbc0716533257f792bd
BLAKE2b-256 checksum
How to use checksums
f3abe5cea9b7dee60e5707947dfd2c20214125aea62de545675452624e629dbb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp313-cp313-macosx_10_13_x86_64.whl

Download URL attestant-0.23.1-cp313-cp313-macosx_10_13_x86_64.whl
Size 1.4 MB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
53c415147defd84f9c89acbfa8c7e5b18dcf66621168dbf6663d3d5fd05440e0
BLAKE2b-256 checksum
How to use checksums
ae1905b24d5d6e44fb61d33659bd0f5aa46f5ea5925a766e2c6f9339a40f183d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp312-cp312-win_amd64.whl

Download URL attestant-0.23.1-cp312-cp312-win_amd64.whl
Size 1.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
349bfb41df6263e8ee37aec9fb7976977e6d522727cedbc607bb20baec8b3906
BLAKE2b-256 checksum
How to use checksums
ad5f8e057c6d5fff21a4b21c027c521c07eee667b6680478295afb5a4b8c9a2b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL attestant-0.23.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.2 MB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
1575e91b5e49bf96fec42bdccfe024e51dedb97e20278d9d9a7f0da681796f14
BLAKE2b-256 checksum
How to use checksums
55bdf807c47f61b85b9c993c250e1fc26244798751e7c00a9b1b58a371acea46
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp312-cp312-macosx_11_0_arm64.whl

Download URL attestant-0.23.1-cp312-cp312-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
613a8e49e458337345cad75beb3671dd01b7d23787abf72f6f67576a5224e648
BLAKE2b-256 checksum
How to use checksums
2bd13400dc3e3c06305ed8493c910dc9e08f3f33022f4fe9312b0add6844ccfe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp312-cp312-macosx_10_13_x86_64.whl

Download URL attestant-0.23.1-cp312-cp312-macosx_10_13_x86_64.whl
Size 1.4 MB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
7eea4e18ac5f0d860d1f8abb54dfda64dcd72aa5d78b09c815a6289a5e9e2dc2
BLAKE2b-256 checksum
How to use checksums
77fa431c7e22db6ccb9715dca72d7cf1d2b0448961c6c171ee6be475f408b16e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp311-cp311-win_amd64.whl

Download URL attestant-0.23.1-cp311-cp311-win_amd64.whl
Size 1.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
27203b769ff4928979f00862265622b5b3f9c5596889e7b9b29ae1bb1fbcaea1
BLAKE2b-256 checksum
How to use checksums
37252e526b7ef0bcd2efa2b56030de2b5b8ed669aa2ff2fb51b0ff19599ee4f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL attestant-0.23.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.4 MB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
d9101e845411bfe9e3747cf9f24cf75fd7288bc9443e4b3027097bf8f7517487
BLAKE2b-256 checksum
How to use checksums
44cb9fb67b8a6dd0a76ccfe8dcfcedebcd8d4bdd8d651957d8fe1aa75d9baa94
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp311-cp311-macosx_11_0_arm64.whl

Download URL attestant-0.23.1-cp311-cp311-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
b1581c3545662a523058a5ef2bba601a891e577d5bde90dd84d914dd4aec9e99
BLAKE2b-256 checksum
How to use checksums
d874d6775f6398347194b9ef2da5b79ae078727f5e27bd7d15c647874f5a9a9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp311-cp311-macosx_10_9_x86_64.whl

Download URL attestant-0.23.1-cp311-cp311-macosx_10_9_x86_64.whl
Size 1.5 MB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
1dffa8d0f83eaa6f098075cfd232cb28262810fbb25ff38cee268ff61734d251
BLAKE2b-256 checksum
How to use checksums
02365507022b5bbfeafef3ec113228d966d834d448a2e16f4302f85c0cea2d24
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp310-cp310-win_amd64.whl

Download URL attestant-0.23.1-cp310-cp310-win_amd64.whl
Size 1.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
6ec602305fe64c0193d436a2db96477a7fdf5a4143234cda59f16bfd797838aa
BLAKE2b-256 checksum
How to use checksums
4fe57eadc17404cba05692405588520355b03c8e047fb3b58b04031c25059f8e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL attestant-0.23.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.2 MB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
15ae16ccb3b3fc6f15e258d798af2d877ab795680052237ce9a2aaa20ecebdff
BLAKE2b-256 checksum
How to use checksums
fb7bbf8136016eb6539ba0bb125198d12753b5315fd07506a48f1385e78b5037
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp310-cp310-macosx_11_0_arm64.whl

Download URL attestant-0.23.1-cp310-cp310-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
15e42e9b30e59789b8d3cb9c3ac21f56457e05e680850c44caae6dfc3bca175c
BLAKE2b-256 checksum
How to use checksums
19e7f4ef85722958bbbc37b9dad3c7ed4c1200be8d2a051396f2d07c6cc2dfe6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp310-cp310-macosx_10_9_x86_64.whl

Download URL attestant-0.23.1-cp310-cp310-macosx_10_9_x86_64.whl
Size 1.5 MB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
fa5c3499c273949e772e2b75e8d9c0adc48c5fa6850f4e1834f224ee5e806ea8
BLAKE2b-256 checksum
How to use checksums
6d905a46a2f0540cbc3639e58cedc237949c4e460180d4b1faae12aad86b8b01
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp39-cp39-win_amd64.whl

Download URL attestant-0.23.1-cp39-cp39-win_amd64.whl
Size 1.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
a73692d40f080567477f11ccdec46fc7bf9cd291afc3359e23157583db55ee8d
BLAKE2b-256 checksum
How to use checksums
9721280a1aa5fb025d6bf28bba414044de4dbfcb9049e3924bcf8b4f029f918e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL attestant-0.23.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 5.2 MB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ff054660d7f1c8273c46d5d9b5f88ce414044b3bd0bf68dc5aab7ad8529fb529
BLAKE2b-256 checksum
How to use checksums
b1c59887792c5aeb8b346d09dc3c18f59750c5a1057095fd743b16dfda6a7693
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp39-cp39-macosx_11_0_arm64.whl

Download URL attestant-0.23.1-cp39-cp39-macosx_11_0_arm64.whl
Size 1.4 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
540b73f6355557579552a4d8d8f8031ebc3a939c2ba2a4f9476da2a1610127d6
BLAKE2b-256 checksum
How to use checksums
3beed800ddfb6cef06ad5319ea98a621b99ec82253a8a82eff1c79f514cdda12
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release files / attestant-0.23.1-cp39-cp39-macosx_10_9_x86_64.whl

Download URL attestant-0.23.1-cp39-cp39-macosx_10_9_x86_64.whl
Size 1.5 MB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
3a4b9e497451ca74f16d33055316680ed46baf344d1129a197ec63af00b761f4
BLAKE2b-256 checksum
How to use checksums
e8bb7c3e15f1966c1729a9823aa51bd3266a3b32fdd7a79923f9fe86891b949e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.7

Release history Release notifications | RSS feed

This release

0.23.1 This release

20 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page