Skip to main content

NumCircBuf: High-performance numerical circular buffers for Python, featuring O(1) statistical accumulators.

PyPI version License Python Version Build Status

Table of Contents

Overview

NumCircBuf is a high-performance Python library providing numerical circular buffers, featuring O(1) accumulators and specialized calculation variants. Built with Cython for a balance between speed and maintainability, it provides efficient data structures for real-time signal processing, time-series analysis, and other performance-critical applications.

Features

  • Multiple Buffer Types – Specialized implementations for different use cases:
    • BlockingCircBuffer – Blocking producer/consumer circular buffer for multi-threaded applications.
    • OverwriteCircBuffer – Optimized for high-throughput writes
    • IntegratedGatedBuffer – Specifically for calculating gated loudness statistics
    • O(1) Accumulators – Constant-time operations for statistics, implemented in specialized buffers:
      • RunningMeanBuffer – O(1) mean
      • RunningMeanSqBuffer – O(1) mean-square
  • High Performance – Bypasses Python/NumPy overhead to saturate the hardware bandwidth. Details in PERFORMANCE.md:
    • vs. collections.deque & Python lists: 500–1500× faster for bulk extend, and 1.5–3× faster for single append.
    • vs. Optimized NumPy Ring Buffers: Up to 10× faster.
  • Familiar API: Buffers use append, extend, and clear methods for drop-in compatibility.
  • NumPy Integration: Direct integration with NumPy arrays.
  • Type Safety: Fully typed; supports fp32, fp64, int32, int64, uint32, and uint64.
  • Docs & Benchmarks: Includes extensive API documentation, usage examples, and detailed performance benchmarks.

Installation

pip install numcircbuf

Or install from source:

git clone https://github.com/basimali-ai/NumCircBuf.git
cd NumCircBuf
pip install .

For development installation with all dependencies (from source):

git clone https://github.com/basimali-ai/NumCircBuf.git
cd NumCircBuf
pip install -e .[dev]

Verification

To verify the installation and check the version:

pip show numcircbuf && python -c "import numcircbuf; print('\n' + '-'*20 + '\nRunning smoke test...'); print(f'Library version: {numcircbuf.__version__}'); print(numcircbuf.OverwriteCircBuffer(10, 'never')); print(numcircbuf.RunningMeanBuffer(10, 'calculation')); print('-'*20 + '\n--- Installation verification successful ---')"

Common Buffer API

All buffer types expose the following methods:

  • clear(): Clears the buffer.
  • clear_nan(): Removes NaN values.
  • clear_infs(): Removes Inf values.
  • __len__(): Current buffer size.
  • maxlen: Maximum buffer capacity.
  • view(): Returns a read-only logical view of the buffer (implements ViewProtocol).

All bulk extend methods have an additional warn_size boolean argument which enables or disables warnings when the block size exceeds the buffer's maxlen. It is enabled by default.

Note: In all buffers nan/inf values are allowed to be appended/extended with, as they are valuable data points.

The Buffer View (ViewProtocol)

The object returned by the view() method provides a zero-copy, read-only logical view of the circular buffer. It is exposed as a structural Protocol to provide strong type hints and an explicit contract, while the underlying implementation remains internal.

  • Behaves like a 1D NumPy array in logical order.
  • Has a to_numpy() function which provides a contiguous NumPy array copy of the data in logical order.
  • All returned arrays are independent (no shared memory).
  • Any slicing produces a 1D NumPy array copy containing only the selected elements.
  • Indexing or iteration preserves logical order, but yields native Python objects (int, float) for each element.

Note: This view is strictly read-only. Attempts to modify the view via indexing or deletion will raise an InvalidModification exception at runtime.

Usage Example

# Assuming `buffer` is a populated circular buffer instance from numcircbuf
view = buffer.view()

def view_usage(v):
    print("All elements (slice):", v[:])
    print("Single element:", v[0])
    print("Number of elements:", len(v))
    print("Max capacity:", v.maxlen)
    print("Dtype:", v.dtype)
    print("-" * 20)
    print("Iterating over view:")
    for value in v:
        print("-" * 10)
        print(f"Value = {value}")
        print(f"Type = {type(value)}")  # Will be native <class 'int'> or <class 'float'>
    print("-" * 20)

print("\n--- View Usage ---")
view_usage(view)

# Copy behavior
# All returned arrays are independent; no shared memory
arr = view.to_numpy()
print("Before: ", view[:])
arr *= 2.0  # modify the array copy
print("After: ", view[:])  # View remains unchanged

Main Buffers

1. OverwriteCircBuffer

Write-optimized circular buffer with auto-overwrite and non-destructive reads.

Provides simple vectorized mathematical metrics over the buffer contents.

Note: This buffer is not thread safe.

  • Concurrent reads during writes can provide inaccurate data
  • Concurrent writes can cause data corruption.

Constructor

def __init__(
    self,
    maxlen: int,
    return_overwritten_policy: Literal["never", "always", "conditional"],
    dtype: (
        type[np.float32]
        | type[np.float64]
        | type[np.int32]
        | type[np.int64]
        | type[np.uint32]
        | type[np.uint64]
    ) = np.float64,
) -> None:
Overwrite Return Policy

Controls whether overwritten elements are returned when the buffer wraps.

return_overwritten_policy: Literal["always", "never", "conditional"]

  • "never"

    from numcircbuf import OverwriteCircBuffer
    buf = OverwriteCircBuffer(maxlen=3, return_overwritten_policy="never")
    print(buf.extend([1, 2]))  # Empty NumPy array []
    print(buf.extend([3, 4]))  # Empty NumPy array []
    print(buf.append(5))  # None
    
  • "always"

    from numcircbuf import OverwriteCircBuffer
    buf = OverwriteCircBuffer(maxlen=3, return_overwritten_policy="always")
    print(buf.extend([1, 2]))  # Empty NumPy array []
    print(buf.extend([3, 4]))  # NumPy array [1.0]
    print(buf.append(5))  # float 2.0
    
  • "conditional"

    The returned values depend on the return_overwritten flag, it defaults to False.

    from numcircbuf import OverwriteCircBuffer
    buf = OverwriteCircBuffer(maxlen=3, return_overwritten_policy="conditional")
    print(buf.extend([1, 2]))  # Empty NumPy array []
    print(buf.extend([3, 4]))  # Empty NumPy array []
    print(buf.extend([5, 6], return_overwritten=True))  # NumPy array [2.0, 3.0]
    print(buf.append(7))  # None
    print(buf.append(8, return_overwritten=True))  # float 5.0
    

Supported input types

  • .append(float | int)

    • Accepts a single numeric value.
    • Value is stored internally as the buffer’s dtype.
  • .extend(Iterable[float | int])

    • Accepts any Iterable of numeric values.
    • The iterable is converted to a contiguous NumPy array of the buffer’s dtype.
    • If you pass an np.ndarray, it is only copied if,
      • Its dtype does not match the buffer’s
      • It is not C-contiguous
  • .extend_unchecked(np.ndarray)

    • Expects only a C-contiguous 1-D np.ndarray with the same dtype as the buffer.
    • This method skips dtype, contiguous array and dimension conversions/checks.

    Note: Using this yields the best performance, but if the array's dtype is different or if it is not contiguous, it will cause silent data corruption or crashes.

Mathematical Metrics

These metrics are computed on all elements.

  • .mean(): Mean of all elements.
  • .sum(): Sum of all elements.
  • .sum_squares(): Sum of squares.
  • .mean_squares(): Mean of squares.
  • .sum_and_count_gt(threshold: float | int): Returns a sum and count of elements above a threshold.

2. BlockingCircBuffer

Blocking producer/consumer circular buffer, suitable for multi-threaded applications.

This buffer blocks under these conditions:

  • The writer will wait if the buffer is full.
  • The reader will wait if the buffer is empty.

Constructor

def __init__(
    self,
    maxlen: int,
    dtype: (
        type[np.float32]
        | type[np.float64]
        | type[np.int32]
        | type[np.int64]
        | type[np.uint32]
        | type[np.uint64]
    ) = np.float64,
) -> None:

Writing to the buffer

  • .write_append(value: float | int, timeout: float = -1.0)

    • Accepts a single numeric value.
    • Value is stored internally as the buffer’s dtype.
    • timeout: Time in seconds to wait if the buffer is empty. Default is -1.0 (waits indefinitely). Use 0.0 to make it non-blocking.
  • .write_extend(data: Iterable[float | int], timeout: float = -1.0)

    • data: Data block to write.
      • Accepts any Iterable of numeric values.
      • The iterable is converted to a contiguous NumPy array of the buffer’s dtype.
      • If you pass an np.ndarray, it is only copied if,
        • Its dtype does not match the buffer’s
        • It is not C-contiguous
    • timeout: Same as .write_append
  • .write_extend_unchecked(block_np: np.ndarray, timeout: float = -1.0)

    • block_np: np.ndarray to write.
      • Expects only a C-contiguous 1-D np.ndarray with the same dtype as the buffer.
      • Skips dtype, contiguous array, and dimension checks.
    • timeout: Same as .write_append

    Note: Using this yields the best performance, but if the array's dtype is different or if it is not contiguous, it will cause silent data corruption or crashes.

Reading from the buffer

  • .read(n: int = NumCircBuf.constants.Limits.SIZE_MAX.value, timeout: float = -1.0, partial_read: bool = True) -> np.ndarray

    Reads items from the buffer.

    • n: Number of items to read. Defaults to the maximum possible buffer size.
    • timeout: Time in seconds to wait if the buffer is empty. Default is -1.0 (waits indefinitely). Use 0.0 to make it non-blocking.
    • partial_read: If True (default), returns available items (up to n) immediately. If False, blocks until all n items are available.
  • .read_into(out_array_np: np.ndarray, timeout: float = -1.0, partial_read: bool = True) -> int

    Reads directly into a pre-allocated np.ndarray of the same dtype as the buffer.

    • Returns the number of items actually read.
    • The number of items to read is determined by the length of out_array_np.
    • timeout and partial_read: Same as .read().
  • .read_into_unchecked(out_array_np: np.ndarray, timeout: float = -1.0, partial_read: bool = True) -> int

    Similar to .read_into

    • Skips dtype, contiguous array, and dimension checks.

    Note: Using this yields the best performance, but if the array's dtype is different or if it is not contiguous, it will cause silent data corruption or crashes.

Usage Example

import threading
import time
import numpy as np
from numcircbuf import BlockingCircBuffer

buf = BlockingCircBuffer(maxlen=1000, dtype=np.float32)
data = np.random.randn(1000).astype(np.float32)

# Pre-allocate a NumPy array with zeros for read_into.
# We use zeros instead of np.empty so that any unwritten elements are clearly visible
# — useful when inspecting random data.
read_into_arr = np.zeros(100, dtype=np.float32)


def producer():
    # Write an initial batch of 150 items
    buf.write_extend(data[:150])

    # Simulate a delay (e.g., waiting for network packets or sensor data)
    time.sleep(0.5)

    # Write the remaining 850 items
    buf.write_extend(data[150:])


def consumer():
    # We ask for 200 items, but the producer has only written 150 so far.
    # Because partial_read=True, it returns the 150 items immediately instead of waiting.
    received = buf.read(n=200, partial_read=True)
    print(f"1. Partial read: asked for 200, got {len(received)}")  # 150
    print(f"   Items left in buffer: {len(buf)}\n")  # 0

    # We ask for 300 items. The buffer is currently empty.
    # Because partial_read=False, this will block until the producer writes the next batch,
    # ensuring we get exactly 300 items.
    received = buf.read(n=300, partial_read=False)
    print(f"2. Strict read: asked for 300, got {len(received)}")  # 300
    print(
        f"   Items left in buffer: {len(buf)}\n"
    )  # 550 (850 new items - 300 read)

    # Reads directly into the pre-allocated array (size 100)
    received_count = buf.read_into(out_array_np=read_into_arr)
    received = read_into_arr[:received_count]
    print(f"3. Read into array: got {len(received)}")  # 100
    print(f"   Items left in buffer: {len(buf)}\n")  # 450

    # Reads everything left in the buffer
    received = buf.read()
    print(f"4. Read remaining: got {len(received)}")  # 450
    print(f"   Items left in buffer: {len(buf)}\n")  # 0

    # Non-blocking read: buffer is empty, timeout=0 makes it return immediately
    received = buf.read(timeout=0)
    print(f"5. Non-blocking read: got {len(received)}")  # 0

    # Non-blocking read_into: buffer is empty, returns immediately
    received_count = buf.read_into_unchecked(
        out_array_np=read_into_arr, timeout=0
    )
    print(f"6. Non-blocking read_into: got {received_count}")  # 0


# Start producer and consumer threads
producer_thread = threading.Thread(target=producer)
consumer_thread = threading.Thread(target=consumer)

producer_thread.start()
consumer_thread.start()

producer_thread.join()
consumer_thread.join()

Utility Buffers

Common Utility Buffer API

All utility buffer types expose the methods defined in Common Buffer API, and the following:

  • clear_cache(): Clears the cached metric.

Furthermore, all the buffers cache their metric value when the metric function is called and clear the cached metric value whenever the buffer is extended or appended to.

1. RunningMeanSqBuffer

Accumulator-capable circular buffer optimized for mean-square calculations.

Features fully vectorized operations, float-drift protection, and caching for mean-square.

Note: This buffer is not thread safe.

  • Concurrent reads during writes can return stale mean-square values
  • Concurrent writes can cause data corruption.

Constructor

def __init__(
    self,
    maxlen: int,
    operation_focus: Literal["extend/append", "calculation"],
    dtype: type[np.float32] | type[np.float64] = np.float64,
    recalc_threshold: int | None = 0,
) -> None:
Operation Focus

operation_focus: Literal["calculation", "extend/append"]

  • "calculation": O(1) statistics, higher per-write cost.

  • "extend/append": O(n) statistics, lower write cost.

Use the library utility determine_operation_focus to automatically select the best operation_focus. This function runs a small runtime benchmark and returns the appropriate Literal value for your use case:

def determine_operation_focus(
    buffer_type: type[RunningMeanSqBuffer] | type[RunningMeanBuffer],
    dtype: type[np.float32] | type[np.float64],
    buffer_maxlen: int,
    block_size: int, # Use 1 if you will be appending a single element only.
    calc_every: int, # Calculate every n blocks.
    verbose: bool = False, # Logs the exact relative multipliers,
                           # as well as total time spent in the function.
) -> Literal["calculation", "extend/append"]: # Outputs the best operation focus
                                              # for this (use case) + (system),
                                              # This can be directly passed to
                                              # the buffer init

Actual performance depends on buffer's maxlen, block size, overwrite rate, and statistics frequency. See PERFORMANCE.md for relative benchmarks.

Recalculation Threshold

recalc_threshold: int: Number of operations after which the accumulator is recalculated on all values in the buffer to reduce floating-point drift. Use 0 or None to disable.

Usage Example

import numpy as np
from numcircbuf import RunningMeanSqBuffer, determine_operation_focus

DTYPE = np.float32
CALC_EVERY = 2
BUFFER_MAXLEN = 1000
BLOCK_SIZE = 100

buffer = RunningMeanSqBuffer(
    maxlen=BUFFER_MAXLEN,
    operation_focus=determine_operation_focus(
        buffer_type=RunningMeanSqBuffer,
        dtype=DTYPE,
        buffer_maxlen=BUFFER_MAXLEN,
        block_size=BLOCK_SIZE,
        calc_every=CALC_EVERY,
        verbose=True,
    ),
    dtype=DTYPE,
)

# Add arrays/blocks
rng = np.random.default_rng(25)  # For random number generation
for i in range(10):  # Simulate time
    block = rng.random(BLOCK_SIZE, dtype=DTYPE)  # Mock block arriving
    buffer.extend(block)  # Extend with the block
    if (i + 1) % CALC_EVERY == 0:  # Calc every n
        print("-" * 10)
        print(buffer.mean_square())  # Get mean-square
        print(buffer.mean_square())  # Uses cached value

2. RunningMeanBuffer

Accumulator-capable circular buffer optimized for mean calculations.

Features fully vectorized operations, and caching for mean.

Note: This buffer is not thread safe.

  • Concurrent reads during writes can return stale mean values
  • Concurrent writes can cause data corruption.

Constructor

def __init__(
    self,
    maxlen: int,
    operation_focus: Literal["extend/append", "calculation"],
    dtype: type[np.float32] | type[np.float64] = np.float64,
    recalc_threshold: int | None = 0,
) -> None:

These work the same as in RunningMeanSqBuffer:

Usage Example

Works identically to RunningMeanSqBuffer — use .mean() instead of .mean_square()

3. IntegratedGatedBuffer

A specialized circular buffer for calculating gated loudness.

Features fully vectorized operations, and caching for gated mean-square.

Internal Storage: This buffer stores values representing signal power (the square of the amplitude). By default, input values are squared internally before storage. However, if already_squared is set to True during input, the values are stored as-is. Values retrieved via views will represent these squared values.

Note: This buffer is not thread safe.

  • Concurrent reads during writes can return stale gated mean-square values and inaccurate data
  • Concurrent writes can cause data corruption.

Constructor

def __init__(
    self,
    maxlen: int,
    abs_gate_lufs: float,
    rel_gate_lu: float,
    dtype: type[np.float32] | type[np.float64] = np.float64,
    recalc_threshold: int | None = 0,
) -> None:

recalc_threshold works the same as in RunningMeanSqBuffer.

Threshold Parameters
  • abs_gate_lufs: float The absolute loudness threshold in LUFS. Blocks with a mean-square power below this threshold are ignored during the first stage of the gating process.

  • rel_gate_lu: float The relative loudness threshold in LU. Blocks with a mean-square power more than this many decibels below the absolute-gated mean-square are ignored in the final integrated loudness calculation.

Usage Example

import numpy as np
from numcircbuf import IntegratedGatedBuffer

# Parameters for gated loudness calculation
# (We use the ITU-R BS.1770 standard constants for the example)
ABS_GATE_LUFS = -70.0
REL_GATE_LU = -10.0

buffer = IntegratedGatedBuffer(
    maxlen=3000,
    abs_gate_lufs=ABS_GATE_LUFS,
    rel_gate_lu=REL_GATE_LU
)

# Add the audio signal to the buffer.
# Input should be K-weighted and normalized to [-1.0, 1.0] as per ITU-R BS.1770.
block = np.random.uniform(-1.0, 1.0, 1000)
buffer.extend(block)

# Retrieve the final gated mean-square
gated_mean_sq = buffer.gated_mean_square()
print(f"Gated mean square: {gated_mean_sq}")

Exception Handling

Exceptions

NumCircBufError(Exception)
├── NumCircBufValueError(NumCircBufError, ValueError) ────────────────────────────┬─────┐
├── NumCircBufTypeError(NumCircBufError, TypeError) ─────────────────────┬─────┬─ │ ─┐  │
│   └── InvalidModification(NumCircBufTypeError)                         │     │  │  │  │
├── NumCircBufIndexError(NumCircBufError, IndexError)                    │     │  │  │  │
│   └── IndexOutOfBounds(NumCircBufIndexError)                           │     │  │  │  │
├── NumCircBufArithmeticError(NumCircBufError, ArithmeticError)          │     │  │  │  │
│   └── UnsupportedOperation(NumCircBufArithmeticError)                  │     │  │  │  │
├── NumCircBufRuntimeError(NumCircBufError, RuntimeError)                │     │  │  │  │
├── NumCircBufOSError(NumCircBufError, OSError)                          │     │  │  │  │
├── NumCircBufNotImplementedError(NumCircBufError, NotImplementedError)  │     │  │  │  │
└── NumCircBufInitError(NumCircBufError)                                 │     │  │  │  │
    ├── DataTypeError(NumCircBufInitError, NumCircBufTypeError) ─────────┘     │  │  │  │
    ├── BufferCapacityError(NumCircBufInitError)                               │  │  │  │
    │   ├── BufferCapacityTypeError(BufferCapacityError, NumCircBufTypeError) ─┘  │  │  │
    │   └── BufferCapacityValueError(BufferCapacityError, NumCircBufValueError) ──┘  │  │
    └── ConfigurationError(NumCircBufInitError)                                      │  │
        ├── ConfigurationTypeError(ConfigurationError, NumCircBufTypeError) ─────────┘  │
        └── ConfigurationValueError(ConfigurationError, NumCircBufValueError) ──────────┘

NumCircBuf exceptions are comprehensive and include context (e.g., the object/class that caused the error):

  • class_obj – the class where the exception occurred (may be None if no class is associated with the error).
  • obj – the instance that caused the error (may be None if instantiation failed or no specific instance is involved).
  • Various different attributes available based on the exception type.

Performance note: Some low-level Cython/NumPy errors may still propagate as native Python exceptions (ValueError, TypeError, etc.) to avoid redundant checks in performance-critical code.

Usage Example

try:
    buf.extend(data)
except exceptions.NumCircBufError as e:
    # Structured library errors; you can access `e.class_obj` and `e.obj`
    handle_numcircbuf_error(e)
except Exception as e:
    # Low-level errors from NumPy/Cython
    handle_low_level_error(e)

Warnings

NumCircBufWarning(Warning)
├── NumCircBufDeprecationWarning(NumCircBufWarning, DeprecationWarning)
├── NumCircBufFutureWarning(NumCircBufWarning, FutureWarning)
└── NumCircBufRuntimeWarning(NumCircBufWarning, RuntimeWarning)
    └── DataSizeWarning(NumCircBufRuntimeWarning)

All NumCircBuf warnings include class_obj and obj attributes (like exceptions).

Usage Example

import warnings
from numcircbuf import OverwriteCircBuffer, exceptions

buffer = OverwriteCircBuffer(5, "never")


# Example function that catches a NumCircBufWarning
def extend_and_catch(buffer, data):
    with warnings.catch_warnings(record=True) as caught_warnings:
        warnings.simplefilter("always")  # Capture all warnings
        buffer.extend(data)
        for w in caught_warnings:
            if isinstance(w.message, exceptions.NumCircBufWarning):
                print("Warning type:", type(w.message))
                print("Class of buffer:", w.message.class_obj)
                print("Buffer instance:", w.message.obj)
                print("Full message:", w.message)


# Trigger a warning
extend_and_catch(buffer, range(10))

Performance

NumCircBuf provides a suite of pre-allocated, contiguous-memory circular buffers engineered for low-latency ingestion and O(1) windowed analytics.

Benchmark Results

For detailed performance benchmarks, see the PERFORMANCE.md document which includes testing results across different buffer types and use cases.

Key Performance Highlights:

  • Throughput (extending 64 KiB of data to OverwriteCircBuffer):
    • Cold cache (data):

      • AMD R7700x (DDR5): ~35 GB/s
      • AMD R5600 (DDR4): ~30 GB/s
    • Warm cache (data):

      • AMD R7700x (DDR5): ~73 GB/s
      • AMD R5600 (DDR4): ~50 GB/s

Documentation

Changelog

See CHANGELOG.md for a detailed history of changes, including new features, bug fixes, and performance improvements.

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Support

For issues, questions, or feature requests:

Citation

If you use NumCircBuf in your research or projects, please cite it as:

@software{NumCircBuf,
  author = {Syed Basim Ali},
  title = {NumCircBuf: High-Performance Numerical Circular Buffers for Python},
  year = {2026},
  url = {https://github.com/basimali-ai/NumCircBuf},
  version = {1.2.0}
}

Acknowledgements

NumCircBuf is built on top of these technologies:

  • Cython for performance optimization
  • NumPy for numerical computing and integration

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

numcircbuf-1.2.0.tar.gz (268.0 kB view details)

Uploaded Source

Built Distributions

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

numcircbuf-1.2.0-cp314-cp314t-win_amd64.whl (191.4 kB view details)

Uploaded CPython 3.14tWindows x86-64

numcircbuf-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14tmusllinux: musl 1.2+ x86-64

numcircbuf-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (212.8 kB view details)

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

numcircbuf-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl (206.4 kB view details)

Uploaded CPython 3.14tmacOS 11.0+ ARM64

numcircbuf-1.2.0-cp314-cp314-win_amd64.whl (179.3 kB view details)

Uploaded CPython 3.14Windows x86-64

numcircbuf-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.14musllinux: musl 1.2+ x86-64

numcircbuf-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (216.3 kB view details)

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

numcircbuf-1.2.0-cp314-cp314-macosx_11_0_arm64.whl (193.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

numcircbuf-1.2.0-cp313-cp313-win_amd64.whl (177.8 kB view details)

Uploaded CPython 3.13Windows x86-64

numcircbuf-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.13musllinux: musl 1.2+ x86-64

numcircbuf-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (215.6 kB view details)

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

numcircbuf-1.2.0-cp313-cp313-macosx_11_0_arm64.whl (193.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

numcircbuf-1.2.0-cp312-cp312-win_amd64.whl (178.4 kB view details)

Uploaded CPython 3.12Windows x86-64

numcircbuf-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl (1.2 MB view details)

Uploaded CPython 3.12musllinux: musl 1.2+ x86-64

numcircbuf-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (217.3 kB view details)

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

numcircbuf-1.2.0-cp312-cp312-macosx_11_0_arm64.whl (193.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

numcircbuf-1.2.0-cp311-cp311-win_amd64.whl (185.6 kB view details)

Uploaded CPython 3.11Windows x86-64

numcircbuf-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.11musllinux: musl 1.2+ x86-64

numcircbuf-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (227.9 kB view details)

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

numcircbuf-1.2.0-cp311-cp311-macosx_11_0_arm64.whl (195.3 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

numcircbuf-1.2.0-cp310-cp310-win_amd64.whl (185.5 kB view details)

Uploaded CPython 3.10Windows x86-64

numcircbuf-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.10musllinux: musl 1.2+ x86-64

numcircbuf-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (230.1 kB view details)

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

numcircbuf-1.2.0-cp310-cp310-macosx_11_0_arm64.whl (197.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

numcircbuf-1.2.0-cp39-cp39-win_amd64.whl (186.0 kB view details)

Uploaded CPython 3.9Windows x86-64

numcircbuf-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl (1.3 MB view details)

Uploaded CPython 3.9musllinux: musl 1.2+ x86-64

numcircbuf-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl (230.3 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.24+ x86-64manylinux: glibc 2.28+ x86-64

numcircbuf-1.2.0-cp39-cp39-macosx_11_0_arm64.whl (197.8 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

File details

Details for the file numcircbuf-1.2.0.tar.gz.

File metadata

  • Download URL: numcircbuf-1.2.0.tar.gz
  • Upload date:
  • Size: 268.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numcircbuf-1.2.0.tar.gz
Algorithm Hash digest
SHA256 4eb7b4521b9ce02b0f394de51b4df2370d5031f3a6c57864382bd24417108d8e
MD5 ac1c63fd47307fc71d69d50e45061034
BLAKE2b-256 f69c9b443dbcf7c9adc3a15b12f3338e9301837aa6359633c60d6294c2bb0d59

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0.tar.gz:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314t-win_amd64.whl.

File metadata

  • Download URL: numcircbuf-1.2.0-cp314-cp314t-win_amd64.whl
  • Upload date:
  • Size: 191.4 kB
  • Tags: CPython 3.14t, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314t-win_amd64.whl
Algorithm Hash digest
SHA256 6a5f9ae39d9ddbab95a41add7a7f52e28677928f01ff2f83fcc44a973634f9a2
MD5 a7e35375b2f1ec4ab5acd960240ee3e2
BLAKE2b-256 7094f39174721f70171187e3cce86454ab7a4baa32c7de2e4d3d21d9050cef8a

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314t-win_amd64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ef0f09aa36078650ea61896a22860a2c0f7b33dbfbbbfe68cd7e5944484070fd
MD5 e899e984e82365818c565ab544ac0ac0
BLAKE2b-256 c94c72ed514af7c4da9c868cd471fb6e62c3b3ad984a6b7310a743ff0491c51f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314t-musllinux_1_2_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 d333d14cf7a340fbc1d08e8a6fcb50e63150303770af4723c9eea3522c7e77de
MD5 b3173e1ea130d251ac5cec4c12f9e1bb
BLAKE2b-256 fe46c25cab115c2cf096e90cee2e71edc69ee28623bd8786dcd7ac445ea08fb9

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 380fb7a00eedb92bc06eb843d665f874422532e59b6b95bef36136b5e8ad9056
MD5 ccc6b869208690cd50d7a34a6c046576
BLAKE2b-256 89ededc8e9614dc30a12ecf0de07c6b75b9d329dfde3d35b0eba691ac37682a1

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314t-macosx_11_0_arm64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: numcircbuf-1.2.0-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 179.3 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 a3866cf38d6667d5e66835a808a9ff6098045419f2f3146ff29e3adacc50498f
MD5 0a9e72c98046b88451b58f73fc8db692
BLAKE2b-256 201713617327a0b186b6cc42ea87e49198bc44c2bdb0d8bd84cd7679478b6cc8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314-win_amd64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 802df75732d673e7921f3a3f466384b1384b99b659f01f95c0cd8fa4fe3ed1bc
MD5 65247c48f59d9cad7cd5b1611f27d168
BLAKE2b-256 c97c9063417e60e1395fbd6d9aff90754526aa521909552f508b0ece0da47dde

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314-musllinux_1_2_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3ba7f30af372b5af98f7842b08f601ac1844e0f2f9714d59977155e0ddcc4169
MD5 2969a847a2a2f37892e68362e3dcad0d
BLAKE2b-256 2f8389d28bcd1cc878a4dc237deff120ea9e1b20aae59422cc3b153f0a652ae7

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 94985471c84b58e231f30d7dbfc0d9fbd9aa969cbb39b5fa84fad1826ca20fc6
MD5 d5f0deb5773f1af431546b2cbf29411f
BLAKE2b-256 2e1ad1eabd7ee960e4427529895d4d671816dfb6fce0208885339f81ecd6c7d4

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp314-cp314-macosx_11_0_arm64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: numcircbuf-1.2.0-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 177.8 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numcircbuf-1.2.0-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 3fe287898e391fe8d9d70c5737598de0e5cf58e9041a03f388774d9a9dcbf222
MD5 9ebc38ffd31f9b98dbebab12a7610e3a
BLAKE2b-256 7dd2b82815a3ab6b40747d47c0f7991f649289e398777d7fc581e4e4214d24b8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp313-cp313-win_amd64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 8506740df5c731373abf5d0e2e1b3edeb37d8e273aec5ace4046857248514752
MD5 366de47b87ae7022aebd6da426540c71
BLAKE2b-256 b67f93fa37146ea69b35b9ec125215a04c0e089339a720c93fc4c03f69b40313

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp313-cp313-musllinux_1_2_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 f2eaee0298055af0ebb748f61199d35f671e0bf4d03205079d4f14fab86590d6
MD5 3807da40925a9966c34b3783b103e684
BLAKE2b-256 8c94cb6a003c56c6832f8528940f2dd3b766034456807f40f7a0a4070b701308

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 8aeb32a32ea5cb108ee54cac953c53deb3e996e412a5f72555514003c2758f6c
MD5 066f511761da9d443fd1314c2b954792
BLAKE2b-256 94be2f7ab6b21ff331a848de8dfef862a28fc797b17411c74a02988ce335e5bd

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp313-cp313-macosx_11_0_arm64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: numcircbuf-1.2.0-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 178.4 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numcircbuf-1.2.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 08131021a6b0323a517970de2d700b887cade6611c1e6e7783e1bc5540dbe164
MD5 cffbb9c0d34d1f89dd5dbdd392ab7976
BLAKE2b-256 2b00a33aeb47b352295cd01da946108e2a4f9df2ba32352365804ab7030efe73

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp312-cp312-win_amd64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ec208215d546e6ab0b5a899aae7a543b2b590498e76bf77c5b132f9951dab269
MD5 d36b928268f21c8780584c75c7e65672
BLAKE2b-256 c89f896610c71f29fbc1b5dd13a88f4b938774af17c2596fa2087abaf71a8439

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp312-cp312-musllinux_1_2_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 23f552c601528b0afd371dab9b3d94fcf8539174e69fd72297e08883f336d8ae
MD5 77a87bda462e9f34f7c9481d3803ddb6
BLAKE2b-256 97909f72cd3cf0f367502c06773e5ab151cdf9b700f043fb57a48b9346664102

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bdfef465680cdfc2c25eb688fbcd0a77b5864ef366f2c08a406819dfd947793d
MD5 0baef6fab168f555f5caf0f1f6a5916d
BLAKE2b-256 d925791484afe1f62d98891b6881768e13c28e5e766ea0d8c3128fd24fe3b63d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: numcircbuf-1.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 185.6 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numcircbuf-1.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 c0b00d6ad664118f46c81ad2491e4c0cc78c0fdecfdc9b74c8ed559c0e9f815b
MD5 17825bf93951d0d52e84f0a3bcf5a7a3
BLAKE2b-256 9e5791a23f0fe5ffca7fbf9f897cf26bc8243a6f3bd5126d1ef3c9681748adef

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp311-cp311-win_amd64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 ce5f34634bde5addf678cfc6e7d67ca79c69b7abb195c48f151dcf56c37b1871
MD5 f003d9a09fbda37535e04b088329236c
BLAKE2b-256 af8bffabc2aac579f5ddf85efd350da9d77503420344a01afd0267b00d128880

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp311-cp311-musllinux_1_2_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 b2d777f6eb04f1823106f22f0d3f5156e41b13f7d7b6090b4b25f0702d5d2e23
MD5 0e50335bfbd60026dc05a818f1e07d61
BLAKE2b-256 c00fd37b0380c98b931fedc60b24894a4f840e8cb0c80ecf3f7f3ca3f4829d6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp311-cp311-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 cbd2ba889c451ba3cc8436aa9d4ec4e4c1ceef9fa987ac57165687489843dede
MD5 14f7bd9296f96c10dca84eb0384e8a0e
BLAKE2b-256 edc6a4e26a5f940e7740e296eeab56f7a2e3f5d7121c9ffc4e4549462f24c6e8

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp310-cp310-win_amd64.whl.

File metadata

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

File hashes

Hashes for numcircbuf-1.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 ed9c283bd46c139f950c98d321782a04669c3dbac8ed1e061a90e9d9626a10a3
MD5 19bcdf3ec605ae1710afd86527763eab
BLAKE2b-256 f8609f204d36a012dd034344d74eb1b009eeaf97cb0f8385ff99e1b48a51bc63

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp310-cp310-win_amd64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 da1dc4037331a371bd479cf4c2b4d8fec7aa2df6f6a559d829fe0f2fea21aac6
MD5 45eea8c4b8093c9c5af6d599fdb458f1
BLAKE2b-256 4618d1497c35bd3abdf927d6d73f6b0ffed8ddfcfcfe370ec8cd6433ad69397d

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp310-cp310-musllinux_1_2_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 72da3de5a5172313169d7fd8e11debd3bb70bc0da9f36ca1f2a0c95a83fe6b80
MD5 f75bbc5d8df48da5a7953c9ccdba6ec1
BLAKE2b-256 6bf446e3c2e1f3a29a4849985bef01d33721cef469398d43d208d47ec3841a21

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp310-cp310-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 95d736de6d11bd0afde578fade167ae16814ee5d990368ad28871106a979b430
MD5 c4754e1883a15cfe93818ada02220bf5
BLAKE2b-256 b499ac8f55aa4c3695edb94b5c403989a077f080540ebd5be217695250acca76

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: numcircbuf-1.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 186.0 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for numcircbuf-1.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 81bd139cf596a72039238f8a12d23efa3a6c3406c78feb2039b48633aee13ba6
MD5 58fc5a5810b466cd960b8847351005c0
BLAKE2b-256 2cdf72a807d522b1dccdd9c7db2e6461c50a0c3f9c01617261ee532b58272d6e

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp39-cp39-win_amd64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl
Algorithm Hash digest
SHA256 dab4ad597dfd6f76d7892d18b8a6e7529dc83a40cee67d988135f7798bf6da39
MD5 29f7ebce71b6fee460f6301582b7cca0
BLAKE2b-256 9192050a8054ee2cb77b09c4653c226a003a681fab113ed19b7229ae04415371

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp39-cp39-musllinux_1_2_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 2063417934c1f55c2db00717cfe244a8ccd4f7a1b01894bc9c2a1cc073b9a924
MD5 4118eacb671c2bad1bbd0956b96b1279
BLAKE2b-256 b37813c091e5d372c23202792b77fa99d2020f3555daa7490df917894ce43ecb

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp39-cp39-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file numcircbuf-1.2.0-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for numcircbuf-1.2.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 956ec2dbb45d4b79f311dae7d3e6a22926902eb0eb5fad9610c1206065da2042
MD5 1e65ef6d606b8c7d1241865b4dad6957
BLAKE2b-256 e8caba18877c5f44271ba071d1eb2849a46a98ca0efea727a821f40c8e4d736f

See more details on using hashes here.

Provenance

The following attestation bundles were made for numcircbuf-1.2.0-cp39-cp39-macosx_11_0_arm64.whl:

Publisher: upload_pypi.yml on basimali-ai/NumCircBuf

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

1.2.0 This release

29 files

1.1.2

29 files

1.1.1

29 files

1.1.0

29 files

1.0.3

29 files

1.0.2

29 files

1.0.1

29 files

1.0.0

29 files

Supported by

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