[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"

[project]
name = "mes-dashboard"
version = "0.1.0"
description = "MES Dashboard Portal"
readme = "README.md"
requires-python = ">=3.9"
license = { text = "MIT" }
authors = [
    { name = "MES Dashboard Team" }
]
keywords = ["flask", "mes", "dashboard"]
classifiers = [
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "License :: OSI Approved :: MIT License",
]

# Note: Use bounded ranges (>=,<) to avoid accidental major-version breaks.
# For reproducible builds, use: pip freeze > requirements.lock
dependencies = [
    # Core Framework
    "flask>=3.0.0,<4.0.0",

    # Database
    "oracledb>=2.0.0,<4.0.0",
    "sqlalchemy>=2.0.0,<3.0.0",

    # Data Processing
    # Pin pandas to a DBAPI2-compatible release for current pd.read_sql flow.
    "pandas==2.3.3",
    "openpyxl>=3.0.0",

    # Cache (Redis)
    "redis>=5.0.0,<6.0.0",
    "hiredis>=2.0.0,<4.0.0",

    # HTTP Client
    "requests>=2.28.0,<3.0.0",

    # Configuration
    "python-dotenv>=1.0.0,<2.0.0",

    # WSGI Server
    "gunicorn>=21.2.0,<25.0.0",
    "waitress>=2.1.2,<4.0.0; platform_system == 'Windows'",

    # System Monitoring
    "psutil>=5.9.0,<7.0.0",
]

[project.optional-dependencies]
test = [
    "pytest>=7.0.0",
    "pytest-playwright>=0.4.0",
    "playwright>=1.40.0",
]

[tool.setuptools]
package-dir = {"" = "src"}
include-package-data = true

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.package-data]
mes_dashboard = ["templates/**/*", "sql/**/*.sql"]
