Metadata-Version: 2.4
Name: floe-quality-gx
Version: 0.1.0a1
Summary: Great Expectations data quality 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: great-expectations>=1.0.0
Requires-Dist: opentelemetry-api<2.0,>=1.0
Requires-Dist: pydantic<3.0,>=2.0
Requires-Dist: structlog<26.0,>=24.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-quality-gx

Great Expectations data quality plugin for the floe data platform.

## Overview

This plugin implements the `QualityPlugin` ABC using [Great Expectations](https://greatexpectations.io/)
for data quality validation, supporting compile-time configuration validation and runtime quality checks.

## Features

- Compile-time configuration validation
- Runtime quality check execution
- Quality scoring with dimension weights
- OpenLineage event emission for failures
- Support for DuckDB, PostgreSQL, and Snowflake dialects

## Installation

```bash
pip install floe-quality-gx
```

## Quick Start

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

# Get the Great Expectations plugin
registry = get_registry()
gx_plugin = registry.get(PluginType.QUALITY, "great_expectations")

# Run quality checks
result = gx_plugin.run_checks(
    suite_name="customers_quality",
    data_source="staging.customers",
)

if result.passed:
    print("All quality checks passed!")
else:
    print(f"Failed checks: {len([c for c in result.checks if not c.passed])}")
```

## Configuration

Configure the plugin in your `manifest.yaml`:

```yaml
plugins:
  quality:
    provider: great_expectations
    quality_gates:
      gold:
        min_test_coverage: 100
        required_tests: [not_null, unique]
```

## Development

```bash
# Install in development mode
uv pip install -e ".[dev]"

# Run tests
pytest tests/unit/ -v

# Type checking
mypy src/

# Linting
ruff check src/
```

## License

Apache 2.0
