Skip to main content

msglc --- (de)serialize json objects with lazy/partial loading containers using msgpack or cbor

DeepWiki codecov PyPI

What

msglc is a Python library that provides a way to serialize and deserialize json objects with lazy/partial loading containers using msgpack or cbor as the serialization format.

It can be used in environments that use msgpack/cbor to store/exchange data that is larger than a few MBs if any of the followings hold.

  1. After cold storage, each retrieval only accesses part of the stored data.
  2. Cannot afford to decode the whole file due to memory limitation, performance consideration, etc.
  3. Want to combine encoded data into a single blob without decoding and re-encoding the same piece of data.

Quick Start

The supported objects need to be json compatible, including dict, list, str, int, float, bool and None. Extra types may be supported as well but not guaranteed.

Serialization

Use dump to serialize a json object to a file.

from msglc import dump

data = {"a": [1, 2, 3], "b": {"c": 4, "d": 5, "e": [0x221548313] * 10}}
dump("data.msg", data)

Use backend='python' or backend='rust' to specify the backend for serialization. By default, msgpack is used as the serialization format, to use cbor, use the corresponding packer.

from msglc import dump
from msglc.codec import CBORCodec

data = {"a": [1, 2, 3], "b": {"c": 4, "d": 5, "e": [0x221548313] * 10}}
dump("data.msg", data, backend="rust", packer=CBORCodec)

Use combine to combine several serialized files together. The combined files can be further combined.

Combine as dict

from msglc import dump, combine, FileInfo
from msglc.reader import LazyReader

dump("dict.msg", {str(v): v for v in range(1000)})
dump("list.msg", [float(v) for v in range(1000)])

combine("combined.msg", [FileInfo("dict.msg", "dict"), FileInfo("list.msg", "list")])
# support recursively combining files
# ...

# the combined file uses a dict layout
# { 'dict' : {'1':1,'2':2,...}, 'list' : [1.0,2.0,3.0,...] }
# so one can read it as follows, details in coming section
with LazyReader("combined.msg") as reader:
    assert reader["dict/101"] == 101  # also reader['dict'][101]
    assert reader["list/101"] == 101.0  # also reader['list'][101]

Combine as list

from msglc import dump, combine, FileInfo
from msglc.reader import LazyReader

dump("dict.msg", {str(v): v for v in range(1000)})
dump("list.msg", [float(v) for v in range(1000)])

combine("combined.msg", [FileInfo("dict.msg"), FileInfo("list.msg")])
# support recursively combining files
# ...

# the combined file uses a list layout
# [ {'1':1,'2':2,...}, [1.0,2.0,3.0,...] ]
# so one can read it as follows, details in coming section
with LazyReader("combined.msg") as reader:
    assert reader["0/101"] == 101  # also reader[0][101]
    assert reader["1/101"] == 101.0  # also reader[1][101]

Deserialization

Use LazyReader to read a file.

from msglc.reader import LazyReader, to_obj

with LazyReader("data.msg") as reader:
    data = reader.read()  # return a LazyDict, LazyList, dict, list or primitive value
    data = reader["b/c"]  # subscriptable if the actual data is subscriptable
    # data = reader[2:]  # also support slicing if its underlying data is list compatible
    data = reader.read("b/c")  # or provide a path to visit a particular node
    print(data)  # 4
    b_dict = reader.read("b")
    print(b_dict.__class__)  # <class 'msglc.reader.LazyDict'>
    for k, v in b_dict.items():  # dict compatible
        if k != "e":
            print(k, v)  # c 4, d 5
    b_json = to_obj(b_dict)  # ensure plain dict

Please note all data operations shall be performed inside the with block.

All data is lazily loaded, use to_obj() function to ensure it is properly read, especially when the data goes out of the with block.

If there is no need to cache the read data, pass the argument cached=False to the initializer.

from msglc.reader import LazyReader, to_obj

with LazyReader("data.msg", cached=False) as reader:
    data = to_obj(reader.read("some/path/to/the/target"))

Why

The msgpack/cbor specification and the corresponding Python library msgpack/cbor2 provide a tool to serialize json objects into binary data. However, the encoded data has to be fully decoded to reveal what is inside. This becomes an issue when the data is large and only a small part of it is needed.

msglc provides an enhanced format to embed structure information into the encoded data. This allows lazy and partial decoding of the data of interest, which can be a significant performance improvement.

How

Overview

msglc packs tables of contents and data into a single binary blob. The detailed layout can be shown as follows.

#####################################################################
# magic bytes # 20 bytes # encoded data # encoded table of contents #
#####################################################################
  1. The magic bytes are used to identify the format of the file.
  2. The 20 bytes are used to store the start position and the length of the encoded table of contents.
  3. The encoded data is the original msgpack encoded data.

The table of contents is placed at the end of the file to allow direct writing of the encoded data to the file. This makes the memory footprint small.

Buffering

One can configure the buffer size for reading and writing.

from msglc.config import configure

configure(write_buffer_size=2**23)
configure(read_buffer_size=2**16)

Combining multiple files into a single one requires copying data from one file to another. Adjust copy_chunk_size to control memory footprint.

from msglc.config import configure

configure(copy_chunk_size=2**24)  # 16 MB

Table of Contents

There are two types of containers in json objects: array and object. They correspond to list and dict in Python, respectively.

The table of contents mimics the structure of the original json object. However, only containers that exceed a certain size are included in the table of contents. This size is configurable and can be often set to the multiple of the block size of the storage system.

from msglc.config import configure

configure(small_obj_optimization_threshold=2**20)

The above configuration assigns a threshold of 1 MB, containers larger than 1 MB will be indexed in the table of contents. To achieve optimal performance, one shall configure this value according to the underlying file system.

The basic structure of the table of contents of any object is a dict with two keys: t (toc) and p (position). The t field only exists when the object is a sufficiently large container.

If all the elements in the container are small, the t field will also be omitted.

For the purpose of demonstration, the size threshold is set to 2 bytes in the following examples.

# an integer is not a container
data = 2154848
toc = {"p": [0, 5]}

# a string is not a container
data = "a string"
toc = {"p": [5, 14]}

# the inner lists contain small elements, so the `t` field is omitted
# the outer list is larger than 2 bytes, so the `t` field is included
data = [[1, 1], [2, 2, 2, 2, 2]]
toc = {"t": [{"p": [15, 18]}, {"p": [18, 24]}], "p": [14, 24]}

# the outer dict is larger than 2 bytes, so the `t` field is included
# the `b` field is not a container
# the `aa` field is a container, but all its elements are small, so the `t` field is omitted
data = {"a": {"aa": [2, 2, 2, 2, 2, 2, 2, 2, 2, 2]}, "b": 2}
toc = {
    "t": {"a": {"t": {"aa": {"p": [31, 42]}}, "p": [27, 42]}, "b": {"p": [44, 45]}},
    "p": [24, 45],
}

Due to the presence of the size threshold, the table of contents only requires a small amount of extra space.

Reading

The table of contents is read first. The actual data is represented by LazyDict and LazyList classes, which have similar interfaces to the original dict and list classes in Python.

As long as the table of contents contains the t field, no actual data is read. Each piece of data is read only when it is accessed, and it is cached for future use. Thus, the data is read lazily and will only be read once (unless fast loading is enabled).

Fast Loading

There are two ways to read a container into memory:

  1. Read the entire container into memory.
  2. Read each element of the container into memory one by one.

The first way only requires one system call, but data may be repeatedly read if some of its children have been read before. The second way requires multiple system calls, but it ensures that each piece of data is read only once. Depending on various factors, one may be faster than the other.

Fast loading is a feature that allows the entire data to be read into memory at once. This helps to avoid issuing multiple system calls to read the data, which can be slow if the latency is high.

from msglc.config import configure

configure(fast_loading=True)

One shall also configure the threshold for fast loading.

from msglc.config import configure

configure(fast_loading_threshold=0.5)

The threshold is a fraction between 0 and 1. The above 0.5 means if more than half of the children of a container have been read already, to_obj will use the second way to read the whole container. Otherwise, it will use the first way.

Detection of Long List with Small Elements

Longs lists with small elements, such as integers and floats, can be further optimized by grouping elements into blocks that are of the size of small_obj_optimization_threshold so that small reads can be avoided.

Set a trivial_size to the desired bytes to identify those long lists. For example, the following sets it to 10 bytes, long lists of integers and floats will be grouped into blocks. 64-bit integers and doubles require 8 bytes (data) + 1 byte (type) = 9 bytes.

from msglc.config import configure

configure(trivial_size=10)

Disable GC

To improve performance, gc can be disabled during (de)serialization. It is controlled by a global counter, as long as there is one active writer/reader, gc will stay disabled.

from msglc.config import configure

configure(disable_gc=True)

Default Values

from dataclasses import dataclass


@dataclass
class Config:
    small_obj_optimization_threshold: int = 2**13  # 8KB
    write_buffer_size: int = 2**23  # 8MB
    read_buffer_size: int = 2**16  # 64KB
    fast_loading: bool = True
    fast_loading_threshold: float = 0.3
    trivial_size: int = 20
    disable_gc: bool = False
    simple_repr: bool = True
    copy_chunk_size: int = 2**24  # 16MB
    numpy_encoder: bool = False
    numpy_fast_int_pack: bool = False

Development Environment

A working rust environment is required. Install it following the official guide here.

Once rust is installed, run the following command inside a Python environment.

pip install maturin
maturin develop

Alternatively, use the following.

pip install -e ".[all]"

Not all optional dependencies are universally available, some may not be available on platforms other than CPython.

Download files

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

Source Distribution

msglc-260825.tar.gz (47.2 kB view details)

Uploaded Source

Built Distributions

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

msglc-260825-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (342.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

msglc-260825-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (335.7 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

msglc-260825-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (334.4 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

msglc-260825-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (333.8 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

msglc-260825-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (333.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

msglc-260825-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.4 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

msglc-260825-cp314-cp314-win_arm64.whl (194.3 kB view details)

Uploaded CPython 3.14Windows ARM64

msglc-260825-cp314-cp314-win_amd64.whl (196.4 kB view details)

Uploaded CPython 3.14Windows x86-64

msglc-260825-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (333.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

msglc-260825-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

msglc-260825-cp314-cp314-macosx_11_0_arm64.whl (300.1 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

msglc-260825-cp314-cp314-macosx_10_12_x86_64.whl (305.6 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

msglc-260825-cp313-cp313-win_arm64.whl (193.9 kB view details)

Uploaded CPython 3.13Windows ARM64

msglc-260825-cp313-cp313-win_amd64.whl (195.9 kB view details)

Uploaded CPython 3.13Windows x86-64

msglc-260825-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (333.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

msglc-260825-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

msglc-260825-cp313-cp313-macosx_11_0_arm64.whl (299.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

msglc-260825-cp313-cp313-macosx_10_12_x86_64.whl (304.8 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

msglc-260825-cp312-cp312-win_arm64.whl (194.2 kB view details)

Uploaded CPython 3.12Windows ARM64

msglc-260825-cp312-cp312-win_amd64.whl (196.4 kB view details)

Uploaded CPython 3.12Windows x86-64

msglc-260825-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (333.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

msglc-260825-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (327.6 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

msglc-260825-cp312-cp312-macosx_11_0_arm64.whl (299.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

msglc-260825-cp312-cp312-macosx_10_12_x86_64.whl (305.3 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

msglc-260825-cp311-cp311-win_amd64.whl (199.3 kB view details)

Uploaded CPython 3.11Windows x86-64

msglc-260825-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (340.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

msglc-260825-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (333.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

msglc-260825-cp311-cp311-macosx_11_0_arm64.whl (306.2 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

msglc-260825-cp311-cp311-macosx_10_12_x86_64.whl (306.3 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

msglc-260825-cp310-cp310-win_amd64.whl (198.8 kB view details)

Uploaded CPython 3.10Windows x86-64

msglc-260825-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (340.0 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

msglc-260825-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (333.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

Details for the file msglc-260825.tar.gz.

File metadata

  • Download URL: msglc-260825.tar.gz
  • Upload date:
  • Size: 47.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825.tar.gz
Algorithm Hash digest
SHA256 5046be66c8e0bd09c0616cf6494cd3b03c6e7cb4980fd60c6ce23735b908336c
MD5 943699dfa330211a114e7ec7e98285fa
BLAKE2b-256 13a214ac23c20a3b457cf2691dc79f0a812aad85bee0ca7173469c9b0dc116a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825.tar.gz:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 867ecb994ac088d3b733bdc312d69263f778f95589d431f001b3907f012d1238
MD5 4491423766c6058c998cc8c62e626866
BLAKE2b-256 436e150364bd5160e57063e64fbec3e27908085a4a0ce9de9b2dae7228e57aca

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260825-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 baceb3a30320e813c5b1abd4b7aad7730a660e204c5721881406fd81a425b0d8
MD5 3639628f24f28a6ee7c9e170c995d044
BLAKE2b-256 b216ddfca75c8418cc984ae1f779acca77904fb1426b8c9af1eb470cf06a1eb4

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9d7ecd9d991425271a3f14a8e662c389be7583c55cc8c9a634962a09fd124a6d
MD5 5aaf82e61093e83ebdf28197fd1835f6
BLAKE2b-256 2c079e199571b248ca3926f7300e7f1eb5e0165364cfc2524482df1934077b4d

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 97f61c3add5c76612ca5c215533e82b554205fc081aac509d976bbbfb4c88f60
MD5 7455569c078d917749798639b2a48566
BLAKE2b-256 402a2e054e1d9978f2914901a656a4abd9204c336ce9d8150596a7049a0a6266

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 05c0975e527670c775e0033f4e004af7ff73f52773904c38d87fa3e910722027
MD5 8bb159a78d2ec5537d37f0f19e1b9626
BLAKE2b-256 472bb9934cbeb9974f12ec628174ca5838be96a4e766416ea3e928e0d474e446

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e355878616e80efbc347b0f2bf22b5a8ee3d627a496af62b64e398b98d15424d
MD5 4d18277866c401bddcef460ac59cdd8b
BLAKE2b-256 8861bf42ad912bea8be34573c894e272b14a536e55af4ec15412b3a71f039d7b

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: msglc-260825-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 194.3 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 4d242d0874f6bec9d33e7d9b5957eb2fa1d2462f6fffa45d60760bb3f0f8a53b
MD5 c6de185586539fa237a2e8c6e4128504
BLAKE2b-256 9db3636a49d134947aa6737d3bde2536099811cf031d6d38bb2cfd1667a365f0

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314-win_arm64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: msglc-260825-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 196.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 10c1c267c7ce86489054816e358c0cf0b47473b7c7d22d0e609dbcf3a5414453
MD5 7d7012a72783528238240dc21bfb5c09
BLAKE2b-256 3fcfab389888b724b06238d07066763cd0eb7955a1791058d5140bf43456b721

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314-win_amd64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a9a3f03d66aef89f06a8f1c6aaa34a3f62ad3d5e1a9fd63e064fa2b4462379f4
MD5 54067ef0ca718c0208737731d82502dd
BLAKE2b-256 aea21d934a86b37eb2872eabcc761d7c12cc3483f2af867aae143652e225a289

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 554568677c030bf8d120882403c9823667ecd63ad244c00184f0d36dee225ef4
MD5 732bcc2450b2329f46416dc1daeec04b
BLAKE2b-256 e4764aa156d58e4f97b384fd4b669e131234bae342f52f653c8ee5824bcbddf5

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e9e46fba9c68bf40bb090b1397b43c0f514de93e666f7c4b6acd62a31714d5e7
MD5 af3875d20fbde821d91240a75bdf0b6f
BLAKE2b-256 e006d5279d9d2bd3a02cb919996ed56ea50eba6c2e70104a3c16679d483f279d

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b78daff251820270f09125cf4ee2528f793d87f7fe949ca2c2e92688eb37de71
MD5 a6a418498d2d95c667290125a9db3f98
BLAKE2b-256 5520781bbb227a250b13f54cc8577493d58ff4c11b3d04cd10b36e21e0ff96a7

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp314-cp314-macosx_10_12_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: msglc-260825-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 193.9 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 b5ce2281be695cb2eb9cb1ec9745f1fafbea1cad6887458d6dc91d5e146fb9c9
MD5 3c42b9c7b61fb2c08c1ac021f3e07544
BLAKE2b-256 8dc91bfa4ee3ffaad8c8b5cb7f7aeea9a4255b0000572e9fa1c9bbad29c19873

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp313-cp313-win_arm64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: msglc-260825-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 195.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 e8fbf0fe87f55d029a34ce629ca3c608bd9fed68869181eeb57624f5cd1b68a5
MD5 4831d08504a0d4730b63bad1e4895b5c
BLAKE2b-256 ce7f9ee78db13db05b1900dc265b9c2fb80e2afc0db23b88bf1b2ccf38659161

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp313-cp313-win_amd64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 59f86dc0ba5bc3c36d9bca831086824ae48a649d2c581788c1049e3a911fecb0
MD5 8e36067733486ed0bec1c0cf8d5bac31
BLAKE2b-256 07e0a8359dcad847c3927de293ddadd8bc63d3443c562c9dfc1d4d41f0e57dc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 404e8b2a0c5102905924e0507032e2dded76d709eb1f587896e25abb8ba4149c
MD5 b0772f3893e6a6ec1d04b91304b4329c
BLAKE2b-256 136c91b7bb77fb84b8c3cdb2a0d29a0400a1ced4f010bb828e38b13832f6da62

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f6aea92ba0d3abdda45c1f4acb2156305d2d4d451d7a0dee7b906817e58f27c
MD5 e191e2e924870ab3f8cd1fb706306f3f
BLAKE2b-256 1283f28615dbb8b6b4b9e1bae51af3723d7b039de2f3c23570de764fa469af8f

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3935b507972b3ccba976ede9c5337275b67c00d762c729d36bc2bc85a9c5d0bf
MD5 323b3d47927700f60eb34cb3074371c6
BLAKE2b-256 b72a5178e5439c29e952acb8eb40b07e57a453c145cc8db033eebb80a62d560f

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp313-cp313-macosx_10_12_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: msglc-260825-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 194.2 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 72d61353a9fa36cfff3f00379da306b7d3beb338cb8522ea9041457a6ef6c0b2
MD5 89dc18de6f05858c610fb19e8d62a1b4
BLAKE2b-256 effd03936c81e9eb3c93e6cf6180fcd1e9e7b050a19225a718583ac6fcd8a923

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp312-cp312-win_arm64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: msglc-260825-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 196.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 575e5d685dd420bdbef64e0db3e35842949340c55f45d9777af5c94ba7fcf2b0
MD5 13eeba6e55784d38e725998fd3e125ce
BLAKE2b-256 89b65718ad3a7dea421b8a83a7bbc090670eb007eb0a14046cf465d42c68e24a

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp312-cp312-win_amd64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d57365ad3edef84b461ab4f149e2e7811ffa328ba78788c673cdc3653eb389f2
MD5 5db23b77069d9278df289e800561c016
BLAKE2b-256 acdb3605daa08babfd194aac4b913c9d65c0a0b8dfae7d29d05cb408dcce0214

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9f0f055bcb059108059c3e90be420fcbe89a99e2f00933ed7db65bba31d69082
MD5 a4b6ce46b68df081e62dd4d6408f1fd6
BLAKE2b-256 be9abb1a3f3d368204a165072c2ba855185abb8809d0e3f83de573fead406d3f

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e0856c48e41761a5e9acb942e7474f92ba59b7737edb8e99a2754a303d1e5fd8
MD5 3c9d57d1cd90bb1f14d71ba3dfc18ef4
BLAKE2b-256 20ca0ab7f401b723a7632d828d3190e81b0c4c43fe1de68b96b192dcd596f5c2

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 e7f6c9d5b08402ff410160c3bee2b3b4e898bfe95365c70a3ff120c9a321f6f0
MD5 368662866310437faf72f05baf155e31
BLAKE2b-256 fcaf1a4d03ca8bc7ac21700a722e9985d04b92ba7d479a90a23fa0c75f24c347

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp312-cp312-macosx_10_12_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: msglc-260825-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 199.3 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1360932b8d49d61979aa1b453143b4ad7969f28d62fb1569eee10c47600efc23
MD5 66fb3421b624972ec5a11a8ddc5288bb
BLAKE2b-256 99aa7a221f97865848623a145a87773c3a59ea63c44d5a63fbb5fddcfa755423

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp311-cp311-win_amd64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c3abcecc7f53216f89ff4d3e92503eb82d810c135f69a6d67590fd4799787bc5
MD5 7a5e323f083a03f8eb1febe65568601f
BLAKE2b-256 5a54413c4f8a52348d81e6a7b90a3ca2e9ee6db1094fcba83618fa67b94a73fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 c84998479b0b945a8fb5694fb649d16a8e9cbbe509fd6fbc2b65a8a4b6280664
MD5 02c77276071522b9e39520497bcd94e4
BLAKE2b-256 85b8e9ca901ef96fcec9011d8a2ddb46d0e012681d7c701639c8b728b398c42f

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1ff504619eafa197eda9906254383aee92b4608b14cde10865439393db4b2e65
MD5 becf5778a34f798005e166e222b06144
BLAKE2b-256 e608070269fb16c09d190564640dfbba41caa36abe21b05f76fd6b2758a26d33

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 711354d43f4b662008f7e241d7df6750b96c9129228f6cae4b803bf56d801dc4
MD5 7f76ffe88c125860ed965563d478d5ce
BLAKE2b-256 6105a0ab649ef8072cd7922697f4abf894d20ed5a42166a80b9cb52cc4d6f666

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp311-cp311-macosx_10_12_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: msglc-260825-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 198.8 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for msglc-260825-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 c52bf6b290feab954ec82ce20858a3088a03e1726af0d6a4de413db9f5fa6176
MD5 e38ce165a8f328f56f42cdbdb36fbed9
BLAKE2b-256 3435877e744ab2dc3298e4e1f39c0dd530c02165893255d0ac76680a9cb40ef6

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp310-cp310-win_amd64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9f1ebc85c32a6b93ff003550d0ad96716c7d6d1833d0e16c1e0b36fe1d43a49c
MD5 ca55d76ef04845dfdd99403e93c9669f
BLAKE2b-256 d6754951fc0dc3a6bff566bfd184963ed8edb2ce0857644cbfce8064203ed6a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

File details

Details for the file msglc-260825-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260825-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 94d8b785da574e60f41c60f48fa0cd3df8093da824426b39b00c75589385273f
MD5 da5f6b7241e72d422315d91cb024f428
BLAKE2b-256 047eac50587fbd6493d2f352d30f4b943e0b65503171b24edcf90653ffaa07fa

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260825-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl:

Publisher: publish.yml on TLCFEM/msglc

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

Release history Release notifications | RSS feed

This release

260825 This release

33 files

260824

33 files

260821

33 files

260820

32 files

260819

30 files

260818

30 files

260423

31 files

260412

1 file

260319

1 file

260317

1 file

260315

1 file

260201

1 file

260115

1 file

260103

1 file

251227

1 file

251222

1 file

251009

1 file

250419

1 file

250314

1 file

240630

1 file

240330

1 file

240317

1 file

240316

1 file

240312

1 file

240308

1 file

240307

1 file

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