Metadata-Version: 2.4
Name: floe-dbt-core
Version: 0.1.0a1
Summary: DBT plugin using dbt-core Python API 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: dbt-core<2.0,>=1.6
Requires-Dist: dbt-duckdb>=1.7.0
Requires-Dist: floe-core<0.2.0,>=0.1.0a1
Requires-Dist: opentelemetry-api>=1.20.0
Requires-Dist: pydantic>=2.0
Requires-Dist: sqlfluff>=2.0
Requires-Dist: structlog>=23.0
Provides-Extra: dev
Requires-Dist: mypy>=1.8; extra == 'dev'
Requires-Dist: pytest-cov>=4.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.3; extra == 'dev'
Provides-Extra: duckdb
Requires-Dist: dbt-duckdb>=1.7.0; extra == 'duckdb'
Description-Content-Type: text/markdown

# floe-dbt-core

DBT plugin for floe using dbt-core Python API.

## Overview

This plugin provides `DBTCorePlugin`, which wraps dbt-core's `dbtRunner` for:
- Local development
- CI/CD pipelines
- Single-threaded execution

**Note**: dbtRunner is NOT thread-safe. For parallel execution, use `floe-dbt-fusion`.

## Installation

```bash
pip install floe-dbt-core
```

## Usage

The plugin is automatically discovered via entry points:

```python
from floe_core.plugin_registry import get_registry
from floe_core.plugin_types import PluginType

registry = get_registry()
dbt_plugin = registry.get(PluginType.DBT, "core")

# Compile project
manifest_path = dbt_plugin.compile_project(
    project_dir=Path("my_project"),
    profiles_dir=Path("my_project"),
    target="dev"
)

# Run models
result = dbt_plugin.run_models(
    project_dir=Path("my_project"),
    profiles_dir=Path("my_project"),
    target="dev",
    select="tag:daily"
)
```

## Features

- Full dbt-core integration via dbtRunner
- SQLFluff linting with dialect awareness
- OpenTelemetry instrumentation
- Structured error handling with file/line preservation

## License

Apache-2.0
