isA Common
Shared async Python client library for the isA platform.
Overview
isa-common provides async Python clients for interacting with isA Cloud infrastructure services. All clients use async with context managers and share a common base class (AsyncBaseClient).
Infrastructure Clients (require running services)
| Client | Service | Default Port | Protocol |
|---|---|---|---|
AsyncRedisClient |
Redis | 6379 | gRPC proxy |
AsyncPostgresClient |
PostgreSQL | 5432 | gRPC proxy |
AsyncNeo4jClient |
Neo4j | 7687 | gRPC proxy |
AsyncNATSClient |
NATS | 4222 | gRPC proxy |
AsyncMQTTClient |
MQTT | 1883 | gRPC proxy |
AsyncMinioClient |
MinIO | 9000 | gRPC proxy |
AsyncQdrantClient |
Qdrant | 6333 | gRPC proxy |
AsyncDuckDBClient |
DuckDB | embedded | native |
Local-Mode Clients (no external services needed)
Drop-in alternatives for desktop/offline use. Same API surface, backed by local storage:
| Local Client | Replaces | Backed By |
|---|---|---|
AsyncSQLiteClient |
AsyncPostgresClient |
SQLite file |
AsyncLocalStorageClient |
AsyncMinioClient |
Local filesystem |
AsyncChromaClient |
AsyncQdrantClient |
ChromaDB (embedded) |
AsyncMemoryClient |
AsyncRedisClient |
In-memory dict |
When to use local clients: Use local-mode clients when running on desktop/ICP without cloud infrastructure, for development/testing without Docker, or when you need offline-capable storage.
Installation
pip install "isa-common[full]"
The base package installs contracts and common utilities. Select drivers explicitly:
pip install "isa-common[contracts,nats]" # IntegrationEvent contracts and NATS only
pip install "isa-common[redis]" # Redis client
pip install "isa-common[local]" # SQLite, files, and DuckDB
Existing consumers that use several infrastructure clients should switch their dependency to
isa-common[full]. Public client imports remain lazy and unchanged. A driver must be installed
before its client can be imported; installing the base package alone no longer installs every
database client. full preserves the previous driver dependency set; observability extras
remain separate.
Frappe v15 consumers should select [contracts,nats] so Redis and Boto versions remain governed
by Frappe. Do not select [redis], [s3], [falkordb] or [full] inside that Bench environment
unless their combined dependency constraints have been verified.
Run bash scripts/test_lean_frappe_install.sh from this package directory to verify a fresh
Python 3.12 install against pinned Frappe v15.109.0, including imports and dependency checks.
Quick Start
from isa_common import AsyncRedisClient
async with AsyncRedisClient(host="localhost", port=6379, user_id="my-user") as client:
health = await client.health_check()
await client.set("key", "value")
value = await client.get("key")
Using Local-Mode Clients
from isa_common import AsyncSQLiteClient, AsyncLocalStorageClient
# SQLite instead of PostgreSQL
async with AsyncSQLiteClient(database="app.db", user_id="my-user") as db:
await db.query("SELECT * FROM users")
# Local filesystem instead of MinIO
async with AsyncLocalStorageClient(base_path="./storage", user_id="my-user") as storage:
await storage.put_object("my-bucket", "file.txt", b"contents")
Development
Run the default deterministic gate from the repository root. External service tests require one explicit opt-in; endpoint variables configure the target but do not enable a run by themselves:
# From the repository root
make test
ISA_COMMON_RUN_INTEGRATION=1 make test-service s=redis
# Optional Redis endpoint override
ISA_COMMON_RUN_INTEGRATION=1 REDIS_HOST=redis-service REDIS_PORT=6379 \
make test-service s=redis
Contract Coverage
See tests/contract_coverage.md for the mapping between CDD contract IDs (BR/EC/ER) and test functions.
License
Copyright © 2024 isA Platform
Release files for isa-common 0.6.14
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| isa_common-0.6.14.tar.gz | 186.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| isa_common-0.6.14-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 404.9 kB
Release files / isa_common-0.6.14.tar.gz
| Download URL | isa_common-0.6.14.tar.gz |
|---|---|
| Size | 186.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
86f2368719e7a58275c2fae32f3df01df095d2090ebe4c16e80980fc29eb485f
|
|
BLAKE2b-256 checksum How to use checksums |
a06f83d90b2cd903d85ce53bbb889bd17d776dbbc345057c436763d4b7e040f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.2
|
Release files / isa_common-0.6.14-py3-none-any.whl
| Download URL | isa_common-0.6.14-py3-none-any.whl |
|---|---|
| Size | 219.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
52657ea2bba77d90c2e2efee9316920cd1dab19c012dd7c1157ae58433815e83
|
|
BLAKE2b-256 checksum How to use checksums |
fd8894a65f8d3dbe8069f0d9f711994d86495fd05f79af49bd335184f1c6ce06
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.2
|