Skip to main content

Memory barrier utilities for Python - provides wmb, rmb, and fence operations

Project description

Python Memory Barrier (pymembar)

Memory barrier utilities for Python - provides low-level memory ordering primitives for concurrent programming. Usually you would not need this in Python due to GIL and generally strong memory ordering on x86/x86_64. However, on weakly-ordered architectures like ARM, memory barriers can be useful for ensuring correct visibility and ordering of memory operations when for example working with shared memory, named semaphores, or lock-free data structures.

I used AI (GitHub Copilot) to help generate parts of this README, documentation strings, parts of the core code, the tests, and some configuration files. Please report any inaccuracies or errors you may find.

Overview

This package provides Python bindings for memory barrier operations, ensuring that memory operations are visible to other processes and threads in the correct order. Memory barriers do not provide synchronization themselves, but rather control the visibility and ordering of memory operations across CPU cores and processes.

The package includes three core functions:

  • wmb() - Write memory barrier
  • rmb() - Read memory barrier
  • fence() - Full memory fence

Installation

pip install pymembar

Usage

Basic Usage

import membar

# Write memory barrier - ensures all write operations before this point
# are visible to other processes/threads before any writes after this point
membar.wmb()

# Read memory barrier - ensures all read operations before this point
# complete before any read operations after this point
membar.rmb()

# Full memory fence - ensures all memory operations before this point
# are visible to other processes/threads before any operations after this point
membar.fence()

Logging Support

You can enable optional logging to see which memory barrier implementation is being used at runtime. This is useful for debugging and understanding which underlying mechanism (C11 atomics, MSVC, GNU atomics, BSD, or compiler barrier) is executing on your platform.

⚠️ Performance Warning: Enabling logging adds overhead to every memory barrier call (callback check and function call overhead). This can significantly impact performance in tight loops or performance-critical code paths. Logging should primarily be used for debugging and development, and should be disabled (set_log_callback(None)) in production code where performance is critical.

import membar

# Enable logging with a custom callback
def my_logger(message):
    print(f"[MEMBAR] {message}")

membar.set_log_callback(my_logger)

# Now all barrier calls will log their implementation
membar.wmb()   # Logs: "wmb: using C11 atomic_thread_fence(memory_order_release)"
membar.fence() # Logs: "fence: using C11 atomic_thread_fence(memory_order_seq_cst)"

# You can also use print directly
membar.set_log_callback(print)

# Or integrate with Python's logging module
import logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
membar.set_log_callback(logger.info)

# Disable logging by passing None
membar.set_log_callback(None)

When Are Memory Barriers Needed?

Memory barriers are primarily needed on weakly-ordered CPU architectures like ARM, where the processor may reorder memory operations for performance optimization. On x86/x86_64 architectures, the strong memory ordering model means that memory barriers are often not strictly necessary for most use cases, as the hardware already provides strong ordering guarantees.

However, memory barriers can still be useful on x86 in specific scenarios:

  • When interfacing with memory-mapped I/O
  • In lock-free programming with specific compiler optimizations
  • When precise ordering is critical for correctness

Note: Most Python applications will not need memory barriers due to the Global Interpreter Lock (GIL) and Python's threading model.

Requirements

  • Python 3.10+
  • Compatible with Windows, Linux, and macOS

Contributing

I am not a C expert and would be happy to receive any constructive feedback, suggestions, or contributions to improve this library. Feel free to open issues or submit pull requests on the GitHub repository.

Disclaimer

Parts of the core code, the tests, this README, and documentation strings were generated with AI assistance.

Release history

  • 0.0.1 - Initial release
  • 0.0.2 - Added ARM build support
  • 0.0.3 - Added logging support and multiple synchronization implementations
  • 0.0.4 - Improved logging thread safety and documentation
  • 0.1.0 - Dropped EOL Python versions (3.8, 3.9); minimum is now Python 3.10

TODOs

  • Is it possible to write tests for the memory barrier core functionality?

Project details


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.

pymembar-0.1.0-cp314-cp314t-win_amd64.whl (12.3 kB view details)

Uploaded CPython 3.14tWindows x86-64

pymembar-0.1.0-cp314-cp314t-win32.whl (11.7 kB view details)

Uploaded CPython 3.14tWindows x86

pymembar-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl (19.7 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

pymembar-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl (20.8 kB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ ARM64

pymembar-0.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (21.6 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymembar-0.1.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (19.9 kB view details)

Uploaded CPython 3.14tmanylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pymembar-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl (9.4 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

pymembar-0.1.0-cp314-cp314-win_amd64.whl (12.1 kB view details)

Uploaded CPython 3.14Windows x86-64

pymembar-0.1.0-cp314-cp314-win32.whl (11.5 kB view details)

Uploaded CPython 3.14Windows x86

pymembar-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl (18.4 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

pymembar-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl (19.0 kB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ ARM64

pymembar-0.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (19.6 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymembar-0.1.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (18.4 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pymembar-0.1.0-cp314-cp314-macosx_11_0_arm64.whl (9.3 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

pymembar-0.1.0-cp313-cp313-win_amd64.whl (11.9 kB view details)

Uploaded CPython 3.13Windows x86-64

pymembar-0.1.0-cp313-cp313-win32.whl (11.4 kB view details)

Uploaded CPython 3.13Windows x86

pymembar-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl (18.3 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

pymembar-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl (19.0 kB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ ARM64

pymembar-0.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (19.6 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymembar-0.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (18.4 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pymembar-0.1.0-cp313-cp313-macosx_11_0_arm64.whl (9.3 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

pymembar-0.1.0-cp312-cp312-win_amd64.whl (11.9 kB view details)

Uploaded CPython 3.12Windows x86-64

pymembar-0.1.0-cp312-cp312-win32.whl (11.4 kB view details)

Uploaded CPython 3.12Windows x86

pymembar-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl (18.3 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

pymembar-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl (19.0 kB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ ARM64

pymembar-0.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (19.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymembar-0.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (18.4 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pymembar-0.1.0-cp312-cp312-macosx_11_0_arm64.whl (9.3 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

pymembar-0.1.0-cp311-cp311-win_amd64.whl (11.9 kB view details)

Uploaded CPython 3.11Windows x86-64

pymembar-0.1.0-cp311-cp311-win32.whl (11.4 kB view details)

Uploaded CPython 3.11Windows x86

pymembar-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl (18.0 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

pymembar-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl (18.8 kB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ ARM64

pymembar-0.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (19.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymembar-0.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (18.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pymembar-0.1.0-cp311-cp311-macosx_11_0_arm64.whl (9.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

pymembar-0.1.0-cp310-cp310-win_amd64.whl (11.9 kB view details)

Uploaded CPython 3.10Windows x86-64

pymembar-0.1.0-cp310-cp310-win32.whl (11.3 kB view details)

Uploaded CPython 3.10Windows x86

pymembar-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl (17.9 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

pymembar-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl (18.7 kB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ ARM64

pymembar-0.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl (19.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ ARM64manylinux: glibc 2.28+ ARM64

pymembar-0.1.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl (17.9 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64manylinux: glibc 2.5+ x86-64

pymembar-0.1.0-cp310-cp310-macosx_11_0_arm64.whl (9.3 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

File details

Details for the file pymembar-0.1.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 cb9f36d49c1d42e3a80efe93f472e1cf3549bbc1566aef9b71907a337f989704
MD5 f00020e1bbc5dfc610c4af9d84af57b7
BLAKE2b-256 3d01a08a6efae775a5bea50f79abbfed2141cfa341f90287217aef207b069b53

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314t-win32.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp314-cp314t-win32.whl
  • Upload date:
  • Size: 11.7 kB
  • Tags: CPython 3.14t, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp314-cp314t-win32.whl
Algorithm Hash digest
SHA256 63d4f7781566ee71d17fc4fb01497a67a4083c59c7b0a57362dc56d3f67d458f
MD5 bf5b1db4bbaa8bb22bf895115f90a6db
BLAKE2b-256 4340ff7180efa23b1560db5e44c0c833b48286fcb4afb1edcfef63782de4b311

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 69169685269a3381d649fe7f5cfa717e9ebc5f6e0d696762fc5430b4b8c5410e
MD5 c7ae9807ff998c97e8efbc9997cebc7c
BLAKE2b-256 682c9fcc9e0f0d1f5e77dc0653ae7e39db6b414dd6f6f3bc7296b278ebb962a1

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314t-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 40efa1e367301489ce87812a50f93781c9bcadaf889b9c15eff38aa166ec6e06
MD5 a7577c4075d55e7772c4a34b5af99ad2
BLAKE2b-256 ed58da470a18478a02113a1978518adff6f30a0cbcb8ca9fd8cd93e1a4a1b017

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 aabd6bb4609a2751adcb4222bcc800c30d72004f6ab6a6436ad4f8b4890c0c0a
MD5 442d3eac70addc3ab32b7e7606427e9c
BLAKE2b-256 fbdcbb556df8e81caa96c98a6f30859558136dff959176d71bad0b19a6ebb8ea

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314t-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 f2445a325702571e0fd5511041b3ca300f0ab1ea0c04d5c1217cfaeb41f165d6
MD5 d09bf4a3f6f5f70d47e122bfa9bcf769
BLAKE2b-256 96433ac25cc7102f055e703dd9615e0fb8e96bffeb3c6fa0fc8352553272a288

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 affdfbd5c0bc26864a0c50fadbd915ce51c2415940e4a092be7988ff72a5064c
MD5 041c9133f399b7e03533aab33cc43743
BLAKE2b-256 77f7118576d3e198936249748d969972e00983132978fb7f74f4ea5c4f5f4481

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 12.1 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 f6487c3ead3bbb1a4213b6b3b0cb50b6a0bef962c1a56f686369bab9738fb44b
MD5 8fafbc29d5ba6022af181a28f8fcc81a
BLAKE2b-256 98b33f488d127ba5e07d09e453d7f42d55c8c76e5413b949c5b704fcb5cc65cb

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314-win32.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp314-cp314-win32.whl
  • Upload date:
  • Size: 11.5 kB
  • Tags: CPython 3.14, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp314-cp314-win32.whl
Algorithm Hash digest
SHA256 29159f29b974129a215a646645b28abd9b9af893775690c934982674ad8e6277
MD5 5c506d1e4f6774ecde179c761f986aa2
BLAKE2b-256 bbaf69c2b6009eea9b3c7b8575c4db6974de2752aa0439bfa11cd9094a0bc3b3

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 76bc091d39a38ae9a5732fbfe71bca98953aa4863da0722d7fbedc9d76d87d74
MD5 30675ac4013b4f25f181c446e91b02ec
BLAKE2b-256 11d92ff3e021f040e53cc16f41aa8affc5aa4dbdd6ab3666bdafb9678f3050ab

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 fc9790a9058dc81ab47c57d360b0f000f44964b3fb8c5d8311aac658397ded2b
MD5 95f7133fd86ea0d1931621ba19642b15
BLAKE2b-256 c0b24dc1256fb69c60604a504c152a936838f86a44d79cf2f78d04a9ff29c837

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 88506d468a5b73c402426654f27fb0bf4db5a17b0c004479df6211ce1a83237d
MD5 0b7481a1e9acd369cc6c9e2e4306ca08
BLAKE2b-256 d130026872ab17b61b640e3a38ce3163b5c34a7cdfa5a0880485bde92b321b93

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 3602a9fc630fb9e5c669f78c005cc37b66e332479a65f717e36ee854183948a0
MD5 8152a16d5901937911bb6f07c566a7d6
BLAKE2b-256 bd2e65b64605fed97ca5f724ac9d20dada4110ee074aadfcafebd93f18be9c5b

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 52dc4dd3ccb49a4cfb6f2e80d8542c04746543d8d7cd079fd44788dc228ec345
MD5 0c50562b36ee43819fbb1b5d117b7870
BLAKE2b-256 899916d622b11d187b2b4bd9b5089919685b61b21c65febc9e2e7b36117344c3

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 ac0395569a8585f41fb8688f75e6fca5e8ac38c45493a0b5b405f7f215c1bead
MD5 85b1d6b2cc57293cd627fbf5a707839d
BLAKE2b-256 c7ed2ed9666ab3a33e49c078e96a926c7ae0bd1e03f9c0ed5c91a45820eda125

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp313-cp313-win32.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp313-cp313-win32.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: CPython 3.13, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp313-cp313-win32.whl
Algorithm Hash digest
SHA256 cc5e5ccae2695905a0e91243beb6b757de46fd1a79f9f5af0baece4580293c3a
MD5 1766b725dc4e3d93159ee24141348f1f
BLAKE2b-256 d3ae6cd90613209bbea74bfdf74655a77a695dc3e58d99aeb1c95f57b56e3212

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 92f036fa580cd0a80f5225c1295f649c891b3690cabde7997a2fdcd7fb4409ae
MD5 6c9ed98e95a7bf3d0a9766916026d4df
BLAKE2b-256 35d1bc925b9addca3f195e70f74ba1f4fdbec2b594a6febfe0ba415e68ae9f3d

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp313-cp313-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 f9f505c54834df1e7d2b673959382cd344502e3c8aa7c01d17e4e23fa44b0365
MD5 a507a72d0364546bd866affa8a6949c2
BLAKE2b-256 5c3b62a10453351d00fa7e848c60454f1bdcdff96dc9c41d8983500bbef7463c

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 729adcb394edeb969d782a5113c92998784ed5d6df1952b9f0fe5c58a15bb6e1
MD5 e963d0cd100324e8c9e303be7cf7796b
BLAKE2b-256 492fa0cbdf5d5896bb5435c469fd78be21719db8242fd1f0f1f572249b72fbf5

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp313-cp313-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 57ab1439b672fde87b13b42197b537cee669c75b832bc99056606564509a9f51
MD5 e1f523693e68e35dd478bbda517a7fbd
BLAKE2b-256 07404f04dda782d87740cd01a3f0c6b74ded3ba3deac0429dc9652e94428bfc1

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43de9a92759c6c8c07235a4d91fd689f845b7df2ee2f88e6a72f7adb132d387e
MD5 6f7cdb208d09c6e44829f395f394bc62
BLAKE2b-256 f971559a8228bbd3f29106898f83bd31a2e3633a8c5ac36a749c50facf7bf76a

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4abb6dde58cef884d7347f664a3d7ef61dad25d849d24ddc65176552580ed0c1
MD5 e8e7693282b623f6d656a7a5d12c5127
BLAKE2b-256 f183994c35285bea735b4d7b1b0ab4a4b2716efe2ce69a7e56cd7416f6002f15

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp312-cp312-win32.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp312-cp312-win32.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 14fbde06de5befce28cb4eb160d2455c4cd525733d1be044f8396a349dc99652
MD5 a5abd1953f2d1a3130d2fa82c49b7876
BLAKE2b-256 2cc1d00f9c3f4d1a26d95c6efb31697c816042550637c9cf883936d6073def73

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 abc49b8639d88368d58b6b44b748808d7e913fe935322cc315c794df03adc008
MD5 6056c1a03a8d0106fc28bcd505e8fba2
BLAKE2b-256 845e9160434574e81cdf28bca546acc1e6e34251190e7e16fc619c84585d8e2a

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp312-cp312-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 9a74e70953d0f6783ae6bfdd8e67015fb39a833dcca7ffa068224837b2de6b8e
MD5 4d296c344a483250f39f8f5d8b94dec8
BLAKE2b-256 534a0f431386b220a016a7c6ab4f3e043de721ab51f84a1679036ae763fbb3fb

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 604597a2ae3f0d67a0da8141cc471adf0a553c70a6e8395437ab4a0f4c6a8b07
MD5 d5b425cd8d222cfee6ab703c2c936ed1
BLAKE2b-256 8e3a39752e4a2797e317e8bfa890362f2136c1580a75a1ed9ef4946204f73ea1

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 2f320e9592a63a4780c43fdf115a88d154fa9588a348b6e38c35016bb59527f9
MD5 2c5c42edb2fec92a47459711ed02c6b3
BLAKE2b-256 20cecb6b370d971ecb8c6bbb1222940e56e4a3a925985505113ab14a64749650

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 5f780ce3d621810cd762dcb36173290db92868eae1bb4e50b2a23548a72c3e96
MD5 433fef4108b6f51612dba82eb65b56e3
BLAKE2b-256 c491d4a465fe2c377a53efbb2fc1426a2bb432f8ec620c7c69683ea15502006c

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 67f595f245162c8c7302d1719f36a6c828ed30dfd53b1c2aea8c3f8130bcdd2a
MD5 fd0846aee22e40ac5c5a5d8db737d93f
BLAKE2b-256 816c768c9e1d949ed963c6d79fe904fcc766ffe0d2c046dd06eb13918c1122f6

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp311-cp311-win32.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp311-cp311-win32.whl
  • Upload date:
  • Size: 11.4 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 4f58a1f7a6df1aef9850f25e62130d3f53fce7c4fbce2f9ba39b3f8b66ce13a5
MD5 3e134271a8cc49a6823467f87ca6d575
BLAKE2b-256 671ea2cb0dabbe40bfe127c81ce916f24eda25fbef8ca8fbbe1ca24aa9baf9cf

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 1d6f37e334177e58a0e873d7317c4ba6052675684929516995d3d6df3067d044
MD5 47f282ed1b3e0f1d579c3f41628df319
BLAKE2b-256 6547f7b5b6db6310d2c52e33bf691a0fc54c549f15f99fd07697f994e1f99c5c

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp311-cp311-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 c2a0fbc3f2333dfc39d1f6fe76278e7832193e8f2db00fcee38ce881c91ca983
MD5 db38d2533e882b441769d79a71ecd94b
BLAKE2b-256 bb7a9b0daf5b9ab7526d0a118c9a5088982608b411da85e9d223c0f38d59dd27

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 e92466b3cfb131f94624a6b6a0a77471cd96a7318f6795d0c8f6a6dd526c1ec7
MD5 a7c59f9026efb2cce8247264560dd2c7
BLAKE2b-256 86523b97118525153279e2dd32aa3de8a3b71eb42e53f4f231448b9ce713747f

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp311-cp311-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 a04e2727e97dfb4c6ae27053a565f63fc58af5e0ffddcfe0ae53363ee22549d4
MD5 03d4b0ac203026ddbed48ed0cccdde9e
BLAKE2b-256 e4b9e9328b517655144daf218d4f5ec470782b4a6f160be4a501a37c6b41d69e

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 fcc29d7223f3a37beafe94f0a12e5dc24e8f0f398fc073bd60b299cba8c163a0
MD5 791260eda748923ed978eddf4e927d0d
BLAKE2b-256 6a315e89329c94a9e9b9d95480b533fa534d02b3583c44f0a813a38c0bf0980a

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 11.9 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 bd3e3e31780972c5502d321b1ea371c4a0c8c14a60a7168f4cfe59bac9a42ddd
MD5 58f63b5682708e01fb1d7082c92d3b0f
BLAKE2b-256 82e97e6760a33ae4ce9959343529bc64624b28066f0ee92f36d56b5e7b920503

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp310-cp310-win32.whl.

File metadata

  • Download URL: pymembar-0.1.0-cp310-cp310-win32.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymembar-0.1.0-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 223464983040f8061c808a434bfb5afb1346a43c5894833e8c44ac8766f08aeb
MD5 dc108fc1358a5b3d738984cdb7871b16
BLAKE2b-256 b1b46d20df3dc0af7190ecf252eba246e09ed6d917be1981de498c42ca93d3fc

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 b56b4fa1c3666dbac0c7c63f90978f0fb30b61a7e43f293d05c2da874eb754ae
MD5 931b42fb017e26d919583cb78397c80c
BLAKE2b-256 f1a71c850047d1bb9535157536be9c17bf8295f1d134f29e23e36f66c7e58fd4

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp310-cp310-musllinux_1_2_aarch64.whl
Algorithm Hash digest
SHA256 7531f2e37d8b5ef272cd5ca5c94beb80bc2c0ad8a59b3a6122107ca5e9b83a04
MD5 b13fb3569882a21403c0a2749fe9e6e3
BLAKE2b-256 11678c90a3a2eb8b2107a0c860f3f67d65a6543ecfa00e932ce28c838c71caf4

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c28fea304b1c1789abb7f6e648f8391d546696bb3b4311fb2e76919baf3d8d08
MD5 5bcf659cd582960798b477acbd9e5167
BLAKE2b-256 ae1e452f0411d05013cf19c5f5d23773eacea1cf0442ece134fad06f6d8d4fc5

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp310-cp310-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl
Algorithm Hash digest
SHA256 a4239a35af761cc6d07a4147b7614c0a0788572a07c0918e7aea7e886774f728
MD5 c1bccbc646a8f002f5452ea1089c870f
BLAKE2b-256 8c308fe9dd371dc7eb03522850d8b4bd039209e6bab857d01651629f3d792a9a

See more details on using hashes here.

File details

Details for the file pymembar-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for pymembar-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1217f785c3e827858658099c73ab442039355d87610b92b35617dd690bf1a540
MD5 b8eb3d061fb26733bb9d629cd82bc107
BLAKE2b-256 264a186fda35a3e79c4e722d93bce985a1999401f6fb3da5e7e220b220e664f8

See more details on using hashes here.

Supported by

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