Skip to main content

Nested dictionary with indexed field queries, merge and serialization

Project description

mod_dict

A Python extension (C++) that stores nested dictionaries by reference and provides indexed filtering, sorting, grouping and merging — without converting to a DataFrame or a database.

import mod_dict as md

mn = md.ModDict()
mn["alice"] = {"age": 30, "score": 9.5, "active": True,
               "meta": {"level": 5, "details": {"rank": 42}}}

# Field access via chaining on stored PyObject* — no copy
age  = mn["alice"]["age"]                        # 30
rank = mn["alice"]["meta"]["details"]["rank"]    # 42
mn["alice"]["age"] = 31                          # update in-place

# Indexed filter / sort / group — auto-builds index on first call
adults = mn.filter("age").gte(18)
active = mn.filter("active").eq(True)
rows   = mn.sort_by("age")                       # → [row, row, ...]
keys   = mn.sort_by("age", returns="parent_keys")# → [key, key, ...]
ages   = mn.sort_by("age", returns="values")     # → [18, 25, 30, ...]
groups = mn.group_by("age")                      # → {value: ModDict, ...}
slim   = mn.select(["age", "score"])             # → new ModDict
rows   = mn.select(["age", "score"], returns="values")  # → [{"age":..}, ..]

# Dot-notation paths in sort / group / select
mn.sort_by("meta.details.rank")
mn.group_by("meta.level")
mn.select(["meta.details.rank", "score"])

# Update from another collection
mn.update(other)                                 # bulk insert (like dict.update)
mn.update(other, "*", "*")                       # key-to-key merge
mn.update(other, "user_id", "id")               # field-to-field
mn.update(other, "*.geo.lat", "*.geo.lat")      # deep field only

# Aliases — transparent second key for the same row
mn.alias("alice", "al")
mn["al"]["age"] = 32          # same row — mn["alice"]["age"] == 32
mn["al"] = {"age": 33}        # replaces row via alias
del mn["al"]                  # removes both alias and original
print(mn.aliases())           # {"al": "alice"}

# Build from a list of rows
mn3 = md.ModDict.from_rows(users, key="id")      # {r["id"]: r for r in users}

# Deep copy (7.8× faster than deepcopy)
backup = mn.copy()

# Index access by insertion order
mn.at(0)    # first value
mn.at(-1)   # last value

# Binary serialization (full Python type set — date, bytes, Decimal, Path, …)
data = mn.serialize()
mn2  = md.ModDict(); mn2.deserialize(data)

# Custom type converters — applied at insert time
md.register_converter(Temperature, lambda t: t.celsius)

Architecture

Rows are stored as PyObject* references — the same dict object the caller passed in, with Py_INCREF. No deep copy.

mn["alice"] = row_dict          # Py_INCREF(row_dict), store pointer
mn["alice"]["age"]              # outer hash → PyObject* → PyDict_GetItemString

On top of the outer hash table, a FieldIndex per field powers O(1) equality and O(log n) range queries. Indices are built automatically on the first filter() / sort_by() / group_by() call and reused after.

When it fits

  • Collection of records with a fixed (or semi-fixed) schema.
  • You need indexed filter, sort, group, or field-level merge without pandas/SQL.
  • Write once, query many times.
  • In-process cache shared across asyncio coroutines — zero-copy, no GC pressure on reads.

When it does not fit

  • Truly write-heavy, latency-sensitive workloads — mn[k] = row is slightly slower than dict (refcount + hash).
  • You need concurrent writes from multiple threads.
  • Schema is fully dynamic with no repeating field names.

API at a glance

# Write
mn[key] = value                          # scalar or nested dict
mn[key]["field"] = value                 # update field in-place
del mn[key]

# Read
mn[key]                                  # full row — O(1), returns stored dict ref
mn[key]["field"]                         # field via Python chaining
mn.get(key, default)
mn.pop(key)                              # remove and return value
mn.pop(key, default)                     # return default if not found

# Membership / size
key in mn
len(mn)                                  # aliases are not counted

# Iteration — aliases are hidden
for key in mn: ...
mn.keys() / mn.values() / mn.items()

# Filter (auto-builds index on first call, reused after)
mn.filter("age").eq(18)                          # age == 18
mn.filter("age").ne(18)                          # age != 18
mn.filter("age").lt(18)                          # age <  18
mn.filter("age").lte(18)                         # age <= 18
mn.filter("age").gt(18)                          # age >  18
mn.filter("age").gte(18)                         # age >= 18
mn.filter("age").between(18, 30)                 # 18 <= age <= 30
mn.filter("city").in_(["NY", "LA"])              # city in [...]
mn.filter("orders.?.status").eq("shipped")       # wildcard path

# Sort / select / group — support dot-notation paths
mn.sort_by("age", reverse=False, returns="rows")        # default → [row, ...]
mn.sort_by("age", returns="parent_keys")                # → [key, ...]
mn.sort_by("age", inplace=True)                         # reorders mn in-place, returns None
mn.sort_by("meta.details.rank", returns="values")       # → [val, ...]


mn.select(["age", "name"])                              # → new ModDict
mn.select(["age", "meta.level"], returns="values")      # → [{"age":..}, ...]

mn.group_by("active")                                   # → {value: ModDict, ...}
mn.group_by("meta.level")

# Aliases
mn.alias(key, alias)                     # create alias (1 per key)
mn.aliases()                             # → {alias: original_key, ...}
del mn[alias]                            # removes alias and original

# Update from another collection
mn.update(other)                                      # bulk insert
mn.update(other, from_path, to_path, conflict="keep_right")

# Deep copy (7.8× faster than copy.deepcopy)
mn.copy()                                        # → new ModDict, rows deep-copied

# Index access by insertion order (O(1), supports negative indices)
mn.at(0)                                         # first inserted key's value
mn.at(-1)                                        # last inserted key's value

# Build from a list of dicts
md.ModDict.from_rows(rows, key="id")             # {r["id"]: r for r in rows}
md.ModDict.from_row(row)                         # normalize Mapping → plain dict

# Serialize
mn.serialize() / mn.deserialize(data)

# Index management (optional — auto-index handles most cases)
mn.create_index("field") / mn.drop_index("field") / mn.has_index("field")

Path syntax for update and filter

Token Meaning
* scan_key — match by outer key
? pass_key — wildcard one nesting level
mn.update(updates, "*", "*")                        # join by outer key
mn.update(prices, "*.meta.score", "*.meta.score")  # update only one deep field
mn.filter("orders.?.status").eq("shipped")          # status inside any order id

Custom type converters

Converters are applied at insert time — values are converted before storage, so they survive serialize(). MRO is walked: a converter for a base class also applies to subclasses.

md.register_converter(MyType, lambda obj: obj.to_dict())
mn["key"] = {"value": MyType(...)}   # → stored as dict, serializable

Built-in converters for shapely geometry (WKB) and geoalchemy2 (WKBElement) activate automatically when the library is installed.

Full type stubs with docstrings are in src/mod_dict.pyi — visible in IDE on hover and via help().

Installation

pip install mod_dict

Requires Python ≥ 3.11. Pre-built wheels for Windows / Linux / macOS. To build from source: pip wheel . (requires CMake ≥ 3.15 and a C++17 compiler).

Asyncio

ModDict is safe for concurrent reads in a single-threaded event loop. Rows are stored as PyObject* references — no copy between coroutines, no GC pressure during reads.

cache = md.ModDict()

async def handler(request):
    row = cache[request.user_id]
    return Response(row["meta"]["details"]["rank"])

async def startup():
    for key, row in data:
        cache[key] = row

See BENCHMARK.md for detailed numbers.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

mod_dict-0.3.1-cp314-cp314-win_amd64.whl (270.3 kB view details)

Uploaded CPython 3.14Windows x86-64

mod_dict-0.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (113.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

mod_dict-0.3.1-cp314-cp314-macosx_11_0_arm64.whl (77.2 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

mod_dict-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl (82.0 kB view details)

Uploaded CPython 3.14macOS 10.15+ x86-64

mod_dict-0.3.1-cp313-cp313-win_amd64.whl (261.9 kB view details)

Uploaded CPython 3.13Windows x86-64

mod_dict-0.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (113.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

mod_dict-0.3.1-cp313-cp313-macosx_11_0_arm64.whl (77.1 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

mod_dict-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl (82.0 kB view details)

Uploaded CPython 3.13macOS 10.13+ x86-64

mod_dict-0.3.1-cp312-cp312-win_amd64.whl (261.9 kB view details)

Uploaded CPython 3.12Windows x86-64

mod_dict-0.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (113.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

mod_dict-0.3.1-cp312-cp312-macosx_11_0_arm64.whl (77.1 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

mod_dict-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl (82.0 kB view details)

Uploaded CPython 3.12macOS 10.13+ x86-64

mod_dict-0.3.1-cp311-cp311-win_amd64.whl (261.4 kB view details)

Uploaded CPython 3.11Windows x86-64

mod_dict-0.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (112.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

mod_dict-0.3.1-cp311-cp311-macosx_11_0_arm64.whl (76.8 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

mod_dict-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl (81.2 kB view details)

Uploaded CPython 3.11macOS 10.9+ x86-64

File details

Details for the file mod_dict-0.3.1-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: mod_dict-0.3.1-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 270.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mod_dict-0.3.1-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 9b3ff667d87416b404c57042ab7aeb4431023c4591c353b6d1dccec7d040ca06
MD5 3f362a3158123a2de487375525d40779
BLAKE2b-256 d09ff0f13da0ee3f46f0f58f2a8c8d26f99898bac701b039aa4ca7b73e156566

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp314-cp314-win_amd64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 fec832951239e8f2466ff09bc608d65bdce4b79e0c2d610b83a6b07d3fbc4301
MD5 157211f9710c9e5d3f80a3a7620c410f
BLAKE2b-256 36e930cd4b2bca7bbd24d01d77e28cb7c04ca03df03725936b06f1b037ff1c1d

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ca1c5a251822254730b66fe913ecd5e79a8b51548aa029d90c21c2205ed00241
MD5 e1e24211f41cb0359b3f65dc99a3db86
BLAKE2b-256 d90863438922e5d761b034a26a8e83ec287645cf4aee5e4d2cc8da0991070874

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 c9ac060e35a805ec6227c5480cfbc3ced6acff79e915af7170940856a1dcb82f
MD5 ae5fa6a4b980581e8f6b5adddc4f4c59
BLAKE2b-256 04b220a4828241cc45c0c62673b511fd591343ebadebb79b40b9d1c4a425467c

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp314-cp314-macosx_10_15_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: mod_dict-0.3.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 261.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mod_dict-0.3.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ed0116e8016a0a789ec544d946fbaf2b36b249ae535169e2dffcf3f7ac982fd5
MD5 fef7dc4f3a8dba65fb69ccdd663f5e43
BLAKE2b-256 fe7a4ad980a0619ef42fd3dcbbe12ef38132c0516847c383ce9fbca7274f4198

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp313-cp313-win_amd64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 982bfda4a106fb8cfc0af024adc73e9d354d02c704dd35735fda9de64c05f1dc
MD5 fa2fbabef729b0e2c439b33426e90766
BLAKE2b-256 2bf60b28b07f232a3645ea259e7a186fb5ce37d70c1bbca51b9cd5120b935738

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 0de5cb411fcae9c7083720134a5c53fca20e7c217aa80f70dd6b0bc051d58a2a
MD5 ccbb596d32d77474aca3c09ceb86ede5
BLAKE2b-256 1909dba6abb2a14a413a0b0fe94d7145190051520edbb51e6ff749f6a68079df

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d8a0947fb17c11be8cf6ab1f829e7b1fd61bf99edb26326dd0c335e81b16443d
MD5 732426188f9e7d31e50a606a8a0ef7b5
BLAKE2b-256 6fa47f57497ca542c743bb80c7eaa4a6b5e1ed565b425e3c183eb3b55d365b57

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp313-cp313-macosx_10_13_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: mod_dict-0.3.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 261.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mod_dict-0.3.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e810bc7ab9bca2c97448697dbc8502a9782575447ffc95d306951c0cd57471ff
MD5 81d87aae92174f80ac3ff58f44d9821a
BLAKE2b-256 c088a5062466ea8800e9516d480872c17eeee2165a07ba947ee203e4914ee8be

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp312-cp312-win_amd64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a6050763321002481d48606626d85b93925a9fe143e157e3007da5c2f2ce67bd
MD5 d3a10658b41325f0ddcf4bba64b395e5
BLAKE2b-256 564aaf2e0ae8eb87dac6d23fee22be63bff8cc6cb3156add6bf503b749f8069a

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4bcb58a61d820223c2adf10e3ae7ac66ef90f2e4fac101ae71fb0604a808b412
MD5 327eb5567fa15515fa84517bd46765e8
BLAKE2b-256 d452788dc8c8a94b53d46a047d7fd1f285d12b3a9a48a164cdaaaf794cf3cc49

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 527aae47fbb517c784feb9a3614837b6e1f96b7f05a058a6cbe142c7bc296ba9
MD5 137aba49c2991f5f2b2106443ef490b5
BLAKE2b-256 146ddd3e37891b2cc65f9983769808177c400f95d468bdd5e3f2805cc12a8e90

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp312-cp312-macosx_10_13_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: mod_dict-0.3.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 261.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for mod_dict-0.3.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 164d289868f1a2a1f1c28b5e5f1d94bd2dbc9ea545ebf1f79b8ee2380e9f6030
MD5 edc17f983e23594fbbb827b45bb055ee
BLAKE2b-256 a7fde49fd1c411736591da04e14430ad4e3114f5069e3d277e3b29442c61ed29

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp311-cp311-win_amd64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 85c63f7d3345b4ec25f7d842f4c44eb748e06918e1413f746d56d886056da64e
MD5 f8c1b59a13a076f3f3d3404e7e585639
BLAKE2b-256 24d74650db5b07cadda03c3effca6b0f7e0dcbfcdd7569bfd2926a56fda42e59

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5e4bddf2124e30e60b1567565b8e8497e572890a50821d744930a92a69e99861
MD5 1df1f4b2cedbe5091ef3c371b151147e
BLAKE2b-256 a0a21cfb882e14eb71927e2d37be394d8f454ceee035ce6270881f620f2014a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mod_dict-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for mod_dict-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 856789614a82ff7f678a9960d5df88c4c7056cded45fc3bdf83bc12c51764b8a
MD5 fb5a601255fb36f05c9adf97afbe0d30
BLAKE2b-256 372bbde604af06b1c39aa5ff629ee36a75d0d3b86dd8aec5f628caea9d6402d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for mod_dict-0.3.1-cp311-cp311-macosx_10_9_x86_64.whl:

Publisher: build.yml on grey-pre-server/mod_dict

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page