True async SQLite — no fake async, no GIL stalls.
Project description
rapsqlite
True async SQLite — no fake async, no GIL stalls.
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+ (including Python 3.13 and 3.14)
- 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 failsProgrammingError: For SQL syntax errorsIntegrityError: 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 failsProgrammingError: 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 failsProgrammingError: 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 failsProgrammingError: 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 failsProgrammingError: 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 executeparameters(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 failsProgrammingError: 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 errorsWarning: Warning exception classDatabaseError: Base exception class for database-related errorsOperationalError: 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:
INTEGER→intREAL→floatTEXT→strBLOB→bytesNULL→None
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
- rap-manifesto - Philosophy and guarantees
- rap-bench - Fake Async Detector CLI
- rapfiles - True async filesystem I/O
- rapcsv - Streaming async CSV
Changelog
v0.1.1 (2026-01-16)
Python 3.14 Support:
- ✅ Added Python 3.14 support with ABI3 forward compatibility
- ✅ Updated CI/CD workflows to test and build for Python 3.14
Python 3.13 Support:
- ✅ Added Python 3.13 support with ABI3 forward compatibility
- ✅ Updated CI/CD workflows to test and build for Python 3.13
- ✅ Fixed exception handling for ABI3 compatibility (using
create_exception!macro) - ✅ Explicitly registered exception classes in Python module
Bug Fixes:
- Fixed exception registration issue where exceptions created with
create_exception!were not accessible from Python
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)
Initial Release - Phase 1 Complete:
- 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
.pyitype stubs for better IDE support and type checking
Limitations (v0.1.1)
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 - v0.1.1):
- ✅ 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
.pyitype stubs for better IDE support and type checking
Roadmap: See docs/ROADMAP.md for planned improvements. Our goal is to achieve drop-in replacement compatibility with aiosqlite while providing true async performance with GIL-independent database operations.
Contributing
Contributions are welcome! Please see our contributing guidelines (coming soon).
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file rapsqlite-0.1.2.tar.gz.
File metadata
- Download URL: rapsqlite-0.1.2.tar.gz
- Upload date:
- Size: 41.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
162b2215c52ca9061f6a2ccca29bdbbba8764553b242181ea2abb43fbe5d8e21
|
|
| MD5 |
163a3f99df9f2badfcf8ecb2c5a72d53
|
|
| BLAKE2b-256 |
7068753bd6e8eae395d7a49ef0c3c1966192c2ca3dc411cfb5c55d8f3d3cbc5f
|
File details
Details for the file rapsqlite-0.1.2-cp314-cp314-win_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp314-cp314-win_arm64.whl
- Upload date:
- Size: 1.6 MB
- Tags: CPython 3.14, Windows ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
885b90f10b5bb93b1ad6d7a6b74d3ed14ca2798a7714b6612e12e7e50ffe97e1
|
|
| MD5 |
c6aa90044ca0de5261c3fbbeb7d0979d
|
|
| BLAKE2b-256 |
613e5a28d84fbf11a70640e6e98f1b7e0a801f2ae7d7f83980ee39d342cb1461
|
File details
Details for the file rapsqlite-0.1.2-cp314-cp314-win_amd64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp314-cp314-win_amd64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.14, Windows x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1d15364b70907f61ef051cfae76854fda51e9ab2e98f5b82b47773568ca39b1b
|
|
| MD5 |
820d5710b0e2ecca6b57033e772f96bd
|
|
| BLAKE2b-256 |
6ae1a06e91e45129ef83c8259bd2d3fe84413b1e23d4f373382b11f2f8190af9
|
File details
Details for the file rapsqlite-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp314-cp314-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.14, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6980f9236c0922a077f0ffe04b1a855286e17d0852648eb12bac0d83a4a13aa7
|
|
| MD5 |
dbd99fdbb2355a7354a3e7a1f329664d
|
|
| BLAKE2b-256 |
d5593b22382966940f27260d48daaa2fc45776635d5acf4f4c1f8e984c676f2d
|
File details
Details for the file rapsqlite-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp314-cp314-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.14, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6ab0456d1d113436e5b42ac22b9b6bb24838ee36bde36494b22c332e6c37dc18
|
|
| MD5 |
abcfdad90f0068b75f6038c9e68f9ef4
|
|
| BLAKE2b-256 |
6ad5bbe1bd0f9ab87e04130e13298fd1f0b1c78872afcc40f6b4decd684f680b
|
File details
Details for the file rapsqlite-0.1.2-cp314-cp314-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp314-cp314-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.14, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2a085c5528115c2bfdfffcc142a86c7840338a99915a0795f69af6841854a171
|
|
| MD5 |
ba2d7948b82217e94fe523d4d5fd5286
|
|
| BLAKE2b-256 |
8bc1b2d0e521b259af8648671abf5c9bd9562f1974369f74443cd041ef9305e0
|
File details
Details for the file rapsqlite-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp314-cp314-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.14, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aa75cf2bcffffddb944f85868c8bfb70ea33c7b84b4c9dcb6446a50e51016607
|
|
| MD5 |
820f51513012d638a14f7cd2bb5f733a
|
|
| BLAKE2b-256 |
f81a589ad84de995d89fbec2628ffb6d6779ae182fdebddd7ece2ae70197efb8
|
File details
Details for the file rapsqlite-0.1.2-cp313-cp313-win_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d1fff8982af5296424406319a1ab1841cc0c643e570d3d29b06a15f797ae5ef5
|
|
| MD5 |
6d2272d0e8b1e606b3622599faa92342
|
|
| BLAKE2b-256 |
56c5aa828dbaec9bca34a6df3870ce7b62324668c09ac0633769d835d193878f
|
File details
Details for the file rapsqlite-0.1.2-cp313-cp313-win_amd64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0557826f0a1e0457c939f91e210ac56560ccc75aa414cf3035162af99b1c02ff
|
|
| MD5 |
bc56620ce32446c748d73a110ee0874a
|
|
| BLAKE2b-256 |
f965a0cd657c3ab1ea5d2aaa886fedf59983bf5600c970bdc54d3acd8a34ce04
|
File details
Details for the file rapsqlite-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp313-cp313-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e69ac0c6336ddfa4b09bd5852f954beb09f3ea7cb6cf082caa06003e5fcb2d1
|
|
| MD5 |
0334bb9c385f01da040e0ad3dd94660a
|
|
| BLAKE2b-256 |
75326ee18569f7bc4866f6d7527c82a0d3b81b8643c0380d8f137dd98403750c
|
File details
Details for the file rapsqlite-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp313-cp313-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.13, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f23e64705b47c83f2dc43de93f59cdfaf3e821acd2e267324718126937e43ad0
|
|
| MD5 |
8f81343e1464f2e556785a4f63977866
|
|
| BLAKE2b-256 |
2bd56a8dae272201e09f076498b076d5e38dd2b76f4cda479572fe29e7147752
|
File details
Details for the file rapsqlite-0.1.2-cp313-cp313-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp313-cp313-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.13, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ca0385050caaa8117495d6a13b8ed791828563ac7a808ef31a9dbf1ecafe0f44
|
|
| MD5 |
e004904d7fb984ef977b88d67e77cd00
|
|
| BLAKE2b-256 |
20984afe8421041806ab9853652809d6353abfe40b55f4ea04a8f3b469d68c0a
|
File details
Details for the file rapsqlite-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp313-cp313-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.13, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0f8b5f83bc5aa359e2ae042796c24c7b2c7d110119b3a7ae2a821abf43adabbd
|
|
| MD5 |
83938c6eb64020eef5eb32f8d85b450f
|
|
| BLAKE2b-256 |
d0119f3ac3c086a4ba7130c2aba5ed9be590a5acbc4172ec911bc739ebdc3d90
|
File details
Details for the file rapsqlite-0.1.2-cp312-cp312-win_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f884e74a2322b93f3f469780a34f6ebfccefffc47e6ce28fd268e24583566605
|
|
| MD5 |
0bdb821e2bdd8a4fa567b67270a66586
|
|
| BLAKE2b-256 |
24df731187221a436d863124ccbd834d92c6f23a2abc4934d675dfe50ddd51c5
|
File details
Details for the file rapsqlite-0.1.2-cp312-cp312-win_amd64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f31b3fafb1fd37eaf1fc74100b76348ec6fd59de05ec63b266fd737226b40d69
|
|
| MD5 |
f047391bbae646a9964c3c95a4994f25
|
|
| BLAKE2b-256 |
e904d896392bef4f33828c2147856e960f6dfc7085ae6151fb2f40ba69d44147
|
File details
Details for the file rapsqlite-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp312-cp312-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
947e05265f3214f1367be59ff25ba4646b3627c531101fd01ef47b9e4c456dd2
|
|
| MD5 |
6bd0695f0ca1802b8999d79cfd744cd1
|
|
| BLAKE2b-256 |
9cdf793652b23f34a19d2465212c8dfaed759451cfa09ac18819534fd89ee517
|
File details
Details for the file rapsqlite-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp312-cp312-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.12, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b36bba3b7f1747ca7014ae5d558ac4029bdbd5907b66a782febff838f977b04
|
|
| MD5 |
2fbaf5f5c23a6e8d68de0b932de0457b
|
|
| BLAKE2b-256 |
5d7b8e4efabf8e22ec2098e6611bdcd3b4da7114f7d78356810e35a471303c1f
|
File details
Details for the file rapsqlite-0.1.2-cp312-cp312-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp312-cp312-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.12, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80fe2f386725358d78268acdf9394ba77b11d11aa1bba7a0ed4e88711e2cea2d
|
|
| MD5 |
e6b938cc95e750032b235c6f6d829be7
|
|
| BLAKE2b-256 |
0d60db263e09aab28060346f26e86355426a4ee5de08758b7e7b521a4cd9c905
|
File details
Details for the file rapsqlite-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp312-cp312-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.12, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7cb8c4e4ae03ec21a4838009440d36f7f0c61bc9d4de9d21c2ed349f6adc1ef4
|
|
| MD5 |
cbe006b22aec91251de2f4a1b650c2b4
|
|
| BLAKE2b-256 |
60388c3d72bd8e106063dcbead11a0b0e6c255a24c66cdd55eefd517f3c4a6e3
|
File details
Details for the file rapsqlite-0.1.2-cp311-cp311-win_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c0f7f632b8459a78b034832f6685c2f5be3cfd8c49338065fb39c0c576b19dc3
|
|
| MD5 |
7458f6ff629ac90d896255b41589e02e
|
|
| BLAKE2b-256 |
640c69f0080770e3c28743fabe1310c4bb2d14a786b2ca4cff3396687391a22f
|
File details
Details for the file rapsqlite-0.1.2-cp311-cp311-win_amd64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7e79b02e7bf0d347f3fd7dee6299ca6332830f79a1d18410d6dc5357807d33f7
|
|
| MD5 |
4d2e1daa596900220cf0e0b540586bad
|
|
| BLAKE2b-256 |
e716a0671fc1b623e58e9162c9bc19c7f8f812d597648a98f628adb43e2153ac
|
File details
Details for the file rapsqlite-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp311-cp311-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f8a981cbd15d1e3e4542b8ce6f63ddbf176202f5428e7f132b1beffcaf0c476f
|
|
| MD5 |
0b3d800b3002385cd40657eb793dad91
|
|
| BLAKE2b-256 |
57a1f6d94208453f15c377315c54f92bb770716ba94ff3015bed9ed987b15b2b
|
File details
Details for the file rapsqlite-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp311-cp311-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.11, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5330867ba3f73993da9fb46c793f2080624b36508965e75285abbdbecdb3ec85
|
|
| MD5 |
d69306c6576c7614f3fd234c7f42c6f1
|
|
| BLAKE2b-256 |
b939d68469d174a53169aa3a30a0599dd57ef45aa7586f97e16bbb46497e904f
|
File details
Details for the file rapsqlite-0.1.2-cp311-cp311-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp311-cp311-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.11, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
891068488f101b389871842f02eb3ab0b6feb5831a177bc04a61e860f3091494
|
|
| MD5 |
39ada23a308746000fb330aad669dd80
|
|
| BLAKE2b-256 |
6bb153d75a8d62f6f89b53ae9de4cc7cd3d8f8e8f15791b695b760c39f76bd65
|
File details
Details for the file rapsqlite-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp311-cp311-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.11, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cc5fbe1a4b1191ce601b6a4f27f5f0905109c5a7c52c41a8c05651b9af39a39e
|
|
| MD5 |
9f7bb2c0b7f2b290ab7eaa7d102acb8a
|
|
| BLAKE2b-256 |
95350218bc9517ae5f620ea9caa4151628fa02d6e44c47bfa3a63dbfad4d3cd7
|
File details
Details for the file rapsqlite-0.1.2-cp310-cp310-win_amd64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
29bd760aa8f48d546de47b169d63f4ca760ec37828afe00537d73c40b0593ae4
|
|
| MD5 |
3a25a9a237e2317c284d45585f10775f
|
|
| BLAKE2b-256 |
02153fc60b475e8e1dd24fd598aeb38386ab44c580921a9f32ddd2dc9d4701c9
|
File details
Details for the file rapsqlite-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp310-cp310-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
174b1c24009c68665b19603166d8e14986e30dc6f3161b84d7abb7a9bd092457
|
|
| MD5 |
e81636db78e9407f0a949cbd459d6dd5
|
|
| BLAKE2b-256 |
34f84af287b48771bf6094044b82d953b578e1827547e9f5c0590b35f28b8ee8
|
File details
Details for the file rapsqlite-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp310-cp310-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.10, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c136ffdbf4fb3a8415c83eef36c09030961578ccb5842de474aa378f2f8588e8
|
|
| MD5 |
6cd70bff40d42cc4075f00ac0274802b
|
|
| BLAKE2b-256 |
8570ab6c49e0c926c96ab9c24ee7d31cd00a7ed1ac882766184076ea9b2d4eaa
|
File details
Details for the file rapsqlite-0.1.2-cp310-cp310-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp310-cp310-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.10, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b3c36c48cad4eb3ab401d61ac19cce24dc872dccc8ea02592767d4f79ae64ba
|
|
| MD5 |
4e6a723f560bf016a63a7a6c7867e19c
|
|
| BLAKE2b-256 |
bc90e02c011ca1030d0e35e2f7b39643c80c7dbd97211638d0b40538f2fda3b5
|
File details
Details for the file rapsqlite-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp310-cp310-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.10, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
3e77784c73690899eb8d10ebd2a541ab505c8cb463ece0a33cc07f6ec930808c
|
|
| MD5 |
07e92afcf30e4b93074718c445948b7b
|
|
| BLAKE2b-256 |
b413eac5f11bce41d16f6e3eddba48bf863dbbb0335ab0412bbc4c329d37fb72
|
File details
Details for the file rapsqlite-0.1.2-cp39-cp39-win_amd64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c9941288f3a458062cba3e1cac2e778bff8275443da40619033a196e42d7115
|
|
| MD5 |
aeaf8112d9feb1932fc56d0bea863fa0
|
|
| BLAKE2b-256 |
2e0eeb1fa9d29de1c396c3dd225e4250d035b2f1aff9e791327e9dd78248c149
|
File details
Details for the file rapsqlite-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp39-cp39-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dcd0aa6d963e070766676aa098b2bee160f781071adc8d35dc41da34a5fef86
|
|
| MD5 |
37e15f46e82d3cc194717d7d89c1a77b
|
|
| BLAKE2b-256 |
febdc8e8f36011515573df70db5f3b6bae1f5519c80466b52de1ee0e5360e57f
|
File details
Details for the file rapsqlite-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp39-cp39-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.9, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d66e888288ad702ba6239600294c81f658db62621f6be9233fd4fa4677178f4
|
|
| MD5 |
5523b27126948fb6ef9af6bccbdfa1e6
|
|
| BLAKE2b-256 |
15089aa161f29e7c8d5f22f6dcce90511f80f0040bb1a6fea6068aafc9ea6bfb
|
File details
Details for the file rapsqlite-0.1.2-cp39-cp39-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp39-cp39-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
83c8f6ba312bdcd95652fdf0809c92a74aaeaff9ac8ece762b770bce69a7e822
|
|
| MD5 |
1e0ce8b502fd85c679ec5030ea86557f
|
|
| BLAKE2b-256 |
5f309499314b1db8bf77729ffdb3d16fa3a2a8e7dcecb3277c731c7cea4cb95a
|
File details
Details for the file rapsqlite-0.1.2-cp39-cp39-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp39-cp39-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.9, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
43298f1dc93f79dff5e97ccc5cdb7cf01ebcae05433e131687541096908e8c45
|
|
| MD5 |
167f7d110701ddafefbb84ac639acb27
|
|
| BLAKE2b-256 |
5a3c1cfe773cf8cb8d46f17730d420691a68aeeb135b2eda8fdd7715ce237aec
|
File details
Details for the file rapsqlite-0.1.2-cp38-cp38-win_amd64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bd19d452cf29ee7c013d3d7d66f012d7063a5e4247e4f252a02c4aaef3839b5d
|
|
| MD5 |
4ffe6ff0c4c1dd4d9e36c225eb2f616c
|
|
| BLAKE2b-256 |
6eaab682951bda19707de705a57a15d4f80b72f1b5bc02f92ae6468cf128b236
|
File details
Details for the file rapsqlite-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp38-cp38-manylinux_2_28_x86_64.whl
- Upload date:
- Size: 2.0 MB
- Tags: CPython 3.8, manylinux: glibc 2.28+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff118b6a2bc1ca5128136ed893595644982fcb8e810d9fa75adac38cc25ab852
|
|
| MD5 |
2a9ecedc38e1fe663a4a73ea1c699103
|
|
| BLAKE2b-256 |
42bf51bb542f3194c7769885622fdeff28240d9d47641139d35cb8bd931b407a
|
File details
Details for the file rapsqlite-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp38-cp38-manylinux_2_28_aarch64.whl
- Upload date:
- Size: 1.9 MB
- Tags: CPython 3.8, manylinux: glibc 2.28+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ff7c7ec2b8b56827aee4d43f009627b8c9c25e864c5ec0926a89bd05e576701b
|
|
| MD5 |
47e98ce87ffa7c280eb18740304efabe
|
|
| BLAKE2b-256 |
4c8ce926a52739417b7ef83d02ad9d4ea192ee69c77e0d52159949f452dd444a
|
File details
Details for the file rapsqlite-0.1.2-cp38-cp38-macosx_11_0_arm64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp38-cp38-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.8, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab1ba1c9562ed03896e5cb26eb8b1b7351db08448780c5e84c0d60259256b781
|
|
| MD5 |
9534b005c0e3e62576d6883d261b548f
|
|
| BLAKE2b-256 |
7ea04d8e0e5970f726db72b6613856b221fcb81fd950346dda904e337b0b2eed
|
File details
Details for the file rapsqlite-0.1.2-cp38-cp38-macosx_10_12_x86_64.whl.
File metadata
- Download URL: rapsqlite-0.1.2-cp38-cp38-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.8 MB
- Tags: CPython 3.8, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
09dd97fb85c7e2f2d67caa3843918b5b14ff1f5909d8046b263ef69e2a85ecaa
|
|
| MD5 |
35a7db14070d692492028a442e05f547
|
|
| BLAKE2b-256 |
57e708a5ce9c9558e70c8e1f157ac726552ab793df13a7eba6619aef3859e5cb
|