Skip to main content

cymem: A Cython Memory Helper

cymem provides two small memory-management helpers for Cython. They make it easy to tie memory to a Python object's life-cycle, so that the memory is freed when the object is garbage collected.

tests pypi Version conda Version Python wheels

Overview

The most useful is cymem.Pool, which acts as a thin wrapper around the calloc function:

from cymem.cymem cimport Pool
cdef Pool mem = Pool()
data1 = <int*>mem.alloc(10, sizeof(int))
data2 = <float*>mem.alloc(12, sizeof(float))

The Pool object saves the memory addresses internally, and frees them when the object is garbage collected. Typically you'll attach the Pool to some cdef'd class. This is particularly handy for deeply nested structs, which have complicated initialization functions. Just pass the Pool object into the initializer, and you don't have to worry about freeing your struct at all — all of the calls to Pool.alloc will be automatically freed when the Pool expires.

Installation

Installation is via pip, and requires Cython. Before installing, make sure that your pip, setuptools and wheel are up to date.

pip install -U pip setuptools wheel
pip install cymem

Example Use Case: An array of structs

Let's say we want a sequence of sparse matrices. We need fast access, and a Python list isn't performing well enough. So, we want a C-array or C++ vector, which means we need the sparse matrix to be a C-level struct — it can't be a Python class. We can write this easily enough in Cython:

"""Example without Cymem

To use an array of structs, we must carefully walk the data structure when
we deallocate it.
"""

from libc.stdlib cimport calloc, free

cdef struct SparseRow:
    size_t length
    size_t* indices
    double* values

cdef struct SparseMatrix:
    size_t length
    SparseRow* rows

cdef class MatrixArray:
    cdef size_t length
    cdef SparseMatrix** matrices

    def __cinit__(self, list py_matrices):
        self.length = 0
        self.matrices = NULL

    def __init__(self, list py_matrices):
        self.length = len(py_matrices)
        self.matrices = <SparseMatrix**>calloc(len(py_matrices), sizeof(SparseMatrix*))

        for i, py_matrix in enumerate(py_matrices):
            self.matrices[i] = sparse_matrix_init(py_matrix)

    def __dealloc__(self):
        for i in range(self.length):
            sparse_matrix_free(self.matrices[i])
        free(self.matrices)


cdef SparseMatrix* sparse_matrix_init(list py_matrix) except NULL:
    sm = <SparseMatrix*>calloc(1, sizeof(SparseMatrix))
    sm.length = len(py_matrix)
    sm.rows = <SparseRow*>calloc(sm.length, sizeof(SparseRow))
    cdef size_t i, j
    cdef dict py_row
    cdef size_t idx
    cdef double value
    for i, py_row in enumerate(py_matrix):
        sm.rows[i].length = len(py_row)
        sm.rows[i].indices = <size_t*>calloc(sm.rows[i].length, sizeof(size_t))
        sm.rows[i].values = <double*>calloc(sm.rows[i].length, sizeof(double))
        for j, (idx, value) in enumerate(py_row.items()):
            sm.rows[i].indices[j] = idx
            sm.rows[i].values[j] = value
    return sm


cdef void* sparse_matrix_free(SparseMatrix* sm) except *:
    cdef size_t i
    for i in range(sm.length):
        free(sm.rows[i].indices)
        free(sm.rows[i].values)
    free(sm.rows)
    free(sm)

We wrap the data structure in a Python ref-counted class at as low a level as we can, given our performance constraints. This allows us to allocate and free the memory in the __cinit__ and __dealloc__ Cython special methods.

However, it's very easy to make mistakes when writing the __dealloc__ and sparse_matrix_free functions, leading to memory leaks. cymem prevents you from writing these deallocators at all. Instead, you write as follows:

"""Example with Cymem.

Memory allocation is hidden behind the Pool class, which remembers the
addresses it gives out.  When the Pool object is garbage collected, all of
its addresses are freed.

We don't need to write MatrixArray.__dealloc__ or sparse_matrix_free,
eliminating a common class of bugs.
"""
from cymem.cymem cimport Pool

cdef struct SparseRow:
    size_t length
    size_t* indices
    double* values

cdef struct SparseMatrix:
    size_t length
    SparseRow* rows


cdef class MatrixArray:
    cdef size_t length
    cdef SparseMatrix** matrices
    cdef Pool mem

    def __cinit__(self, list py_matrices):
        self.mem = None
        self.length = 0
        self.matrices = NULL

    def __init__(self, list py_matrices):
        self.mem = Pool()
        self.length = len(py_matrices)
        self.matrices = <SparseMatrix**>self.mem.alloc(self.length, sizeof(SparseMatrix*))
        for i, py_matrix in enumerate(py_matrices):
            self.matrices[i] = sparse_matrix_init(self.mem, py_matrix)

cdef SparseMatrix* sparse_matrix_init_cymem(Pool mem, list py_matrix) except NULL:
    sm = <SparseMatrix*>mem.alloc(1, sizeof(SparseMatrix))
    sm.length = len(py_matrix)
    sm.rows = <SparseRow*>mem.alloc(sm.length, sizeof(SparseRow))
    cdef size_t i, j
    cdef dict py_row
    cdef size_t idx
    cdef double value
    for i, py_row in enumerate(py_matrix):
        sm.rows[i].length = len(py_row)
        sm.rows[i].indices = <size_t*>mem.alloc(sm.rows[i].length, sizeof(size_t))
        sm.rows[i].values = <double*>mem.alloc(sm.rows[i].length, sizeof(double))
        for j, (idx, value) in enumerate(py_row.items()):
            sm.rows[i].indices[j] = idx
            sm.rows[i].values[j] = value
    return sm

All that the Pool class does is remember the addresses it gives out. When the MatrixArray object is garbage-collected, the Pool object will also be garbage collected, which triggers a call to Pool.__dealloc__. The Pool then frees all of its addresses. This saves you from walking back over your nested data structures to free them, eliminating a common class of errors.

Custom Allocators

Sometimes external C libraries use private functions to allocate and free objects, but we'd still like the laziness of the Pool.

from cymem.cymem cimport Pool, WrapMalloc, WrapFree
cdef Pool mem = Pool(WrapMalloc(priv_malloc), WrapFree(priv_free))

Metadata

Release files for cymem 2.0.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cymem 2.0.10
File Size Uploaded
cymem-2.0.10.tar.gz 10.2 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cymem 2.0.10
File
cymem-2.0.10-cp313-cp313-win_amd64.whl CPython 3.13 CPython 3.13 Windows x86-64 Details
cymem-2.0.10-cp313-cp313-musllinux_1_2_x86_64.whl CPython 3.13 CPython 3.13 Linux musl 1.2+ x86-64 Details
cymem-2.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.13 CPython 3.13 Linux glibc 2.17+ x86-64 Details
cymem-2.0.10-cp313-cp313-macosx_11_0_arm64.whl CPython 3.13 CPython 3.13 macOS 11.0+ ARM64 Details
cymem-2.0.10-cp313-cp313-macosx_10_13_x86_64.whl CPython 3.13 CPython 3.13 macOS 10.13+ x86-64 Details
cymem-2.0.10-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cymem-2.0.10-cp312-cp312-musllinux_1_2_x86_64.whl CPython 3.12 CPython 3.12 Linux musl 1.2+ x86-64 Details
cymem-2.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ x86-64 Details
cymem-2.0.10-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
cymem-2.0.10-cp312-cp312-macosx_10_13_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.13+ x86-64 Details
cymem-2.0.10-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cymem-2.0.10-cp311-cp311-musllinux_1_2_x86_64.whl CPython 3.11 CPython 3.11 Linux musl 1.2+ x86-64 Details
cymem-2.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ x86-64 Details
cymem-2.0.10-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
cymem-2.0.10-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
cymem-2.0.10-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cymem-2.0.10-cp310-cp310-musllinux_1_2_x86_64.whl CPython 3.10 CPython 3.10 Linux musl 1.2+ x86-64 Details
cymem-2.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ x86-64 Details
cymem-2.0.10-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
cymem-2.0.10-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
cymem-2.0.10-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
cymem-2.0.10-cp39-cp39-musllinux_1_2_x86_64.whl CPython 3.9 CPython 3.9 Linux musl 1.2+ x86-64 Details
cymem-2.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ x86-64 Details
cymem-2.0.10-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
cymem-2.0.10-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details

Total release size: 2.7 MB

Release files / cymem-2.0.10.tar.gz

Download URL cymem-2.0.10.tar.gz
Size 10.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f51700acfa1209b4a221dc892cca8030f4bc10d4c153dec098042f484c7f07a4
BLAKE2b-256 checksum
How to use checksums
b662eac45989f3d3296133f292f3097cb4c1f9d3ad3e5a85e79bbd2c7f96278f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp313-cp313-win_amd64.whl

Download URL cymem-2.0.10-cp313-cp313-win_amd64.whl
Size 39.0 kB
Tags CPython 3.13 Windows x86-64
SHA-256 checksum
How to use checksums
82f19a39052747309ced6b948b34aff62aa00c795c9d9d3d31a071e8c791efee
BLAKE2b-256 checksum
How to use checksums
38f8a8c04468929043acf8048cce72e438412c7c949f6983b6dc14209e4371ec
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp313-cp313-musllinux_1_2_x86_64.whl

Download URL cymem-2.0.10-cp313-cp313-musllinux_1_2_x86_64.whl
Size 219.1 kB
Tags CPython 3.13 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
33d7f5014ad36af22995847fccd82ca0bd4b0394fb1d9dd9fef1e8cefdab2444
BLAKE2b-256 checksum
How to use checksums
b7ee47f412bdf64ab5ad9d14ce6ed9378a989dac3651f61ae190a5ff9fb866f6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.10-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 222.9 kB
Tags CPython 3.13 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ea72cf0e369f3cf1f10038d572143d88ce7c959222cf7d742acbeb45e00ac5c0
BLAKE2b-256 checksum
How to use checksums
76335d62b0e0461aed0a93d3a14a17e0e869d8eab9b2c0e9407f69ff763818ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp313-cp313-macosx_11_0_arm64.whl

Download URL cymem-2.0.10-cp313-cp313-macosx_11_0_arm64.whl
Size 41.9 kB
Tags CPython 3.13 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
6580d657d0f208d675d62cc052fb908529d52d24282342e24a9843de85352b88
BLAKE2b-256 checksum
How to use checksums
e4275f76934645f53704fb116802480b21af5c3cbb71ba4661f5af1a1e5ba210
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp313-cp313-macosx_10_13_x86_64.whl

Download URL cymem-2.0.10-cp313-cp313-macosx_10_13_x86_64.whl
Size 42.3 kB
Tags CPython 3.13 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
5698a515900dc697874444fa05d8d852bbad43543de2e7834ec3895156cc2aad
BLAKE2b-256 checksum
How to use checksums
fa88e5c8f44e80a64fdca827f2dd2e323afdef339ae83f1a32763940f40232de
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp312-cp312-win_amd64.whl

Download URL cymem-2.0.10-cp312-cp312-win_amd64.whl
Size 39.2 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
6ae7f22af4bc4311f06c925df61c62219c11939dffc9c91d67caf89a7e1557a5
BLAKE2b-256 checksum
How to use checksums
16401b6bdfaab3f80eeb302cd6212c2dcaa735d055db509487cf8da51764b74d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp312-cp312-musllinux_1_2_x86_64.whl

Download URL cymem-2.0.10-cp312-cp312-musllinux_1_2_x86_64.whl
Size 216.4 kB
Tags CPython 3.12 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
f4bc6c823b400d32cddcfeefb3f352d52a0cc911cb0b5c1ef64e3f9741fd56b9
BLAKE2b-256 checksum
How to use checksums
8e116bc72829cef14d1598a4c9f9381ac3d8b4e09d98f8496c9042cd994b7f13
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.10-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 227.9 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
dc4932060a5d55648fa4a3960f1cad9905572ed5c6f02af42f849e869d2803d4
BLAKE2b-256 checksum
How to use checksums
35aff93d0fdd5f6174038c6745b708bb97e71f4568e7a9b25501ea481e269e3c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp312-cp312-macosx_11_0_arm64.whl

Download URL cymem-2.0.10-cp312-cp312-macosx_11_0_arm64.whl
Size 42.2 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
5e57928d9e93c61265281ea01a1d24499d397625b2766a0c5735b99bceb3ba75
BLAKE2b-256 checksum
How to use checksums
55de068d791d77c5f46844ee00c56414a6c7d9a3e80a82228ecb17c6530886bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp312-cp312-macosx_10_13_x86_64.whl

Download URL cymem-2.0.10-cp312-cp312-macosx_10_13_x86_64.whl
Size 42.6 kB
Tags CPython 3.12 macOS 10.13+ x86-64
SHA-256 checksum
How to use checksums
c6ed8b1ed448cd65e12405a02aa71b22a4094d8a623205625057c4c73ba4b133
BLAKE2b-256 checksum
How to use checksums
1727a4383a1f534676f1fccb90e35154b3cd1d333954c756b1b01839b5554169
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp311-cp311-win_amd64.whl

Download URL cymem-2.0.10-cp311-cp311-win_amd64.whl
Size 39.3 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
51218af9645541005a1313d6640bf6e86e7fb4b38a87268a5ea428d50ac3cec2
BLAKE2b-256 checksum
How to use checksums
b384dd8e3bc7a773abb7d33dc654594323a31e2f79bde3f245feb09dc3f4996d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp311-cp311-musllinux_1_2_x86_64.whl

Download URL cymem-2.0.10-cp311-cp311-musllinux_1_2_x86_64.whl
Size 207.1 kB
Tags CPython 3.11 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
34406e2bff8707719f3f4b262e50b04876369233d5277a7c2d0c2e73a8579b46
BLAKE2b-256 checksum
How to use checksums
a770a12fea4fc0518a076df319aea5c30d13750739447c6d2c7b46d233e6f867
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.10-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 218.8 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
ce6cb07416c82633503974f331abde9e1514c90aae8b3240884e749c2a60adbc
BLAKE2b-256 checksum
How to use checksums
2f8590d3222ead3a3c12005128100877ee6cb6c280d6cd100f53eaa9dc02d260
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp311-cp311-macosx_11_0_arm64.whl

Download URL cymem-2.0.10-cp311-cp311-macosx_11_0_arm64.whl
Size 41.7 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d30ce83ff9009e5c5c8186845d9d583f867dace88113089bfc0ee1c348e45d5a
BLAKE2b-256 checksum
How to use checksums
16d404fe526361d32f823da4a9a7af0ae4be745439c71bf70d15a87da2c48f89
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp311-cp311-macosx_10_9_x86_64.whl

Download URL cymem-2.0.10-cp311-cp311-macosx_10_9_x86_64.whl
Size 42.0 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
18dc5a7b6a325d5fc0b2b40beb02673f36f64655ee086649c91e44ce092c7b36
BLAKE2b-256 checksum
How to use checksums
05036dd38133209a100f9e5468dfd60aabf081eb8f4f9bb1fe171601e593dfb6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp310-cp310-win_amd64.whl

Download URL cymem-2.0.10-cp310-cp310-win_amd64.whl
Size 39.0 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a03abe0e2f8925707c3dee88060bea1a94b9a24afc7d07ee17f319022126bcb4
BLAKE2b-256 checksum
How to use checksums
496b2fe6abc7f4577f681625b9b374c88ad7f68b7d9c249049409c4d8ca67c37
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp310-cp310-musllinux_1_2_x86_64.whl

Download URL cymem-2.0.10-cp310-cp310-musllinux_1_2_x86_64.whl
Size 195.0 kB
Tags CPython 3.10 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
4d45b99c727dfc303db3bb9f136b86731a4d231fbf9c27ce5745ea4a527da0b5
BLAKE2b-256 checksum
How to use checksums
975b3de3d725c88a9aad0dca72a42da576d76f19e83b660cec912cb60585c46c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.10-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 204.7 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
61ce538c594f348b90037b03910da31ce7aacca090ea64063593688c55f6adad
BLAKE2b-256 checksum
How to use checksums
16d8889f7b98211919f4bf53b901712440c2110ebfc69fcf234af063eed5c9a7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp310-cp310-macosx_11_0_arm64.whl

Download URL cymem-2.0.10-cp310-cp310-macosx_11_0_arm64.whl
Size 41.6 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9688f691518859e76c24c37686314dc5163f2fae1b9df264714220fc087b09a5
BLAKE2b-256 checksum
How to use checksums
72270a7e6f2b4f4183ce707aeae65880194600d0d42964753c256074b9d0fca9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp310-cp310-macosx_10_9_x86_64.whl

Download URL cymem-2.0.10-cp310-cp310-macosx_10_9_x86_64.whl
Size 41.8 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
010f78804cf5e2fbd08abad210d2b78a828bea1a9f978737e28e1614f5a258b4
BLAKE2b-256 checksum
How to use checksums
9854304b4f262524aa3bbf4e41b21fb7aa90fc507979995a12ad3b81c30d5650
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp39-cp39-win_amd64.whl

Download URL cymem-2.0.10-cp39-cp39-win_amd64.whl
Size 39.5 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
9805f7dbf078a0e2eb417b7e1166cedc590887b55e38a3f3ba5349649c93e6be
BLAKE2b-256 checksum
How to use checksums
f956b1e79ace8590d7309d35134214c838cff320bc852194a35ec4da44c5ed07
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp39-cp39-musllinux_1_2_x86_64.whl

Download URL cymem-2.0.10-cp39-cp39-musllinux_1_2_x86_64.whl
Size 199.7 kB
Tags CPython 3.9 Linux musl 1.2+ x86-64
SHA-256 checksum
How to use checksums
ffb6181d589e65c46c2d515d8326746a2e0bda31b67c8b1edfbf0663249f84fb
BLAKE2b-256 checksum
How to use checksums
efa964b7d68d6cdcaf0f9c56b665977156ae344ae38d37c01e978916560ebca2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.10-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 208.2 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
5369f1974854102ee1751577f13acbbb6a13ba73f9fbb44580f8f3275dae0205
BLAKE2b-256 checksum
How to use checksums
c135dd4e55ba3ebeca0fc71662ad53a150472b9d654e49cda22f3a776687bb0d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp39-cp39-macosx_11_0_arm64.whl

Download URL cymem-2.0.10-cp39-cp39-macosx_11_0_arm64.whl
Size 42.2 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0f2bc8c69a23e3243e3a0c0feca08c9d4454d3cb7934bb11f5e1b3333151d69d
BLAKE2b-256 checksum
How to use checksums
48b84df61a854855a2bbb311236140142ffd823d35dd1b97c988bc8898969be9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log

Release files / cymem-2.0.10-cp39-cp39-macosx_10_9_x86_64.whl

Download URL cymem-2.0.10-cp39-cp39-macosx_10_9_x86_64.whl
Size 42.4 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
e644c3c48663d2c0580292e1d636e7eb8885bfe9df75f929d8ad0403621b75fe
BLAKE2b-256 checksum
How to use checksums
f92b7d21a744ffd1bb23a1be32d7a5c2654acde45879f50ea5cdf4b98acd344b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Nov 22, 2024.

Transparency log
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