Skip to main content

Jawntmap

Jawntmap is a fast entity/value resolution layer for NL2SQL and structured-data search. It maps messy user text such as aliases, abbreviations, typos, compact codes, and business-period phrases onto canonical database values.

This Python package exposes the core field-level resolver:

from jawntmap import EntityResolver

resolver = EntityResolver(
    ["Apple Inc.", "Microsoft Corporation", "Consulting Services Q1"],
    aliases={
        "Apple Inc.": ["Apple", "AAPL"],
        "Microsoft Corporation": ["MSFT", "Microsoft"],
    },
)

print(resolver.resolve("microsft", top_n=3))

It can also build a dataset catalog directly from SQLite or CSV. The catalog profiles tables, skips fields that look numeric/date/identifier/free-text, mines small sibling code fields as aliases for name-like fields, extracts collision-free domain aliases from skipped website, domain, and contact_email siblings, and builds field-aware resolvers for the remaining entity, category, and code fields. CSV cataloging treats one file as one logical table and infers coarse numeric/date/boolean/text column types before using the same resolver path. Python can also catalog an iterable of dict-like records directly with jawntmap.index_records, using in-memory schema introspection, exact row/null/ empty diagnostics, distinct value counts, sibling alias mining, and aliases embedded inside canonical values such as parentheticals, aka, and d/b/a. Pass normalize_names=True when messy table names or dict keys should become stable identifiers such as vendor_export_2026.vendor_name. CSV and records cataloging cap exact distinct-count diagnostics at one million retained distinct values by default; pass exact_distinct_limit=..., or 0 to disable the cap, when you need to tune that diagnostic for very large fields. Fields proven to contain exactly one non-empty distinct value stay visible in catalog metadata but are skipped as generated resolvers with a constant_value reason. Field dictionaries expose profile stats such as sampled row-frequency mass, dominant-value frequency, singleton-value ratio, row/null/empty counts, null and empty rates, and uniqueness ratio when the backend can compute them; SQLite, CSV, MySQL, and PostgreSQL catalogs currently provide those diagnostics. Fully sampled resolver-worthy fields whose top value reaches 80% of sampled rows also include a dominant_value reason while remaining searchable. Resolver-worthy fields populated in at most 20% of rows include a non-skipping sparse_values reason when exact row diagnostics are available. They also expose normalized-value collision counts so callers can see when distinct stored values collapse to the same normalized surface. They also expose token-signature collision counts so callers can see when distinct stored values have the same sorted normalized tokens, such as Jane Smith and Smith Jane. Small text entity resolvers use the same order-insensitive token signature to resolve mentions such as smith jane to a stored Jane Smith when the field evidence supports it. They also expose alias-collision counts so callers can see when the same mined or metadata alias points at multiple canonical values in one field. They also expose identifier_like_ratio, location_like_ratio, entity_like_ratio, person_like_ratio, named_thing_like_ratio, boolean_like_ratio, numeric_like_ratio, and temporal_like_ratio; email, URL, phone, IP, UUID, hash, and token-shaped fields are treated as skipped identifiers, tiny yes/no or true/false text fields are treated as skipped booleans, TEXT-stored numeric/currency/percent measures plus delimited date/timestamp fields are treated as skipped numerics or temporals, country/state/province-heavy text fields can profile as locations even when not named country, legal/org-shaped fields such as issuer can profile as entity-name fields, and personal-name-heavy role fields such as assignee can do the same. Named product/service/procedure-like fields such as offering can also profile as entity-name fields and mine sibling code aliases such as item_code -> offering. Skipped web identifier siblings can contribute safe domain aliases to those entity-name fields, so company abc.xyz can resolve to Alphabet Inc. without indexing URL/email columns as fuzzy text. Clearly named standalone location-code fields such as country_code, state_code, and province_code can also generate collision-free labels, so country code deutschland can resolve a stored DE even without a sibling country-name column. Location fields also receive dataset-grounded country exonym aliases and state/province abbreviation aliases, so catalogs with stored Germany or California values can resolve Deutschland or CA. They also receive generated country demonym aliases, so Germany can resolve from german with generated_location_demonym_alias provenance. Entity-name fields also receive conservative generated initialism aliases for collision-free canonical values, so Premium Support Plan can resolve PSP with generated_initialism provenance even without a sibling code column. Named product/service/procedure-like fields receive conservative generated full-value inflection aliases, so Premium Support Plan can resolve from premium support plans with generated_inflection_alias provenance when that plural surface is collision-free inside the field. Common schema-role names such as supplier, client, facility, provider, diagnosis, drug, fund, and venue are also profiled as entity-name fields even when their sampled values are short labels, letting paired code fields mine aliases such as supplier -> supplier_code from row data. Status-like category fields receive conservative generated status aliases, so active can resolve from enabled with generated_status_alias provenance when that alias is collision-free inside the field. Organization-like entity-name fields receive conservative generated short-name aliases from legal/business suffix stripping, so Apple Inc. can resolve from apple with generated_organization_alias provenance when the short name is collision-free inside the field. Person-like entity-name fields receive conservative generated first-last, surname, and first-initial surname aliases, so Stephen A. Curry can resolve from stephen curry and Jane Doe can resolve from doe or j doe with generated_person_alias provenance when those aliases are collision-free. They also receive conservative first-name nickname aliases, so Robert Smith can resolve from bob smith with generated_person_nickname_alias provenance. Optional alias metadata can attach alternate names, nicknames, previous names, and valid-year alias windows to generated catalog resolvers. Catalog-wide ranking prefers explicit ticker/code contexts for code fields, entity contexts for name aliases, and uppercase or mixed-case alias-shaped mentions for canonical entity-name values while preserving lower-case exact code lookups. Results include deterministic ranking metadata so downstream callers can see whether a hit came from a canonical value or an alias, and ambiguity-group metadata so planners can detect when table/field context is needed. Results also use query role cues such as opponent, against, home, away, venue, vendor, customer, issuer, and assignee to boost matching table/field roles while preserving field_role, same_value, and score_tie ambiguity labels. Results try clean context-trimmed multi-token spans before broader span groups, so a phrase such as customer Apex Analytics Customer 000000 can test the exact value span before fuzzy lookup on the surrounding scope word; grammar bridges such as from keep the normal fallback order. Three-token-or-longer exact canonical value spans also use an exact preflight across saved field resolvers before broad fuzzy search, preserving duplicate exact field candidates while avoiding near-neighbor alternatives, including persisted fields outside the compact catalog sample. Multi-token spans with a strong serial/code anchor also try saved field resolvers before broad fuzzy retrieval, and short-circuit only when the non-anchor words support the candidate. Results also expose preferred_table_match, preferred_field_match, preferred_semantic_type_match, and context_preference_boost, making soft table/field/semantic hints auditable. When preferred_table is connected to a candidate table through declared foreign keys, results also expose preferred_table_join_match, preferred_table_join_hops, and preferred_table_join_path so planners can see that a value should be grounded through a join instead of an exact table match. Results also expose query_context_* fields that explain soft boosts inferred directly from the natural-language query, such as table/field-name cues, role cues, and semantic cues like ticker, country, or status. When a planner already knows the expected entity class, pass semantic_type="location" or semantic_type="code" to hard-scope lookup to fields of that type; unlike preferred_semantic_type, this hides alternatives outside the requested semantic type. Calls can also pass previous resolved candidates or context dicts through context_values; returned context_value_* diagnostics explain same-table, joined-table, same-field, semantic, and exact-value support from nearby grounded values, with context_value_table_join_paths showing declared FK paths when the support comes from a related table. Candidate results include compact field diagnostics such as field_readiness_status, field_readiness_reasons, field_reasons, field_resolver_coverage_status, field_truncated, field_high_cardinality, field_max_value_frequency, field_singleton_value_ratio, field_row_count, field_empty_rate, field_uniqueness_ratio, field_avg_tokens, field_code_like_ratio, field_identifier_like_ratio, field_location_like_ratio, field_entity_like_ratio, field_person_like_ratio, field_named_thing_like_ratio, field_normalized_collision_count, field_alias_collision_count, field_token_signature_collision_count, sampled_value_count, and sampled_value_frequency. Alias-backed candidates also expose matched_alias_evidence, matched_alias_source_field, matched_alias_count, and alias_evidence_boost so callers can tell whether the alias came from a sibling field, metadata, built-in alias data, a generated organization short name, a generated full-value inflection, a generated initialism, or a generated person-name alias, and whether repeated row-paired evidence helped ranking:

import jawntmap

catalog = jawntmap.index_sqlite(
    "shop.db",
    sample_limit=1000,
    resolver_sample_limit=25_000,
    aliases=[
        {
            "table": "companies",
            "column": "name",
            "canonical": "Alphabet Inc.",
            "aliases": ["Google", "Alphabet Class A"],
        }
    ],
)

print([field["path"] for field in catalog.eligible_fields()])
print(catalog.field("companies", "name", include_values=True)["value_aliases"])

print(catalog.resolve("apple", table="orders", field="vendor_name", top_n=3))
print(catalog.resolve_anywhere("active orders", table="orders", top_n=5))
match = catalog.resolve_anywhere("ticker aapl", top_n=5)[0]
print(match["value"], match["field"], match["match_kind"], match["ranking_score"])
print(match["matched_alias"], match["matched_alias_source_field"])
print(match["query_context_cues"], match["query_context_boost"])
print(match["field_readiness_status"], match["field_readiness_reasons"])
print(match["field_coverage_ratio"], match["field_missing_distinct_values"])
print(match["field_resolver_coverage_ratio"], match["field_resolver_missing_distinct_values"])
print(match["ambiguous"], match["ambiguity_kind"], match["ambiguity_group_size"])
print(catalog.resolve_anywhere("opponent Celtics", top_n=5)[0]["path"])
print(catalog.resolve_anywhere("Celtics", preferred_table="games", preferred_field="opponent_name"))
country = catalog.resolve("Germany", table="orders", field="ship_country", top_n=1)[0]
print(catalog.resolve_anywhere("apple", context_values=[country], top_n=5))
print(catalog.resolve_anywhere("curry", priors=[{"value": "Stephen Curry", "score": 1.0}]))
response = catalog.resolve_anywhere_response("customers from deutschland", top_n=5)
print(response["query"], response["candidate_count"], response["ambiguous"])
print(response["ambiguity"]["kinds"] if response["ambiguity"] else [])
responses = catalog.resolve_anywhere_many_response(["ticker aapl", "customers from deutschland"])
print([response["candidate_count"] for response in responses])
print(catalog.resolve_many(["apple", "globex"], table="orders", field="vendor_name"))
print(catalog.resolve_anywhere_many(["ticker aapl", "customers from deutschland"]))

catalog.save("shop.jmcat")
loaded = jawntmap.DatasetCatalog.load("shop.jmcat")
assert loaded.resolve("apple", table="orders", field="vendor_name", top_n=1)
print(loaded.summary())
print(loaded.summary()["semantic_type_counts"])
print(loaded.summary()["known_resolver_coverage_ratio"])
print(loaded.summary()["known_resolver_coverage_ratio_by_semantic_type"])
print(loaded.summary()["resolver_backed_semantic_type_counts"])
print([table["name"] for table in loaded.tables()])
print([table["name"] for table in loaded.tables(resolvable=True, semantic_type="location", resolver_backed=True)])
print(loaded.table("orders")["resolvable_field_count"])
print(loaded.table("orders")["known_resolver_coverage_ratio"])
print(loaded.table("orders")["resolver_backed_semantic_type_counts"])
print(loaded.tables()[0]["resolver_backed_field_count"])
print([field["path"] for field in loaded.fields(resolvable=True, semantic_type="location", resolver_backed=True)])
print(loaded.field("orders", "vendor_name")["readiness_status"])
print(loaded.field("orders", "vendor_name")["resolver_value_count"])
print(loaded.field_values("orders", "vendor_name", include_aliases=True, limit=5))
print(loaded.field_values_response("orders", "vendor_name", limit=5, include_resolver_values=True)["resolver_values"])
print([field["name"] for field in loaded.table_fields("orders", resolvable=True)])

csv_catalog = jawntmap.index_csv(
    "vendors.csv",
    table_name="vendors",
    delimiter="auto",
    normalize_headers=True,
    normalize_table_name=True,
)
assert csv_catalog.resolve("acme", table="vendors", field="vendor_name", top_n=1)

headerless_catalog = jawntmap.index_csv(
    "vendors.csv",
    table_name="vendors",
    delimiter="auto",
    has_headers=False,
)
assert headerless_catalog.resolve("acme", table="vendors", field="column_2", top_n=1)

record_catalog = jawntmap.index_records(
    [
        {"vendor_name": "Acme Industrial", "vendor_code": "ACME"},
        {"vendor_name": "Globex Corporation", "vendor_code": "GLOB"},
    ],
    table_name="vendors",
    normalize_names=True,
)
assert record_catalog.resolve("ACME", table="vendors", field="vendor_name", top_n=1)

Build directly from records or CSV exports when wiring Jawntmap into another repo:

records = [
    {"value": "Philadelphia 76ers", "aliases": ["Sixers", "PHI"]},
    {"value": "New York Knicks", "aliases": "Knicks|NYK"},
]

teams = EntityResolver.from_records(records, alias_separator="|")
assert teams.resolve("sixers", top_n=1)[0]["name"] == "Philadelphia 76ers"

companies = EntityResolver.from_csv(
    "companies.csv",
    value_column="company_name",
    aliases_column="aliases",
    delimiter="auto",
)

headerless_companies = EntityResolver.from_csv(
    "companies.csv",
    value_column="column_2",
    aliases_column="column_3",
    delimiter="auto",
    has_headers=False,
)

If records or exports include popularity/frequency signals, let the loader turn them into conservative default tie-break priors:

vendors = EntityResolver.from_records(
    [
        {"value": "Acme LLC", "aliases": ["Acme"], "row_count": 2},
        {"value": "Acme Ltd", "aliases": ["Acme"], "row_count": 100},
    ],
    frequency_key="row_count",
)

assert vendors.resolve_response("Acme", top_n=2)["candidates"][0]["name"] == "Acme Ltd"
vendors.save("vendors.jawntmap")
assert EntityResolver.load("vendors.jawntmap").resolve("Acme", top_n=1)[0]["name"] == "Acme Ltd"

Resolve multiple mentions against the same field with one call:

batch = resolver.resolve_many(["aapl", "microsft"], top_n=1)

assert [matches[0]["name"] for matches in batch] == [
    "Apple Inc.",
    "Microsoft Corporation",
]

Persist a built resolver when the canonical values are expensive to collect or normalize. Saved resolvers include aliases and field-specific configuration:

resolver.save("companies.jawntmap")
restored = EntityResolver.load("companies.jawntmap")

assert restored.resolve("aapl", top_n=1)[0]["name"] == "Apple Inc."

Use resolve_response when a caller needs abstention/ambiguity diagnostics, all generated candidates, or scoring explanations:

ambiguous = EntityResolver(["Acme LLC", "Acme Ltd"])
response = ambiguous.resolve_response("Acme", top_n=2, include_explanations=True)

assert response["ambiguous"]
assert response["ambiguity"]["runner_up_candidate"] == "Acme Ltd"
assert "features" in response["candidates"][0]

Use resolve_many_response for the same diagnostics across a batch:

responses = resolver.resolve_many_response(
    ["aapl", "microsft"],
    top_n=1,
    include_explanations=True,
)

assert responses[0]["candidates"][0]["name"] == "Apple Inc."
assert "explanation" in responses[1]["candidates"][0]

Request-time priors can break true lexical ties without rebuilding the resolver. Priors may be dictionaries or tuples:

resolved = ambiguous.resolve_with_priors(
    "Acme",
    [{"value": "Acme Ltd", "score": 1.0}],
    top_n=2,
)

assert resolved["candidates"][0]["name"] == "Acme Ltd"
assert not resolved["ambiguous"]

batch_resolved = ambiguous.resolve_many_response(
    ["Acme"],
    priors=[{"value": "Acme Ltd", "score": 1.0}],
)
assert batch_resolved[0]["candidates"][0]["name"] == "Acme Ltd"

Tune matching behavior per field at construction time. For code-like fields, use stricter candidate generation so near codes abstain instead of fuzzing to a neighbor:

strict_codes = EntityResolver(
    ["ACCT-004096", "ACCT-004097"],
    max_edit_distance=0,
    min_trigram_similarity=1.0,
)

assert strict_codes.resolve("ACCT-004096", top_n=1)[0]["name"] == "ACCT-004096"
assert strict_codes.resolve("ACCT-004095", top_n=1) == []
assert strict_codes.config()["query"]["max_edit_distance"] == 0

For broad alias/name fields, keep the defaults or loosen max_edit_distance, min_trigram_similarity, and max_candidates. For precision-sensitive fields, raise min_raw_score or keep abstention enabled.

The wheel ships a jawntmap.pyi stub so editors and type checkers understand the public resolver methods, response dictionaries, and prior formats.

For full schema-aware NL2SQL demos, benchmarks, and the Rust CLI, see the GitHub repository.

Metadata

Release files for jawntmap 1.1.0

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

Source distribution (sdist)

Source distribution for jawntmap 1.1.0
File Size Uploaded
jawntmap-1.1.0.tar.gz 352.6 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for jawntmap 1.1.0
File
jawntmap-1.1.0-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
jawntmap-1.1.0-cp313-cp313-manylinux_2_28_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.28+ x86-64 Details
jawntmap-1.1.0-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
jawntmap-1.1.0-cp313-cp313-macosx_10_12_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.12+ x86-64 Details
jawntmap-1.1.0-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
jawntmap-1.1.0-cp312-cp312-manylinux_2_28_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.28+ x86-64 Details
jawntmap-1.1.0-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
jawntmap-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.12+ x86-64 Details
jawntmap-1.1.0-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
jawntmap-1.1.0-cp311-cp311-manylinux_2_28_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.28+ x86-64 Details
jawntmap-1.1.0-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
jawntmap-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.12+ x86-64 Details
jawntmap-1.1.0-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
jawntmap-1.1.0-cp310-cp310-manylinux_2_28_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.28+ x86-64 Details
jawntmap-1.1.0-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
jawntmap-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.12+ x86-64 Details
jawntmap-1.1.0-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
jawntmap-1.1.0-cp39-cp39-manylinux_2_28_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.28+ x86-64 Details
jawntmap-1.1.0-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
jawntmap-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.12+ x86-64 Details

Total release size: 45.9 MB

Release files / jawntmap-1.1.0.tar.gz

Download URL jawntmap-1.1.0.tar.gz
Size 352.6 kB
Tags Source
SHA-256 checksum
How to use checksums
8a617c1ec8f0b297157d52e9142cb2421eabc014362ad1bae12cf8374e0268ec
BLAKE2b-256 checksum
How to use checksums
7c09d9c9eaad665152093b669af53579a2a9fb6e60c3e57ad766ffd3afb8f6f3
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp313-cp313-win_amd64.whl

Download URL jawntmap-1.1.0-cp313-cp313-win_amd64.whl
Size 2.3 MB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
a79129a7fb03f129978d9154b8751a426a8b78a458507804ca9db730018940b2
BLAKE2b-256 checksum
How to use checksums
b21902da0d1f47abe0ab039fb14ab9857ce0ef782ebde9209f3025b8c4f3351c
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp313-cp313-manylinux_2_28_x86_64.whl

Download URL jawntmap-1.1.0-cp313-cp313-manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.13 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
b16e1d81e762622a7bff79a1c689be91a884c8705b4bdbf4b74c460d2fa138b0
BLAKE2b-256 checksum
How to use checksums
e55536b90eadcb8cd9461c88e593588af241a53504888597c194fc2c25546794
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp313-cp313-macosx_11_0_arm64.whl

Download URL jawntmap-1.1.0-cp313-cp313-macosx_11_0_arm64.whl
Size 2.1 MB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
7b4b2cd56417ff2d5fa26fd321d4e392804d765f7dad7e8356495d232d1435cd
BLAKE2b-256 checksum
How to use checksums
299b87b139786968724385f9b441422bda8185f5d1b16d9553f60e063ac1e31a
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp313-cp313-macosx_10_12_x86_64.whl

Download URL jawntmap-1.1.0-cp313-cp313-macosx_10_12_x86_64.whl
Size 2.3 MB
Tags CPython 3.13 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
fd0af5862b953f8f3c69adb3533062992047afb4d5ddc058939021c925722124
BLAKE2b-256 checksum
How to use checksums
df70c0c09508d9d7a5be242ad0bdec32b22805a133bf74767825b5eaf976d088
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp312-cp312-win_amd64.whl

Download URL jawntmap-1.1.0-cp312-cp312-win_amd64.whl
Size 2.3 MB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
007ebaa05a831308247671c8d236cbd81c3e547860bc040062bcf466e43e049a
BLAKE2b-256 checksum
How to use checksums
65fda70fc1ccc5e2b24ec08dedb5d7858aa03f55d8898000f4b936833f69fb50
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp312-cp312-manylinux_2_28_x86_64.whl

Download URL jawntmap-1.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.12 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
00d47dad07389250f4cb5e6be460e45eeaaae0fa78a587bebb1c798487e2ac1c
BLAKE2b-256 checksum
How to use checksums
be2651f5ed0f0e0ade467ccd3df1ef6f628854ed1ab96e6c18e00eeb1c3e2b6f
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp312-cp312-macosx_11_0_arm64.whl

Download URL jawntmap-1.1.0-cp312-cp312-macosx_11_0_arm64.whl
Size 2.1 MB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
4a890694b409cabe00f511f3d6cc9ae35dcef0eb5ab21ba7b01c83910549158b
BLAKE2b-256 checksum
How to use checksums
d7ef7677fc38ff36caf1718ba3bc4c45d90eaf4c98dae180ae8cfa69b22cdd04
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl

Download URL jawntmap-1.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Size 2.3 MB
Tags CPython 3.12 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
776ea063f1fbc68d5c949adcc55948c66b06741ca3f0d9ea0dc28724d49b3fc6
BLAKE2b-256 checksum
How to use checksums
722f52f87a948212ae0b3cdf9835d4bf4c2194e3e4b974dce4aba4863d155577
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp311-cp311-win_amd64.whl

Download URL jawntmap-1.1.0-cp311-cp311-win_amd64.whl
Size 2.3 MB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
96fae85807fa92fa7a081a1bccc2e6cb4ec4f7c2ca407b366ddf55ccb6e8e56e
BLAKE2b-256 checksum
How to use checksums
2589c5a1ea32742b6847799b27fc3f81b9bbdeaf9111d6b041c424d2b80ca6e1
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp311-cp311-manylinux_2_28_x86_64.whl

Download URL jawntmap-1.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.11 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
945bd4c13546762fe5ac7e8373d0630f55f25b655b3df1757f997c711a5d5dc0
BLAKE2b-256 checksum
How to use checksums
6b2d9468f86fdee1efadbf0bbe4f5f48c774bae7582abc4cb22aa12faa705f13
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp311-cp311-macosx_11_0_arm64.whl

Download URL jawntmap-1.1.0-cp311-cp311-macosx_11_0_arm64.whl
Size 2.1 MB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ebfab9ca75159249748e5b01b0f164ebc6ebd51d86066cd565d242ccf10f80f5
BLAKE2b-256 checksum
How to use checksums
e4c1b0491915e476ef7a6a0fa260467cecf16172925b7295e4b651e0515a2865
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl

Download URL jawntmap-1.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Size 2.3 MB
Tags CPython 3.11 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
3e6c7021da3151b95ca43739c0051de8111c55472c74c789dbc38b9f7bee3323
BLAKE2b-256 checksum
How to use checksums
01fb3bd7496ba6cc3b5ca4765146c2aafb7bdcf7e7bbd813499dc67e063b88e3
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp310-cp310-win_amd64.whl

Download URL jawntmap-1.1.0-cp310-cp310-win_amd64.whl
Size 2.3 MB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
45028a90895120eeb1e056f138b69def31f067793a369c8dd98bb64323bf4a8f
BLAKE2b-256 checksum
How to use checksums
aae8bab2a694374aa10d0c1c052e5d17ddf95d6a364525f06102adba0656b7d7
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp310-cp310-manylinux_2_28_x86_64.whl

Download URL jawntmap-1.1.0-cp310-cp310-manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.10 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
58d8dba8ca7dd6d07031658ab7f62012f9be04725b71ff2ce16ef0c21e6fb972
BLAKE2b-256 checksum
How to use checksums
e2346143564934f7f932b59000c0a026254cf95904d48487e211da0c0360ec36
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp310-cp310-macosx_11_0_arm64.whl

Download URL jawntmap-1.1.0-cp310-cp310-macosx_11_0_arm64.whl
Size 2.1 MB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
ede78da0f2b9c64a0b328a88cde30b1645f4cb0aa92d6f32e60d6bf883e88207
BLAKE2b-256 checksum
How to use checksums
213b4d6c6ad4679740e7dd6ee5b0d6ca74255c31c338326e472ae906c1250af6
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl

Download URL jawntmap-1.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Size 2.3 MB
Tags CPython 3.10 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
e4781ec76f2d8b54773abb71d8937fa0cbf4435e8de0f58e6aafe3df1f433a62
BLAKE2b-256 checksum
How to use checksums
3f149245761e364e4e8cedd5b27189103cacc766fb5f71454e47b9c5b5b85ce0
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp39-cp39-win_amd64.whl

Download URL jawntmap-1.1.0-cp39-cp39-win_amd64.whl
Size 2.3 MB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
aa075cb9e689693940b82b33bffddf731a85275a53bcbc3f6b87ffaeaf8a8934
BLAKE2b-256 checksum
How to use checksums
849311efbfa8022ed860663291bd20b4854d85837a733610781f4d834650d83d
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp39-cp39-manylinux_2_28_x86_64.whl

Download URL jawntmap-1.1.0-cp39-cp39-manylinux_2_28_x86_64.whl
Size 2.4 MB
Tags CPython 3.9 Linux glibc 2.28+ x86-64
SHA-256 checksum
How to use checksums
0926cc333f479097d91bc39cddd84a83b89c48cbe2a8d11251732b81ad75e43a
BLAKE2b-256 checksum
How to use checksums
abd8fa02b459bb8676cc57b3fe8ec9161f8631c5b1e3f154ffb71357c2322a63
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp39-cp39-macosx_11_0_arm64.whl

Download URL jawntmap-1.1.0-cp39-cp39-macosx_11_0_arm64.whl
Size 2.1 MB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a7e0a9450f42f9b2e69152a10475145868f35819572b6ae74a11e5e5cb7b4ee2
BLAKE2b-256 checksum
How to use checksums
ed2ffd0a57445e7a49eab6ef9fa56135702ebb6b14657c5bc761d65460395a95
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 19, 2026.

Transparency log

Release files / jawntmap-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl

Download URL jawntmap-1.1.0-cp39-cp39-macosx_10_12_x86_64.whl
Size 2.3 MB
Tags CPython 3.9 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
d267bbd72d8682b5cbb948f871d7f119d9ce76c64813a7ebb1e9f02dca3709a5
BLAKE2b-256 checksum
How to use checksums
cf1eb63863da3bf13e581a7dbcf27639a2ef34ebe5ce6a68a6e3c46ebd6dabe2
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 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.1.0 This release

21 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