"""训练模块 - ProStock 量化投资框架

提供模型训练、数据处理和预测的完整流程。
"""

# 基础抽象类
from src.training.components.base import BaseModel, BaseProcessor

# 注册中心
from src.training.registry import (
    ModelRegistry,
    ProcessorRegistry,
    register_model,
    register_processor,
)

# 数据划分器
from src.training.components.splitters import DateSplitter

# 股票池选择器配置（已迁移到 StockPoolManager，保留文件占位）
# from src.training.components.selectors import ...

# 数据处理器
from src.training.components.processors import (
    CrossSectionalStandardScaler,
    NullFiller,
    StandardScaler,
    Winsorizer,
)

# 模型
from src.training.components.models import LightGBMModel, TabMModel

# 数据过滤器
from src.training.components.filters import BaseFilter, STFilter

# 训练核心
# .. deprecated:: Trainer (旧版)
#     请从 src.training.trainer_v2 导入新的 Trainer 类
#     旧版 Trainer 将在后续版本中移除
from src.training.core import StockPoolManager, Trainer

# 工具函数
from src.training.utils import check_data_quality

# 数据质量分析器
from src.training.data_quality_analyzer import (
    DataQualityAnalyzer,
    analyze_data_quality,
)

# 配置
from src.training.config import TrainingConfig

# 新增：模块化 Trainer 组件（推荐）
from src.training.factor_manager import FactorManager
from src.training.pipeline import DataPipeline
from src.training.result_analyzer import ResultAnalyzer
from src.training.tasks import BaseTask, RegressionTask, RankTask, TabMRegressionTask

# 从 trainer_v2 导入新 Trainer（推荐）
from src.training.core.trainer_v2 import Trainer as TrainerV2

__all__ = [
    # 基础抽象类
    "BaseModel",
    "BaseProcessor",
    # 注册中心
    "ModelRegistry",
    "ProcessorRegistry",
    "register_model",
    "register_processor",
    # 数据划分器
    "DateSplitter",
    # 股票池选择器配置（已迁移，保留注释占位）
    # "StockFilterConfig",  # 已删除，使用 StockPoolManager + filter_func 替代
    # "MarketCapSelectorConfig",  # 已删除，使用 StockPoolManager + required_factors 替代
    # 数据处理器
    "NullFiller",
    "StandardScaler",
    "CrossSectionalStandardScaler",
    "Winsorizer",
    # 数据过滤器
    "BaseFilter",
    "STFilter",
    # 模型
    "LightGBMModel",
    "TabMModel",
    # 训练核心（旧版，已废弃）
    "StockPoolManager",
    "Trainer",
    # 工具函数
    "check_data_quality",
    # 数据质量分析器
    "DataQualityAnalyzer",
    "analyze_data_quality",
    # 配置
    "TrainingConfig",
    # 新增：模块化 Trainer 组件（推荐使用）
    "FactorManager",
    "DataPipeline",
    "ResultAnalyzer",
    "BaseTask",
    "RegressionTask",
    "RankTask",
    "TabMRegressionTask",
    "TrainerV2",  # 新的 Trainer（推荐）
]
