Metadata-Version: 2.4
Name: floe-catalog-polaris
Version: 0.1.0a1
Summary: Apache Polaris catalog plugin for the floe data platform
Project-URL: Homepage, https://github.com/Obsidian-Owl/floe
Project-URL: Documentation, https://github.com/Obsidian-Owl/floe/tree/main/docs
Project-URL: Repository, https://github.com/Obsidian-Owl/floe
Author-email: Obsidian Owl <team@obsidianowl.dev>
License-Expression: Apache-2.0
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Typing :: Typed
Requires-Python: >=3.10
Requires-Dist: floe-core<0.2.0,>=0.1.0a1
Requires-Dist: httpx<1.0,>=0.25.0
Requires-Dist: opentelemetry-api<2.0,>=1.0
Requires-Dist: pydantic<3.0,>=2.0
Requires-Dist: pyiceberg>=0.11.1
Requires-Dist: structlog<26.0,>=24.0
Requires-Dist: tenacity<9.0,>=8.0
Provides-Extra: dev
Requires-Dist: mypy>=1.8; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.23; extra == 'dev'
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.3; extra == 'dev'
Description-Content-Type: text/markdown

# floe-catalog-polaris

Apache Polaris Catalog Plugin for the floe data platform.

## Overview

This plugin provides Iceberg catalog management via [Apache Polaris](https://polaris.apache.org/),
implementing the `CatalogPlugin` ABC from floe-core.

## Features

- OAuth2 authentication with automatic token refresh
- Namespace management (create, list, delete)
- Table operations (create, list, drop)
- Credential vending (X-Iceberg-Access-Delegation)
- Health monitoring with response time tracking
- OpenTelemetry trace instrumentation

## Installation

```bash
pip install floe-catalog-polaris
```

## Quick Start

```python
from floe_core.plugins import get_plugin

# Get the Polaris catalog plugin
catalog = get_plugin("catalog", "polaris")

# Configure and connect
config = {
    "uri": "https://polaris.example.com/api/catalog",
    "warehouse": "default_warehouse",
    "oauth2": {
        "client_id": "${POLARIS_CLIENT_ID}",
        "client_secret": "${POLARIS_CLIENT_SECRET}",
        "token_url": "https://polaris.example.com/oauth/token",
    },
}
iceberg_catalog = catalog.connect(config)

# List namespaces
namespaces = catalog.list_namespaces()
```

## Configuration

See [quickstart.md](../../specs/001-catalog-plugin/quickstart.md) for detailed configuration options.

## Development

```bash
# Install in development mode
cd plugins/floe-catalog-polaris
pip install -e ".[dev]"

# Run tests
pytest tests/unit/
pytest tests/integration/  # Requires Polaris in Kind cluster
```

## License

Apache 2.0
