Skip to main content

binary json representation (msgpack or cbor) with lazy/partial loading containers

Project description

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.

One may want to check the benchmark.

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 = True
    simple_repr: bool = True
    copy_chunk_size: int = 2 ** 24  # 16MB

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.

Project details


Download files

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

Source Distribution

msglc-260423.tar.gz (45.1 kB view details)

Uploaded Source

Built Distributions

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

msglc-260423-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (330.0 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ x86-64

msglc-260423-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (325.5 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

msglc-260423-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (320.8 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

msglc-260423-cp314-cp314-win_arm64.whl (187.5 kB view details)

Uploaded CPython 3.14Windows ARM64

msglc-260423-cp314-cp314-win_amd64.whl (191.8 kB view details)

Uploaded CPython 3.14Windows x86-64

msglc-260423-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (324.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

msglc-260423-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (321.8 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

msglc-260423-cp314-cp314-macosx_11_0_arm64.whl (294.0 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

msglc-260423-cp314-cp314-macosx_10_12_x86_64.whl (298.9 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

msglc-260423-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (320.3 kB view details)

Uploaded CPython 3.13tmanylinux: glibc 2.17+ ARM64

msglc-260423-cp313-cp313-win_arm64.whl (187.8 kB view details)

Uploaded CPython 3.13Windows ARM64

msglc-260423-cp313-cp313-win_amd64.whl (191.8 kB view details)

Uploaded CPython 3.13Windows x86-64

msglc-260423-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (324.3 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ x86-64

msglc-260423-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (322.0 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

msglc-260423-cp313-cp313-macosx_11_0_arm64.whl (293.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

msglc-260423-cp313-cp313-macosx_10_12_x86_64.whl (298.6 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

msglc-260423-cp312-cp312-win_arm64.whl (188.2 kB view details)

Uploaded CPython 3.12Windows ARM64

msglc-260423-cp312-cp312-win_amd64.whl (192.1 kB view details)

Uploaded CPython 3.12Windows x86-64

msglc-260423-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (324.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64

msglc-260423-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (322.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

msglc-260423-cp312-cp312-macosx_11_0_arm64.whl (294.4 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

msglc-260423-cp312-cp312-macosx_10_12_x86_64.whl (299.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

msglc-260423-cp311-cp311-win_amd64.whl (193.7 kB view details)

Uploaded CPython 3.11Windows x86-64

msglc-260423-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.6 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64

msglc-260423-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (324.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

msglc-260423-cp311-cp311-macosx_11_0_arm64.whl (296.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

msglc-260423-cp311-cp311-macosx_10_12_x86_64.whl (299.4 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

msglc-260423-cp310-cp310-win_amd64.whl (193.6 kB view details)

Uploaded CPython 3.10Windows x86-64

msglc-260423-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (327.7 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

msglc-260423-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (323.3 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

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

File metadata

  • Download URL: msglc-260423.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for msglc-260423.tar.gz
Algorithm Hash digest
SHA256 e173f561e3aaa0a868d0c349bbc7f25dc79a5e58a150e44b6ed9c35482b95f85
MD5 d48484a1822ba828d4c873fb1693b867
BLAKE2b-256 bdad1befd907ca6e879be857f3433ce0e64bf4e56631b5e1b6e48cb904b1a346

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c644539f18d9642dacaf89de10f8e96d693d6aa012cdbdcfb131edd834d03c0e
MD5 3247addd1e8ad09e81053e36c89e141e
BLAKE2b-256 dfd820eb97bf2a1f02441e356efe5731cbd09bc687c2fb9343ecf2546cdaff81

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 250cd517ca92796c41642bc2abae61271fd27eaf41142ccec87555826f0371d8
MD5 1477d547d8ae8c4ac3f946ef0d689e66
BLAKE2b-256 6d2fabb23fc22287f8002051e563ac086aa0717f6fb2b361e2f381860fbb6a5e

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 a61c24491394eeb327661d615633a7c8e071f77bfc3ccb61c4970b016f06c1e4
MD5 c96e79ec2a8a9cb3035bf173c84a8664
BLAKE2b-256 995d301dda848aa907857b4fd82e4a90880d3203996156603faaea06afb36c4b

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260423-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 187.5 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for msglc-260423-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 a9a2bdb90c7119b7b6b03967d22d3449a3d128b107542996434a8a9b351fcfd7
MD5 163a5b042bd523b1afefa6d775b0ebb9
BLAKE2b-256 a020dc99557b3653f5f817078be93df25a685b8716df6597958faba201b966af

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for msglc-260423-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 ae3dd2be5f98d7095df82b8aecd9f21da42fb2eedbd750dbf68de04a1e2d1e69
MD5 d3618b030d04d3b8028fa8065869333c
BLAKE2b-256 0a8a4a9655f0cbda90de220e3fdc1d1d4aaa85ec426185924607e341fe67159f

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 80d3484e986baf265638a03df378a57542e75ed1b0328da1563c397e759c1db6
MD5 cbe0913d06a90539a972617f9cac110a
BLAKE2b-256 040261bbadbcb6116693e1961461532dc0c13d3ae43d9b56b454443a50e1f9a8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 ad2de9ca38ef593fc7724de118cdd975c7e7f0c271308c0055b17350dec93f97
MD5 b40acadb328ce2007f057a15bd70c48b
BLAKE2b-256 94418fea3b19f5b3f05978d55051cd0065463f8f32e0c30a3778804db7cbd3ea

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a7cad4b4c00f388bcba0e95be6d340d295b1f33fc260c86981505f33f383ce9b
MD5 a71bb1a6f49a588e9ddf65c75c9fd102
BLAKE2b-256 036799bb97a6e19cf296e18a011caa1121a8b8a4eba842de1ab657adb7098d02

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 44d996ca4a359ca4debd7a0948624d220f4ba0cf3011aba185c05a4a71057fee
MD5 df3ffb2c6916b6dd984bc2ee76496f6a
BLAKE2b-256 738a984489958e6804f907fc03d4ce11831fa11be48c89c51eec1295f458e466

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 67bf8a35ac1a6d3eb082abccecd8a71c3c5bf7065dd6ee94e1970b5e7c953ff7
MD5 54f1e6a654c2619a2b9add9bfab6fefb
BLAKE2b-256 ec01c420ff308f16399c88e8fa9cfa628739f683df12f3cb2684e83494c12501

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260423-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 187.8 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for msglc-260423-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 6beabc18183dbc44d8dddcfe04e7f1b68e75ee3e223e6a61237401ce0cbb8f93
MD5 0cdcddb9ef577ae61a707abcbae5c609
BLAKE2b-256 4f93a5a40c902ed30a119c26c55699e74e175f654bbc27dc1514c7936c8d164e

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for msglc-260423-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 367869f8d390cda6bb451e068c6b32968d7723588d34141f55c0eb4b47987d6b
MD5 9ed3f2520c982782046df724157d9200
BLAKE2b-256 df6e1267c56a5691f2fe89ae1e8003e6861f2031bf650de8a17e89174210760c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 02b4625cc99beec204f19e602207792b34a42d449c3bb2491157e774dc3f2782
MD5 766ab0d12d7641dd4c540475890fc0ff
BLAKE2b-256 b6305cd164f9ad844bb90b9cc67abd0c9f276d8fd6dd32f251d39da7216a68a2

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 8141778854a6dc2284875ba374dbb1f5598f9e0827f69dd0ad8fe138e1054b64
MD5 0c99c09c67662b6bb04540fd4b2499c4
BLAKE2b-256 a1e728bee8d2a723bb147a1cee094446fa27de1c408ffd960afde6ab65928639

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d974627f11ef78f43caa8a0fd44d67d78b42ad7c68728593b03499d6d1bbbbd5
MD5 b3b7f11271a23ffa4620ecedb6298cc0
BLAKE2b-256 dd65a2770b7434ffb194a51b6dca24892554211a935f529ee8bb28c634376f15

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 5ed1ae8f1280148db3f329d1b626ac0f6dafa42f7aa5265d775d8827b6df8068
MD5 f802d7f725ed9a01c01f552b5c8321f2
BLAKE2b-256 84cc9cd20eab17d43574616f9c9e7b0a039b31cd1a66927ef409db545966ae58

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260423-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 188.2 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for msglc-260423-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 77c19184c9d60713d0f40132ac1076164088be80b78027301ab5eadd83249c9a
MD5 4adcd64825a48e09f2b1128ba6148e06
BLAKE2b-256 c6465435f0a04b81f5c87d1654ebbfaa66c1af62d5323c5c6cc30ec5058e8a7a

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for msglc-260423-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 799f328c6b998660f88a39f4320dd70fb401633824a5dd2078154192bd84200b
MD5 0e7c29bacd6517c4bd318956b7d5ca9a
BLAKE2b-256 546dc880e011a534ac36bb2a705f4ca45fde7e8ffe1c7e7b92cab7c5deda3cd1

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 66235599330b8e1bc0a0513cd0c5c3f26c62a5150d65691a439fc7dd9be62a2c
MD5 e89588e8b992c89ece09a223e3429a86
BLAKE2b-256 4896ba38ad08257d17d91cb2c0b8b5f73c763d31b3dd001698b7d11d89204d4a

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 6e4d1ad265263afee14ecaba96e292a9921d395d21a5ab2cf28c72f967511d1e
MD5 44e56775672114f070fe4dc0a554e778
BLAKE2b-256 3d08d4d175b11c262c219dc7b411a9fcad4202347d3fc28b6ae0e3de929f6a07

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e6fb9d2ebee42251e492c3a21c96fa8a612ced9f447779b40742bc77ce54c13c
MD5 40b1f27321a4916a4df3b9e373b1a7fc
BLAKE2b-256 d7a121b807703ba0ba1d71e7d0947f75c58e645b2a4e372740f3ede8a0221692

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 b240138a6d08406fb6147b8d4be218156c7caf9c4364d2c37adeba3d75ce5b19
MD5 ad9faf3d6f025444aa40a96e53fc2901
BLAKE2b-256 579fafa8d5c092e545ec92765968d634d152e86b645fdc71c459080173183e90

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for msglc-260423-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 537c5ba39eee70769683e3894a3eb2cba049d8ee1145ec0c61a81a19f2a2b35f
MD5 c60143ad936a078b6037369ad4188b34
BLAKE2b-256 35e44953ca3b38f83861c2b54b917b484e2131ad7f8e3602f97d8bbea2e397d8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 229fa4fed2c22f2847891cf6688c5648ff1a865db1601b03177b2978a17f0db9
MD5 80049f449a4e47a15470efa6ac59208e
BLAKE2b-256 1cb57b1ee9d362079586220720165877170fc5c1667c1adf897b064c8893f834

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 97bf44fd21e9e6e503d44b36e13791acf4b76e227fcb90bec0fb74b4ea5ec51e
MD5 669a5706e6aa9e098dc9beab2cb6a15e
BLAKE2b-256 b02bf84d2c7b401e893e6c19e9e7382b8c0bf97f1dd9c09598ec10a14e2b9f95

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8cfc3d0cdef28bac7e89464c2bcaf4b4b967fd63e7ac79deca3c682d910c7d19
MD5 2c0b567ec6ad2027b52257892fadfc09
BLAKE2b-256 9c3cfa75bb214db4234a888a9fa79f3965b5836a42b6c1aa9d71e7a7e4452536

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 3eb7c18f082f2565773d0fb76afe20c6003c4dfac2b6aef63faf2b998ad30b15
MD5 b575c3993ce5427c266016d83f81ddbf
BLAKE2b-256 0bc74673faa1df2f6b18a575ce69c32d31e7f25cefc02b02dfe12e6823076ace

See more details on using hashes here.

Provenance

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

File details

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

File metadata

  • Download URL: msglc-260423-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 193.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for msglc-260423-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 93bd8170e2bb3f4803013da8e7a00877c9c216e9c07bf43ebf454800b0252967
MD5 f8c666d707eefb58ccb3eac11d095134
BLAKE2b-256 132d350ebe4d77cbce87c43d452c0b5da6f7778ce18e55cf37c1e5d81bb575c7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d7e463588267d44e21161ced5ac790c2b7eb472388ee8f6e17ae43c165dd07c6
MD5 9d03ca640ddfb9d98d70d4533eab6c93
BLAKE2b-256 77b0dc57fc54b3b41759b5e0ac047fdef1380467345da2602cc97c61d34205a9

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260423-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 483bf317677b25a2eb715c23f127e66db7e00026647c163057d326ea2d5deb5a
MD5 c0ec3113b54facfa39d029f098be63d8
BLAKE2b-256 10d01f6cc7303694f7f4f4a2c9c67c2ff855b56364e0e16ee088647859ede667

See more details on using hashes here.

Provenance

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

Supported by

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