Skip to content

Latest commit

 

History

History
75 lines (53 loc) · 1.82 KB

File metadata and controls

75 lines (53 loc) · 1.82 KB

Development Guide

Prerequisites

  • Python 3.13+
  • uv - Fast Python package manager
  • Docker (for integration tests)

Setup

Clone dqlite-wire and dqlite-client alongside this checkout; [tool.uv.sources] in pyproject.toml points the sibling packages at ../python-dqlite-wire and ../python-dqlite-client, so uv sync picks up in-tree changes automatically.

# Install uv (if not already installed)
curl -LsSf https://astral.sh/uv/install.sh | sh

# Create virtual environment and install dependencies
uv sync --extra dev

Development Tools

Tool Purpose Command
pytest Testing framework pytest
ruff Linter (replaces flake8, isort, etc.) ruff check
ruff format Code formatter (replaces black) ruff format
mypy Static type checker mypy src

Running Tests

# Run unit tests only
.venv/bin/pytest tests/ --ignore=tests/integration

# Run all tests (requires Docker cluster)
cd ../dqlite-test-cluster && docker compose up -d
.venv/bin/pytest tests/

Linting & Formatting

# Lint
.venv/bin/ruff check src tests

# Auto-fix lint issues
.venv/bin/ruff check --fix src tests

# Format
.venv/bin/ruff format src tests

Type Checking

.venv/bin/mypy src

Pre-commit Workflow

.venv/bin/ruff format src tests
.venv/bin/ruff check --fix src tests
.venv/bin/mypy src
.venv/bin/pytest tests/ --ignore=tests/integration

PEP 249 Compliance

This package implements the DB-API 2.0 specification (PEP 249):

  • apilevel = "2.0"
  • threadsafety = 1 (threads may share module, not connections)
  • paramstyle = "qmark" (question mark placeholders)