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.0.tar.gz (40.2 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.0-cp312-cp312-win_arm64.whl (1.6 MB view details)

Uploaded CPython 3.12Windows ARM64

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

Uploaded CPython 3.12Windows x86-64

rapsqlite-0.1.0-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.0-cp312-cp312-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.12macOS 11.0+ ARM64

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

Uploaded CPython 3.12macOS 10.12+ x86-64

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

Uploaded CPython 3.11Windows ARM64

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

Uploaded CPython 3.11Windows x86-64

rapsqlite-0.1.0-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.0-cp311-cp311-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.11macOS 11.0+ ARM64

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

Uploaded CPython 3.11macOS 10.12+ x86-64

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

Uploaded CPython 3.10Windows x86-64

rapsqlite-0.1.0-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.0-cp310-cp310-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.10macOS 11.0+ ARM64

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

Uploaded CPython 3.10macOS 10.12+ x86-64

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

Uploaded CPython 3.9Windows x86-64

rapsqlite-0.1.0-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.0-cp39-cp39-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.9manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.9macOS 11.0+ ARM64

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

Uploaded CPython 3.9macOS 10.12+ x86-64

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

Uploaded CPython 3.8Windows x86-64

rapsqlite-0.1.0-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.0-cp38-cp38-manylinux_2_28_aarch64.whl (1.9 MB view details)

Uploaded CPython 3.8manylinux: glibc 2.28+ ARM64

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

Uploaded CPython 3.8macOS 11.0+ ARM64

rapsqlite-0.1.0-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.0.tar.gz.

File metadata

  • Download URL: rapsqlite-0.1.0.tar.gz
  • Upload date:
  • Size: 40.2 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.0.tar.gz
Algorithm Hash digest
SHA256 3d349ccd51c0019288b64fb15403b86998642ca7933d838def3e47858795e008
MD5 efe2c38a26f348abb039c9ccc9ed9e8b
BLAKE2b-256 63cf81b66946b84898500a4db057dde0bf8b9fc3079bd578e3f7ae2e2ede7af7

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.0-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.0-cp312-cp312-win_arm64.whl
Algorithm Hash digest
SHA256 8139a8a6aee92c095e2a8d54f777d90319e495fad6acf30dd5069cc69f1b1bb9
MD5 493442ce68ecd81c80eec643241a887a
BLAKE2b-256 c0fdde76549648e677b28ac235e110bbfa28965beb74f8bb26b842ca272b5d31

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.0-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.0-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 c6b987924e271c44f3720d6758b0077027dce847a5ec6587677c306dcbc3fe26
MD5 f13b95c3faa2de5ced0ad5198bb1be66
BLAKE2b-256 3df6f7d604d7c4f82968df2c285278a63dd3ca802f99a55d0bf3426060f04ec9

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp312-cp312-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 238783822d4c5d1e2681e70d6a5a322df7882376112219d983a53988db39fc8c
MD5 fa711effed613930ccf1184e3916fcfe
BLAKE2b-256 52e9d12549fb0923aebb1a7b105a7d878e71b35136e6f29ec8923033725b07af

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp312-cp312-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 4297e283807e8b6ad5dfe8aa5cedee791643cccbf84bdc5a45fa9189531d5c6e
MD5 fdda70eaef015a3c1e4dcf1e851f14d1
BLAKE2b-256 d08a0e1f60a5bd6d742a12801aca8d0f0088c5f1b5e726d8e40d1ed3b899dcde

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 2a3c83ecf2e0c779340c144cfda3afd9e6c1b62923934eff0d67912eb53d0bbb
MD5 91a53241cdca6ba1b8f6452290b181d6
BLAKE2b-256 10f845be3c4ec16e0d582a769ae987d9d0aa72711a1f5081e9f19a9fc682321c

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp312-cp312-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 f80e6fa84eccac2ce2d73a9776c2a50a3ff2de8cbce5cca98a83b64346bba8af
MD5 60b3de0f511f9c48cf2258bebee471e9
BLAKE2b-256 7b5ff8c3a885cabaa239b99807f00c1c3ae72c0b785efb0ec3ef881362a98d35

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.0-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.0-cp311-cp311-win_arm64.whl
Algorithm Hash digest
SHA256 41802c7271654015fbb6103efa94a0e5326e4de2ace04512d212edd277e71641
MD5 0b2cd573900d345decd201c7a7fcc6fc
BLAKE2b-256 165314b33578492927c4a195fbc7014303bd9122247f0ba2bffc16b973c5307f

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.0-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.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 ccfc6404267db0a041e97be8e9d4ca2cad0ede77f0b90a1255673d57a5e8c93c
MD5 250039994ac76be01280de475ea9a013
BLAKE2b-256 01dbdf7442df0255f7fdef569b781d890133a8db9bf5b8f17cdf7e079f619949

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 61e0eb0d40c004c17458e49bccc32571cc0247f0ed9df4dbf7c0955529cda58e
MD5 8ef5d31c16d5128c4167516290416739
BLAKE2b-256 d7dfaec7f8973bf660851071b8440ed254f67c87a88b5aa07406fa900d0bf133

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 ed0eeb675d7830a575373dcab6bc352297e2a512db3d718907dc657e499b16f6
MD5 52ea5f2b17d5074062ee6c066fb68482
BLAKE2b-256 1b6c6114dffcb9be56a710bbdfe14f9802ed1e5b5c21b17b497ffddc32f38376

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d5c7a2c8011e0462e057a8f88e57a17ad7e3b13ff2f34daf3ae7d1ebdb0a883
MD5 520e878f74abeac03fa58afd94e0fd13
BLAKE2b-256 e011398ea25bdf6cbd2eba37bb0de22c2a60b6bbbeeda81dc8209e63f7819259

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp311-cp311-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 4476bdf5c68122f443c07aec7b38ce7dde6aae794b346b9b8493711135ebba33
MD5 06cc35b341312185c61f85285d2b60e1
BLAKE2b-256 a7f4f31d572a266f61227a61c61074d7a5be0748b81ad464e5bb06b260d3ad46

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.0-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.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 237266d63be66598871c674fc41ec33aa3a2ebb20663c666e04c2fb59ffcc564
MD5 bf41e7aec99370228f812f95d268e456
BLAKE2b-256 0bc427b079b39c6c45f6ca1b93278fedf05d1030010dcf325c5eb93a4c7b98c1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0d4ec1c6e7893de5267c5d780330ac7e106aa32d74756898a8ccd2897c361b28
MD5 4c93f3e040a3bf67ce65a5c5b3be52cf
BLAKE2b-256 f83d245c458ce6642abc568552cf557029e5fb7623d31a3acb6abbb0e9efd0f1

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 16fec51c1b0d8b74a4a7c31a9586787d5552905a82f5cd16e8622d8c5f8e1225
MD5 9923517ae80c1f1063d5484fbccb149a
BLAKE2b-256 6cd750d839ace219fef9c0e78eaed82fa687a44b452b432cd7ca83a782390d1a

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1d79ba4b5c1c581b5d8211e9c03c4e81020c0fdb1c85153829bd379d25225aa5
MD5 89156514667178f16a1abcd7984d17ec
BLAKE2b-256 52c28cc6fa3a227b2e2de37618b2c52dbbc51611a3415f3aab6231cc3d6a9583

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp310-cp310-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 19cbb1c86edc2a56d5667ecfb348a5054dc819e5492d5909999b8b4d411cd545
MD5 5223f92457eb3daf657798bb3edb7eca
BLAKE2b-256 e1ad073e689d623ff9e5cc871f37b8f80dd438de7652ee95c46a49b662c094a1

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.0-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.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b69b8194c3ca8fd70e0d30e735d2320c8c21e25916e1bcf35f4d721525807539
MD5 308e7ab6304e1906d66a68c7fe93e027
BLAKE2b-256 5f47e3ea2e22b66ad43079a515a0168aa0f1ff504f420fb09fa1f6d47d941550

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 97a37910a2b9867e7629afe1a54b124650b5f60819b46c52c094892c54b9e615
MD5 b00d8fa679d602fea8d63e079213ed29
BLAKE2b-256 28be9a62dc8e49069ab79e72d60c046d54e2f85e97b4906659c382cbb4e6ba31

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d0aaa12c33a8330ef0a615cba07eac79e5ea0f6c5770bc1535d20789cf68e762
MD5 b2f82acc3bf7426e5543afdb7d1eb566
BLAKE2b-256 71d7473d150ad57ed0b3b60a143d8f1e5fce1aefcc80c6dbab9d2b3d96ac0026

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 4e60c26d7b1c1f89efbe7728ccfdec21037df1dc79e2e16429f9c60573dab103
MD5 4ac70a2861e11c67c094c80f49880174
BLAKE2b-256 1b6c3cce564f9c10b583e12237d62aca90678b4eeab8f8259476b1f9fab329d5

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp39-cp39-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 ce03bf1c901c9532bc271b0771f7dd6078ca1706e1f7f6d7435ab3cd8230a131
MD5 2bc85c66194c974ed52f8806d5ad6ea9
BLAKE2b-256 941142d4a1754a28ec3ce6e80d86e02ce2570fb14e9b487381c8985f3818d4dc

See more details on using hashes here.

File details

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

File metadata

  • Download URL: rapsqlite-0.1.0-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.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 9aae2e7c814e5a289378b65f455e8c7bd8c65bfa21b04b8c7005886133547285
MD5 04b4ff0ba207a484221db42e083142d1
BLAKE2b-256 68a6afb2c3201cc680bed5a2692763a01c9134780a49f77e658124d5bcc1337d

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9bc1f239efa758282da6ef6fd7ec6c963623c763b68a2ecb19fc917b8b900cb8
MD5 8e2e25bda8a2a973703ffc6176568028
BLAKE2b-256 e3408ee7bca83d7a270fe4b9aaab1d08444a500f8f56e9b2d38d90c07429d6cf

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c7586e9c4527bd07125d5a58d839af1ed85b8e9e8c36293e0c1f9249ed5cc2d7
MD5 105ad93d59bfdbab8756c175f3add46c
BLAKE2b-256 2ec45d27309eecae08f055bbd238d15f83ee1c72805d170b7718fbf30b723255

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 1992e3b309f0713a6751f9b30a85e1908f60cad21a5468a0207987edd59e94bb
MD5 5a2f80a2b77529f4e5a4cd32643372f8
BLAKE2b-256 34ccdd9e169741f1e104ab04ceb9c478553aa6cf9cfaf980852eecdef259d3e3

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for rapsqlite-0.1.0-cp38-cp38-macosx_10_12_x86_64.whl
Algorithm Hash digest
SHA256 51210b5b1acb5eaf20d3b6cbc9d85b9d2eb6b20f019ebcac18449633d96abe61
MD5 aaab0781acb4d85d30a8279758b835ec
BLAKE2b-256 10866f7a0345535034ae8cfd7956999b750b34dd38e2b027a137bb695ece6f37

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