# =============================================================================
# pyproject.toml for {{ project_name }}
# Generated by Modern ML Pipeline
# =============================================================================
# 설치 방법:
#   pip install -e .                    # 기본 (최소 설치)
#   pip install -e ".[standard]"        # 권장 (일반 ML 워크플로우)
#   pip install -e ".[cloud]"           # S3, GCS, BigQuery 사용 시
#   pip install -e ".[deep-learning]"   # PyTorch 모델 사용 시
#   pip install -e ".[all]"             # 모든 기능
# =============================================================================

[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "{{ project_name }}"
version = "0.1.0"
description = "ML Pipeline project powered by Modern ML Pipeline"
readme = "README.md"
requires-python = ">=3.11"

# 핵심 의존성: MMP 프레임워크
dependencies = [
    "modern-ml-pipeline @ git+https://github.com/wooshikwon/modern-ml-pipeline.git@v1.0.0",
]

# -----------------------------------------------------------------------------
# 선택적 의존성 (필요한 기능만 설치)
# -----------------------------------------------------------------------------
[project.optional-dependencies]
# 대부분 사용자 권장: XGBoost, LightGBM, CatBoost + MLflow + FastAPI
standard = [
    "modern-ml-pipeline[ml-extras] @ git+https://github.com/wooshikwon/modern-ml-pipeline.git@v1.0.0",
]

# 클라우드 스토리지: S3, GCS, BigQuery 연동
cloud = [
    "modern-ml-pipeline[cloud-extras] @ git+https://github.com/wooshikwon/modern-ml-pipeline.git@v1.0.0",
]

# 딥러닝: PyTorch, TabNet, FT-Transformer, LSTM
deep-learning = [
    "modern-ml-pipeline[torch-extras] @ git+https://github.com/wooshikwon/modern-ml-pipeline.git@v1.0.0",
]

# Feature Store: Feast 연동
feature-store = [
    "modern-ml-pipeline[feature-store] @ git+https://github.com/wooshikwon/modern-ml-pipeline.git@v1.0.0",
]

# 전체 기능 설치
all = [
    "modern-ml-pipeline[all] @ git+https://github.com/wooshikwon/modern-ml-pipeline.git@v1.0.0",
]

# 개발 도구: 테스트, 린터, 타입체커
dev = [
    "pytest>=8.0.0",
    "pytest-cov>=6.0.0",
    "ruff>=0.1.0",
    "mypy>=1.5.0",
]

# -----------------------------------------------------------------------------
# 개발 도구 설정
# -----------------------------------------------------------------------------
[tool.ruff]
line-length = 100
target-version = "py311"

[tool.ruff.lint]
select = ["E", "F", "W"]
ignore = ["E501"]  # 긴 줄 허용 (SQL 쿼리 등)

[tool.mypy]
python_version = "3.11"
warn_return_any = true
ignore_missing_imports = true

[tool.pytest.ini_options]
testpaths = ["tests"]
pythonpath = ["."]
addopts = "-v"
