Skip to main content

Streaming async CSV — no fake async, no GIL stalls.

Project description

rapcsv

Streaming async CSV — no fake async, no GIL stalls.

PyPI version Downloads Python 3.8+ License: MIT

Overview

rapcsv provides true async CSV reading and writing for Python, backed by Rust and Tokio. Unlike libraries that wrap blocking I/O in async syntax, rapcsv guarantees that all CSV operations execute outside the Python GIL, ensuring event loops never stall under load, even when processing large files.

Roadmap Goal: Achieve drop-in replacement compatibility with aiocsv, enabling seamless migration with true async performance. See docs/ROADMAP.md for details.

Why rap*?

Packages prefixed with rap stand for Real Async Python. Unlike many libraries that merely wrap blocking I/O in async syntax, rap* packages guarantee that all I/O work is executed outside the Python GIL using native runtimes (primarily Rust). This means event loops are never stalled by hidden thread pools, blocking syscalls, or cooperative yielding tricks. If a rap* API is async, it is structurally non-blocking by design, not by convention. The rap prefix is a contract: measurable concurrency, real parallelism, and verifiable async behavior under load.

See the rap-manifesto for philosophy and guarantees.

Features

  • True async CSV reading and writing
  • Streaming support for large files
  • Native Rust-backed execution (Tokio)
  • Zero Python thread pools
  • Event-loop-safe concurrency under load
  • GIL-independent I/O operations
  • Verified by Fake Async Detector

Requirements

  • Python 3.8+ (including Python 3.13 and 3.14)
  • Rust 1.70+ (for building from source)

Installation

pip install rapcsv

Building from Source

git clone https://github.com/eddiethedean/rapcsv.git
cd rapcsv
pip install maturin
maturin develop

Usage

import asyncio
from rapcsv import Reader, Writer

async def main():
    # Write CSV file (one row per Writer instance for MVP)
    writer = Writer("output.csv")
    await writer.write_row(["name", "age", "city"])
    
    # Read CSV file (reads first row)
    reader = Reader("output.csv")
    row = await reader.read_row()
    print(row)  # Output: ['name', 'age', 'city']

asyncio.run(main())

Writing Multiple Rows

import asyncio
from rapcsv import Writer

async def main():
    # Write multiple rows with a single Writer instance (file handle reused)
    writer = Writer("output.csv")
    rows = [
        ["name", "age", "city"],
        ["Alice", "30", "New York"],
        ["Bob", "25", "London"],
    ]
    
    for row in rows:
        await writer.write_row(row)
    
    # Verify file contents
    with open("output.csv") as f:
        print(f.read())

asyncio.run(main())

Note: The Writer reuses the file handle across multiple write_row() calls for efficient writing. The Reader maintains position state across read_row() calls and streams data incrementally without loading the entire file into memory.

Using Context Managers

import asyncio
from rapcsv import Reader, Writer

async def main():
    # Using context managers for automatic resource cleanup
    async with Writer("output.csv") as writer:
        await writer.write_row(["name", "age", "city"])
        await writer.write_row(["Alice", "30", "New York"])
    
    async with Reader("output.csv") as reader:
        row = await reader.read_row()
        print(row)  # Output: ['name', 'age', 'city']

asyncio.run(main())

aiocsv Compatibility

rapcsv provides compatibility aliases for aiocsv:

from rapcsv import AsyncReader, AsyncWriter  # aiocsv-compatible names

async def main():
    async with AsyncWriter("output.csv") as writer:
        await writer.write_row(["col1", "col2"])
    
    async with AsyncReader("output.csv") as reader:
        row = await reader.read_row()
        print(row)

asyncio.run(main())

API Reference

Reader(path: str)

Create a new async CSV reader.

Parameters:

  • path (str): Path to the CSV file to read

Example:

reader = Reader("data.csv")

Reader.read_row() -> List[str]

Read the next row from the CSV file.

Returns:

  • List[str]: A list of string values for the row, or an empty list if EOF

Raises:

  • IOError: If the file cannot be read
  • CSVError: If the CSV file is malformed or cannot be parsed

Note: The Reader maintains position state across read_row() calls, reading sequentially through the file. Files are streamed incrementally without loading the entire file into memory.

Context Manager Support:

async with Reader("data.csv") as reader:
    row = await reader.read_row()

Writer(path: str)

Create a new async CSV writer.

Parameters:

  • path (str): Path to the CSV file to write

Example:

writer = Writer("output.csv")

Writer.write_row(row: List[str]) -> None

Write a row to the CSV file.

Parameters:

  • row (List[str]): A list of string values to write as a CSV row

Raises:

  • IOError: If the file cannot be written

Note: The Writer reuses the file handle across multiple write_row() calls for efficient writing. Proper RFC 4180 compliant CSV escaping and quoting is applied automatically.

Writer.close() -> None

Explicitly close the file handle and flush any pending writes.

Example:

writer = Writer("output.csv")
await writer.write_row(["col1", "col2"])
await writer.close()

Context Manager Support:

async with Writer("output.csv") as writer:
    await writer.write_row(["col1", "col2"])
    # File is automatically closed and flushed on exit

Exception Types

CSVError

Raised when a CSV parsing error occurs (e.g., malformed CSV file).

CSVFieldCountError

Raised when there's a mismatch in the number of fields between rows.

Testing

rapcsv includes comprehensive test coverage with tests adapted from the aiocsv test suite to validate compatibility:

# Run all tests
pytest

# Run aiocsv compatibility tests
pytest test_aiocsv_compatibility.py -v

# Run all tests with coverage
pytest --cov=rapcsv --cov-report=html

The test suite includes:

  • Basic read/write operations
  • Context manager support
  • Quoted fields with special characters
  • Large file streaming
  • Concurrent operations
  • aiocsv compatibility validation

Benchmarks

This package passes the Fake Async Detector. Benchmarks are available in the rap-bench repository.

Run the detector yourself:

pip install rap-bench
rap-bench detect rapcsv

Roadmap

See docs/ROADMAP.md for detailed development plans. Key goals include:

  • Drop-in replacement for aiocsv (Phase 1)
  • Full streaming support for large files
  • Comprehensive CSV dialect support
  • Zero-copy optimizations

Related Projects

Limitations

Current limitations:

  • No advanced CSV dialect support (delimiters, quote characters, line terminators) - planned for Phase 2
  • No header detection or manipulation - planned for Phase 2
  • Not designed for synchronous use cases

Phase 1 improvements:

  • ✅ Streaming file reading - files are read incrementally without loading entire file into memory
  • ✅ Context manager support (async with) for automatic resource cleanup
  • ✅ CSV-specific exception types (CSVError, CSVFieldCountError)
  • ✅ Improved error handling with detailed error messages
  • close() method for explicit file handle closure
  • ✅ aiocsv compatibility aliases (AsyncReader, AsyncWriter)
  • ✅ Comprehensive test coverage (29 tests including aiocsv compatibility tests)
  • ✅ aiocsv test suite migration - tests adapted from aiocsv test suite

Changelog

v0.1.1 (2026-01-16)

Python 3.14 Support:

  • ✅ Added Python 3.14 support with ABI3 forward compatibility
  • ✅ Updated CI/CD workflows to test and build for Python 3.14

Python 3.13 Support:

  • ✅ Added Python 3.13 support with ABI3 forward compatibility
  • ✅ Updated CI/CD workflows to test and build for Python 3.13
  • ✅ Fixed exception handling for ABI3 compatibility (using create_exception! macro)
  • ✅ Explicitly registered exception classes in Python module

Bug Fixes:

  • Fixed exception registration issue where exceptions created with create_exception! were not accessible from Python

Compatibility:

  • Python 3.8 through 3.14 supported
  • All platforms: Ubuntu (x86-64, aarch64), macOS (aarch64, x86-64), Windows (x86-64, aarch64)

v0.1.0 (2025-01-12)

Version 0.1.0 - Phase 1 Complete:

  • ✅ Streaming file reading - files are read incrementally without loading entire file into memory
  • ✅ Context manager support (async with) for automatic resource cleanup
  • ✅ CSV-specific exception types (CSVError, CSVFieldCountError)
  • ✅ Improved error handling with detailed error messages
  • close() method for explicit file handle closure
  • ✅ aiocsv compatibility aliases (AsyncReader, AsyncWriter)
  • ✅ Comprehensive test coverage (29 tests including aiocsv compatibility tests)
  • ✅ aiocsv test suite migration - tests adapted from aiocsv test suite

Previous improvements (v0.0.2):

  • ✅ Security fixes: Upgraded dependencies (pyo3 0.27, pyo3-async-runtimes 0.27), fixed CSV injection vulnerability
  • ✅ Position tracking: Reader now maintains position state across read_row() calls
  • ✅ File handle reuse: Writer reuses file handle across multiple write_row() calls
  • ✅ CSV escaping: Implemented RFC 4180 compliant CSV escaping and quoting
  • ✅ Input validation: Added path validation (non-empty, no null bytes)
  • ✅ Improved error handling: Enhanced error messages with file path context
  • ✅ Type stubs: Added .pyi type stubs for better IDE support and type checking

Roadmap: See docs/ROADMAP.md for planned improvements. Our goal is to achieve drop-in replacement compatibility with aiocsv while providing true async performance with GIL-independent I/O.

Contributing

Contributions are welcome! Please see our contributing guidelines (coming soon).

License

MIT

Project details


Download files

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

Source Distribution

rapcsv-0.1.2.tar.gz (35.0 kB view details)

Uploaded Source

Built Distributions

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

rapcsv-0.1.2-cp314-cp314-win_arm64.whl (403.0 kB view details)

Uploaded CPython 3.14Windows ARM64

rapcsv-0.1.2-cp314-cp314-win_amd64.whl (442.4 kB view details)

Uploaded CPython 3.14Windows x86-64

rapcsv-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl (532.7 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

rapcsv-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl (514.3 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

rapcsv-0.1.2-cp314-cp314-macosx_11_0_arm64.whl (481.8 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rapcsv-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl (491.5 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

rapcsv-0.1.2-cp313-cp313-win_arm64.whl (402.8 kB view details)

Uploaded CPython 3.13Windows ARM64

rapcsv-0.1.2-cp313-cp313-win_amd64.whl (442.5 kB view details)

Uploaded CPython 3.13Windows x86-64

rapcsv-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl (533.2 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

rapcsv-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl (513.7 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

rapcsv-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (481.8 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rapcsv-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl (491.3 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

rapcsv-0.1.2-cp312-cp312-win_arm64.whl (404.4 kB view details)

Uploaded CPython 3.12Windows ARM64

rapcsv-0.1.2-cp312-cp312-win_amd64.whl (443.9 kB view details)

Uploaded CPython 3.12Windows x86-64

rapcsv-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl (532.9 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

rapcsv-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl (513.1 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

rapcsv-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (483.8 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rapcsv-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl (492.1 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

rapcsv-0.1.2-cp311-cp311-win_arm64.whl (406.8 kB view details)

Uploaded CPython 3.11Windows ARM64

rapcsv-0.1.2-cp311-cp311-win_amd64.whl (444.4 kB view details)

Uploaded CPython 3.11Windows x86-64

rapcsv-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl (535.2 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

rapcsv-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl (516.1 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

rapcsv-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (484.9 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rapcsv-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl (494.6 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

rapcsv-0.1.2-cp310-cp310-win_amd64.whl (444.6 kB view details)

Uploaded CPython 3.10Windows x86-64

rapcsv-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl (535.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

rapcsv-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl (516.1 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

rapcsv-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (485.2 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rapcsv-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl (494.6 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

rapcsv-0.1.2-cp39-cp39-win_amd64.whl (445.5 kB view details)

Uploaded CPython 3.9Windows x86-64

rapcsv-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl (536.4 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

rapcsv-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl (517.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

rapcsv-0.1.2-cp39-cp39-macosx_11_0_arm64.whl (487.1 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rapcsv-0.1.2-cp39-cp39-macosx_10_12_x86_64.whl (496.9 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

rapcsv-0.1.2-cp38-cp38-win_amd64.whl (445.2 kB view details)

Uploaded CPython 3.8Windows x86-64

rapcsv-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl (536.8 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

rapcsv-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl (519.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

rapcsv-0.1.2-cp38-cp38-macosx_11_0_arm64.whl (487.9 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

rapcsv-0.1.2-cp38-cp38-macosx_10_12_x86_64.whl (497.1 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

Details for the file rapcsv-0.1.2.tar.gz.

File metadata

  • Download URL: rapcsv-0.1.2.tar.gz
  • Upload date:
  • Size: 35.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2.tar.gz
Algorithm Hash digest
SHA256 61e040ab5b087b49c71d80fb9b57234fa5d1dd1fcbebc1532660b7a6ac4d20b0
MD5 b6bcb516909ccebe4f8487defcc1f003
BLAKE2b-256 b661ea4f57de57e0e78ed4686291ec611a2c458c4ac8cc9ecdcaf8fc74f47f9c

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp314-cp314-win_arm64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 403.0 kB
  • Tags: CPython 3.14, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 5bbd35cfbcb454b2000eab53b9b61543e22743c14d7cc7e85b8a8f0c828a666e
MD5 7160c66b88df45380e1e12c7c1a74d34
BLAKE2b-256 8c7c035b0e06b7ae77bf3fcf3097ee2f20a4a7d278840042c3300be21b91df86

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 442.4 kB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 945830c7c6d5ba1363f39b1bb0bbfba008ae2d46d95addc74f2ff044a9960037
MD5 27d70ceb57c55bf96bc82f54fdcfbe1a
BLAKE2b-256 99d8e9e5c8be5f295ce761db6f6caa498d3dc1dbade0cc42b41af82e32b67400

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 eaac6d2e3adeefa8e123e23746a8ca0ca31160097da8cfbfbed12f5dfc44a05e
MD5 5dccae1aeef612da07d5974085bbbd7d
BLAKE2b-256 332fd31494e3a351334defdbadaa291d59f9201cb886e4446d8f555d6e2f2f36

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 00fdd6fefc8f6cfe74e944410e9984fa81d70f6e47f505f5cfa2e103e58b8612
MD5 fd49de5f3d6d21097f9e7c0b3d238ab3
BLAKE2b-256 6fece9f2d0a68c37b26e6dbd6c44c2ddd3472b489f4ee4a91a401e1a506d80d4

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 045d0aefe3ab725e5664ad10757913701d86cbaf9a5b736db6d67edf27c2fe44
MD5 1982431c5471e88dbec772502f6a26d3
BLAKE2b-256 2b007714e84f39eaa00b6e78050dc0f2b89b597303f8ca2ed4fd0e72672074ff

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 13940aef4c20f28d701bdaa630b77d5d77fc80fbf4a99719de56f94c6fca4e3a
MD5 bc6f7159917b64114c4a2a1c5a4f9730
BLAKE2b-256 cf0597c0731489cb30d0fcfae855808bd6931300142f15a86dd8685cdd8935c1

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp313-cp313-win_arm64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 402.8 kB
  • Tags: CPython 3.13, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 50ebb12c23a931b36928814c4eac29f370cb966bc94609dbad653c7b6f3599c1
MD5 a762738dec77178e839251be52a0b405
BLAKE2b-256 576dc95e4dee487a47e4a5e898d0ab6f5c6fbb1aeac984f4e5a1439b1637d7e4

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 442.5 kB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 8451851e459b4c1d041c9a69dfa4af9553558bc51534ac1f015e52114fb611d2
MD5 e7a4b30620f3a723707b81e0b1df027b
BLAKE2b-256 205a45a6ac91815c9567bc49ec7a6e7c18b6f93bbfa4d88157d5f7b883065de1

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 e67ab1583a0714bdab4f3863439fffebbd85f63855bcc0944c9be6b093762c8a
MD5 bfd2b13962e156058791feab709c0292
BLAKE2b-256 0f1c6d2049d8561c051b718761e10f7bbc1ae0d99757ee4be052bf5e187ddc16

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3679ff88d6f7e8c3830b75539af38769bf2377a0ef4fd5f3473e33af69e80bd4
MD5 70de4678937059b7732b8aa725402cc9
BLAKE2b-256 3c382b0dce1dec87b57b3b2c93d871ae57ff2eefc6d43777ef58cde2de70a9f5

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 9072f373ca0e647386c8da59056d0c14d71d07f6df2ca90f21b043b001260023
MD5 d72629e2beba41bdeeb1f53cb1a72ecc
BLAKE2b-256 66d04bfbcf09392cfea672e1b32e11d7b38bc9754954c6432b89ee30f7f5c70d

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 a8299b80c9ccc7c57b31f86527909f2b26ac4ba69c611739fae8717ec08904aa
MD5 30c53764f9982bfc26e6d7e00f32798c
BLAKE2b-256 2d0adc6c0acd1c0c00ee63e6f055b8bde8f42d7443f7daa97c34fc5501580c66

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp312-cp312-win_arm64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 404.4 kB
  • Tags: CPython 3.12, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 abc51ca8c39e16a804da93bb31d22b61be61fd108db70828dd8e36a2a4a3ffb2
MD5 821ff8680b1d7b0abdb6d277c0a1d4e0
BLAKE2b-256 0fc3193c3d9be77b956af034d218be9fc22f06ade5d7afcdb8f04356204f73f3

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 443.9 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 4c8247d56a0e3fd4baa85e1bd10fd8dab4688b7d47b115ab7456aeda33d9525b
MD5 be9725157a9a1494ffaf0aeccd22f30d
BLAKE2b-256 6778289c4f1c7e0d57e888ae63a1753e34a437a71cd40e18ff0190b4d8243680

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3f304514f088b409aa4f40a2728936e1eef0d1470113dd211e66c5ccc4ca47c8
MD5 ec77372e6bba4256fab87ecdd7e67971
BLAKE2b-256 42ebce0133d96d9751b8ad9d81a9c27ab432cd840b5bc675d613257372129537

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 2f4153769a5d7a9d4993d97daa1ba01420f27a85277d14b9a11e7339ce64d8e2
MD5 b326c22b2c66370ba79ea3fa3d603d97
BLAKE2b-256 66eb28222cacc98f01d00e64d962b65df88a4c83b05ea36f60c4fb5be8d7a267

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7ed137e47d8ba80e4fdbc91bdb0a0c85852a8e0bfeb547492401332a3b8c1522
MD5 53deefc948cbb25e85d61614e21f36e7
BLAKE2b-256 843ffb6c8840c4cb4ad08afdf47e4536c64242e45f5f8c6aab964908a93c5c5c

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6171cecda41388ffc8ebd5089bb0a9ad6bf6e0e9a4989c697992a4c9f4d4bf65
MD5 4772eb98d01708d9f66e79c04e0bea69
BLAKE2b-256 469d9f88809e165f6d6a9de4340745e3b6f6a9d599579329db16199a558adc04

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp311-cp311-win_arm64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 406.8 kB
  • Tags: CPython 3.11, Windows ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 f8d38ebb89ade53720ccbf0dbdcc8ba335158a666651b64ec68c954b979c436a
MD5 7752525cb4e0acce59b4413d65f1bd83
BLAKE2b-256 6ff35793c4f0d9e040becbbb4d445fe795ae02e0453ef0c54baa49d35940cf49

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 444.4 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6df63f7f8a4379e3687439e8f5b1bd0090e7b8bf33eca4e626d6a1a1f76305db
MD5 622693bebdb7ce9f3965874ac7053ede
BLAKE2b-256 5ce7d1fad2f75488ea73ad35ac0c9e11a52e8099fb1ea26364abe71b1204f9b5

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45c57dd762927f961c4cd33a4927d0fcbd15a7c17097c780a6b898d1aed9be82
MD5 3f52722435848a0234d06032dd992c8c
BLAKE2b-256 1b760a075f2f8d95bfd509bdcd705fc445010f80880e68c49ae3f695239018d6

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0020bd7c6e38eb4344dbaa676ec768858f2e8382ea8317532453a5f06e93bb84
MD5 7d60012aef960973925bcd99073e31ef
BLAKE2b-256 fb6db2560a1a944c5df728858de3198091b8d1ff3069ac661061160b8ae942aa

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 23c7fbcb4db8d9bd806481a0c76195f3d99deaa9296aca5a3b8c388914e2f8de
MD5 d15b678442cc0b264afb8eafddc21a33
BLAKE2b-256 ac4599990427916c6d9819f16c1f55c2b0af6cbd8d56b994f46b8c6dd2450470

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 fd34a98b5ce9cb03130bfb0ac7b70bcb71c211553bc83d13725de027758744d0
MD5 d2f1ce18ce7dccd28b2fa478b21113bc
BLAKE2b-256 c8e26783e4366dd5831e439c163be82ce48395ab2281cdc02e777768d97161af

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 444.6 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4030081a032421226fceb7a7145d639208e1982466afb467675a1ef422a85509
MD5 f19e4ae2b9d3bd97184ea27aa722516d
BLAKE2b-256 99f568e1dbde052f2b7431243a27e92f36c091e5076f70e1134d63e1f209d60c

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 43ba7ded376555fa921aac015438c996beac0c88683c3e13e20427a12546f9ec
MD5 a66b68b46fefd42ca3fc36d13b10be00
BLAKE2b-256 25fd08a51b892fdf9dd35c51972fedb07616fbffcf096f60bd1c417509712254

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 6eeb82628daf194950e1b8694f8a6fe104edee479ea3e15400dc09872eefbc02
MD5 323797b8bbf71ffaf69416268f5d2e49
BLAKE2b-256 f0a6c250574c8fd0505dc26e8ea13aa542b93f1715d8ef9d1e4c59041092bc79

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b7ffd45fb38065e3b7e2c0d703a482c8aa7605b87e53ee1eda96cfba19a2071f
MD5 829c2520eb9b3dd8eb0b5507abf77174
BLAKE2b-256 597c3ec19c03396add74de3ecedad0324f236a2e1088883b19d1b0ecaeea1006

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0c0372c598250c0f7cb19411e33c86c8ad0e427e246e44821ff200861074a35a
MD5 963370847766c93a2674dc6ce5d1ef7e
BLAKE2b-256 e182ddf186e101d0f6a9859429fb085c6b0e2f307e148c43d230dbc0060fdf86

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 445.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 158bab4c869f46e8b81965c5490d758df3199a106f62638745720dcc381824fe
MD5 b10c6f45a01e4b75858af6d8e5bcc08d
BLAKE2b-256 7d28378af2346f7f02be7dee021c3767ccee1fe2b7ddb3e8e54b88db57373a26

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 92917c8b8f0ec979e00569dc305b7a85ab268c20978a5d102de532378f0c93ca
MD5 de0f0826ccc03fe282f510847f2050f3
BLAKE2b-256 681a16a5e6dccfe487dc47c5c7f51bc0197f86daa7103a1da5ce556e351ab216

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 245c60d174908a38c8312c075439a363e2670549dc691d9ad6891ebadec65066
MD5 2e5836e3c9b2eb8c8628beeb1349a2e3
BLAKE2b-256 31a03bb3a609fc21176064bcc430b5b366a7b048bb4f1cad49913858e2bc0285

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ef93983bf57ea2a31c82ed7cf83ffbb589ee63837055a7f3114b77a29a11a1da
MD5 8cc929f47221b162268827d3a1d5831b
BLAKE2b-256 b70b6e2aec1865fd189c7abb96751db0b0c4d582bb997656a46d5c8defa8d4e1

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp39-cp39-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 dca15e96fd3718c066373d167922c9db53176df0c0fee47a5db780a92a783af7
MD5 f5d22dab3c29ae41e7a2441deb6df780
BLAKE2b-256 dbacbf207cf38d297dc2d95b9ad61b01283a04091a25896662709b68a10fdb98

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: rapcsv-0.1.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 445.2 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.3

File hashes

Hashes for rapcsv-0.1.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 61ba65002ffa501cd98f9657b525c04ade747777ae866aa3f915d3a8ffd6d66e
MD5 985b1ed77d444bfc0dc1206efeb49ae6
BLAKE2b-256 fc3bb73eec912c58334dfd1a687591cf2981e88545fdfde0c2ad9edf15f18d78

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 45a716759915a705534de705ad929f93b027a986842db1cd13d24098defd2dab
MD5 0fbf189b573a25bf7fc94773029ccf2b
BLAKE2b-256 53c034856b1ae925500e30fcc8c5c3b05e9e00bec39b8af00fb1c3f582194a23

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 50ce47caeb33a8cc63426d432932f40a6ef83a24a3df11ad1256ae06a5f6fbee
MD5 55f73b045242f8ab2879d7074ad4ba62
BLAKE2b-256 f2b493ff7095da4b4b5ab892e0bd3ed72a2d861073f4fdc17f1bbba60cbec89e

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 ba25000b44091f55972da7bc97e414960482910989a5c0abe624c5939f924977
MD5 dba203b3b0907eb77dc467eb2779f427
BLAKE2b-256 43a961b7c96086f8eb67a2f06f6e975ce65f59b02331817b2b8a654e1a20c1a5

See more details on using hashes here.

File details

Details for the file rapcsv-0.1.2-cp38-cp38-macosx_10_12_x86_64.whl.

File metadata

File hashes

Hashes for rapcsv-0.1.2-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 76f1fafe4740b049e809132457bfa6fd4dc07d351a9221def4b6b953ff9beb09
MD5 3a4e44cb582f2ad8da5e9eb4222f615c
BLAKE2b-256 533f0b3a33182512002d32d0e0596d8d82b6c3f583ad969478e2eebdfcb33f22

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