Skip to main content

True async SQLite — no fake async, no GIL stalls.

Project description

rapsqlite

True async SQLite — no fake async, no GIL stalls.

PyPI version Downloads Python 3.8+ License: MIT

Overview

rapsqlite provides true async SQLite operations for Python, backed by Rust, Tokio, and sqlx. Unlike libraries that wrap blocking database calls in async syntax, rapsqlite guarantees that all database operations execute outside the Python GIL, ensuring event loops never stall under load.

Roadmap Goal: Achieve drop-in replacement compatibility with aiosqlite, 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 SQLite operations
  • Native Rust-backed execution (Tokio + sqlx)
  • Zero Python thread pools
  • Event-loop-safe concurrency under load
  • GIL-independent database operations
  • Async-safe SQLite bindings
  • Verified by Fake Async Detector
  • Connection lifecycle management (async context managers)
  • Transaction support (begin, commit, rollback)
  • Type system improvements (proper Python types: int, float, str, bytes, None)
  • Cursor API (execute, executemany, fetchone, fetchall, fetchmany)
  • Enhanced error handling (custom exception classes matching aiosqlite)
  • aiosqlite-compatible API (connect function, exception types)

Requirements

  • Python 3.8+
  • Rust 1.70+ (for building from source)

Installation

pip install rapsqlite

Building from Source

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

Usage

Basic Usage

import asyncio
import tempfile
import os
from rapsqlite import Connection

async def main():
    # Create a database file
    with tempfile.NamedTemporaryFile(suffix='.db', delete=False) as f:
        db_path = f.name
    
    try:
        # Create connection (async context manager)
        async with Connection(db_path) as conn:
            # Create table
            await conn.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, email TEXT)")
            
            # Insert data
            await conn.execute("INSERT INTO users (name, email) VALUES ('Alice', 'alice@example.com')")
            await conn.execute("INSERT INTO users (name, email) VALUES ('Bob', 'bob@example.com')")
            
            # Fetch all rows
            rows = await conn.fetch_all("SELECT * FROM users")
            print(rows)
            # Output: [[1, 'Alice', 'alice@example.com'], [2, 'Bob', 'bob@example.com']]
            
            # Fetch single row
            user = await conn.fetch_one("SELECT * FROM users WHERE name = 'Alice'")
            print(user)
            # Output: [1, 'Alice', 'alice@example.com']
            
            # Fetch optional row
            user = await conn.fetch_optional("SELECT * FROM users WHERE name = 'Charlie'")
            print(user)
            # Output: None
    finally:
        # Cleanup
        if os.path.exists(db_path):
            os.unlink(db_path)

asyncio.run(main())

Using the connect() Function (aiosqlite-compatible)

import asyncio
from rapsqlite import connect

async def main():
    async with connect("example.db") as conn:
        await conn.execute("CREATE TABLE test (id INTEGER PRIMARY KEY, value TEXT)")
        await conn.execute("INSERT INTO test (value) VALUES ('hello')")
        rows = await conn.fetch_all("SELECT * FROM test")
        print(rows)

asyncio.run(main())

Transactions

import asyncio
from rapsqlite import Connection

async def main():
    async with Connection("example.db") as conn:
        await conn.execute("CREATE TABLE accounts (id INTEGER PRIMARY KEY, balance INTEGER)")
        await conn.execute("INSERT INTO accounts (balance) VALUES (1000)")
        
        # Begin transaction
        await conn.begin()
        try:
            await conn.execute("UPDATE accounts SET balance = balance - 100 WHERE id = 1")
            await conn.execute("UPDATE accounts SET balance = balance + 100 WHERE id = 2")
            await conn.commit()
            print("Transaction committed")
        except Exception:
            await conn.rollback()
            print("Transaction rolled back")

asyncio.run(main())

Using Cursors

import asyncio
from rapsqlite import Connection

async def main():
    async with Connection("example.db") as conn:
        await conn.execute("CREATE TABLE items (id INTEGER PRIMARY KEY, name TEXT)")
        await conn.execute("INSERT INTO items (name) VALUES ('item1')")
        await conn.execute("INSERT INTO items (name) VALUES ('item2')")
        
        # Use cursor
        cursor = conn.cursor()
        await cursor.execute("SELECT * FROM items")
        
        # Fetch one row
        row = await cursor.fetchone()
        print(row)  # Output: [1, 'item1']
        
        # Fetch all rows
        rows = await cursor.fetchall()
        print(rows)  # Output: [[1, 'item1'], [2, 'item2']]
        
        # Fetch many rows
        await cursor.execute("SELECT * FROM items")
        rows = await cursor.fetchmany(1)
        print(rows)  # Output: [[1, 'item1']]

asyncio.run(main())

Concurrent Database Operations

import asyncio
from rapsqlite import Connection

async def main():
    async with Connection("example.db") as conn:
        await conn.execute("CREATE TABLE data (id INTEGER PRIMARY KEY, value INTEGER)")
        
        # Execute multiple inserts concurrently
        tasks = [
            conn.execute(f"INSERT INTO data (value) VALUES ({i})")
            for i in range(100)
        ]
        await asyncio.gather(*tasks)
        
        # Fetch all results
        rows = await conn.fetch_all("SELECT * FROM data")
        print(f"Inserted {len(rows)} rows")

asyncio.run(main())

Error Handling

import asyncio
from rapsqlite import Connection, IntegrityError, OperationalError

async def main():
    async with Connection("example.db") as conn:
        await conn.execute("CREATE TABLE users (id INTEGER PRIMARY KEY, email TEXT UNIQUE)")
        await conn.execute("INSERT INTO users (email) VALUES ('alice@example.com')")
        
        try:
            # This will raise IntegrityError
            await conn.execute("INSERT INTO users (email) VALUES ('alice@example.com')")
        except IntegrityError as e:
            print(f"Integrity constraint violation: {e}")

asyncio.run(main())

API Reference

connect(path: str, **kwargs: Any) -> Connection

Connect to a SQLite database (aiosqlite-compatible API).

Parameters:

  • path (str): Path to the SQLite database file
  • **kwargs: Additional arguments (currently ignored, reserved for future use)

Returns:

  • Connection: An async SQLite connection

Example:

async with connect("example.db") as conn:
    await conn.execute("CREATE TABLE test (id INTEGER)")

Connection(path: str)

Create a new async SQLite connection.

Parameters:

  • path (str): Path to the SQLite database file

Example:

conn = Connection("example.db")
async with conn:
    await conn.execute("CREATE TABLE test (id INTEGER)")

Connection Methods

Connection.execute(query: str) -> None

Execute a SQL statement (CREATE, INSERT, UPDATE, DELETE, etc.).

Parameters:

  • query (str): SQL query to execute

Raises:

  • OperationalError: If the query execution fails
  • ProgrammingError: For SQL syntax errors
  • IntegrityError: For constraint violations

Connection.fetch_all(query: str) -> List[List[Any]]

Execute a SELECT query and return all rows.

Parameters:

  • query (str): SELECT query to execute

Returns:

  • List[List[Any]]: List of rows, where each row is a list of values (int, float, str, bytes, or None)

Raises:

  • OperationalError: If the query execution fails
  • ProgrammingError: For SQL syntax errors

Connection.fetch_one(query: str) -> List[Any]

Execute a SELECT query and return a single row.

Parameters:

  • query (str): SELECT query to execute

Returns:

  • List[Any]: A single row as a list of values

Raises:

  • OperationalError: If no row is found or query execution fails
  • ProgrammingError: For SQL syntax errors

Connection.fetch_optional(query: str) -> Optional[List[Any]]

Execute a SELECT query and return a single row or None.

Parameters:

  • query (str): SELECT query to execute

Returns:

  • Optional[List[Any]]: A single row as a list of values, or None if no row is found

Raises:

  • OperationalError: If the query execution fails
  • ProgrammingError: For SQL syntax errors

Connection.begin() -> None

Begin a transaction.

Raises:

  • OperationalError: If a transaction is already in progress

Connection.commit() -> None

Commit the current transaction.

Raises:

  • OperationalError: If no transaction is in progress

Connection.rollback() -> None

Rollback the current transaction.

Raises:

  • OperationalError: If no transaction is in progress

Connection.last_insert_rowid() -> int

Get the row ID of the last inserted row.

Returns:

  • int: The row ID of the last INSERT operation

Connection.changes() -> int

Get the number of rows affected by the last statement.

Returns:

  • int: The number of rows affected

Connection.cursor() -> Cursor

Create a cursor for this connection.

Returns:

  • Cursor: A new cursor object

Connection.close() -> None

Close the connection and release resources.

Cursor Methods

Cursor.execute(query: str) -> None

Execute a SQL statement.

Parameters:

  • query (str): SQL query to execute

Raises:

  • OperationalError: If the query execution fails
  • ProgrammingError: For SQL syntax errors

Cursor.executemany(query: str, parameters: List[List[Any]]) -> None

Execute a SQL statement multiple times with different parameters.

Parameters:

  • query (str): SQL query to execute
  • parameters (List[List[Any]]): List of parameter lists

Note: Parameter binding is currently a placeholder and will be implemented in Phase 2.

Raises:

  • OperationalError: If the query execution fails
  • ProgrammingError: For SQL syntax errors

Cursor.fetchone() -> Optional[List[Any]]

Fetch the next row from the query result.

Returns:

  • Optional[List[Any]]: A single row as a list of values, or None if no more rows

Raises:

  • ProgrammingError: If no query has been executed

Cursor.fetchall() -> List[List[Any]]

Fetch all remaining rows from the query result.

Returns:

  • List[List[Any]]: List of rows

Raises:

  • ProgrammingError: If no query has been executed

Cursor.fetchmany(size: Optional[int] = None) -> List[List[Any]]

Fetch multiple rows from the query result.

Parameters:

  • size (Optional[int]): Number of rows to fetch (default: 1, or all if not specified)

Returns:

  • List[List[Any]]: List of rows

Note: For Phase 1, this returns all rows. Proper size-based slicing will be implemented in Phase 2.

Raises:

  • ProgrammingError: If no query has been executed

Exception Classes

The following exception classes are available, matching the aiosqlite API:

  • Error: Base exception class for all rapsqlite errors
  • Warning: Warning exception class
  • DatabaseError: Base exception class for database-related errors
  • OperationalError: Exception raised for operational errors (database locked, connection issues, etc.)
  • ProgrammingError: Exception raised for programming errors (SQL syntax errors, etc.)
  • IntegrityError: Exception raised for integrity constraint violations (UNIQUE constraint, FOREIGN KEY constraint, etc.)

Type System

rapsqlite automatically converts SQLite types to appropriate Python types:

  • INTEGERint
  • REALfloat
  • TEXTstr
  • BLOBbytes
  • NULLNone

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 rapsqlite

Roadmap

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

  • ✅ Phase 1: Connection lifecycle, transactions, type system, error handling, cursor API (complete)
  • ⏳ Phase 2: Prepared statements and parameterized queries
  • ⏳ Phase 3: Advanced SQLite features and ecosystem integration

Related Projects

Limitations (v0.1.0)

Current limitations:

  • ⏳ Parameterized queries not yet supported (placeholder for Phase 2)
  • Cursor.fetchmany() returns all rows (size-based slicing in Phase 2)
  • ⏳ Limited SQL dialect support (basic SQLite features)
  • ⏳ Not yet a complete drop-in replacement for aiosqlite (work in progress)
  • ⏳ Not designed for synchronous use cases

Phase 1 improvements (v0.1.0):

  • ✅ Connection lifecycle management (async context managers)
  • ✅ Transaction support (begin, commit, rollback)
  • ✅ Type system improvements (proper Python types: int, float, str, bytes, None)
  • ✅ Enhanced error handling (custom exception classes matching aiosqlite)
  • ✅ API improvements (fetch_one, fetch_optional, execute_many, last_insert_rowid, changes)
  • ✅ Cursor API (execute, executemany, fetchone, fetchall, fetchmany)
  • ✅ aiosqlite compatibility (connect function, exception types)
  • ✅ Security fixes: Upgraded dependencies (pyo3 0.27, pyo3-async-runtimes 0.27, sqlx 0.8)
  • ✅ Connection pooling: Connection reuses connection pool across operations
  • ✅ Input validation: Added path validation (non-empty, no null bytes)
  • ✅ Improved error handling: Enhanced error messages with database path and query 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 aiosqlite while providing true async performance with GIL-independent database operations.

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

rapsqlite-0.1.1.tar.gz (40.4 kB view details)

Uploaded Source

Built Distributions

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

rapsqlite-0.1.1-cp313-cp313-win_arm64.whl (1.6 MB view details)

Uploaded CPython 3.13Windows ARM64

rapsqlite-0.1.1-cp313-cp313-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.13Windows x86-64

rapsqlite-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ x86-64

rapsqlite-0.1.1-cp313-cp313-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.28+ ARM64

rapsqlite-0.1.1-cp313-cp313-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

rapsqlite-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.13macOS 10.12+ x86-64

rapsqlite-0.1.1-cp312-cp312-win_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12Windows ARM64

rapsqlite-0.1.1-cp312-cp312-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.12Windows x86-64

rapsqlite-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ x86-64

rapsqlite-0.1.1-cp312-cp312-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

rapsqlite-0.1.1-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

rapsqlite-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.12macOS 10.12+ x86-64

rapsqlite-0.1.1-cp311-cp311-win_arm64.whl (1.6 MB view details)

Uploaded CPython 3.11Windows ARM64

rapsqlite-0.1.1-cp311-cp311-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.11Windows x86-64

rapsqlite-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ x86-64

rapsqlite-0.1.1-cp311-cp311-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

rapsqlite-0.1.1-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

rapsqlite-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.11macOS 10.12+ x86-64

rapsqlite-0.1.1-cp310-cp310-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.10Windows x86-64

rapsqlite-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ x86-64

rapsqlite-0.1.1-cp310-cp310-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

rapsqlite-0.1.1-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

rapsqlite-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 10.12+ x86-64

rapsqlite-0.1.1-cp39-cp39-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.9Windows x86-64

rapsqlite-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ x86-64

rapsqlite-0.1.1-cp39-cp39-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

rapsqlite-0.1.1-cp39-cp39-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.9macOS 11.0+ ARM64

rapsqlite-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.9macOS 10.12+ x86-64

rapsqlite-0.1.1-cp38-cp38-win_amd64.whl (1.8 MB view details)

Uploaded CPython 3.8Windows x86-64

rapsqlite-0.1.1-cp38-cp38-manylinux_2_28_x86_64.whl (2.0 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ x86-64

rapsqlite-0.1.1-cp38-cp38-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

rapsqlite-0.1.1-cp38-cp38-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.8macOS 11.0+ ARM64

rapsqlite-0.1.1-cp38-cp38-macosx_10_12_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.8macOS 10.12+ x86-64

File details

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

File metadata

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

File hashes

Hashes for rapsqlite-0.1.1.tar.gz
Algorithm Hash digest
SHA256 4b111fa958c1713021251fc2c573e2561be8c7157522e758eb4e2b1d4b0a3fd8
MD5 cb3e5876aca399b7f94e70b66d19c2c4
BLAKE2b-256 c2a843b2b9d04cd27f0cefee502af781897a2d0e39310655cbd3dc9c4c47204b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp313-cp313-win_arm64.whl
  • Upload date:
  • Size: 1.6 MB
  • 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 rapsqlite-0.1.1-cp313-cp313-win_arm64.whl
Algorithm Hash digest
SHA256 70608a58bf160395083b95123a81e9b77eb596e949950ef453cc2e65b4381e1b
MD5 ac6c635aab1efcd558708e4a63565495
BLAKE2b-256 3fd9bc3b0a02e66d24fe71226591332a9aae1004cfb474e2c7a3be94632ccb4a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • 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 rapsqlite-0.1.1-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 807a31368d1533b131a716b30ec3f57af379a443eceb8beebc4d06d4db8c6e35
MD5 694490682f4cd0ee078d5d8661084bec
BLAKE2b-256 f593bea73b80c506d2945921a7de56e7d9efa4048cb3caa4a9b67ebb7ed7e7cc

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp313-cp313-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5cac32533c9e7de8584cd409b067cb198e1d55242a77cfbc2109189825f1d264
MD5 2bab39610aa16b9d07d9cdef3380c630
BLAKE2b-256 128488050c7a367391c4becb71c7acd7a8f22c2780b3970b54f1dc764f63d7f4

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp313-cp313-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 42516926585638de1ca1004f04df26d5db8a07a37ee9f3b717569a72570b50f5
MD5 b2b1de122de81416eb6316dbd3af1951
BLAKE2b-256 206ccc2d77f994dc32daa23fac821b086804d26d9305daded07e57c63165fde1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 86d727d38ec18491f553fe3e776dd904e8fa9c23ea647fe6e95bd49960fc0b82
MD5 b2e3e842052a35f9fc86bb58166fdd49
BLAKE2b-256 6bab05de558a3ee2f4214808cfe29b8c65acf35b0a45350b8af125afce3066ee

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp313-cp313-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 7acdeae20bd7bac5e1727252716398fc55904347b46547f0a541c73cb99a56db
MD5 bd102fd43fc2e3823ec4920e2e20a58b
BLAKE2b-256 dee1288d5daf0611be912ab2f36b4b0cc3268d57af5bd2560fb3b94fe1811652

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp312-cp312-win_arm64.whl
  • Upload date:
  • Size: 1.6 MB
  • 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 rapsqlite-0.1.1-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 d5edf102ebc3a397f7590df74fbd0cc38b962313592d13f7425d9e9ea5e2f954
MD5 5c464525672ba22a28f38af14385ebfe
BLAKE2b-256 e552fb2eb5289b91d6046cffd3eca0f6b2e9cfe74bbd480c5102484fc82d6903

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • 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 rapsqlite-0.1.1-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 f5887d186d7cab8f7026db6a0f33bbaf3ecbe73ad3f8b8a9e6858d0672619320
MD5 5f1634f69c297f088038b7e0d2c3f110
BLAKE2b-256 0d62bdb99da929e76d06412f8fbfcdf3d2c6fb5076a0218017f073cc9fb828d9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 5e971a48134a497c0ddfc8e51d9cb7a042c981a62b1ad849a6083901ff0b3476
MD5 31f5416c3521fb65fde6e0849d339ec4
BLAKE2b-256 07a3f4268b10655468091fa6c8618a18152345dc05d17888cd8da9da3847fc23

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 fdffccafe9ea72ed8d26928bf7d4491fab52a71000e1a7a3d7ca741fe650b93c
MD5 599bb11f1425ac1b32c393d165fff714
BLAKE2b-256 758d5941a6cce28c06574d03d704826eaa2ddcdf4c018176088e8820eb91a40e

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e2a8bdd75efeecd97f5186cfe007e67a3c79a28892b8e6149d5742477e3140f1
MD5 7d2614e85add2ba974357996784e1da0
BLAKE2b-256 ef20df922241c401c88f90e61be5f3644c69b81b6c86c58ff2d056d14561f320

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 6f945704d50e2a4c0f25a738463c01afc958a1631052bd3b8ef1bef05fe8a833
MD5 a9ae2e7868e7bbdbbd7f65fe0112eaa3
BLAKE2b-256 2b3235d0eec22b8db1c58b29218dad1abe4313c26d7ba399e7f78fa29e555b9d

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp311-cp311-win_arm64.whl
  • Upload date:
  • Size: 1.6 MB
  • 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 rapsqlite-0.1.1-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 f01e1c0941ccc480144849090d90ba4df860e4325ee0a6d4dbdfac08a5820ab1
MD5 3bc264b540a05816619ff8a0ae9eafcc
BLAKE2b-256 b995c6eec97de7b3ded0795172499d053aa4cb3d7fbd6e5a3d5a1a125dc146f5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • 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 rapsqlite-0.1.1-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6bb4e4f61af6c6b5bb8a5fe8b79d33716db0d1c8986b38909341dc3aa7dc9784
MD5 73b4813620b4733eddf5b3e02d4871f6
BLAKE2b-256 eddb636deadf73381873f0d572c5a2a408d4bff7c1d61b8f2a262cb843b94f87

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 59d73da5ae3402611ef5d16d032f86a60a29baba39fb07ce75cc5d1ae88a6153
MD5 be55f41d8d00a8c33381b15b425d0eaa
BLAKE2b-256 2411b89fddffe37273a0a0f3dc361eee1bbc9e074f7878d17ab6c68d40d2fd09

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c15b1d7c6218aab66bed330b4e6adb2753647e22066ed60eee84bde6978e8d58
MD5 4f5d361bbb0294e1624ac9bd79cae564
BLAKE2b-256 4f06e60cfca3f590327c7f14cbf6e5ebca7b4fcbfc5233fcd2e09cde87c60772

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 bf7639639aa6cdd0d4a0a6d7809f05ea13a38cf3becd30cea609a2c7c320c6d6
MD5 d1be4011a724d58217fd2d29c3e56764
BLAKE2b-256 c1139de0670cdc33a5de0231913631b7921b51832bea16d8b805755af8139900

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 365835ebaad48579184207ff5cfc508d3cf9e5b712fb27bb56c3ccc0f42dcbdd
MD5 83a32ac492fa83165a915d55dafe17f0
BLAKE2b-256 8496f9d33a1d9fc494eaeb4738a161ef01500cd3cb77eb7474437143389cacf2

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • 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 rapsqlite-0.1.1-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 e34f2b97821f87f16b43a9c311feee63fd2ec78e3b75cea7b99dedc9df913441
MD5 f0402853bc47114d2603a685953fa919
BLAKE2b-256 f19d7967e5a47345c8449bfccccebfc324a22dd43ce3a8cf6b0a8ac7c0b3c80b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 25a063e7039d5da9c81a06b5a778a7d03173455c913ddf3dce60c528b336b952
MD5 6449f04d33c2fb04018f105fd1f4c9ee
BLAKE2b-256 b0607008661322553bcaa53be5bb87395673d3f6425833c4488c6db05b8590db

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 5347b103def341026275059371e8c996e1793228ac3570b58aa540006645ebfa
MD5 8b88e290f4b81292f214f230805d6af0
BLAKE2b-256 b9ef5b1d4206447259f431edf249a3ee5ad52b4c174608b9f04a84dd9e7b9a4b

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1709d74f2f34ce8787dd0332f5c11d2b8a23bfc8a0a01b74e754c6a3b4b17777
MD5 ddee1672535eda47b7357c6f7307f394
BLAKE2b-256 1bdd3ec10ef50873fda79459e474f810678fbff34baf28e26eac018913b47502

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4a09ecfa88fadedda203f192f71070840f981cc066c90fa361d15abf2a7b71c3
MD5 36eaaa8a793dad1d3ac1e7ad94c70189
BLAKE2b-256 a908c60a3427656369e1d792787bf55f59291f319f388b657b036cc4ee2ce29c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • 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 rapsqlite-0.1.1-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 27ae8ec8b5feb75cbd81ba882d2486cd2434b01bb022dc333e36e58a4110c9b7
MD5 1dfa941af089030906ef94b436ab02d2
BLAKE2b-256 807b79f49fc787150b3306e2b6f07c6ba5b8f236b8437b99ea806ef45fdc17c6

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 da106251ec5fd7ed2ebc70e0a59791a889cc097280ecf635f823fc0a703d1bca
MD5 fb36309536f67be52f5a31b5c78d8e7a
BLAKE2b-256 2aced8e428e42c2c7a2ca82b0ee6c57bc5fff620cfedee9ed746bf957e529da0

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 eddd8869af7847ecb33d34bc6c503f21fd655e7dd5eacf6cce2896e06e82ecc0
MD5 c7cb684bf841cf5e9a6049e1935477cb
BLAKE2b-256 e7da1940b143cec5e4da92cd7b6a7d6c251a57e98955fc8fe4388b8bafd845ef

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 e389061919131ee89188379b147a5ae0def79ed7b7c0b7d0ba26329e14426fe2
MD5 c6bc948fc46319a92f835112755aa7d6
BLAKE2b-256 e04c79f70a3b33238e08ec53a80fe8c261a1a57c23adcbbc86270ade3428bbe1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 38c55ed02caa15b023619ed0fcc86c7f17a674f401fad6247cdde336f025ddbf
MD5 ae2006f47e7eebaaf737ec6a360fc83d
BLAKE2b-256 91335a110664e5882233e4a7a0102b2b4663d0a8d1fbdcffa7ac7329b3d2264b

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.1-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 1.8 MB
  • 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 rapsqlite-0.1.1-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 4f51facd0183d12f1dd8cb061ccb85d7f2cc334db55758a435056c5731c2fe29
MD5 fa1bbdd56335c95536172cada597f376
BLAKE2b-256 1095544854c5dac03d09dfd981b0bc8292e646bdd29de827dc1ae4f7f1fd9e41

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 60969d838c320e4cd1a158ecc56ef07cfcff0eeaa7520390e6950ce17c7cc6ef
MD5 008e4d4f488039db0e2f7ab6e8907909
BLAKE2b-256 08ec68cc2c33414a92f2d17dfc681d1017c3ec66ea0e2234fc3ae608b7117d85

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c6069da418846c73d0d9e32f333e596caa66b787b45c5a4850d32c01939edd62
MD5 8e9d49f8c46ba6251d1f3642795049bf
BLAKE2b-256 717c419ee013def013daa7048704bf0b8c63badd647ce49464f92b1ab1f822d3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d598f7f7f0be26682f1a6983a51c480458846e7452ab13fab8b5afd3cf1b86f0
MD5 29ca4a48bcf5c283f0e1ffccc868e99f
BLAKE2b-256 c3bfbf8be41dffae626bcfac5f18bf867a00ad0365ff90136a4fde697e84c455

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.1-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 084c97a4413792e82741b56bd0585086a77cbe898e2ada53f76d8a3427d11462
MD5 d08050a2b5ec3b7dc20cdb5f67c15fac
BLAKE2b-256 e930c398a94f58c89daa11f27afe4c7b32f70136005f8fe1788ef34f61713003

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