Skip to main content

True async filesystem I/O — no fake async, no GIL stalls.

Project description

rapfiles

True async filesystem I/O — no fake async, no GIL stalls.

PyPI version Downloads Python 3.8+ License: MIT

Overview

rapfiles provides true async filesystem I/O operations for Python, backed by Rust and Tokio. Unlike libraries that wrap blocking I/O in async syntax, rapfiles guarantees that all I/O work executes outside the Python GIL, ensuring event loops never stall under load.

Roadmap Goal: Achieve drop-in replacement compatibility with aiofiles, 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 file reads and writes
  • 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
  • File handles with async context managers (async with)
  • Directory operations (create, remove, list, walk)
  • File metadata (stat, size, timestamps)
  • Path operations (rapfiles.ospath module)
  • aiofiles compatibility (Phase 1 complete)

Requirements

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

Installation

pip install rapfiles

Building from Source

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

Usage

Basic File Operations

import asyncio
from rapfiles import read_file, write_file

async def main():
    # Write file asynchronously (true async, GIL-independent)
    await write_file("example.txt", "Hello from rapfiles!")
    
    # Read file asynchronously (true async, GIL-independent)
    content = await read_file("example.txt")
    print(content)  # Output: Hello from rapfiles!
    
    # Write another file
    await write_file("output.txt", content)

asyncio.run(main())

File Handles (aiofiles compatible)

import asyncio
from rapfiles import open

async def main():
    # Open file with async context manager
    async with open("file.txt", "r") as f:
        content = await f.read()
        print(content)
    
    # Write mode
    async with open("output.txt", "w") as f:
        await f.write("Hello, world!")
    
    # Binary mode
    async with open("image.png", "rb") as f:
        data = await f.read()
    
    # Read lines
    async with open("file.txt", "r") as f:
        line = await f.readline()
        lines = await f.readlines()

asyncio.run(main())

Directory Operations

import asyncio
from rapfiles import create_dir, list_dir, exists, is_file, is_dir, walk_dir

async def main():
    # Create directories
    await create_dir("new_dir")
    await create_dir_all("path/to/nested/dir")
    
    # Check if path exists
    if await exists("file.txt"):
        print("File exists!")
    
    # Check file/directory type
    if await is_file("file.txt"):
        print("It's a file")
    if await is_dir("directory"):
        print("It's a directory")
    
    # List directory contents
    files = await list_dir(".")
    print(files)
    
    # Recursively walk directory
    for path, is_file in await walk_dir("."):
        print(f"{path}: {'file' if is_file else 'dir'}")

asyncio.run(main())

File Metadata

import asyncio
from rapfiles import stat, FileMetadata

async def main():
    # Get file statistics
    metadata: FileMetadata = await stat("file.txt")
    print(f"Size: {metadata.size} bytes")
    print(f"Is file: {metadata.is_file}")
    print(f"Modified: {metadata.modified}")
    print(f"Created: {metadata.created}")

asyncio.run(main())

Concurrent File Operations

import asyncio
from rapfiles import read_file, write_file

async def main():
    # Process multiple files concurrently
    tasks = [
        write_file("file1.txt", "Content 1"),
        write_file("file2.txt", "Content 2"),
        write_file("file3.txt", "Content 3"),
    ]
    await asyncio.gather(*tasks)
    
    # Read all files concurrently
    contents = await asyncio.gather(
        read_file("file1.txt"),
        read_file("file2.txt"),
        read_file("file3.txt"),
    )
    print(contents)  # ['Content 1', 'Content 2', 'Content 3']

asyncio.run(main())

API Reference

File Operations

read_file(path: str) -> str

Read a file asynchronously and return its contents as a string.

Parameters:

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

Returns:

  • str: File contents as UTF-8 decoded string

Raises:

  • FileNotFoundError: If the file does not exist
  • IOError: If the file cannot be read
  • ValueError: If the path is invalid

write_file(path: str, contents: str) -> None

Write content to a file asynchronously.

Parameters:

  • path (str): Path to the file to write
  • contents (str): Content to write to the file

Raises:

  • IOError: If the file cannot be written
  • PermissionError: If write permission is denied
  • ValueError: If the path is invalid

read_file_bytes(path: str) -> bytes

Read a file asynchronously and return its contents as bytes.

Parameters:

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

Returns:

  • bytes: File contents as raw bytes

Raises:

  • FileNotFoundError: If the file does not exist
  • IOError: If the file cannot be read

write_file_bytes(path: str, contents: bytes) -> None

Write bytes to a file asynchronously.

Parameters:

  • path (str): Path to the file to write
  • contents (bytes): Bytes to write to the file

Raises:

  • IOError: If the file cannot be written
  • PermissionError: If write permission is denied

append_file(path: str, contents: str) -> None

Append content to a file asynchronously.

Parameters:

  • path (str): Path to the file to append to
  • contents (str): Content to append to the file

Raises:

  • IOError: If the file cannot be written
  • PermissionError: If write permission is denied

File Handles

open(file: Union[str, bytes], mode: str = "r", ...) -> AsyncFile

Open a file asynchronously (aiofiles.open() compatible).

Parameters:

  • file (Union[str, bytes]): Path to the file
  • mode (str): File mode (r, r+, w, w+, a, a+, rb, rb+, wb, wb+, ab, ab+)
  • buffering (int): Buffer size (accepted for compatibility, not yet implemented)
  • encoding (Optional[str]): Text encoding (accepted for compatibility, not yet implemented)
  • errors (Optional[str]): Error handling (accepted for compatibility, not yet implemented)
  • newline (Optional[str]): Newline handling (accepted for compatibility, not yet implemented)
  • closefd (bool): Close file descriptor (accepted for compatibility, not yet implemented)
  • opener (Optional[Any]): Custom opener (accepted for compatibility, not yet implemented)

Returns:

  • Async context manager that yields an AsyncFile instance

Example:

async with open("file.txt", "r") as f:
    content = await f.read()

AsyncFile Class

An async file handle for true async I/O operations.

Methods:

  • read(size: int = -1) -> Union[str, bytes]: Read from file (returns str for text mode, bytes for binary)
  • write(data: Union[str, bytes]) -> int: Write to file, returns number of bytes written
  • readline(size: int = -1) -> Union[str, bytes]: Read a single line
  • readlines(hint: int = -1) -> List[Union[str, bytes]]: Read all lines
  • seek(offset: int, whence: int = 0) -> int: Seek to position (0=start, 1=current, 2=end)
  • tell() -> int: Get current file position
  • close() -> None: Close the file (automatic on context exit)

Directory Operations

create_dir(path: str) -> None

Create a directory asynchronously. Parent directories must exist.

Raises:

  • FileExistsError: If the directory already exists
  • IOError: If the directory cannot be created

create_dir_all(path: str) -> None

Create a directory and all parent directories asynchronously.

Raises:

  • IOError: If the directory cannot be created

remove_dir(path: str) -> None

Remove an empty directory asynchronously.

Raises:

  • FileNotFoundError: If the directory does not exist
  • IOError: If the directory is not empty or cannot be removed

remove_dir_all(path: str) -> None

Remove a directory and all its contents asynchronously.

Raises:

  • FileNotFoundError: If the directory does not exist
  • IOError: If the directory cannot be removed

list_dir(path: str) -> List[str]

List directory contents asynchronously.

Returns:

  • List[str]: List of file and directory names

Raises:

  • FileNotFoundError: If the directory does not exist
  • IOError: If the directory cannot be read

exists(path: str) -> bool

Check if a path exists asynchronously.

Returns:

  • bool: True if path exists, False otherwise

is_file(path: str) -> bool

Check if a path is a file asynchronously.

Returns:

  • bool: True if path is a file, False otherwise

Raises:

  • IOError: If the path does not exist

is_dir(path: str) -> bool

Check if a path is a directory asynchronously.

Returns:

  • bool: True if path is a directory, False otherwise

Raises:

  • IOError: If the path does not exist

walk_dir(path: str) -> List[Tuple[str, bool]]

Recursively walk a directory asynchronously.

Parameters:

  • path (str): Directory path to walk

Returns:

  • List[Tuple[str, bool]]: List of (path, is_file) tuples for all files and directories found

Raises:

  • FileNotFoundError: If the directory does not exist
  • IOError: If the directory cannot be read

File Metadata

stat(path: str) -> FileMetadata

Get file statistics asynchronously.

Returns:

  • FileMetadata: File metadata object with size, timestamps, and type information

Raises:

  • FileNotFoundError: If the path does not exist
  • IOError: If metadata cannot be retrieved

metadata(path: str) -> FileMetadata

Get file metadata asynchronously (alias for stat).

FileMetadata Class

File metadata structure (aiofiles.stat_result compatible).

Properties:

  • size (int): File size in bytes
  • is_file (bool): True if path is a file
  • is_dir (bool): True if path is a directory
  • modified (float): Modification time as Unix timestamp
  • accessed (float): Access time as Unix timestamp
  • created (float): Creation time as Unix timestamp

Path Operations

The rapfiles.ospath module provides synchronous path operations compatible with aiofiles.ospath:

  • exists(path) -> bool
  • isfile(path) -> bool
  • isdir(path) -> bool
  • getsize(path) -> int
  • join(*paths) -> str
  • normpath(path) -> str
  • abspath(path) -> str
  • dirname(path) -> str
  • basename(path) -> str
  • splitext(path) -> Tuple[str, str]
  • split(path) -> Tuple[str, str]

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 rapfiles

Documentation

Comprehensive documentation is available in the docs/ directory:

Roadmap

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

  • Drop-in replacement for aiofiles (Phase 1)
  • Comprehensive filesystem operations (directories, metadata, permissions)
  • Advanced I/O patterns and zero-copy optimizations
  • Filesystem traversal and watching capabilities

Related Projects

Changelog

v0.1.1 (2026-01-16)

Python 3.14 Support:

  • ✅ Added Python 3.14 classifier to pyproject.toml
  • ✅ Updated CI/CD workflows to test for Python 3.14
  • ✅ Added ABI3 forward compatibility for Python 3.14

Python 3.13 Support:

  • ✅ Added Python 3.13 classifier to pyproject.toml
  • ✅ Updated CI/CD workflows to test for Python 3.13

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)

Current Status (v0.1.1)

Phase 1 Complete ✅:

  • ✅ File handle operations (AsyncFile class with async with support)
  • ✅ File operations: read(), write(), readline(), readlines(), seek(), tell()
  • ✅ Binary file operations: read_file_bytes(), write_file_bytes()
  • ✅ Append operations: append_file()
  • ✅ Directory operations: create_dir(), create_dir_all(), remove_dir(), remove_dir_all(), list_dir()
  • ✅ Path checking: exists(), is_file(), is_dir()
  • ✅ Directory traversal: walk_dir() for recursive directory walking
  • ✅ File metadata: stat(), metadata(), FileMetadata class
  • ✅ Path operations: rapfiles.ospath module (aiofiles.ospath compatible)
  • ✅ aiofiles compatibility: Drop-in replacement for basic aiofiles operations
  • ✅ Comprehensive test suite: 34+ tests covering all features
  • ✅ Type stubs: Complete .pyi files for IDE support
  • ✅ Type checking: Full mypy support with Python 3.8+ compatibility
  • ✅ Code quality: Ruff formatted and linted, clippy checked

Known Limitations:

  • buffering, encoding, errors, newline, closefd, opener parameters accepted for API compatibility but not yet fully implemented
  • No file watching capabilities (planned for future phases)
  • No advanced I/O patterns like zero-copy (planned for future phases)

Roadmap: See docs/ROADMAP.md for planned improvements. Phase 1 (aiofiles compatibility) is complete. Future phases will add advanced features and optimizations.

Contributing

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

License

MIT

For detailed release notes, see docs/PYPI_RELEASE_NOTES.md.

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

rapfiles-0.1.2.tar.gz (52.2 kB view details)

Uploaded Source

Built Distributions

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

rapfiles-0.1.2-cp314-cp314-win_arm64.whl (597.1 kB view details)

Uploaded CPython 3.14Windows ARM64

rapfiles-0.1.2-cp314-cp314-win_amd64.whl (667.7 kB view details)

Uploaded CPython 3.14Windows x86-64

rapfiles-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl (704.9 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ x86-64

rapfiles-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl (688.5 kB view details)

Uploaded CPython 3.14manylinux: glibc 2.28+ ARM64

rapfiles-0.1.2-cp314-cp314-macosx_11_0_arm64.whl (648.4 kB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

rapfiles-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl (655.9 kB view details)

Uploaded CPython 3.14macOS 10.12+ x86-64

rapfiles-0.1.2-cp313-cp313-win_arm64.whl (597.2 kB view details)

Uploaded CPython 3.13Windows ARM64

rapfiles-0.1.2-cp313-cp313-win_amd64.whl (667.7 kB view details)

Uploaded CPython 3.13Windows x86-64

rapfiles-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl (704.9 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

rapfiles-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl (688.5 kB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

rapfiles-0.1.2-cp313-cp313-macosx_11_0_arm64.whl (648.2 kB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rapfiles-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl (656.0 kB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

rapfiles-0.1.2-cp312-cp312-win_arm64.whl (599.7 kB view details)

Uploaded CPython 3.12Windows ARM64

rapfiles-0.1.2-cp312-cp312-win_amd64.whl (668.5 kB view details)

Uploaded CPython 3.12Windows x86-64

rapfiles-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl (703.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

rapfiles-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl (688.8 kB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

rapfiles-0.1.2-cp312-cp312-macosx_11_0_arm64.whl (650.0 kB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rapfiles-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl (659.2 kB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

rapfiles-0.1.2-cp311-cp311-win_arm64.whl (601.6 kB view details)

Uploaded CPython 3.11Windows ARM64

rapfiles-0.1.2-cp311-cp311-win_amd64.whl (669.9 kB view details)

Uploaded CPython 3.11Windows x86-64

rapfiles-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl (707.3 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

rapfiles-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl (691.0 kB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

rapfiles-0.1.2-cp311-cp311-macosx_11_0_arm64.whl (652.4 kB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rapfiles-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl (659.8 kB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

rapfiles-0.1.2-cp310-cp310-win_amd64.whl (669.3 kB view details)

Uploaded CPython 3.10Windows x86-64

rapfiles-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl (705.5 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

rapfiles-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl (692.4 kB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

rapfiles-0.1.2-cp310-cp310-macosx_11_0_arm64.whl (654.0 kB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rapfiles-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl (659.7 kB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

rapfiles-0.1.2-cp39-cp39-win_amd64.whl (671.2 kB view details)

Uploaded CPython 3.9Windows x86-64

rapfiles-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl (707.1 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

rapfiles-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl (694.8 kB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

rapfiles-0.1.2-cp39-cp39-macosx_11_0_arm64.whl (656.0 kB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rapfiles-0.1.2-cp39-cp39-macosx_10_12_x86_64.whl (663.3 kB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

rapfiles-0.1.2-cp38-cp38-win_amd64.whl (672.4 kB view details)

Uploaded CPython 3.8Windows x86-64

rapfiles-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl (709.6 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

rapfiles-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl (695.0 kB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

rapfiles-0.1.2-cp38-cp38-macosx_11_0_arm64.whl (655.8 kB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

rapfiles-0.1.2-cp38-cp38-macosx_10_12_x86_64.whl (663.1 kB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for rapfiles-0.1.2.tar.gz
Algorithm Hash digest
SHA256 60f42f6bb74e5c93a2d8e0464e878025ae35bb65f9f6052cf615d20694ca04e1
MD5 5a5e10af4bbcef3c4e717ab9d4e2fc4f
BLAKE2b-256 7a72f81c3e39af36502939ef840bd9dbbb690009e1aafe4058d021610a98f14e

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp314-cp314-win_arm64.whl
  • Upload date:
  • Size: 597.1 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 rapfiles-0.1.2-cp314-cp314-win_arm64.whl
Algorithm Hash digest
SHA256 c96790be75e0034a6781e646ea858c9fa70049cb74df560ff5ea056edc95d44a
MD5 9ddb7bff1f280bcfdb20befa40c926b7
BLAKE2b-256 2b6837efaefe8f48376b8ca9d2349646c683a417f87c3e22ac461ddfbc065047

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 667.7 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 rapfiles-0.1.2-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 da278991f6c539a84f7020db180a9a3cb64bab4e4f69e817cbbc9b02a74b72c6
MD5 a6cff25c7d933ab413198c401b5edd8f
BLAKE2b-256 cc518f7891e9c8c34fb4eed0e8a8fc8725f84494067039cf9d882e9dc8dd8a97

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a8b9b8fd3325ccec5bdd26d111f9940d8cffc81f77fa429eb6ae49f15685f9f9
MD5 504d13afd5722a2eab3818a211c2cdc8
BLAKE2b-256 b53c718ff5bbb5676d4a49fda2c67412bc4ac72b9a76f3c543198cd63c2fa032

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 707eb7134cfb6a771b31613d40353e7c6f2335418566a6efcae80a6bfdbd84bb
MD5 52ea2a97fdc4a9a38ac9c890c73652a1
BLAKE2b-256 c3ec1034126074651b238188fc64e5efdafa55ee9bc42709ec3fff5809217305

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bd6939eb65a071dab27b04c0ee0e112a8b645c058469279289e1a743dd59e5be
MD5 6d07d0153912040c440490edbd50a1e0
BLAKE2b-256 ca7b1c8cec377f345f7a20e08fa57efa01c8557c69c806bf2fa9d177cfde4757

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 48cd27d47aef31c3ac7097937ec6934c6f391a8ae797835b8ba1d29a7dba4c36
MD5 ea3a6347144cc670e3e8c13fa133576c
BLAKE2b-256 40d70c6cbcbb8f2daf46daab04a1fb205cdfaebf5deb677fc05aa1454cd8de59

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 597.2 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 rapfiles-0.1.2-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 a12f46e3c9a5bae582c28a1b82220174acbea611d3f9d2d62b024b5101d8aebd
MD5 ff538c42961afe392b53ddfee10882ed
BLAKE2b-256 9a8af975cddc01a73109e28e26c1ac9a630e864269fe7f48d37c04971130ed16

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 667.7 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 rapfiles-0.1.2-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 273f9dc7acbc306c7d9a4983ae2bcc6123e2206eb52c55fc81426b6276fb1106
MD5 faf09edcf10216d689e9f67617cc8a94
BLAKE2b-256 153556fcc2aa03e25a48ce9e9e3720716ee70ed644f19d2a288955784dc23279

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c47a3fe111b9292a5e359ccf4df8d8e594e0fa0f5bcde91af5908446f76473b6
MD5 6900801b81c78d81b8b990902466ab06
BLAKE2b-256 d1ba6fa2031b64dc7aa843f10bfd9b055eb4703c40337f78c05561b7ebd9f2be

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 3166536b87914252d92bbafd96fba8494fed649b28a18757b51b7beac47746f0
MD5 068ab84232af1cfb7bc3c2c19f3b1280
BLAKE2b-256 cd19cf55ecf6db6a6060876c2f6e7c1cc5ae7217889de38a72d48d7aaa06fe6c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4c218edaa534a416349c45c7beb4d7794b9f5a19ae2814ef9404ef66a1a29b7d
MD5 b718b24221a3b80b5473989c649d0c48
BLAKE2b-256 19b9bfaac685b8ee878a3429cb27cc96c8fc0deb3f3521d3208b682ccb0a19c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4012a040ca6d52ab1a7cc4d37ee6d90b2af21d5c1e45678d4851382ae79735a0
MD5 abbfbd9b792d0c27b9c28f5164d04b3e
BLAKE2b-256 f5803794b98a2ff60c2762f15eb2179b0bfd7d33462be6e649b5b30ec528d60d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 599.7 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 rapfiles-0.1.2-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 8edc51fb75295b521239061f9ee90c18f5ee970f623d3c4316bf4775990b6a62
MD5 b0e64355c491aba667baddcafe25e5c0
BLAKE2b-256 16cafcf8ee5f61eb885e36a9ef412f0c7a5fe5e135b27f23b25270e92033ab2d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 668.5 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 rapfiles-0.1.2-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 24f71aa6404e28bd677bf788d94e2f767401cd2f7bc8899758703534d8782f7b
MD5 3813000bc87bfff7fa3f371374fded0c
BLAKE2b-256 420a64971c7d92f6f82e3e458f4e045e5a16d7200b7d3f3010ba724f547d2cdb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 4b64ad1ba06da7095b3ee1e3496e9701f63da789345e9a86d8054828e7bfdfb3
MD5 08f8cd733eabaaf3084bc44ca0cbb512
BLAKE2b-256 e4bad706de992bf6c6e8a8b1793cd4c2ffe2242a1cf3c2ab239085d0a38b9894

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c5e0711d62ac02448d9a736190a658a84b97ff083d22da3fe9ba535b3ec285cb
MD5 cddcb6038b1b1bbedc486ff3ac2e779d
BLAKE2b-256 cfb0138358b38face26ef596d921857c4f256316b9b5a523ff6c8af9ec102844

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 c98e60b731a8a3cb1e08be6f0d95d8b3eab02830160fe0813bdb352253ff2e93
MD5 6e5e105238a4dbba37d6f714e52c36fb
BLAKE2b-256 2d7398eb9cdf177f7a536c5c8d95af82d2ece9f1ebb17d1952008fb6ca6e9fef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 da1c9069d24e61b711027326a383afd45a1c1ebab2503824a6f816397797b43d
MD5 ba6e0465ff565d48ef9e7ac1d2ae72f0
BLAKE2b-256 307af495206fc08222edcbfe7b40adadb4d1bd8e4be35273fe9295c30d871fc7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 601.6 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 rapfiles-0.1.2-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 8d5c0dbc44fc6f8e4399ddfe669504d82eeb97eee4846da475240510d9a9b7b2
MD5 c760db27c29b5423d4e6bae167b8e97a
BLAKE2b-256 26c90558c98bdc14d81c5ddf9b02737d8aec25d928bd3f1c759135da8f7b73dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 669.9 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 rapfiles-0.1.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 1357aca11b55fdffe7ab35c9a69d8342b47f9c3121619d453c571a452a53d46d
MD5 fd4143757ffbccc6ac598f590b5a9d7d
BLAKE2b-256 23f57e8c8b7a182c70d5e1f9a5081ed2311267c6d225c2e5929b6b298d756c67

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 26757e020f6841aee05aad29fae473ed0070c66a17d39c8e876136ec5e655fbb
MD5 04b2fe7308fab8fcc84112c47a679e38
BLAKE2b-256 aa03aea150a6239c8cd8b02d02049113287d88b32330cac60d228bff455596dc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 9c47ba3cf4d321bec605679c34e198bb21ba70f91cd417808e6166ed2d5f4839
MD5 a6803aa434f9be8f0f31a7776c37f54f
BLAKE2b-256 8318a9da9c03b459af60b4398306972b2a3af7bfcb322e481e7d99b1a63ded96

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 92e8fe795cbecf38052eea395866b70fd6547c8712496c40b7b8389cf1eb92f0
MD5 4bac381b42f819b074660217c5be7859
BLAKE2b-256 4758d9942ab72cdcb37f0c626582e0ba3afd16a86d196b1e883e8792faec48f9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 db1708fc35a8559aec2f2c2eb1dbc58ffdea9c327ab701ab1365ebad2985b7ae
MD5 385a4c4c7f3bc3c7df7966a00364a55b
BLAKE2b-256 bbc05d90f717cdcdcf250ab16bd57ed5247d62870cf12752386401366e951658

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 669.3 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 rapfiles-0.1.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a2f164348bafe7c354ba870c8c4a0e4d5a72fdc5ba166d3b87f236f7b3405338
MD5 d0195cd9d3841486feb20a2b7ea83697
BLAKE2b-256 519146182468d3e6ed8569cf9b6309f05ba5c95a21111c7f105f538bc9702e42

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 a7a72c833163f9ab9f7b1886760310c5948d52d10b88c425c9f4c017bb083796
MD5 ae9985a6f078446172171ef40c574c73
BLAKE2b-256 665e675c34a392b381c05f2f585fe85eb4c8adab880d2e29304e920ee2cc59ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c710b9a34b0bd93339a363c1d06c72709fce42fe31d4ba28c29245407dfe5c46
MD5 03768eccf87ede6977ee2df7fd02bf1e
BLAKE2b-256 13912534f2ba3bd92cdbcabb9a5a33b20dcb6e7eabc80138f7163237c26ac71b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1de4d2a2179dc77c0b0a14b858b3456d5f33aaf0d962bb2ea41a553fee71b091
MD5 c9f8f7a4a6fecfe0f65291a741b59dc7
BLAKE2b-256 8ae9ed31f1d10f1193859a0963c317cbc0eff7f29d8a0b2e0f636d9195f21ad7

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 0e155380b50715ac0c7f4ffce8c4f03c930d369a058ba6d5ff63e2dcb3d3ff7a
MD5 b5fe54612d96f3905764ef7b102a11f3
BLAKE2b-256 fd3f12b139581a517596bb639a0af32f88523f60fd9f9b028643685bb6a36e03

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 671.2 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 rapfiles-0.1.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 f34daba3948b7cdf75dc4ae89405a47d3f5e54ea2f0ea036359f2b553b1e887d
MD5 a096c9a32b1730cef88435eed1fc4aa3
BLAKE2b-256 725677ad45f1cb0a5dde6ba304942d402cdba534e478102de8d95b25f1b00a26

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 80cdb49cd092ce441a689eb9a090f3d3854622a5e45d42be4f9cdd7c55a0ad79
MD5 6c8d11f88ce4afaf9a629401b259d52d
BLAKE2b-256 5275f290d9cb56ed21fcf2ece39fd855349cd492de849b317ccb03e2a41a6c51

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d888a74d77d41f8de323491c93c74643b238a7d1f4af802f909d8e4545436a77
MD5 f764cbe43794336fc8d917151f635c11
BLAKE2b-256 9799b1d9d7a835a9f9d1e22382aa396416c457c9087e0d9f9f77fb7b06fb90f5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b17a5d9a21a339f02debb135100363aa30fc87c095020667eb0acdb07404a2d6
MD5 4f0328d7cb768af821a142b75c8ed57e
BLAKE2b-256 f355c14d85875ee802e59c26950ec9824bf485f0e8c5e3a8c359534d88bebab0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 54100aaa6a9f27b49dd3ccc37e35b592a61b91ff3c3e7a69da0dab8a35cc1f59
MD5 6c431e6759282e74a107768fde1e18c3
BLAKE2b-256 1be801d47d2a0bf0ad906f0f19bb17f33497df14a8cb0300bb5c33ec8df56588

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapfiles-0.1.2-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 672.4 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 rapfiles-0.1.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 a1afe3f3c83534a941782917fa5d8fbe7b4fabbb487eeadbea9334da06a83b44
MD5 36db1b0da6a732199e4c8b70dd8c9b32
BLAKE2b-256 fd8127162fd985381e4cd443a1d37788a9b42c3705f1bacac5b04920096451ce

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 c054e65c5da2e4839afb8fd2cd28923870d75a647283d8018b0ae17a133ae820
MD5 97837d6b4dc22098b5935c14014cbcdc
BLAKE2b-256 f1a52a47d15c4e234c7d92a99fa19f5ab5aadcb2f99f7f1adc113aa3cd5c4319

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 bc68a45e99ca34044c89ee17f769f69a4709d9927f29c39c86ff2d5a8fe3f246
MD5 a8d1062ddd86429bebd9a841bee0768b
BLAKE2b-256 1caccda5fcddb79564821be47924df469856bdaede43f47db7a91ddf8b180dfc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6d64c2a2a6a3a326bf1ddee82e30772b47a0f960058e6aeecd64daa5333cb97e
MD5 12410d6e0f30bb0c99665f2b4ce4e51f
BLAKE2b-256 ea8c0c155b64a290a49a8f1ed8754d8725ac32d05bfab79146a9d23c581e62e5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapfiles-0.1.2-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 32f843d353e1344a26b54bb5f4c0dbd3a147f4c4f0a0893541902d40dd2556ed
MD5 9e21e1ef1599f60143e719b14a15c9bd
BLAKE2b-256 8eed210cb0164ee33ea9eb22800e2f1b771064197ab19bb4b6fdfe7ebc28dbc4

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