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.

Azure Pipelines 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.7

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.7
File Size Uploaded
cymem-2.0.7.tar.gz 9.9 kB Details

Built distributions (wheels)

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

Release files / cymem-2.0.7.tar.gz

Download URL cymem-2.0.7.tar.gz
Size 9.9 kB
Tags Source
SHA-256 checksum
How to use checksums
e6034badb5dd4e10344211c81f16505a55553a7164adc314c75bd80cf07e57a8
BLAKE2b-256 checksum
How to use checksums
b0d350c90dd821e44ad289653f0029d1690fca82f90df293e77e21443f5ea4fc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp311-cp311-win_amd64.whl
Size 28.4 kB
Tags CPython 3.11 Windows x86-64
SHA-256 checksum
How to use checksums
10178e402bb512b2686b8c2f41f930111e597237ca8f85cb583ea93822ef798d
BLAKE2b-256 checksum
How to use checksums
6e9e2f18aa8f03c6d7692a2f6c884f4bc8f0ab0ba065786f2a4ba966d3e19ef6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 34.4 kB
Tags CPython 3.11 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
2aa33f1dbd7ceda37970e174c38fd1cf106817a261aa58521ba9918156868231
BLAKE2b-256 checksum
How to use checksums
861ec6f9060c59da4428d819f5917a870dea408da9e6723b190e0da447b9721a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 32.7 kB
Tags CPython 3.11 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
9e5e1b7de7952d89508d07601b9e95b2244e70d7ef60fbc161b3ad68f22815f8
BLAKE2b-256 checksum
How to use checksums
09a6c120371eb2370744cc80b07d9cf8fd2f1b69d4cf71ad920f0e238dbd36ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp311-cp311-macosx_11_0_arm64.whl
Size 30.1 kB
Tags CPython 3.11 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
df543a36e7000808fe0a03d92fd6cd8bf23fa8737c3f7ae791a5386de797bf79
BLAKE2b-256 checksum
How to use checksums
042766b11887a2542fd03c3632209860ddee5fafee58efc508832a269dfb6959
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp311-cp311-macosx_10_9_x86_64.whl
Size 31.4 kB
Tags CPython 3.11 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
314273be1f143da674388e0a125d409e2721fbf669c380ae27c5cbae4011e26d
BLAKE2b-256 checksum
How to use checksums
d509819e5a536f898c8f464da28a74b13b0b56683e307949c62a319a57afb162
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp310-cp310-win_amd64.whl
Size 29.5 kB
Tags CPython 3.10 Windows x86-64
SHA-256 checksum
How to use checksums
864701e626b65eb2256060564ed8eb034ebb0a8f14ce3fbef337e88352cdee9f
BLAKE2b-256 checksum
How to use checksums
5d47bd5df7891ce656be8ff14ca9993168f391b389545b76b268f9cee8958412
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

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

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

Download URL cymem-2.0.7-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 33.1 kB
Tags CPython 3.10 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
c183257dc5ab237b664f64156c743e788f562417c74ea58c5a3939fe2d48d6f6
BLAKE2b-256 checksum
How to use checksums
901e95094bace76d7c62e08f4e189f0e8d558ac44a78c3efa820db530bf4f37e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp310-cp310-macosx_11_0_arm64.whl
Size 30.8 kB
Tags CPython 3.10 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
42aedfd2e77aa0518a24a2a60a2147308903abc8b13c84504af58539c39e52a3
BLAKE2b-256 checksum
How to use checksums
22d83a0c220ff497ad7ca3c77d3d6d2825ace2a2ba0e1be1c50b5fcd567577bd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp310-cp310-macosx_10_9_x86_64.whl
Size 32.2 kB
Tags CPython 3.10 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
4981fc9182cc1fe54bfedf5f73bfec3ce0c27582d9be71e130c46e35958beef0
BLAKE2b-256 checksum
How to use checksums
45d1fcd546003ffbeb15916a15d38263ec2d452248f32a5a876462e39fd326ef
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp39-cp39-win_amd64.whl
Size 30.2 kB
Tags CPython 3.9 Windows x86-64
SHA-256 checksum
How to use checksums
59a09cf0e71b1b88bfa0de544b801585d81d06ea123c1725e7c5da05b7ca0d20
BLAKE2b-256 checksum
How to use checksums
d82d61953a623544f0b87d931e5393dbe7ca0ea727e87c72ab95db715c8abecb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

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

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

Download URL cymem-2.0.7-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 33.8 kB
Tags CPython 3.9 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
4f359cab9f16e25b3098f816c40acbf1697a3b614a8d02c56e6ebcb9c89a06b3
BLAKE2b-256 checksum
How to use checksums
f1be8af4c91f3cd7453284733ca66ce2e3ed97f4602adf170b6e3d9b21a89dd3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp39-cp39-macosx_11_0_arm64.whl
Size 31.5 kB
Tags CPython 3.9 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
3da89464021fe669932fce1578343fcaf701e47e3206f50d320f4f21e6683ca5
BLAKE2b-256 checksum
How to use checksums
22d361033b089e59bf7827f3db72da2fb003ec3989ba3543bf149e2aa45f11dd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp39-cp39-macosx_10_9_x86_64.whl
Size 33.0 kB
Tags CPython 3.9 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
e156788d32ad8f7141330913c5d5d2aa67182fca8f15ae22645e9f379abe8a4c
BLAKE2b-256 checksum
How to use checksums
b2f1767458d63d2162ce8492f462ad5f92125d3d43eabc3a03bf043e57c3512f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp38-cp38-win_amd64.whl
Size 30.2 kB
Tags CPython 3.8 Windows x86-64
SHA-256 checksum
How to use checksums
48b98da6b906fe976865263e27734ebc64f972a978a999d447ad6c83334e3f90
BLAKE2b-256 checksum
How to use checksums
9699a5f558006387913f1a1b4af5ccae610b19ebe5498e7199c2da10e77429c8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 36.4 kB
Tags CPython 3.8 Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
a9525ad563b36dc1e30889d0087a0daa67dd7bb7d3e1530c4b61cd65cc756a5b
BLAKE2b-256 checksum
How to use checksums
012f9d841b40404978d93d0e6c091614c9df63d91483a3b2f1d0472c22285e67
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 34.5 kB
Tags CPython 3.8 Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
6c50794c612801ed8b599cd4af1ed810a0d39011711c8224f93e1153c00e08d1
BLAKE2b-256 checksum
How to use checksums
1cf0daffeefab3645305057ea97b3d4bfe478c28719a4e6b14cbe6095c0de417
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp38-cp38-macosx_11_0_arm64.whl
Size 31.0 kB
Tags CPython 3.8 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
24b779046484674c054af1e779c68cb224dc9694200ac13b22129d7fb7e99e6d
BLAKE2b-256 checksum
How to use checksums
78e13f840e321e25b60ce88c138282d0d204b3c2a1fcc07e0e5940ff7c662f70
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp38-cp38-macosx_10_9_x86_64.whl
Size 32.5 kB
Tags CPython 3.8 macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
4302df5793a320c4f4a263c7785d2fa7f29928d72cb83ebeb34d64a610f8d819
BLAKE2b-256 checksum
How to use checksums
f70434905a11acdf77f9788790871a2f8b19d2adc7a6f6f4df16f74b601e2866
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp37-cp37m-win_amd64.whl
Size 30.0 kB
Tags CPython 3.7 CPython 3.7 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
5ea6b027fdad0c3e9a4f1b94d28d213be08c466a60c72c633eb9db76cf30e53a
BLAKE2b-256 checksum
How to use checksums
03e1df8296e47d81e1f9055b9ceba0dc4e89d900380674abeff6d94e069ce4f2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 36.0 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
6f9e63e5ad4ed6ffa21fd8db1c03b05be3fea2f32e32fdace67a840ea2702c3d
BLAKE2b-256 checksum
How to use checksums
8adfdd3cb90cb45fafa41a9b8ace5dfef553d50567a9abfd75eef21efb9fc3e1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp37-cp37m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 34.2 kB
Tags CPython 3.7 CPython 3.7 pymalloc Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
011039e12d3144ac1bf3a6b38f5722b817f0d6487c8184e88c891b360b69f533
BLAKE2b-256 checksum
How to use checksums
cdfbcd73656ffb41a05452ec90bd7a201f1e065310c013efa20269cb80c2531f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp37-cp37m-macosx_10_9_x86_64.whl
Size 32.3 kB
Tags CPython 3.7 CPython 3.7 pymalloc macOS 10.9+ x86-64
SHA-256 checksum
How to use checksums
26e5d5c6958855d2fe3d5629afe85a6aae5531abaa76f4bc21b9abf9caaccdfe
BLAKE2b-256 checksum
How to use checksums
cb6a3cb5e33ad0adc201eadbdff70be4d54fdc2772947252fc157dc9a041bf16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp36-cp36m-win_amd64.whl
Size 36.2 kB
Tags CPython 3.6 CPython 3.6 pymalloc Windows x86-64
SHA-256 checksum
How to use checksums
0ac45088abffbae9b7db2c597f098de51b7e3c1023cb314e55c0f7f08440cf66
BLAKE2b-256 checksum
How to use checksums
2e919854d0fedbd42db157c9a88269dbfe556faed06666d9b44f6296da85a77f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 35.7 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ x86-64
SHA-256 checksum
How to use checksums
85359ab7b490e6c897c04863704481600bd45188a0e2ca7375eb5db193e13cb7
BLAKE2b-256 checksum
How to use checksums
22ca6fe64ed47a76af1ecf59c437b6cc135072a06a3cef2ce62f8d8f38ce3cae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.7.9

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

Download URL cymem-2.0.7-cp36-cp36m-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 34.1 kB
Tags CPython 3.6 CPython 3.6 pymalloc Linux glibc 2.17+ ARM64
SHA-256 checksum
How to use checksums
a2971b7da5aa2e65d8fbbe9f2acfc19ff8e73f1896e3d6e1223cc9bf275a0207
BLAKE2b-256 checksum
How to use checksums
00bd0369d6325ef95eb71d251720e0f7551727a270b41bacc09db5323b87343c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 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