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

Uploaded Source

Built Distributions

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

msglc-260818-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (334.3 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

msglc-260818-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (331.1 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

msglc-260818-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.3 kB view details)

Uploaded CPython 3.15tmanylinux: glibc 2.17+ x86-64

msglc-260818-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (329.3 kB view details)

Uploaded CPython 3.15manylinux: glibc 2.17+ x86-64

msglc-260818-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.4 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ x86-64

msglc-260818-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (324.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

msglc-260818-cp314-cp314-win_arm64.whl (193.8 kB view details)

Uploaded CPython 3.14Windows ARM64

msglc-260818-cp314-cp314-win_amd64.whl (196.2 kB view details)

Uploaded CPython 3.14Windows x86-64

msglc-260818-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (329.2 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

msglc-260818-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (324.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

msglc-260818-cp314-cp314-macosx_11_0_arm64.whl (298.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

msglc-260818-cp314-cp314-macosx_10_12_x86_64.whl (304.3 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

msglc-260818-cp313-cp313-win_arm64.whl (193.3 kB view details)

Uploaded CPython 3.13Windows ARM64

msglc-260818-cp313-cp313-win_amd64.whl (195.6 kB view details)

Uploaded CPython 3.13Windows x86-64

msglc-260818-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

msglc-260818-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (324.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

msglc-260818-cp313-cp313-macosx_11_0_arm64.whl (298.0 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

msglc-260818-cp313-cp313-macosx_10_12_x86_64.whl (303.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

msglc-260818-cp312-cp312-win_arm64.whl (193.7 kB view details)

Uploaded CPython 3.12Windows ARM64

msglc-260818-cp312-cp312-win_amd64.whl (196.1 kB view details)

Uploaded CPython 3.12Windows x86-64

msglc-260818-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (328.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

msglc-260818-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (324.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

msglc-260818-cp312-cp312-macosx_11_0_arm64.whl (298.6 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

msglc-260818-cp312-cp312-macosx_10_12_x86_64.whl (304.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

msglc-260818-cp311-cp311-win_amd64.whl (198.2 kB view details)

Uploaded CPython 3.11Windows x86-64

msglc-260818-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (332.8 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

msglc-260818-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (328.9 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

msglc-260818-cp311-cp311-macosx_11_0_arm64.whl (304.7 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

msglc-260818-cp311-cp311-macosx_10_12_x86_64.whl (305.0 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for msglc-260818.tar.gz
Algorithm Hash digest
SHA256 f0f0572291f2440f6aba6fc3c04660aa68709b3d4ba39d17b420668ee1b47e3c
MD5 88710eb816f4e4722c841cfee5b8eb54
BLAKE2b-256 6e880b982c28aeef22516ba3d08d92c5e772a5ed04c63c7812b2ea9a4ecfab97

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818.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-260818-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f288c921bbf0593efade43b5c5abd1f194d1bc76ee24a9e1face26d804066d62
MD5 c232b2d46391f7249a6f169099d1ece7
BLAKE2b-256 40e1262cef191f66ae8d803faee2ad76b1971cf5c922f6674ba123ed11fa888b

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260818-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 09b66379d4a1b0dbbc2a543ddf66f7e7524415b2e4c204ef2e15feaac8ad0523
MD5 b8195f424f56eed09d7eff72e925dd51
BLAKE2b-256 8687ec44ce76e6e2597a37f3f4f949c1e01b02b26698c8e8d54de3bfd75934b7

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0460140f8518b766eb15418e7b052dca518a710c75f4a6760d9115ea8a467327
MD5 5dc03a70f8aed65d934ed342328df5f0
BLAKE2b-256 470bd6e193db9c6c83e3ab32c94419f101167fa82609a93d978214b06d7f743f

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 3b783041a0d71adfe9fe6c99bd249e14f2cb8a82f7236c937cc3d383f8a6a72c
MD5 c7054bd4d3c8a5cfa9a70fe5e446efdc
BLAKE2b-256 58aa0f1af6dbf515204d50219f9ab4e16bcdcaab176b2cfab1b1f5774aef2f45

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d8a61d9c81dc680e23add6e106f52620ffbc58a373f061a36400bb4f418519b8
MD5 33193ec9415757f5996d9daecc879874
BLAKE2b-256 217993ade5a782c3152d032bdb748d0410cf20b9cc60c7ef7d9dc42a182cbc5f

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1c763b559a4a8d75dfd5a6d47c77d50e50782015b06f60ff151724ea22dff87b
MD5 9cc746ece3d7f0692756da8360c584c1
BLAKE2b-256 91bd508fa66330f18d685c6664efde36ce222eee84a23dbb1b975d061b1cfe28

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: msglc-260818-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 193.8 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-260818-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 0fac56a143ce36948713d2098a15093c4d18df89cf692901ca88f958defc53e7
MD5 71a1e63d330dbe665ad6c896a93f6a33
BLAKE2b-256 eb20473b8ca0aa5ce534d6ef31ba38c133212409f55ba3701d2c8b6184e17813

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: msglc-260818-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 196.2 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-260818-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 d91b8f6160c72902a402a404c87f58d4d648c876bed21a173f2439197ca3efdd
MD5 114bd3759829a53b2ab7bc700959d507
BLAKE2b-256 4f22f9369b141f8cc4b99f845bd234a51d4884e6e71c2643b5d9a7d4abed45d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f19420c05f09aafa93fceb56dd573b1316919e2f92a60401bc9562796f839ae
MD5 6fffd0378facf18ab4f19792bf16b502
BLAKE2b-256 94cdae8053b6054817906eea3f2dd82e99e391b53c49f3fd0d933813efdd38df

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 82b889ae6b79b2692f66dc3cb0e0d284efacc7f0c7fff8eb130134feebd658bb
MD5 e8d7f0dfd942a8630c6940404d5fb40e
BLAKE2b-256 f013202195a545870cdb5a88de329da0800e3e9788c7c4a1cff3198a8b2a9c88

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9a05d2957a5461846fca165a3933c3013639e2036c838892d4d1a27e73620e4d
MD5 6ab5d9d3c41909f7167a5c1ca0118fa7
BLAKE2b-256 7de50fe37f25f79d56819a553b172ce7fb7e22f1754f0b1ecf4e471d5816738d

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b89c7f661b0e887c671fc836e470162c665dd697d824fde6f5bf7e125d923954
MD5 229822edc0e16b09583cb7b3d945c360
BLAKE2b-256 e827e7bd2f07bcdd5a59079486fbb6b074eba0587690f3e66a77bceb9fb10106

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: msglc-260818-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 193.3 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-260818-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 12d032d87ec624d2b7212f13466f88873327fd839983ffe18150c925274be973
MD5 66033b6a51c184c782c49ba6261af752
BLAKE2b-256 1237ae41a2c8d0a90f9385175b6fe44c0dd85454990c67bb46e95bb30e2189f1

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: msglc-260818-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 195.6 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-260818-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ef6aa2387aae82a2e2a66bd07467de60ab1cec68689a185e4ca0f3aeb8b15cff
MD5 dd963f6c6088f8dd214352cfcc1f5336
BLAKE2b-256 c74c6c0f72d09ed47d2e7eb43fef9933380d27ff560c1ca26ec85dd5935f774f

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9072af40534620b6386c3e0fed70b36bffd2366683af850fbc1151d67dce7830
MD5 ce508ca88a80ded9f1d0950336723171
BLAKE2b-256 6fabef48e697a2b8024c32c8639b1dfafda8dc301380423e9b27daf46f81698d

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 963ea30bb479f4b7f02e591be4e841d8f73f96f2b808c3198deac88654a70c0e
MD5 32fd528d8e5591409a5983a877d27149
BLAKE2b-256 d9c4d9b606b89cfd71011d38bb9adb28b2a4c79dd0b7b5020e3146b68702a248

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f6015961bc613c9da58a1f083f2fc41f13d68f6a953ddc932753ecd0e8619c20
MD5 ba11f44cb3cb4ea706f3e14aa7808de7
BLAKE2b-256 fb9bb61ff4903f77121e86f2bd9438ca92a745359efde06faa45843a0c34192a

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b9b1bdb3eb182fc1eb3040de7ace73a526f1060d3cf571942e292952e0970793
MD5 a9991cf56027ec5169ca6a3a3d7518f8
BLAKE2b-256 bdbb8441568c603a0d2fa5c8b8190b577f7d5fb31ec5d1df922b44058ba1e882

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: msglc-260818-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 193.7 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-260818-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 f8fd8b80c62db738e9a307239364cb62c59430ee2dbefa613b677765c06d4b9f
MD5 3f775ce9c73447d22679bab76cdeac88
BLAKE2b-256 6624931d85cf24c5f234174f09913d51261ff39eaa284a069c8744688b3b66d3

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: msglc-260818-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 196.1 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-260818-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e9850a4874762f84fc04be06573a9678d68babeebbcecb3c6bbb2402e6c073ca
MD5 79ea1c2bafd773160d748b283cdb7f96
BLAKE2b-256 fb251102a0d43046bf9fa0b8335446dac7196a3ba70cd70a5222cfdef286220d

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e51f5be126af71eca1b9e68cdf50ffca5416c9e2f9f168fec4d4e9848c05fb7a
MD5 abb83ec3419490c0cd15f49de6ef9ce3
BLAKE2b-256 6fbea307323db39f15fd353ea8f104fe416428103981a2d87a9e9fa40b56a344

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 dd3438c1ad7c988a5e8cf37e1bf1266eb6ad3bd8f80552889cf060175b26508e
MD5 f06d30a10e9df7352aef0e6fefd65d66
BLAKE2b-256 9dd5ca429ce627ac31e01179ad953431da9c570c3cffc8ca83c9394de3c0638a

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e56c9eae7c53b19f0016432ce6f20744d5a1b2fbcdcce2101c4e32f40956ae72
MD5 82f28df99a501df939865902f6b6bf12
BLAKE2b-256 7601a86cc122a87518dba0aedbca4527a456bf8909ff0de600bd57a2df85b1f4

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 04a5881285f271428df937caf88e71b98aa3a8bd2284d7963cf0937a45c66839
MD5 0f3150fcd2cef0721b5d280e40516f5b
BLAKE2b-256 84f8eb30b468a817e2ee0da60e26c98e95ad7d2fac2a4bfc4505463481137cd9

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: msglc-260818-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 198.2 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-260818-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 12c1f1ffaa93b26e5d98513c99333ab9478d3334221ebf4f905378f490efca3c
MD5 2da2c07d89adb81aa5aa32544edc3440
BLAKE2b-256 e98be663ef24d8ce52ab4732f4fcf806367a451f08cc314868f330e61e6e2535

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 918471d37d9a2c1323f325bce07951f0b39f67af8ef1a74c8f42b25b16be3725
MD5 b5066b0bbfef4e7e894dbc751856b6ac
BLAKE2b-256 c752c71fe276a7fe258db6dde0967b6f9834e0e833ab7a85c3fcc0a6b50f0646

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 bc045afb777a313e8741282bedbd62f5ade64f7256790ea90f0f9199b66ca5ea
MD5 f27984ea51e7f7ea32aff3f82146bcb5
BLAKE2b-256 e57885f6791f793b38d237f3bb5823995f4e2cc8d685de16a78d723b134850d7

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 322d266ef2b9d1ae6a8890396d51232cfd2dea9e76bee06a7dd3b213cb2c9fb5
MD5 bb1ebcca14575963178b735765acb182
BLAKE2b-256 bfb4ef1280a5bdbe0cf9f885020a62eccc31c9fa6ee8182f8854b2b9b45463b0

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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-260818-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for msglc-260818-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 489298227637622196ebbf05a4aadca7095d76eba83b106fe67b0c9e57f7b5e8
MD5 1f7f0ed7deacd3456f991c89b278f086
BLAKE2b-256 8fd5ab7a6ba589b89628d6563f0fce81fa18e230ea3cb1a0868451d00d4c05b1

See more details on using hashes here.

Provenance

The following attestation bundles were made for msglc-260818-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

260819

30 files

This release

260818 This release

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