Battle-tested InterSystems IRIS infrastructure utilities for Python development
Project description
IRIS DevTester
Battle-tested InterSystems IRIS infrastructure utilities for Python development
What is This?
IRIS DevTester is a comprehensive Python package that provides automatic, reliable, production-tested infrastructure for InterSystems IRIS development. It handles connectivity, container lifecycles, and test data management, codifying years of experience into a reusable toolkit.
Problems It Solves
- Auto-Remediation: Fixes "Password change required" and expired accounts automatically
- Port Management: Eliminates conflicts when running tests in parallel
- Isolation: Ensures every test gets a clean, isolated database instance
- Performance: DBAPI-first connection pooling is 3x faster than traditional JDBC
- Data Refresh: High-speed GOF fixture loading (10-100x faster than SQL inserts)
Quick Start
1. Install
pip install iris-devtester[all]
2. SQLite-Level Connectivity (Warm Start)
Use the persistent dev instance for instant connections across projects:
idt dev up
Then in your code:
from iris_devtester.connections import get_connection
# Instant connection to a project-specific namespace
conn = get_connection()
3. Ephemeral Containers (for CI/CD)
For completely isolated test containers:
from iris_devtester.containers import IRISContainer
def test_connection():
with IRISContainer.community() as iris:
conn = iris.get_connection()
cursor = conn.cursor()
cursor.execute("SELECT 1")
assert cursor.fetchone()[0] == 1
Container Editions
Three canonical container editions are available:
| Edition | Size | Use Case | Image |
|---|---|---|---|
| Community | ~972MB | Development, testing | intersystemsdc/iris-community |
| Enterprise | ~1GB+ | Production testing | containers.intersystems.com/intersystems/iris |
| Light | ~580MB | CI/CD pipelines | caretdev/iris-community-light |
Python API
from iris_devtester.containers import IRISContainer
# Community Edition (auto-detects ARM64 vs x86)
with IRISContainer.community() as iris:
conn = iris.get_connection()
# Light Edition (85% smaller, for CI/CD)
with IRISContainer.light() as iris:
conn = iris.get_connection()
# Enterprise Edition (requires license)
with IRISContainer.enterprise(license_key="/path/to/iris.key") as iris:
conn = iris.get_connection()
# Specify version
with IRISContainer.community(version="2025.1") as iris:
conn = iris.get_connection()
CLI Usage
# Community (default)
iris-devtester container up
# Light edition for CI/CD
iris-devtester container up --edition light
# Enterprise edition with license
iris-devtester container up --edition enterprise --license /path/to/iris.key
# List running IRIS containers
iris-devtester container list
Light Edition Details
The Light edition removes components unnecessary for SQL-only workloads:
- Removed: Interoperability/Ensemble, Management Portal, DeepSee/BI, CSP/REST
- Kept: SQL engine, DBAPI, JDBC, ODBC, SQLAlchemy-IRIS support
Perfect for microservices, automated testing, and Python/SQL pipelines.
Builder Methods
# Set a custom container name (for debugging, logs, multiple containers)
iris = IRISContainer.community().with_name("my-test-db")
# Set credentials
iris = IRISContainer.community().with_credentials("_SYSTEM", "MyPassword")
# Pre-configure password (set via IRIS_PASSWORD env var at startup)
iris = IRISContainer.community().with_preconfigured_password("MyPassword")
# Chain multiple options
with IRISContainer.community() \
.with_name("integration-test-db") \
.with_credentials("_SYSTEM", "TestPass123") as iris:
conn = iris.get_connection()
Constructor Parameters
IRISContainer(
image="intersystemsdc/iris-community:latest", # Docker image
username="_SYSTEM", # Default username
password="SYS", # Default password
namespace="USER", # Default namespace
name="my-container", # Container name (alternative to with_name)
)
Key Features
- 🔐 Automatic Password Management: Remediates security flags using official system APIs.
- 🐳 Container Lifecycle: CLI and Python API for IRIS container management (
up,start,stop). - 📦 DAT Fixture Management: Create and load reproducible test fixtures in seconds.
- ⚡ DBAPI-First Performance: Automatically selects the fastest available driver.
- 📊 Resource Monitoring: Resource-aware performance tracking.
AI-Assisted Development
This project is optimized for AI coding assistants:
- Agent Skill Manifest - Hierarchical guidance for Claude, Cursor, and Copilot.
- AGENTS.md - Common build and test commands.
Documentation
License
MIT License - See LICENSE
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 Distribution
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 iris_devtester-1.16.0.tar.gz.
File metadata
- Download URL: iris_devtester-1.16.0.tar.gz
- Upload date:
- Size: 519.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
216e8d3d4bc9fd32eadd8834ea7a7be9e1ad653b3eab85608506b4644d405fe3
|
|
| MD5 |
fa4d49ec64f62fb25b91d871a149286c
|
|
| BLAKE2b-256 |
d6d949e0083c7e09b01901679be4e8097b389fef88aacafc32ba0f7621440dba
|
File details
Details for the file iris_devtester-1.16.0-py3-none-any.whl.
File metadata
- Download URL: iris_devtester-1.16.0-py3-none-any.whl
- Upload date:
- Size: 168.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9834425499c5989c54cc2d6c8e552300174b1f9ac68ba3537df62014b0474f11
|
|
| MD5 |
3afed2b966232e52df1f458c44ea355d
|
|
| BLAKE2b-256 |
e9fab36741c5ebe790fe3665e7c4e37c42c6ee87f6781c30e1e4f4e1aa9add93
|