|
| 1 | +--- |
| 2 | +hide: |
| 3 | + - navigation |
| 4 | + - toc |
| 5 | +--- |
| 6 | + |
| 7 | +<div align="center" markdown> |
| 8 | + |
| 9 | +{ width="260" } |
| 10 | + |
1 | 11 | # pyatlan |
2 | 12 |
|
3 | | -The official Python SDK for [Atlan](https://atlan.com). |
| 13 | +**The official Python SDK for [Atlan](https://atlan.com) :blue_heart:** |
| 14 | + |
| 15 | +[](https://pypi.org/project/pyatlan/) |
| 16 | +[](https://pypi.org/project/pyatlan/) |
| 17 | +[](https://opensource.org/licenses/Apache-2.0) |
| 18 | +[](https://pypi.org/project/pyatlan/) |
| 19 | +[](https://github.com/atlanhq/atlan-python/actions/workflows/pyatlan-publish.yaml) |
4 | 20 |
|
5 | | -All methods for interacting with Atlan are available through [`AtlanClient`][pyatlan.client.atlan.AtlanClient]. |
| 21 | +[Get started](#installation){ .md-button .md-button--primary } |
| 22 | +[API Reference](api/client.md){ .md-button } |
| 23 | +[GitHub](https://github.com/atlanhq/atlan-python){ .md-button } |
| 24 | + |
| 25 | +</div> |
| 26 | + |
| 27 | +--- |
6 | 28 |
|
7 | 29 | ## Installation |
8 | 30 |
|
9 | | -```bash |
10 | | -pip install pyatlan |
11 | | -``` |
| 31 | +=== "pip" |
| 32 | + |
| 33 | + ```bash |
| 34 | + pip install pyatlan |
| 35 | + ``` |
| 36 | + |
| 37 | +=== "uv" |
| 38 | + |
| 39 | + ```bash |
| 40 | + uv add pyatlan |
| 41 | + ``` |
| 42 | + |
| 43 | +=== "uv (dev)" |
| 44 | + |
| 45 | + ```bash |
| 46 | + git clone https://github.com/atlanhq/atlan-python.git |
| 47 | + cd atlan-python |
| 48 | + uv sync --group dev |
| 49 | + ``` |
12 | 50 |
|
13 | | -## Quick start |
| 51 | +--- |
| 52 | + |
| 53 | +## Quick Start |
14 | 54 |
|
15 | 55 | ```python |
16 | 56 | from pyatlan.client import AtlanClient |
17 | 57 |
|
18 | | -client = AtlanClient(base_url="https://<your-tenant>.atlan.com", api_key="<your-api-key>") |
| 58 | +# Initialize the client |
| 59 | +client = AtlanClient( |
| 60 | + base_url="https://<your-tenant>.atlan.com", |
| 61 | + api_key="<your-api-key>", |
| 62 | +) |
| 63 | + |
| 64 | +# Search for assets |
| 65 | +from pyatlan.model.fluent_search import FluentSearch |
| 66 | +from pyatlan.model.assets import Table |
| 67 | + |
| 68 | +response = client.asset.search( |
| 69 | + FluentSearch() |
| 70 | + .where(FluentSearch.asset_type(Table)) |
| 71 | + .where(FluentSearch.active_assets()) |
| 72 | + .page_size(10) |
| 73 | + .to_request() |
| 74 | +) |
| 75 | + |
| 76 | +for asset in response: |
| 77 | + print(asset.name, asset.qualified_name) |
19 | 78 | ``` |
20 | 79 |
|
21 | | -## API Reference |
| 80 | +--- |
| 81 | + |
| 82 | +## Features |
| 83 | + |
| 84 | +<div class="grid cards" markdown> |
| 85 | + |
| 86 | +- :material-magnify:{ .lg .middle } **Search & Discover** |
| 87 | + |
| 88 | + --- |
| 89 | + |
| 90 | + Full-text and structured search across all your data assets — tables, dashboards, glossary terms, and more. |
| 91 | + |
| 92 | +- :material-shield-check:{ .lg .middle } **Data Governance** |
| 93 | + |
| 94 | + --- |
| 95 | + |
| 96 | + Manage access control, business policies, data contracts, lineage, and custom metadata at scale. |
| 97 | + |
| 98 | +- :material-connection:{ .lg .middle } **260+ Asset Types** |
| 99 | + |
| 100 | + --- |
| 101 | + |
| 102 | + First-class support for Snowflake, Databricks, dbt, Tableau, Looker, PowerBI, Kafka, S3, and many more. |
| 103 | + |
| 104 | +- :material-lightning-bolt:{ .lg .middle } **Async Support** |
| 105 | + |
| 106 | + --- |
| 107 | + |
| 108 | + All client methods available in both sync and async flavors via `pyatlan.client.aio`. |
| 109 | + |
| 110 | +- :material-lock:{ .lg .middle } **Type Safe** |
| 111 | + |
| 112 | + --- |
| 113 | + |
| 114 | + Full `py.typed` marker, strict Pydantic v2 models, and comprehensive type stubs (`.pyi`). |
| 115 | + |
| 116 | +- :material-package-variant:{ .lg .middle } **Minimal Dependencies** |
| 117 | + |
| 118 | + --- |
| 119 | + |
| 120 | + Only what you need: `httpx`, `pydantic`, `authlib`, `msgspec`, and a few more. |
| 121 | + |
| 122 | +</div> |
| 123 | + |
| 124 | +--- |
| 125 | + |
| 126 | +## What's in this SDK? |
| 127 | + |
| 128 | +| Module | Description | |
| 129 | +|--------|-------------| |
| 130 | +| [`AtlanClient`][pyatlan.client.atlan.AtlanClient] | Main entry point — all sub-clients live here | |
| 131 | +| `pyatlan.model.assets` | 260+ asset model classes (Table, Column, Dashboard, …) | |
| 132 | +| `pyatlan.model.search` | `IndexSearchRequest`, `Bool`, `Term`, and other DSL builders | |
| 133 | +| `pyatlan.model.fluent_search` | Fluent builder API for composing searches | |
| 134 | +| `pyatlan.cache` | In-memory caches for tags, metadata, groups, roles, users | |
| 135 | +| `pyatlan.events` | Lambda / event-handler base classes | |
| 136 | +| `pyatlan.model.typedef` | TypeDef management (custom metadata, enums, structs) | |
| 137 | + |
| 138 | +--- |
| 139 | + |
| 140 | +## Project Stats |
| 141 | + |
| 142 | +- :snake: **Python**: 3.9 · 3.10 · 3.11 · 3.12 · 3.13 |
| 143 | +- :package: **Stability**: Production-ready (`5 - Production/Stable`) |
| 144 | +- :scales: **License**: Apache 2.0 |
| 145 | +- :rocket: **Async**: Native async/await support |
| 146 | + |
| 147 | +--- |
| 148 | + |
| 149 | +## Contributing |
| 150 | + |
| 151 | +```bash |
| 152 | +# Fork & clone |
| 153 | +git clone https://github.com/atlanhq/atlan-python.git |
| 154 | +cd atlan-python |
| 155 | + |
| 156 | +# Install dev dependencies |
| 157 | +uv sync --group dev |
| 158 | + |
| 159 | +# Run tests |
| 160 | +uv run pytest tests/unit |
| 161 | + |
| 162 | +# Run all QA checks (lint, type-check, format) |
| 163 | +uv run ./qa-checks |
| 164 | +``` |
22 | 165 |
|
23 | | -See the **API Reference** section in the navigation for full documentation of all classes and methods. |
| 166 | +See [CONTRIBUTING.md](https://github.com/atlanhq/atlan-python/blob/main/CONTRIBUTING.md) on GitHub. |
0 commit comments