# Core Dependencies 
streamlit==1.55.0
plotly==6.5.0
python-dotenv==1.0.1

# Data Processing
pandas==2.2.3
polars==1.28.0
# transitive natives, pinned on purpose: unpinned pyarrow floated to 25.0.0
# on rebuild and segfaults in pandas_compat.convert_column when streamlit
# serializes dataframes (pandas 2.2.x era code vs 2026 pyarrow)
pyarrow==18.1.0
numpy==2.2.6

# Database
duckdb==1.5.1

# AI/ML - Cerebras is called directly over its OpenAI-compatible REST API
# (see src/ai_engine.py). llama-index was dropped because its wrapper sent no
# output cap, which let a reasoning model bill its hidden chain-of-thought up
# to 40,960 tokens a call. It also pulled in transformers/tokenizers/nltk for
# nothing: ~10 packages and ~40MB of RSS on the Streamlit container.

# Orchestration
dagster==1.12.22

# Utilities
pycountry==24.6.1
requests==2.32.5

# dbt (for transformations)
dbt-core==1.9.4
dbt-duckdb==1.9.2