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 Distributions

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

Built Distributions

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

msglc-260820-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-260820-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (332.2 kB view details)

Uploaded PyPymanylinux: glibc 2.17+ ARM64

msglc-260820-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-260820-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-260820-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-260820-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (325.5 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.14Windows ARM64

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

Uploaded CPython 3.14Windows x86-64

msglc-260820-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (331.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ x86-64

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

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.14macOS 11.0+ ARM64

msglc-260820-cp314-cp314-macosx_10_12_x86_64.whl (306.2 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

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

Uploaded CPython 3.13Windows ARM64

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

Uploaded CPython 3.13Windows x86-64

msglc-260820-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-260820-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (325.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.13macOS 11.0+ ARM64

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

Uploaded CPython 3.13macOS 10.12+ x86-64

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

Uploaded CPython 3.12Windows ARM64

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

Uploaded CPython 3.12Windows x86-64

msglc-260820-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-260820-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (325.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows x86-64

msglc-260820-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-260820-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (330.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

msglc-260820-cp310-cp310-win_amd64.whl (200.0 kB view details)

Uploaded CPython 3.10Windows x86-64

msglc-260820-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (334.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64

msglc-260820-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl (331.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64

File details

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

File metadata

File hashes

Hashes for msglc-260820-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4c84d2966ea33cabf8175afa2a553e0ddcd0e8914058788c3d0f72e553862444
MD5 92a3bea610968dea8f4089fbf758f1d8
BLAKE2b-256 e5f27616ce515522d6015e3db0a8ea570ff64c43fc62635fbc9fe76858f195ac

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 fa943cb70a13c1d5dae35f36f9cf8660adb14f089beba1c0459a388c1b8b5fcc
MD5 8c798fb029b199ca188a2583de66b1fc
BLAKE2b-256 0bdc55851a84a501320b6de6a9dc52a8be409e9cf6b1ee0006d820d948e5ca1d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp315-cp315t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bfdb1d31c40b1f8339ee71eacc1781103b7302d9c65c0007beb753ffd4f693ff
MD5 35ea413bc5ba70c037134cd50056dc28
BLAKE2b-256 9f7f2c781b5b3a8f1868d8233dfb755419e8fdcf9918439f549fd0232506d217

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp315-cp315-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1966520f021dcbdd215fdf76d2216aa1e3cdcfc8ff78264ce6d95efb4b9aab32
MD5 615f1ef35763158ec4434ef690a1b975
BLAKE2b-256 7d4195223ea2bf24352f7d2697891453ca137439942b2a38a0243ff69004a9cb

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp314-cp314t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 fcd03b7b0a2fc555b3e22404859dbbd0b212d76430c67e5d792b34e78af85eec
MD5 e711e7afa1339989d8ecaba6ce032ca2
BLAKE2b-256 2cf4c15cccf0a37e8b7ba10684d13bf701f2b26b7f2f4beca583f6d69c5521d5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp314-cp314t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d122033f5fdddace3c53cbacdc41442b777aa03db6626b1a49ec100fd8c008ee
MD5 a7b9c85adf991c323831075a83f47dac
BLAKE2b-256 e79465e85c109cc3dc5a25c715d2763b152416287f1365782a812935769bdf55

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260820-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-260820-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 5a65d924c74e798709a9748818b3a754681eb28c1d16343f0dac48369104394e
MD5 349bc38d72b5314f8faaac348ff3682f
BLAKE2b-256 186e52e327f05d550ec16d33d2c378547f2347c271aba170c52e84d1f2d5f976

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260820-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-260820-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 b48cdd0bb26eb7738d25c662120574c36b208b77a3524b6f22ba8aafeae8133b
MD5 dd7bfc6675a5482ccdd7e4949855d5f1
BLAKE2b-256 909f421e3784e727ccf3b427e3466fd06fe834e9a7a56000a4a87c4b877ee770

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp314-cp314-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 0e0bbb99fbd128196b3abff3b11adfd1a32c9174333cca2a29b500965124e3bc
MD5 7281c9edc7d00e5a87eb69908cadc8f9
BLAKE2b-256 0e64b9a7a45842ae7b34586be1657a261b2d6d03578cf6851bfaf5c855f26b6d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp314-cp314-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 248a348122a11d86e1432af294240e91ce6164936c361961bda45f135840e799
MD5 ac9649eb36718402e9d776385feb78ed
BLAKE2b-256 a2416f09f64725d564ed798388c6dcb12135562f54f0a60fa592779a58df9ab8

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88238b719b809d7f43ed75725fdfb6df8cc66b043dfc5ae6cb74257bcbc712c2
MD5 3f408594efe64b509ec49d1012c5ef4e
BLAKE2b-256 04ce1719bd8e94c35c98c2cd13abc79813d05be4a8413ed954f1491258a7ac2b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dbe9e1cae5af0e79b0b102503b6191ca092b1cb92f53cf1e832280ff93d5b592
MD5 fed6233070f6e06302ed3fc57cc0f8c9
BLAKE2b-256 3c7df21a0872a719ac1ebff9c96915d83920b53634c2ec6ab71089e9d22362d4

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260820-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-260820-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 4f7f0cc208623a927fe9803bc772c0a85bb2f94e2969317a205b29ad9f740900
MD5 b6a4c9fcadbbd72d9e308e8cf6647873
BLAKE2b-256 3f59913ebe4b42859ca388621e158c6dbafaf9fec932314356d852c375c03307

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260820-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-260820-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 c5a4018cfc85c188be4093768dfe1cdca729ae4dbbc7f32b60e05e5405a01e54
MD5 bc7f490daf7e808972fa6b9b057346f2
BLAKE2b-256 d328b42b40b7b5f07d708fb726b6d234c23bb8bd56e10f3ccbd96eaf9e5d77b7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2c1082a2d9ccbdc89bf0a1d60e7e262eb07738ce8857e13653568dbbbaa8d46a
MD5 d96b92a6a2382c9d41f17736a8e2326b
BLAKE2b-256 7aaf4da8f41216c7c100016ac34f93ac5b7b2a119a6c39105314c7dd5ab6072b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 d70b8c53ead73e750fc93ac274527205b7999616c14411d796094cf36fbc7983
MD5 5052084f3f13225e36ed1ef9a019184c
BLAKE2b-256 073d347ed55727476a71424bf1549185aa8a288a3a8b1a7d8a85dac2fefebba5

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bb6822d2acd2d41b7af6ec0eef7c11b83be0ee9ec970199347180c25ee08e409
MD5 a07448f0aad9a53af7701604bdbc9154
BLAKE2b-256 a5bf4d81d99350b32851092ca072dcb8c925b443fd6055c9fbbbc6684588029c

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ef89ecee96b69ef468950ed44f6ec28c880cb7a49d66b5dbb505045011c16c1a
MD5 af68c29d513acdd35fcb86e73bae07d8
BLAKE2b-256 c3bcfb4afb7439a297ec7fa71c3b93606eeea0942ccd24593b4150db90ff0ea9

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260820-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-260820-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 eb8d1d0b77e6c835b2db2c049f3525261b90afd37ed1b242bc8eb2d55fc1a1bc
MD5 ea2444bb10ebd3db953c560afdf233c5
BLAKE2b-256 4d01ac2274d7041e086dbf9802a7fd6459494e8f197b3d18a0efa2fc43aee513

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260820-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-260820-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 678be2feea54d7efa09fc5b30bc025a7f1a53b488eb0caeb93154bc0da40cbc1
MD5 14cf8fdf1114291b3353b1d666f7b8c1
BLAKE2b-256 bf7ffa0d65a9c464bbde3f2c82f9d6c21d1548f80b790a08b3cbfb05d77ec536

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 71625cdf6eccdadbc8266fbfa5f116fdb75af999650494927a6315bb8ec142c4
MD5 27651da89a8819976964bf2f8aa310f8
BLAKE2b-256 316b58491495e135fbfdc62500ac091df5f8fee966d6dfe6aba0cbd9fc54178d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 1343fc1c5b2ee5cf5afd183da3cf5e51618df2c62b85469ae8001c7ccabd992b
MD5 d2e0a760d84fa850d04e9284a51945da
BLAKE2b-256 4d65d4e0a377a23dffc48253f6e17a07959daa05c8cc18b35636653dbfb08ed7

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cbc5b2883f4219b5ac99cf28a8b75354affe91accce0dd270bacdc38438a0dab
MD5 4ad5306aa5b06dc61fbff08a6a09ef3b
BLAKE2b-256 6f21ebef8e068730fc505bc174e210fc9c9dba7c10036aae88cce35036c8fc78

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 1a3b160460f1118c29e451f4f05652733a12edab0f74bff5148dcb103d1b345c
MD5 c0332c6ead0dd7493629b54b0a250f5e
BLAKE2b-256 f99d3b18bbc7ffc183efb77e4f572fcf7cbcded990b9393bab29ffb722932818

See more details on using hashes here.

Provenance

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

File metadata

  • Download URL: msglc-260820-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-260820-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 81e1467bdcc13bf639ffb8aa343a7450484765f3070656703684df7e1279cede
MD5 4d4be27c9f486bfada326512613f3291
BLAKE2b-256 275ab4135fef9f33f0e14d683ee7bc8116d7024847ffd566461a2a16dde4bb0b

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6be8c3fb81c7d29591f2663486e34810aa5dde1daa13a50c511baab624d179c4
MD5 ea188d20e370b254f2cff4384ad1c70e
BLAKE2b-256 51be8b0a6a31b96c9637edcf6b67f8894baf044557794444877cf3f347cca6db

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 e70e8b224aeeb08bb425f06d83ca1af186999fe3fd3890c30d4628d25647254d
MD5 52d7049442d181fa108bcfb7f9e779e9
BLAKE2b-256 a7384e87470428de7bbf610080cbd64bcedc0d3d284eacb2b91285b6cef1ec5d

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 88dfc7570742eb2a3797e617bfdbd4e71e1e16f7242c3224f54311e9503be1ca
MD5 8a0c1d30d612178332afe359781da66f
BLAKE2b-256 af52e67e414361970a28409a2dc6006f3e31d9889d1e2b6f2383b952d82bf936

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 742cf69ae8a7ea50aa139370594d1ec22525d72e95ad4decea2d2070cc585884
MD5 80f09bbdcb879f23d6cdbe69e49db5cd
BLAKE2b-256 97c23135d9933b7eec720d101876afa9cc90374af63480352a6ea321d28bc141

See more details on using hashes here.

Provenance

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

File metadata

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

File hashes

Hashes for msglc-260820-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 07b8717c6b8d71669d80dfe326c52c8a622589c742d237f0947f0ee9a64406c7
MD5 6ad5b1988ccf03d0249942c166bb5b52
BLAKE2b-256 7d3ab08eb5ef081656afdb8d2b8ba4f13282c917ee64452481c6e4bd8eb4f232

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 31fc7366270bd3aa05b35ad23555495e743ef8ffd03bc7f73db4f15af562d1d7
MD5 1ec4d80d315a7e201f940be10b29e6f6
BLAKE2b-256 281cca69c437576562dacb0112c207ed40dfb514784a43b0846c5eb14ea82a50

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for msglc-260820-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm Hash digest
SHA256 98aa76229b355133fa3876ddf2342e783f79726db16a693e4a7f778131940e5a
MD5 6fb7db0acffa61c266bb181adb5850ae
BLAKE2b-256 2cf9e80c5cbaaaa1283f451403abed92dd2e3bc121296b0bf79c8bc73bbd7f29

See more details on using hashes here.

Provenance

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

Release history Release notifications | RSS feed

260825

33 files

260824

33 files

260821

33 files

This release

260820 This release

32 files

260819

30 files

260818

30 files

260423

31 files

260412

1 file

260319

1 file

260317

1 file

260315

1 file

260201

1 file

260115

1 file

260103

1 file

251227

1 file

251222

1 file

251009

1 file

250419

1 file

250314

1 file

240630

1 file

240330

1 file

240317

1 file

240316

1 file

240312

1 file

240308

1 file

240307

1 file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page