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))

Release files for cymem 2.0.8

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.8
File Size Uploaded
cymem-2.0.8.tar.gz 9.8 kB Details

Built distributions (wheels)

Table of built distributions (wheels) for cymem 2.0.8
File
cymem-2.0.8-cp312-cp312-win_amd64.whl CPython 3.12 CPython 3.12 Windows x86-64 Details
cymem-2.0.8-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.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.12 CPython 3.12 Linux glibc 2.17+ ARM64 Details
cymem-2.0.8-cp312-cp312-macosx_11_0_arm64.whl CPython 3.12 CPython 3.12 macOS 11.0+ ARM64 Details
cymem-2.0.8-cp312-cp312-macosx_10_9_x86_64.whl CPython 3.12 CPython 3.12 macOS 10.9+ x86-64 Details
cymem-2.0.8-cp311-cp311-win_amd64.whl CPython 3.11 CPython 3.11 Windows x86-64 Details
cymem-2.0.8-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.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.11 CPython 3.11 Linux glibc 2.17+ ARM64 Details
cymem-2.0.8-cp311-cp311-macosx_11_0_arm64.whl CPython 3.11 CPython 3.11 macOS 11.0+ ARM64 Details
cymem-2.0.8-cp311-cp311-macosx_10_9_x86_64.whl CPython 3.11 CPython 3.11 macOS 10.9+ x86-64 Details
cymem-2.0.8-cp310-cp310-win_amd64.whl CPython 3.10 CPython 3.10 Windows x86-64 Details
cymem-2.0.8-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.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.10 CPython 3.10 Linux glibc 2.17+ ARM64 Details
cymem-2.0.8-cp310-cp310-macosx_11_0_arm64.whl CPython 3.10 CPython 3.10 macOS 11.0+ ARM64 Details
cymem-2.0.8-cp310-cp310-macosx_10_9_x86_64.whl CPython 3.10 CPython 3.10 macOS 10.9+ x86-64 Details
cymem-2.0.8-cp39-cp39-win_amd64.whl CPython 3.9 CPython 3.9 Windows x86-64 Details
cymem-2.0.8-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.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.9 CPython 3.9 Linux glibc 2.17+ ARM64 Details
cymem-2.0.8-cp39-cp39-macosx_11_0_arm64.whl CPython 3.9 CPython 3.9 macOS 11.0+ ARM64 Details
cymem-2.0.8-cp39-cp39-macosx_10_9_x86_64.whl CPython 3.9 CPython 3.9 macOS 10.9+ x86-64 Details
cymem-2.0.8-cp38-cp38-win_amd64.whl CPython 3.8 CPython 3.8 Windows x86-64 Details
cymem-2.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ x86-64 Details
cymem-2.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 CPython 3.8 Linux glibc 2.17+ ARM64 Details
cymem-2.0.8-cp38-cp38-macosx_11_0_arm64.whl CPython 3.8 CPython 3.8 macOS 11.0+ ARM64 Details
cymem-2.0.8-cp38-cp38-macosx_10_9_x86_64.whl CPython 3.8 CPython 3.8 macOS 10.9+ x86-64 Details
cymem-2.0.8-cp37-cp37m-win_amd64.whl CPython 3.7 CPython 3.7 pymalloc Windows x86-64 Details
cymem-2.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64 Details
cymem-2.0.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ ARM64 Details
cymem-2.0.8-cp37-cp37m-macosx_10_9_x86_64.whl CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64 Details
cymem-2.0.8-cp36-cp36m-win_amd64.whl CPython 3.6 CPython 3.6 pymalloc Windows x86-64 Details
cymem-2.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64 Details
cymem-2.0.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ ARM64 Details

Total release size: 1.4 MB

Release files / cymem-2.0.8.tar.gz

Download URL cymem-2.0.8.tar.gz
Size 9.8 kB
Tags Source
SHA-256 checksum
How to use checksums
8fb09d222e21dcf1c7e907dc85cf74501d4cea6c4ed4ac6c9e016f98fb59cbbf
BLAKE2b-256 checksum
How to use checksums
3632f4a457fc6c160a9e72b15dab1ca14ca5c8869074638bca8bfc26120c04e9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp312-cp312-win_amd64.whl
Size 39.1 kB
Tags CPython 3.12 Windows x86-64
SHA-256 checksum
How to use checksums
ecd12e3bacf3eed5486e4cd8ede3c12da66ee0e0a9d0ae046962bc2bb503acef
BLAKE2b-256 checksum
How to use checksums
35e034b11adc80502f0760ce2892dfdfcd8a7f450acd3147156c98620cb4071d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 46.7 kB
Tags CPython 3.12 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
7bf49e3ea2c441f7b7848d5c61b50803e8cbd49541a70bb41ad22fce76d87603
BLAKE2b-256 checksum
How to use checksums
3b591cc0df0f8a5fb90412cfc7eb084ceeb079f4349232c422e10e502eb255c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cymem-2.0.8-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 44.2 kB
Tags CPython 3.12 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
a2cc38930ff5409f8d61f69a01e39ecb185c175785a1c9bec13bcd3ac8a614ba
BLAKE2b-256 checksum
How to use checksums
8a7770f8b77c4db30e5765092033e283aadd51ad78364f10cd2d331a1f158fcb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp312-cp312-macosx_11_0_arm64.whl
Size 41.4 kB
Tags CPython 3.12 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
9235957f8c6bc2574a6a506a1687164ad629d0b4451ded89d49ebfc61b52660c
BLAKE2b-256 checksum
How to use checksums
14f4fb926be8f0d826f35eb86e021a1cbdc67966fa0f2ce94cd24ad898260b9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp312-cp312-macosx_10_9_x86_64.whl

Download URL cymem-2.0.8-cp312-cp312-macosx_10_9_x86_64.whl
Size 42.3 kB
Tags CPython 3.12 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
cb51fddf1b920abb1f2742d1d385469bc7b4b8083e1cfa60255e19bc0900ccb5
BLAKE2b-256 checksum
How to use checksums
a3f8030ee2fc2665f7d2e62079299e593a79a661b8a32f69653fee6cc0cd2f30
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp311-cp311-win_amd64.whl
Size 39.1 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
ab3cf20e0eabee9b6025ceb0245dadd534a96710d43fb7a91a35e0b9e672ee44
BLAKE2b-256 checksum
How to use checksums
c1c3dd044e6f62a3d317c461f6f0c153c6573ed13025752d779e514000c15dd2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 46.3 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
42c993589d1811ec665d37437d5677b8757f53afadd927bf8516ac8ce2d3a50c
BLAKE2b-256 checksum
How to use checksums
e5bc761acaf88b1fa69a6b75b55c24fbd8b47dab1a3c414d9512e907a646a048
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cymem-2.0.8-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 44.2 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4ac218cf8a43a761dc6b2f14ae8d183aca2bbb85b60fe316fd6613693b2a7914
BLAKE2b-256 checksum
How to use checksums
bb3b3d6b284c82be7571c0a67b11edce486f404971b4ec849fac4a679f85f93a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp311-cp311-macosx_11_0_arm64.whl
Size 41.2 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
0d5f83dc3cb5a39f0e32653cceb7c8ce0183d82f1162ca418356f4a8ed9e203e
BLAKE2b-256 checksum
How to use checksums
d7f667babf1439cdd6d46e4e805616bee84981305c80e562320c293712f54034
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp311-cp311-macosx_10_9_x86_64.whl
Size 41.9 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
6b84b780d52cb2db53d4494fe0083c4c5ee1f7b5380ceaea5b824569009ee5bd
BLAKE2b-256 checksum
How to use checksums
201f2ae07056430a0276e0cbd765652db82ea153c5fb2a3d753fbffd553827d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp310-cp310-win_amd64.whl
Size 39.0 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
a63a2bef4c7e0aec7c9908bca0a503bf91ac7ec18d41dd50dc7dff5d994e4387
BLAKE2b-256 checksum
How to use checksums
51124aa9eec680c6d12b2275d479e159c3d063d7c757175063dd45386e15b39d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 46.1 kB
Tags CPython 3.10 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e8260445652ae5ab19fff6851f32969a7b774f309162e83367dd0f69aac5dbf7
BLAKE2b-256 checksum
How to use checksums
e9133bed1a1d1cce7937eb797d760c0cca973dbdc1891ad7e2f066ae418fd697
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cymem-2.0.8-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 44.0 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
29a551eda23eebd6d076b855f77a5ed14a1d1cae5946f7b3cb5de502e21b39b0
BLAKE2b-256 checksum
How to use checksums
42f0a5cfe24f98b9fa1c6552e7d6f3e67db3a2bd9d68cc3946651cd53513f588
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp310-cp310-macosx_11_0_arm64.whl
Size 41.0 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
bd33da892fb560ba85ea14b1528c381ff474048e861accc3366c8b491035a378
BLAKE2b-256 checksum
How to use checksums
83bb21dcb7cb06c97fd99019369071f0b9ad544c3db68343abbceb283e8a5223
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp310-cp310-macosx_10_9_x86_64.whl
Size 41.6 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
77b5d3a73c41a394efd5913ab7e48512054cd2dabb9582d489535456641c7666
BLAKE2b-256 checksum
How to use checksums
06e80ab9faadd0911307c4158cc52abcaae6141283abb17275326b4d3b99089f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp39-cp39-win_amd64.whl
Size 39.5 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
ceeab3ce2a92c7f3b2d90854efb32cb203e78cb24c836a5a9a2cac221930303b
BLAKE2b-256 checksum
How to use checksums
09881781e6374d9aa014224c3732f8c4ab473c63ed0945c9050d980486d96401
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 46.9 kB
Tags CPython 3.9 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e4e57bee56d35b90fc2cba93e75b2ce76feaca05251936e28a96cf812a1f5dda
BLAKE2b-256 checksum
How to use checksums
2b9e18c6e7ac58ac84a02d3db0f43771515cdc4621b2e8e7062939dd6adef0df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cymem-2.0.8-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 44.8 kB
Tags CPython 3.9 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
7372e2820fa66fd47d3b135f3eb574ab015f90780c3a21cfd4809b54f23a4723
BLAKE2b-256 checksum
How to use checksums
be04d37d326234dcf51596613973c6fe7da6a309e49fe08578f266b8e84d641e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp39-cp39-macosx_11_0_arm64.whl
Size 41.6 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
a4f8f2bfee34f6f38b206997727d29976666c89843c071a968add7d61a1e8024
BLAKE2b-256 checksum
How to use checksums
0fe779e579f629588ace669d3c06b987189b6013ee554723b9aca71975d15088
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

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

Download URL cymem-2.0.8-cp39-cp39-macosx_10_9_x86_64.whl
Size 42.1 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
b896c83c08dadafe8102a521f83b7369a9c5cc3e7768eca35875764f56703f4c
BLAKE2b-256 checksum
How to use checksums
0269ae03a9b809b1fda0f66d7f17ac0042fb5f7c70950884dffc986b112267ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp38-cp38-win_amd64.whl

Download URL cymem-2.0.8-cp38-cp38-win_amd64.whl
Size 39.5 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
6a6edddb30dd000a27987fcbc6f3c23b7fe1d74f539656952cb086288c0e4e29
BLAKE2b-256 checksum
How to use checksums
805d3796ece18f7dc227f7197f595c88bb45025807e61205632b3e35062199c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.8-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 46.4 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
84f8c58cde71b8fc7024883031a4eec66c0a9a4d36b7850c3065493652695156
BLAKE2b-256 checksum
How to use checksums
5f70b9945a7918d467c6c7112f6e20176d4f41b89d7ba0b590015b4cb62fb23d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cymem-2.0.8-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 44.4 kB
Tags CPython 3.8 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
8e370dd54359101b125bfb191aca0542718077b4edb90ccccba1a28116640fed
BLAKE2b-256 checksum
How to use checksums
50e0c118049bb79a024b17a9791f17d60fa50782414c1f55ea388cfee3c8ac5c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp38-cp38-macosx_11_0_arm64.whl

Download URL cymem-2.0.8-cp38-cp38-macosx_11_0_arm64.whl
Size 41.9 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
d513f0d5c6d76facdc605e42aa42c8d50bb7dedca3144ec2b47526381764deb0
BLAKE2b-256 checksum
How to use checksums
c390536f88369ae2904021e7b32ec0e2b73aab1942ceb2c4916d707605b969b4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp38-cp38-macosx_10_9_x86_64.whl

Download URL cymem-2.0.8-cp38-cp38-macosx_10_9_x86_64.whl
Size 42.5 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
1e593cd57e2e19eb50c7ddaf7e230b73c890227834425b9dadcd4a86834ef2ab
BLAKE2b-256 checksum
How to use checksums
56e0d3b5727fd7650bc9617edd8dd982405adb44a012e19890972608ff53afa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp37-cp37m-win_amd64.whl

Download URL cymem-2.0.8-cp37-cp37m-win_amd64.whl
Size 39.8 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
ada6eb022e4a0f4f11e6356a5d804ceaa917174e6cf33c0b3e371dbea4dd2601
BLAKE2b-256 checksum
How to use checksums
8373f47bd6ea9e5722967fc8e6e73eb64037dd2a8aff256283f2331c0b76014c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.8-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 46.7 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
e6b83a5972a64f62796118da79dfeed71f4e1e770b2b7455e889c909504c2358
BLAKE2b-256 checksum
How to use checksums
1591ff540730f341dee2ad7fade35e13ce0f9ad4d4e5b20855a074b9a0c5126e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cymem-2.0.8-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 45.0 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6ce641f7ba0489bd1b42a4335a36f38c8507daffc29a512681afaba94a0257d2
BLAKE2b-256 checksum
How to use checksums
2da9370c3ace4d318ed556490c5f91e6e896007e78fe7ac37086d50777a56223
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp37-cp37m-macosx_10_9_x86_64.whl

Download URL cymem-2.0.8-cp37-cp37m-macosx_10_9_x86_64.whl
Size 42.3 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
b9c05db55ea338648f8e5f51dd596568c7f62c5ae32bf3fa5b1460117910ebae
BLAKE2b-256 checksum
How to use checksums
2a00e900492172c167e06ecd3a0aabf9dc740d6d5620a535fa2df3a6c75fa1e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp36-cp36m-win_amd64.whl

Download URL cymem-2.0.8-cp36-cp36m-win_amd64.whl
Size 46.5 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
6204f0a3307bf45d109bf698ba37997ce765f21e359284328e4306c7500fcde8
BLAKE2b-256 checksum
How to use checksums
5079feac904b9363b7e23ae73e91eb4e02db484a0ad7127a90ed9f116e4ee92f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL cymem-2.0.8-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 44.7 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
17cd2c2791c8f6b52f269a756ba7463f75bf7265785388a2592623b84bb02bf8
BLAKE2b-256 checksum
How to use checksums
2c01e86cfbb8606c23d67fab01ed668ef11b34cb53611192eb73235cb7868d8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9

Release files / cymem-2.0.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL cymem-2.0.8-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 43.2 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
167d8019db3b40308aabf8183fd3fbbc256323b645e0cbf2035301058c439cd0
BLAKE2b-256 checksum
How to use checksums
3a5dad5ebb3ac2a5d885ddf4e908a3dafe218295e6428d2dce1789eb061dc9df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.7.9
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