This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
This is the Dagster Community Integrations repository - a collection of community-built and maintained integrations for the Dagster data orchestration platform. The repository provides a centralized place for custom integrations without requiring individual maintainers to manage their own build and release processes.
libraries/- Contains all integration packages (e.g., dagster-anthropic, dagster-polars, etc.)libraries/_template/- Template for creating new integrationspipes/implementations/- Dagster Pipes implementations for Java, Rust, and TypeScript
All integrations use standardized Makefiles with these commands:
# Install dependencies
make install # or: uv sync
# Build package
make build # or: uv build
# Run tests
make test # or: uv run pytest
# Format and lint code
make ruff # Runs: uv run ruff check --fix && uv run ruff format
# Type checking
make check # Runs: uv run pyright# Run a specific test file
uv run pytest dagster_<package>_tests/test_specific.py
# Run a specific test function
uv run pytest dagster_<package>_tests/test_specific.py::test_function_name
# Run tests with verbose output
uv run pytest -v- Navigate to
libraries/directory - Copy the template:
cp -r _template dagster-<my-package> - Replace all instances of
example-integrationwith your package name - Update version in
dagster_<package>/__init__.py - Create GitHub Actions workflows from templates in
.github/workflows/template-*
- Python Version: Default to Python 3.10
- Package Management: Use
uvexclusively (never pip, poetry, or conda) - Formatting: Enforced with Ruff (
ruff format) - Linting: Enforced with Ruff (
ruff check --fix) - Type Checking: Required with Pyright (
pyright) - Testing: Required with pytest
# Create a release tag
./release.sh dagster-<package> X.X.X
# Tags follow pattern: <integration-name>-X.X.XEach integration follows this structure:
dagster-<package>/
├── Makefile # Standard development commands
├── README.md # Documentation with usage examples
├── pyproject.toml # Package configuration and dependencies
├── uv.lock # Locked dependencies
├── dagster_<package>/ # Main package code
│ ├── __init__.py # Contains __version__
│ └── ... # Integration modules
└── dagster_<package>_tests/
└── test_*.py # Test files
- Dagster Resources: Integrations typically implement Dagster resources for external services
- IO Managers: For data storage integrations, implement custom IO managers
- Ops and Assets: Provide pre-built ops and assets for common operations
- Type Annotations: Use type hints throughout the codebase
- Error Handling: Wrap external API calls with appropriate error handling
# Run GitHub Actions locally with act
act -W .github/workflows/quality-check-dagster-<package>.yml
# For testcontainers support
act --env TESTCONTAINERS_HOST_OVERRIDE=`ipconfig getifaddr en0` -W .github/workflows/quality-check-dagster-<package>.yml- All tests, formatting, and type checking must pass before merging
- Follow existing patterns in similar integrations
- Include comprehensive documentation with usage examples
- Version is managed in
__init__.pyas__version__ = "X.X.X" - Dependencies are specified in
pyproject.tomland locked withuv.lock