Skip to main content

Atlan Python Client

Project description

pyatlan Logo

The official Python SDK for the Atlan ๐Ÿ’™

PyPI version Python versions License Downloads Build Status Documentation Docker


๐Ÿ“– Documentation โ€ข ๐Ÿณ Docker โ€ข ๐Ÿค Contributing

-----------------------------------------------------

๐Ÿ“Š Project Stats

  • ๐Ÿ Python Versions: 3.9, 3.10, 3.11, 3.12, 3.13
  • ๐Ÿ“ฆ Package Size: Optimized for fast installation
  • ๐Ÿš€ Performance: Built with modern async/await support
  • ๐Ÿ”ง Dependencies: Minimal, modern stack
  • ๐Ÿ“ˆ Stability: Production-ready

๐Ÿ“ฆ Installation

Production Use

# Latest stable version
pip install pyatlan

# Specific version
pip install pyatlan==7.1.3

# With uv (faster) - install uv first: curl -LsSf https://astral.sh/uv/install.sh | sh
uv add pyatlan

Development Setup

# Clone the repository
git clone https://github.com/atlanhq/atlan-python.git
cd atlan-python

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

# Install with development dependencies
uv sync --group dev

# Run quality checks
uv run ./qa-checks

# Run tests
uv run pytest tests/unit

Dependency Groups

This project uses uv dependency groups for better dependency management:

  • Core dependencies: Always installed (uv sync)
  • Development dependencies: Testing, linting, formatting (uv sync --group dev)
  • Documentation dependencies: Sphinx docs (uv sync --group docs)

You can install multiple groups:

# Install both dev and docs dependencies
uv sync --group dev --group docs

# Install all dependencies
uv sync --all-groups

๐Ÿณ Docker

Pre-built Images

# Latest version
docker pull ghcr.io/atlanhq/atlan-python:latest

# Specific version
docker pull ghcr.io/atlanhq/atlan-python:7.1.3

Usage

# Interactive Python session
docker run -it --rm ghcr.io/atlanhq/atlan-python:latest

# Run a script
docker run -it --rm \
  -v $(pwd):/app \
  -e ATLAN_API_KEY=your_key \
  -e ATLAN_BASE_URL=https://your-tenant.atlan.com \
  ghcr.io/atlanhq/atlan-python:latest \
  python your_script.py

๐Ÿงช Testing

Unit Tests

# Run all unit tests
uv run pytest tests/unit

# Run with coverage
uv run pytest tests/unit --cov=pyatlan --cov-report=html

Integration Tests

# Set up environment
cp .env.example .env
# Edit .env with your Atlan credentials

# Run integration tests
uv run pytest tests/integration

Quality Assurance

# Run all QA checks (formatting, linting, type checking)
uv run ./qa-checks

# Individual checks
uv run ruff format .          # Code formatting
uv run ruff check .           # Linting
uv run mypy .                 # Type checking

๐Ÿค Contributing

We welcome contributions! Here's how to get started:

Development Setup

# Fork and clone the repository
git clone https://github.com/your-username/atlan-python.git
cd atlan-python

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

# Install development dependencies
uv sync --group dev

# Install pre-commit hooks
uv run pre-commit install

Making Changes

# Create a feature branch
git checkout -b feature/amazing-feature

# Make your changes and test
uv run ./formatter
uv run ./qa-checks
uv run pytest tests/unit

# Commit with conventional commits
git commit -m "feat: add amazing feature"

# Push and create a pull request
git push origin feature/amazing-feature

Guidelines

  • โœ… Follow conventional commits
  • โœ… Add tests for new features
  • โœ… Update documentation as needed
  • โœ… Ensure all QA checks pass

๐Ÿ› ๏ธ SDK Generator

Generate asset models from your Atlan instance:

# Generate models automatically
uv run ./generator

# Use custom typedefs file
uv run ./generator ./my-typedefs.json

This will:

  • ๐Ÿ“ฅ Retrieve typedefs from your Atlan instance
  • ๐Ÿ—๏ธ Generate asset models, enums, and structures
  • ๐ŸŽจ Format code automatically
  • โšก Support incremental updates

๐Ÿ“ Project Structure

Understanding the codebase layout will help you navigate and contribute effectively:

atlan-python/
โ”œโ”€โ”€ pyatlan/                          # ๐Ÿ Main Python package
โ”‚   โ”œโ”€โ”€ __init__.py                   # Package initialization
โ”‚   โ”œโ”€โ”€ cache/                        # ๐Ÿ’พ Caching mechanisms
โ”‚   โ”‚   โ”œโ”€โ”€ atlan_tag_cache.py       # Tag name โ†” GUID mapping
โ”‚   โ”‚   โ”œโ”€โ”€ custom_metadata_cache.py  # Custom metadata definitions
โ”‚   โ”‚   โ”œโ”€โ”€ enum_cache.py            # Enum value caching
โ”‚   โ”‚   โ””โ”€โ”€ aio/                     # Async versions of caches
โ”‚   โ”œโ”€โ”€ client/                       # ๐ŸŒ HTTP client implementations
โ”‚   โ”‚   โ”œโ”€โ”€ atlan.py                 # Main synchronous client
โ”‚   โ”‚   โ”œโ”€โ”€ asset.py                 # Asset operations (CRUD, search)
โ”‚   โ”‚   โ”œโ”€โ”€ admin.py                 # Administrative operations
โ”‚   โ”‚   โ”œโ”€โ”€ audit.py                 # Audit log operations
โ”‚   โ”‚   โ”œโ”€โ”€ common/                  # Shared client logic
โ”‚   โ”‚   โ””โ”€โ”€ aio/                     # Async client implementations
โ”‚   โ”œโ”€โ”€ model/                        # ๐Ÿ“Š Data models and assets
โ”‚   โ”‚   โ”œโ”€โ”€ assets/                  # Asset type definitions
โ”‚   โ”‚   โ”‚   โ”œโ”€โ”€ core/                # Core asset types (Table, Database, etc.)
โ”‚   โ”‚   โ”‚   โ””โ”€โ”€ relations/           # Relationship models
โ”‚   โ”‚   โ”œโ”€โ”€ fields/                  # Search field definitions
โ”‚   โ”‚   โ”œโ”€โ”€ open_lineage/            # OpenLineage specification models
โ”‚   โ”‚   โ”œโ”€โ”€ packages/                # Package/workflow models
โ”‚   โ”‚   โ””โ”€โ”€ aio/                     # Async model variants
โ”‚   โ”œโ”€โ”€ generator/                    # ๐Ÿ—๏ธ Code generation tools
โ”‚   โ”‚   โ”œโ”€โ”€ templates/               # Jinja2 templates for generation
โ”‚   โ”‚   โ””โ”€โ”€ class_generator.py       # Main generation logic
โ”‚   โ”œโ”€โ”€ pkg/                         # ๐Ÿ“ฆ Package creation utilities
โ”‚   โ”œโ”€โ”€ events/                      # ๐Ÿ”” Event handling (webhooks, lambdas)
โ”‚   โ”œโ”€โ”€ samples/                     # ๐Ÿ’ก Example code and scripts
โ”‚   โ””โ”€โ”€ test_utils/                  # ๐Ÿงช Testing utilities
โ”œโ”€โ”€ tests/                            # ๐Ÿงช Test suite
โ”‚   โ”œโ”€โ”€ unit/                        # Unit tests (fast, no external deps)
โ”‚   โ”œโ”€โ”€ integration/                 # Integration tests (require Atlan instance)
โ”‚   โ””โ”€โ”€ data/                        # Test fixtures and mock data
โ”œโ”€โ”€ docs/                            # ๐Ÿ“š Sphinx documentation
โ”‚   โ”œโ”€โ”€ conf.py                      # Sphinx configuration
โ”‚   โ””โ”€โ”€ *.rst                       # Documentation source files
โ”œโ”€โ”€ pyproject.toml                   # ๐Ÿ“‹ Project configuration (deps, tools)
โ”œโ”€โ”€ uv.lock                          # ๐Ÿ”’ Locked dependencies
โ”œโ”€โ”€ qa-checks                        # โœ… Quality assurance script
โ”œโ”€โ”€ formatter                        # ๐ŸŽจ Code formatting script
โ””โ”€โ”€ generator                        # ๐Ÿ—๏ธ Model generation script

Key Components

๐ŸŒ Client Layer (pyatlan/client/)

  • Synchronous: Direct HTTP operations using httpx
  • Asynchronous: Async/await operations using httpx.AsyncClient
  • Common: Shared business logic between sync/async clients
  • Specialized: Domain-specific clients (admin, audit, lineage, etc.)

๐Ÿ“Š Model Layer (pyatlan/model/)

  • Assets: 400+ asset types (tables, dashboards, pipelines, etc.)
  • Core Models: Base classes, requests, responses
  • Fields: Search and filtering field definitions
  • OpenLineage: Data lineage specification compliance

๐Ÿ’พ Cache Layer (pyatlan/cache/)

  • Tag Cache: Maps human-readable tag names to internal GUIDs
  • Custom Metadata: Caches custom attribute definitions
  • Connection Cache: Stores connector and connection metadata
  • Async Variants: Full async implementations for all caches

๐Ÿ—๏ธ Generation System (pyatlan/generator/)

  • Templates: Jinja2 templates for assets, enums, documentation
  • Generator: Retrieves typedefs and generates Python models
  • Incremental: Only regenerates changed models for efficiency

๐Ÿงช Testing Strategy

  • Unit Tests: Fast, isolated tests with mocks/fixtures
  • Integration Tests: Real API calls (requires credentials)
  • VCR Cassettes: Record/replay HTTP interactions for consistent testing

๐Ÿ“ฆ Package System (pyatlan/pkg/)

  • Custom Packages: Framework for building Atlan-deployable packages
  • Templates: Pre-built package structures and configurations
  • Utilities: Helper functions for package development

Development Workflow

  1. Models: Generated from your Atlan instance's typedefs
  2. Clients: Hand-crafted for optimal developer experience
  3. Tests: Mix of unit (fast iteration) and integration (real validation)
  4. Quality: Automated formatting, linting, and type checking
  5. Documentation: Auto-generated from docstrings and examples

๐Ÿ“„ License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

๐Ÿ™ Attribution

Portions of this SDK are based on original work from:

Built with ๐Ÿ’™ by Atlan

Website โ€ข Documentation โ€ข Support

-----------------------------------------------------

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

pyatlan-8.5.1.tar.gz (835.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyatlan-8.5.1-py3-none-any.whl (1.5 MB view details)

Uploaded Python 3

File details

Details for the file pyatlan-8.5.1.tar.gz.

File metadata

  • Download URL: pyatlan-8.5.1.tar.gz
  • Upload date:
  • Size: 835.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pyatlan-8.5.1.tar.gz
Algorithm Hash digest
SHA256 c7075a27ba51a98e8fc9d33e6038df002d5d96803a67c56d4daec79d611993fc
MD5 301474d9b8df8694fe932924960ed2b3
BLAKE2b-256 e4f3065b4717344d2021d3fe1cd11f081277ffb941bec525e40f51fd21150aa5

See more details on using hashes here.

File details

Details for the file pyatlan-8.5.1-py3-none-any.whl.

File metadata

  • Download URL: pyatlan-8.5.1-py3-none-any.whl
  • Upload date:
  • Size: 1.5 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for pyatlan-8.5.1-py3-none-any.whl
Algorithm Hash digest
SHA256 17fd86a2995ccb509101a209b6534c426be07417bb9e39156f5fa814d7566639
MD5 c172df45266ce044ba3ea805d3af2700
BLAKE2b-256 117b58f909751475b69b6e12043a09c8b118bb27a6690d961bf08bc37c71c1cc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page