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+
  • 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

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

Changelog

See CHANGELOG.md (coming soon) for version history.

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.1.tar.gz (34.5 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.1-cp313-cp313-win_arm64.whl (402.4 kB view details)

Uploaded CPython 3.13Windows ARM64

rapcsv-0.1.1-cp313-cp313-win_amd64.whl (442.3 kB view details)

Uploaded CPython 3.13Windows x86-64

rapcsv-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl (532.8 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

rapcsv-0.1.1-cp313-cp313-manylinux_2_28_aarch64.whl (513.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

rapcsv-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (481.7 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rapcsv-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl (491.2 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

rapcsv-0.1.1-cp312-cp312-win_arm64.whl (404.0 kB view details)

Uploaded CPython 3.12Windows ARM64

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

Uploaded CPython 3.12Windows x86-64

rapcsv-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl (532.5 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

rapcsv-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (483.7 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rapcsv-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl (491.9 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

rapcsv-0.1.1-cp311-cp311-win_arm64.whl (406.2 kB view details)

Uploaded CPython 3.11Windows ARM64

rapcsv-0.1.1-cp311-cp311-win_amd64.whl (444.3 kB view details)

Uploaded CPython 3.11Windows x86-64

rapcsv-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl (534.7 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

rapcsv-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl (494.7 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

rapcsv-0.1.1-cp310-cp310-win_amd64.whl (444.4 kB view details)

Uploaded CPython 3.10Windows x86-64

rapcsv-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl (534.6 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

rapcsv-0.1.1-cp310-cp310-manylinux_2_28_aarch64.whl (516.2 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

rapcsv-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl (494.7 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

rapcsv-0.1.1-cp39-cp39-win_amd64.whl (445.4 kB view details)

Uploaded CPython 3.9Windows x86-64

rapcsv-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl (536.0 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

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

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

rapcsv-0.1.1-cp39-cp39-macosx_11_0_arm64.whl (487.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.12+ x86-64

rapcsv-0.1.1-cp38-cp38-win_amd64.whl (445.1 kB view details)

Uploaded CPython 3.8Windows x86-64

rapcsv-0.1.1-cp38-cp38-manylinux_2_28_x86_64.whl (536.4 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

rapcsv-0.1.1-cp38-cp38-manylinux_2_28_aarch64.whl (519.3 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

rapcsv-0.1.1-cp38-cp38-macosx_11_0_arm64.whl (487.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

rapcsv-0.1.1-cp38-cp38-macosx_10_12_x86_64.whl (497.0 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

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

File metadata

  • Download URL: rapcsv-0.1.1.tar.gz
  • Upload date:
  • Size: 34.5 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.1.tar.gz
Algorithm Hash digest
SHA256 9bace84dd869308fce3bada09225c02c2386fe082948199063b6c3c2779f8a94
MD5 20aa764f666200c09f3a2a95fff7cd05
BLAKE2b-256 36679ba6642ae08edf1ce6c3a3ec51513e81aba08d41127f4fe274be5b8548f9

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 402.4 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.1-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 7301e52d523a12fed4de5f45fc7daf71d0860ef3a0cc9d4fa548982ed48ce6d8
MD5 59e54d4fcc3016e4eb1f7329f3c9081d
BLAKE2b-256 cbdc92b1b5bc4af26b28a0f934fbd03e9b5fc6d4a5d0225d7243641ad9763e4a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 442.3 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.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 f01beae8a6a2c5804a3d99bbbcab2113f9757b1b503048b4640f85888f8497dd
MD5 3f9a67a053408f81fd39b729a2fa6969
BLAKE2b-256 85a66736e0037b3a013d38ea9204d29099f151613d71df756136a0428793ee73

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 37f33d417a1ffcbb61531e71597e04bd8a0ac092c0e80d435dd1e756a12bd8da
MD5 dbb1a1d4d41c6693caa6980557740d97
BLAKE2b-256 31db2aa4fd5b18d4bed6c300a267009ef3e92b23e3378d02b981313ab9bcbedd

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 24e9013e8abf6736998d1a89201f79feb23837af20429615c552b02d6acee420
MD5 f4900e84a30941f4698e06dd5b225864
BLAKE2b-256 395d31e4fcbcb24674aaf767821da20dee1c69d4b2b121e43a60dde43e26c1aa

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a5405a31f5808903f7dedc609dc432b167881d6e3e983464afe82d6e1be4b157
MD5 ac78ac0db48fda46f3ab9f4509606a28
BLAKE2b-256 b724552d090f9508dde634f6388eb4fecb0e048579fd73429732e1528ba27596

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 31df9322c37d44f722bcee125c045322e81679334e084cec639d2c46c5f5cc24
MD5 7a6231545e38146d6d429deec64c61b5
BLAKE2b-256 01f87695a1bae0a94bfb73d2cf410acd1b6f6264cba4299936341a259881618e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 404.0 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.1-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 56f330e3f9e559ec331b2912b6b71442f369c12c66a6434ab2fc6efa6868db7a
MD5 dafe7e2de83eb8f419cad5ade15b1cd0
BLAKE2b-256 f416b4094d4b4118e4735a37817b8b5b5c59d2d69c5bf2c660ff26df1a12b63d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-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.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c04b1522b4a59010938cef890c90f6008f4eb219911f215db1ff3b57bc815e83
MD5 c2b6eb56e344019a2ac8e54252254cf4
BLAKE2b-256 af29280b7eff4b177b9cce42794aa1515bd75e9c13bc00b8ed58c8e5c6b848dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 46b61f6fa6b619eae63fa0781f6ae7925f587f7e38ce9d9d6a60e88ff50715f3
MD5 ba3bf0ebd8c5f6216c79dbfa8a0f9bb5
BLAKE2b-256 ce2f1e49b45c3e285903e00986ed60b45cf3bfdec80fb92258146691ab0107d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ff42f8341f1c4d0f27d2dc51c279985a119d09c57271a3e98a8ffdc6c785f7e0
MD5 6a511688628609151fd51889103db67b
BLAKE2b-256 1848d34605bad806b5d50058075b0ab781935da7069c23afebbe21d0bb86ad38

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 085b38ebb4c2672c311891f9272914d0accb8458d7df34042f545865dc55f6e8
MD5 0c8e4a61fef5148bd8774b95cb4b35cb
BLAKE2b-256 d36498b9b8ed18b6f77dfed7008f6a8f97824472122bcb22a599e6e3f727a0e8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 92f4dd80a49a70a819aedd30bf4ef7f89de0f096f16cd96a4cfc2e64c0b15362
MD5 4023391508507cfc590817ed7f4986ff
BLAKE2b-256 5b5e135c706f7d6eca6b16deafe4087f883edd96525c8734c55f62712fd716b3

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 406.2 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.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 0d1fe4cccdba92bcb55bebac2857fedae9514cb0690bfbe6cf5cf00e15623888
MD5 22bd7475bd769835f33dcb4d807afc60
BLAKE2b-256 ab2a5f488a274b55c933abd928c88856245b02f3246e7981d2eadf610edfdbf5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 444.3 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.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 9b197596ee997f8f6c4b686d792166752f6de9d9455561a1982d1e3944155490
MD5 7d27d27b301a1e7cbfa1fbd071099878
BLAKE2b-256 57da4827ca3250637ebadba2a712aa160a50cf1f91ac5d47e468bf19cfcc2743

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 de85f3df5d136b6b11ebebb54670ddeef8790d2501d191e18259ac7d0efefb09
MD5 75599cb968c9797c1fce1904a431eec0
BLAKE2b-256 1fe5f4900dc7557408403c70ad39379a47bb7004816af32927153ebb9b565054

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 0755b7fed550d645e1ba4cfedebf34258e359d8c993f30c1b99ce26ecdb67029
MD5 4c692a6c987a38e81b4e2a9dda2c68e9
BLAKE2b-256 38c4f9fd12f943e4a4dddf1fd5f8b31466aaff89bf3152b391500611f5d6404d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 43e27c90059602831b92209261793c5f6a187ab18b38443f729e5dfe6751fb83
MD5 567ce85e4b567f65be4fdaf342284755
BLAKE2b-256 a9f4ce344cb85c381efb43710186b5bafbd188c45362d9cd5bb3b2c1cc3ae209

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 38363630335dc87591da03375d58f2e627c68c2d9ae71e1be3def7d27a4f5010
MD5 b5295ce3b8c6d94b4308244035435748
BLAKE2b-256 97f5c769d4cf6d846016f8549ab0b38689ac7554b4bd1e407fbfa75d87cfe494

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 444.4 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.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 4f178bc47b08f3d67bb098d6dd25b0e8fc101a4faa0123a88bcfde2096332b20
MD5 e93b7f12f61b904388b17876d5423b92
BLAKE2b-256 f8ece3c65cbcb3a0319a211ed541953a05ce9167d27db61fe8d4c4f86c152437

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3b380e084dee52b0fcd1b0b2bf4d80ff6bc8d4cc23f89c14d0a18dcba5061378
MD5 4e2585d846717ab17093da69bb08545d
BLAKE2b-256 91a6d5c8f5c4dad1e97778e7da9483d9a0900a31ce64e9daec0f77d3db5fe7ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ef75936b914040e05c4f640f54d451b24a8ad13d51f8b9d98f90d1686c76c176
MD5 f264e383d4e2c6f05e6241e0832edd01
BLAKE2b-256 4560ccd52604637b2c7d6a4607a286bd2abcab5d4ec86afd60d7d97aeea1198c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7d36bad5835cbfd0ed343f1f8eeeade41d4f179f7b052b037915944b6b128f14
MD5 d1bfb71b4ddab3a3b7c4eb36e28baadd
BLAKE2b-256 ab132f4d4cf494f8eafc1e5bc15a91c86d289712093af193c493d8b1fe2ae591

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 53f4882354e5a056468c9a65ab3ccf735f3fce6807033855d2ee5c139344900e
MD5 9ba19a115469fe465bf43aa18ae19005
BLAKE2b-256 287aa9ccb05908474e573d19b0a911612014e980ec6eb3cb904162e7dffa8f19

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 445.4 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.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 646d7acaaea18ce0aec7e4cf4dd8c9d1cf3411793eaa7a178b90d13cca2513ab
MD5 72ad9627b41ebc638a03768e4ff85fb0
BLAKE2b-256 100acbf60b51ac30642f1977592d49cba75197ce235972e69a3a6625abb235a8

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 98d50b1f59ec122f365ae359f8dbcb9b590c71034378fba065c88625e1ec90c7
MD5 c48044277f05010ef289b92541244218
BLAKE2b-256 ba821ebb415c8e4c433dc7fc0dcd0434e547c7c7ee8576732187cf1e07c0feab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4c61eede8e832c0bcd63a5e40c3da598301dcd03eae0a11f78a83911f07520cc
MD5 4858091e52b460a00963cbc937d647f7
BLAKE2b-256 79afec24ea98199aa3f6106d0403adca7077f4600d76ae8988757d9e9b67d179

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3a7cf4060063cab7bf81c82c95256112c5237e4309d12dded08497915516b4c6
MD5 803aa240c4e57e3d47d473670adef0a3
BLAKE2b-256 8cc0c415f1fd3def5b27572ba757bee08751b3c771ed77973224183df49fd304

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 de5e24e30887818834c6f95f9e2d999e0c291c9e05b31cb90412864db6e32677
MD5 0dc414edde1537a0f03b8e70fcada79b
BLAKE2b-256 2fe53bf687f7bf0d861e5b92c2359de8444f0527c6a6e37068ec327941491502

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapcsv-0.1.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 445.1 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.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 838f9f9ff57ae0774998a3e928fb55d1f34cbe17108b0b4ebee6b2cff09bbf62
MD5 124154ab3a12f5b03223d5763259e46f
BLAKE2b-256 5f534e3bf5dcd631354ca04b0e485e7792e59eb085b2289a3301c441856b3b26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0d768ee13e6d0be0b3f69231eb6a99ce60b817f70647c60ee8e1fab5af15e8da
MD5 636c283a467771851339516a70be87a8
BLAKE2b-256 6c07b10a17c354d1db4f24ae0e0d1eb4ef16b50e94d8d34f03373db7ca75a6ab

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 8f760b50b06b2b1c900af8df63ee5df31e725601cf36ed586cf9556e05c61286
MD5 4a3a45b9e16f8cf625754bd0b87c370a
BLAKE2b-256 9dc598762d4c6044838ace1964c22fd8ad6ff978b400e3cbc361270040dd8223

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b144d1bb354ef04097b939f72b790265043399cfe336fddae8b50cf4ce040454
MD5 4fc123b6b77c96b05b6b6d73f6d04e1e
BLAKE2b-256 5b963c193df1b9fb1d4d239131efd19871f82cfc569946504375d4b5d1e3bd03

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapcsv-0.1.1-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 d9a8dc7eb2daef00f156240d3740fa76feb7977ba7d7e41ae8737991d41e0838
MD5 0932125148e2deb881dd559773aa8625
BLAKE2b-256 2cf544a86b178d487de29771bbf65807764bc8e1591412681e3fcb49b0a7acbc

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