Metadata-Version: 2.4
Name: xelytics-core
Version: 0.1.0
Summary: Pure analytics engine for statistical analysis and insight generation
Author: Xelytics Team
License: MIT
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: pandas>=2.1.0
Requires-Dist: numpy>=1.24.0
Requires-Dist: scipy>=1.11.0
Requires-Dist: scikit-learn>=1.3.0
Requires-Dist: statsmodels>=0.14.0
Requires-Dist: pingouin>=0.5.3
Requires-Dist: plotly>=5.17.0
Provides-Extra: llm
Requires-Dist: openai>=1.6.0; extra == "llm"
Requires-Dist: groq>=0.4.0; extra == "llm"
Requires-Dist: httpx>=0.25.0; extra == "llm"
Provides-Extra: dev
Requires-Dist: pytest>=7.4.0; extra == "dev"
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
Requires-Dist: black>=23.11.0; extra == "dev"
Requires-Dist: mypy>=1.7.0; extra == "dev"

# Xelytics-Core

**Pure analytics engine for statistical analysis and insight generation.**

## Installation

```bash
pip install -e .
```

## Quick Start

```python
from xelytics import analyze, AnalysisConfig
import pandas as pd

# Load your data
df = pd.read_csv("data.csv")

# Run automated analysis
result = analyze(df, mode="automated")

# Access results
print(f"Analyzed {result.metadata.row_count} rows")
print(f"Found {len(result.statistics)} statistical tests")
print(f"Generated {len(result.visualizations)} visualizations")
print(f"Produced {len(result.insights)} insights")

# Export to JSON
json_output = result.to_json()
```

## API Contract

```python
from xelytics import analyze, AnalysisConfig, AnalysisResult

result = analyze(
    data=df,
    mode="automated",  # or "semi-automated"
    config=AnalysisConfig(
        significance_level=0.05,
        enable_llm_insights=True,
        max_visualizations=10,
    )
)
```

## Output Schema

```python
AnalysisResult(
    summary=DatasetSummary(...),
    statistics=[StatisticalTestResult(...), ...],
    visualizations=[VisualizationSpec(...), ...],
    insights=[Insight(...), ...],
    metadata=RunMetadata(...),
)
```

## Design Principles

1. **Pure analytics engine** - No HTTP, no database, no auth
2. **Deterministic** - Same input = same output
3. **LLM is optional** - Rule-based insights work without LLM
4. **Type-safe** - All inputs/outputs are typed dataclasses

## License

MIT
