Streaming async CSV — no fake async, no GIL stalls.
Project description
rapcsv
Streaming async CSV — no fake async, no GIL stalls.
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 readCSVError: 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
- rap-manifesto - Philosophy and guarantees
- rap-bench - Fake Async Detector CLI
- rapfiles - True async filesystem I/O
- rapsqlite - True async SQLite
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
.pyitype 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
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rapcsv-0.1.0.tar.gz.
File metadata
- Download URL: rapcsv-0.1.0.tar.gz
- Upload date:
- Size: 34.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
356be6a4ec01f63c42d4a727b4f3967fede0ccecfd1db8cfef6a41440dc5161e
|
|
| MD5 |
3607dd419f279ec2764996c5deda8639
|
|
| BLAKE2b-256 |
a6d423f51ed053cc7966ef6623db061e86100bb78bcaf23288bf7d254116035f
|
File details
Details for the file rapcsv-0.1.0-cp312-cp312-win_arm64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp312-cp312-win_arm64.whl
- Upload date:
- Size: 406.5 kB
- Tags: CPython 3.12, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2443a2b0f9755e68cf6892a9d2bfb36389d1910b5650770b7182bcdaf36b01f1
|
|
| MD5 |
7b5f2f349f355886e8037cd62a6f0936
|
|
| BLAKE2b-256 |
aa6bfb2ee5276fcfc76b72b5d02c347b8e838b868115bced75526894678f979b
|
File details
Details for the file rapcsv-0.1.0-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp312-cp312-win_amd64.whl
- Upload date:
- Size: 444.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd013cf02ca6a37d298a31fadfcd819755490d2d0a9120da02193bca2bd997b1
|
|
| MD5 |
2b307e123c9c9864aeb1d320ee7c590d
|
|
| BLAKE2b-256 |
3b7683467efded10200b626547dd4cc94b3b9bed4a7cb314bc56309d26136e8a
|
File details
Details for the file rapcsv-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 534.3 kB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c6e8cefc49ee6760d4ee461babfb288603a177fe009c47ea785c82d1874b2e98
|
|
| MD5 |
625c548f9ea5909cb834c7056c1dfcc7
|
|
| BLAKE2b-256 |
4bb3da17a3a4417f7bb01b518ff5945ddb21ab4d6a3d0f86a3256beba355318d
|
File details
Details for the file rapcsv-0.1.0-cp312-cp312-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp312-cp312-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 515.5 kB
- Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eaca3aec71e5a717e633d1fe3eff70e914a1eb657362389b375f1278300d62e
|
|
| MD5 |
83326fa3135e694c92a30e3785fae03a
|
|
| BLAKE2b-256 |
3f8145a14bcde78a71af97df925f2ce4950d77fed002fc40e20fc565d56b46c7
|
File details
Details for the file rapcsv-0.1.0-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 484.9 kB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2ae742a36de8986f471d8e963da86c5bc0f0bb0ab8cec5efee1fe4d783bca0a2
|
|
| MD5 |
19bf79dd72b988029d9aa63c050c7953
|
|
| BLAKE2b-256 |
6f2c348e42a70690dec43afb5131dc7669a02c2ef6866d651c650d8e63b9b9c6
|
File details
Details for the file rapcsv-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 494.5 kB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e28dbc0267f7dd2bc8b8918d215991a72fea5a670ed01bf6d8a0166074424540
|
|
| MD5 |
9af238ab6f397e4030d7e6a9b2fb80d5
|
|
| BLAKE2b-256 |
b126bb5026ba64cd6fdee16d024183c77664f40e3d41fbf3d638535ff5d0d8db
|
File details
Details for the file rapcsv-0.1.0-cp311-cp311-win_arm64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp311-cp311-win_arm64.whl
- Upload date:
- Size: 408.5 kB
- Tags: CPython 3.11, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3d7936d32ec047b4b255e0e3180a809e8235f3c96b218a4a3f1d5d27b57dc92d
|
|
| MD5 |
3b2a7a476fbd5d82b1b04aea8c046971
|
|
| BLAKE2b-256 |
3fc5fab96ac05647c9b4747aff060edc441a53b9dd78d214fd6dd44a98a3b241
|
File details
Details for the file rapcsv-0.1.0-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp311-cp311-win_amd64.whl
- Upload date:
- Size: 445.8 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b473709c152a19559b8d39015275949cd3b3ecede672aed3c0b4679fe1862707
|
|
| MD5 |
3633a7cbcf242bde7bd24d2f1fbb6a9d
|
|
| BLAKE2b-256 |
0f09cd36310a3bba2eca5fbb7a4cb389f1686d5c28b1aa6324e7951855d73856
|
File details
Details for the file rapcsv-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 537.1 kB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d64974fba55aa82ce1e901e069ec618dfbd953ff19e0c52b2716b8f4a7844a93
|
|
| MD5 |
45ef976ae466543b78251887a1b5ffe8
|
|
| BLAKE2b-256 |
a0ba3883da2a95c1830b20d2ce56659a7d075c9356e9653ab35ba3f39f154101
|
File details
Details for the file rapcsv-0.1.0-cp311-cp311-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp311-cp311-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 517.7 kB
- Tags: CPython 3.11, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
82927454f1f804e46d773598b2a03520a4480e3a12aade4731383c08e6852a48
|
|
| MD5 |
d824d37bd744264ac192c8f856718882
|
|
| BLAKE2b-256 |
28db2de94f0afe1b75d524d5255cabe610769e64a9f171fd9cb6ff42475096f9
|
File details
Details for the file rapcsv-0.1.0-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 486.7 kB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8cca5459c62d6772dbcbf286d8bc69697b3c685d9b9ee9742ded63a59bc3793
|
|
| MD5 |
bc8e28bbf9722660b3f5a1e275dfaed6
|
|
| BLAKE2b-256 |
b3030e2068399bb7161646639fe9a1bfa409070b00c10abac30b2ff7ca891650
|
File details
Details for the file rapcsv-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 494.9 kB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5393325c39f6b28259287456621a5a66c23883742eb39c72ab61e8351e2fd75c
|
|
| MD5 |
80795851c947a784bff40c6a954e5db4
|
|
| BLAKE2b-256 |
07617d41d1e547bfb61f0a1f853c0139c11e7773d87b9b047a7d324e7dba622a
|
File details
Details for the file rapcsv-0.1.0-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp310-cp310-win_amd64.whl
- Upload date:
- Size: 446.0 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9a8dc8fc95fd9e9269e25a55c5875f2fc4bb37093f4b037771bf70ac96aaaa7b
|
|
| MD5 |
1c96bb2c66287b85a72e5dd8dedc6fd4
|
|
| BLAKE2b-256 |
46bd809348b925f69eb6f68ca7ed1e5ab48faebe809b7d3c8a5273586172e5cc
|
File details
Details for the file rapcsv-0.1.0-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 536.3 kB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
81f60b004b558cef2fcbe1a17271da3c4efd49493b75238bf0fa527a6fc750e1
|
|
| MD5 |
20223ec4d7df935bd8cf685825458e24
|
|
| BLAKE2b-256 |
58cde1cba8e2543e7b7d5ce84d04b3cb8e398fad3760bebca0df95c975a79aab
|
File details
Details for the file rapcsv-0.1.0-cp310-cp310-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp310-cp310-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 518.9 kB
- Tags: CPython 3.10, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5aad3e14514defe5353b28a981189913c533e3b48d4fd84473321c0ff9ccddd1
|
|
| MD5 |
dbe5ee97816c67f19b5c83a7ef79236b
|
|
| BLAKE2b-256 |
310558d1bd7c27837df444ed4ce81d49ac495b56fe39ea67e0fd3073331fc28a
|
File details
Details for the file rapcsv-0.1.0-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 488.5 kB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
832716c9377851f341dc7dc24cd19d72a82f9eade41bfa7c134fbd0b96bfa799
|
|
| MD5 |
916be56dd9ebe20bf4fc5525eca9c08e
|
|
| BLAKE2b-256 |
5ab4021edefc9bebfec7e198ace6709f414089733f1f26feeeed8ee453183567
|
File details
Details for the file rapcsv-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 494.9 kB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
926a57d2792cfee0216f028ffc1e086239564ebf6b47819cab4a0ae221d150ab
|
|
| MD5 |
76f9d6e3ff610af5921458bcc3f374cd
|
|
| BLAKE2b-256 |
fb18e212b4a0322ea818c7030df7764e731df501767a7da7ed704850ed8774ef
|
File details
Details for the file rapcsv-0.1.0-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp39-cp39-win_amd64.whl
- Upload date:
- Size: 447.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4f0a13daaf976eee0acd3f7caba7989b86f79ab281623f6534791f7aa62a4e66
|
|
| MD5 |
d0b68c24641e152c44d0fb26241635ea
|
|
| BLAKE2b-256 |
4592b7ccd9ca7247aa74688419cc8ba63b0f37e78269ddb81861bcec8c6dbaa5
|
File details
Details for the file rapcsv-0.1.0-cp39-cp39-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp39-cp39-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 537.7 kB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6d7a4ec4328bc7dad24ec49dcddc38e873a2aad4b42cc635bd95d676d66284d8
|
|
| MD5 |
48957aaec2a5a434d36ed857897e03fa
|
|
| BLAKE2b-256 |
6a2f239c466ad265813540ab6b6378cc4838d054ca79c25c098329d94b994e65
|
File details
Details for the file rapcsv-0.1.0-cp39-cp39-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp39-cp39-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 520.6 kB
- Tags: CPython 3.9, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
701d36061bb2ccfbf1caa278da1582834c8eed6e941da84b15aea55892979aee
|
|
| MD5 |
e2e0963d1fcf0db9bba780bff68e93c6
|
|
| BLAKE2b-256 |
a519cc4f24e708d3db29024b3913e905104f6b17e102fd38b7181e53ddf003cb
|
File details
Details for the file rapcsv-0.1.0-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 490.8 kB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c47b98383d066293556bde92f42637da2d9cf55dc22d1e18895690696f5d0b5
|
|
| MD5 |
5142dc8d895c8726742f7bc8edb11fa9
|
|
| BLAKE2b-256 |
4c327b45806ff4e254dfb77b3839dd13e88525aba19175d0a6b3dc393c3b6fbd
|
File details
Details for the file rapcsv-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl
- Upload date:
- Size: 497.0 kB
- Tags: CPython 3.9, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
28f3b0a076e0fe1527130e2e318bd1c74a18c132479b217e2696737e21bb595f
|
|
| MD5 |
34cb20437124acfcecfd493f988fbde4
|
|
| BLAKE2b-256 |
90c2a57880198f9d7b87659e9598fa1e3bd5cd38b9ce8c20f8e7cd43d55c4f41
|
File details
Details for the file rapcsv-0.1.0-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp38-cp38-win_amd64.whl
- Upload date:
- Size: 448.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
36c07b9a2e43aa9ebd281303d4bf21b77ee9f7cc2b9742d7847521f98f5ab92b
|
|
| MD5 |
9713f947ecf47b08c1471eeb4f6291f4
|
|
| BLAKE2b-256 |
086a2555449702bc390f854815b02002b4b96a998a875ccaf92f4db0e6d4b013
|
File details
Details for the file rapcsv-0.1.0-cp38-cp38-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp38-cp38-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 539.5 kB
- Tags: CPython 3.8, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8df04819580947ef450d6cbb540789fc6db5e13eafdf328c9107cd5194b4b4be
|
|
| MD5 |
fc1c90891d34ee9a2bee6a334bc71164
|
|
| BLAKE2b-256 |
12cf633325f3674fd8c97e740cb7c89397aa1b09751a6e8301857798438dd956
|
File details
Details for the file rapcsv-0.1.0-cp38-cp38-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp38-cp38-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 519.4 kB
- Tags: CPython 3.8, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
211aa0d8d4aa2c64054b81d32394141889e3fef1af9bbecf6e3f53620b731e42
|
|
| MD5 |
47835c0db2e05b039804c7b371077e56
|
|
| BLAKE2b-256 |
700ad5c0585bf0c73aecf96148294bc4f343fe2f1cc9d11038a7a9d660f5411b
|
File details
Details for the file rapcsv-0.1.0-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 489.1 kB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
387691ba3d75fe3d6cbfb82b3bd417b2877cccbf0d01df9927bf68ea625716d6
|
|
| MD5 |
e5eae50c7e64fad2aa992dc97d25abde
|
|
| BLAKE2b-256 |
1333f5646db75153376b1d23b5792c78fc5fbcb3e9793ff49dc86ec1aa4b31a8
|
File details
Details for the file rapcsv-0.1.0-cp38-cp38-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapcsv-0.1.0-cp38-cp38-macosx_10_12_x86_64.whl
- Upload date:
- Size: 497.3 kB
- Tags: CPython 3.8, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e957c947629f66aee51c83e60151fe4ccfa42cf4e4bfa21c6fb97fd548209956
|
|
| MD5 |
f41053ff09c3466f444929bc14cd3e57
|
|
| BLAKE2b-256 |
616627fad0887c28843fffd13952d0621f3ea5624cd93503cf523ecb65fa023b
|