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-260819.tar.gz (46.9 kB view details)

Uploaded Source

Built Distributions

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

msglc-260819-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (336.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

msglc-260819-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.2 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

msglc-260819-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.1 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

msglc-260819-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.3 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

msglc-260819-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.1 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

msglc-260819-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (325.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

msglc-260819-cp314-cp314-win_arm64.whl (196.1 kB view details)

Uploaded CPython 3.14Windows ARM64

msglc-260819-cp314-cp314-win_amd64.whl (198.0 kB view details)

Uploaded CPython 3.14Windows x86-64

msglc-260819-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

msglc-260819-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (326.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

msglc-260819-cp314-cp314-macosx_11_0_arm64.whl (300.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

msglc-260819-cp314-cp314-macosx_10_12_x86_64.whl (306.3 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

msglc-260819-cp313-cp313-win_arm64.whl (195.9 kB view details)

Uploaded CPython 3.13Windows ARM64

msglc-260819-cp313-cp313-win_amd64.whl (197.4 kB view details)

Uploaded CPython 3.13Windows x86-64

msglc-260819-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

msglc-260819-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (325.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

msglc-260819-cp313-cp313-macosx_11_0_arm64.whl (300.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

msglc-260819-cp313-cp313-macosx_10_12_x86_64.whl (305.2 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

msglc-260819-cp312-cp312-win_arm64.whl (196.2 kB view details)

Uploaded CPython 3.12Windows ARM64

msglc-260819-cp312-cp312-win_amd64.whl (197.8 kB view details)

Uploaded CPython 3.12Windows x86-64

msglc-260819-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

msglc-260819-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (325.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

msglc-260819-cp312-cp312-macosx_11_0_arm64.whl (300.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

msglc-260819-cp312-cp312-macosx_10_12_x86_64.whl (305.9 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

msglc-260819-cp311-cp311-win_amd64.whl (200.3 kB view details)

Uploaded CPython 3.11Windows x86-64

msglc-260819-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (334.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

msglc-260819-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (330.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

msglc-260819-cp311-cp311-macosx_10_12_x86_64.whl (306.4 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for msglc-260819.tar.gz
Algorithm Hash digest
SHA256 e0d30b8d4efd3d6a05a89718346b24e34b3835797919c2fd0e235e2d1710c36d
MD5 d9598f1591c618c053cfd8a83c131d6f
BLAKE2b-256 a2cbe660618ddfb2631c5ab997dd9c9dd3c0f96d5c581337faff38244bca9849

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 cd3b277e63171a0190f67717a91320c5ccffb9cd7a880995327b1d81db3e184f
MD5 fbee9d5b8fdef7ee95b74bfc5d6e4286
BLAKE2b-256 53c0a4dbf2fe1ae8ced4a94803e65b375b107c4f38aaf69996284712b1d84a88

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260819-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4b8ee75e67ee31f097f766c0af6a5a1b46c600383d29123e45dc640e6546f684
MD5 460913bfe955aee90b177d2f2590a557
BLAKE2b-256 91c774778ad10d7cbba0b1a6223981f5eac6986f2c9597fb222ebc7f7463c9d2

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5377410afb0955c0da93ec0208dfe09fb97ad404f64c271d426b53d84b0b7ea8
MD5 6a11eb718d474d20187c4ac84281f65a
BLAKE2b-256 5803e0cef2003f5690c6a3b348e2f5351dd5af3ce11995beb496764ff41ea8cb

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 a94441916f2da177053104b3bbe594f1e910f2aa448d3a1beb2c7a68891af00a
MD5 a3332a0b4cee7a04df3a4db318f25b53
BLAKE2b-256 b1968d48912bf7af0476754645fa8551193006972a3ef7ea6d922a31012b7407

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 edd0d8f64a7a50e24958428acf01785e5bc48b31c7c1a033fa9fd4a9292466d9
MD5 451e7d775ccd7620b08ab2df9845cb68
BLAKE2b-256 29dbe64822fb78bac0ea9d948f91e289e8140e0d4ba9211c541ef9cb717e5f69

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d15a2944d79a3d797fc4b7e0c0978087520bf74ca6a55c8eb6a53d0a042bd49b
MD5 0493cb060e17392e2c1f4481c1dfc132
BLAKE2b-256 70a24da651f38a9b09d1029dc936a7bb4362dcd3f81e55cf3ac4ded51d835351

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: msglc-260819-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 196.1 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-260819-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 dcb463ed40d78fc84d7c9329f575f31b4247e372deebe40365645137bcc960d3
MD5 5619a28776a23e0b7ceeaf930ebf94aa
BLAKE2b-256 cd712121707f1e1403a6e681ddf9fd7a138539b8a0fef7d740586accfaa36ed2

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: msglc-260819-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 198.0 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-260819-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 98c7b7af1c2be783b1771fe94a7d3c249be24957674a213baad45bc799c3e6f7
MD5 4c0e93df10a2922154995e41c41dcd54
BLAKE2b-256 53b6b389a5c770314a13188cd695fd8b95b80f1e2f980c24ab413f321cd6fc9d

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2860242cd0f7aeb781f1af87899bd4dc0783f4228b5d9efd7f64b7d44e8fe467
MD5 6c2688f6b1e65853072407aacdd2f6d0
BLAKE2b-256 a72174fe35bee5382a9fb1f4f7dc6181807716e619529b633eddfa37282b8ae9

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4ad8bffbb993df71db4bdf6ce5b2f74374c30e979aba97649e4866dc0b44b858
MD5 7102755df08cc664869ca15ba4a58f6f
BLAKE2b-256 e5f9a2c73f5faed6eafa3487c0dd84fc52c4fe45f1a506f86ce78de5f292c46c

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 41c71902671886678ba86fd6b6e50e0c55cdd847a04584f6871218bac40661c9
MD5 efdee83343c23573145064242ad3a059
BLAKE2b-256 e170700956059c10b04af120a1475adfdbcb0e7bccc6aa90e16e4d65923f9503

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 81866df9fa4803085d60be0aab2d38df069ebe49c55cdb3117d41a6292da78f8
MD5 2d5151b4714eddff34cb83184d4839d3
BLAKE2b-256 7f5c4a4373902669365964a36b64df84aa1dfd33d4f17b32fce2f5a73903ac82

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: msglc-260819-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 195.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-260819-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 e2f8a89a8d82e90f2b3719182ff3e9a5cad23df3e87161cc4cef549e6a6a8a76
MD5 104e82bef4f25b9c25056ebc68738afd
BLAKE2b-256 d0d04bfcf93b47448a41ecee838bf9028bf21ac9e4f0b4bb6310f620da5dc784

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: msglc-260819-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 197.4 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-260819-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 cb4d2532f2bb8b38b671e02441e87fd70ef9fb2b82b4a94968e5eb8834f6fecf
MD5 c80e25dd3d8b80a754bada450e244716
BLAKE2b-256 257c0ec9368e797721d73c997cf58dad1ab5dcd6e5172e1454760ce547f41948

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 51cc9b43fe7792c201ddbf1ec006cb8dd5eddd1dce51dac64efbfcedaedfe47a
MD5 da29806912a2a3793cd59c21aff928de
BLAKE2b-256 dbd92dea689551688db0ea8e34eaaa040b6ea7eee3fd1c91fce629886c880171

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 4ac65613cef86d3eaecb7823671b0fb206ee5523ab93f9bdda5354643d479664
MD5 8d4867a29fd38613c8fa991f6f7da4ce
BLAKE2b-256 230c586d884156785071f1b675fdbd3d193f6f89cb39855807decb49366bd925

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ad478ad7f9aebddb959dca50a9e541a7f03a30b1c7c8a3641fc0679ea0ef02a8
MD5 f7b48c3f82dbd323fe86c5f2adb77c2c
BLAKE2b-256 e4b6a83505a45772642198008631ecba4f55eb9a096c59eaf179574c77bf3457

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3fd23eda13ddb1428ff84ec98a58e9fa47fcc58c8af1305d9c22ee3dcda8b9a2
MD5 3ab88a347ad7c2574d3768d05126bbc3
BLAKE2b-256 cf3f96a130a29402fe8f5dbdfe9fb8de942a809234809e50b7b05c1c5fe028e2

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: msglc-260819-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 196.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-260819-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 7108bbd456565414c33543e7bc981fe93ae4af5df0ee11954aeef9678f18a279
MD5 85bbdb6efb4df3a8189762eef4801777
BLAKE2b-256 003ae888ca1dfababf1739f73bfb8830646d4bf2a04225fd6c413b826fb17233

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: msglc-260819-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 197.8 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-260819-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 acced5371986c25247f9b0dee9937773dae65d632be6113ca96d684773377316
MD5 e9249ef526c4edd23f60010f2c81999c
BLAKE2b-256 3b7f23c1e509d48d778356ad8a2f27fba045bef4cb7fad7531039e016227569a

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02839c9f0fa20254eb0789bba88a843ba6f9ff8696371bd72117f31ea5fa240b
MD5 64054ae39f35a09d1328f73ec5f95e32
BLAKE2b-256 3b71f479640053fe437dbde731ff39592251c681e37d7f699fb9d790efb69f75

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 9db3a1d146765db5d3d79c35c29b82735117d027f6cf67942c42321a77b797d8
MD5 6574d3ec5c10a97b5d99df0568bb3ac8
BLAKE2b-256 59e78810a65e429f169b8f2e9fb67b72ca254f2095d243c56e2ef3ff3869679a

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cc03273ac4461076607ed6a7b7b2d2eb341585a965e2dbbe8275dd4f405d3b22
MD5 a308de1ea84a4f8208c2874baa1a71f9
BLAKE2b-256 f31168a2f99ee7ad92b15e2590a06cd57da63ce5be222b035d7547d7e16414fe

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fcac67032afda795a887771ed4a45083dd6cb0f6750d4fb573be31da51f9c949
MD5 822d010e5248975d9e0a6682bf6a5f8a
BLAKE2b-256 2529e2cc00b2a29fb13613561ab259fb3f958703551b7b3b6949348b50134a76

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: msglc-260819-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 200.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-260819-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 700ceed024c702340f95a2e2b58c7c4b8565b882aaafb44479898280f3c68b57
MD5 46bcfd7fb47a3ec6128207f42613a470
BLAKE2b-256 ba116c15673de6630e5f703835f85b1f02896b14d695e382340292c7cf277613

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 ba7b8a787ccf14228fb74853e14bf6e3f8bcbac8a231583131fc4f7c412437f5
MD5 70427fd40a870a705e0c6dd19e8b3b06
BLAKE2b-256 c46ee683161f89de49182487d2aa09bbe1a0251492f834b7d45b1b6f11814710

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 5976244120325669c3763b0317a8f6312f412834e48c1289f5f89be449268904
MD5 67f1770b4c508f3b6576142fc1a02a4c
BLAKE2b-256 7166a5e88ca2e77da19f5596954885f02a1cd68b9d0d67a771f714342a2c50dc

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 352f149dd8db06eeb932f9de53932fa3088d8f5275fe53e47a6740de6c3ab3e0
MD5 687686616ecad000648e00ca3fb4388c
BLAKE2b-256 b788c04df657fa287bf04915e9eb3473ba5115d31157ea2c6a1178340b7ff5b7

See more details on using hashes here.

Provenance

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

Publisher: coverage.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-260819-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260819-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a88c2220900b2a67d9545474ae7f13a0394638aa0aa67c557d02c3b1cfc68418
MD5 36cd09507d1171536846ba8373fae8cc
BLAKE2b-256 c5ed48ba9cb45b21abc498f22d1ac9d0db81b30c91ccceebd68db63b726eece6

See more details on using hashes here.

Provenance

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

Publisher: coverage.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

260825

33 files

260824

33 files

260821

33 files

260820

32 files

This release

260819 This release

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