[project]
name = "atomizer"
version = "0.1.0"
description = "Advanced optimization platform for Siemens NX Simcenter with LLM integration"
authors = [
    {name = "Atomaste", email = "contact@atomaste.com"}
]
readme = "README.md"
requires-python = ">=3.10"
license = {text = "Proprietary"}

dependencies = [
    "optuna>=3.5.0",
    "pandas>=2.0.0",
    "numpy>=1.24.0",
    "scipy>=1.10.0",
    "scikit-learn>=1.3.0",
    "pyNastran>=1.4.0",
    "plotly>=5.18.0",
    "fastapi>=0.109.0",
    "uvicorn>=0.27.0",
    "websockets>=12.0",
    "pydantic>=2.5.0",
    "python-multipart>=0.0.6",
    "jinja2>=3.1.3",
]

[project.optional-dependencies]
dev = [
    "pytest>=7.4.0",
    "pytest-cov>=4.1.0",
    "black>=23.12.0",
    "ruff>=0.1.0",
    "mypy>=1.8.0",
    "pre-commit>=3.6.0",
]

mcp = [
    "mcp>=0.1.0",
]

dashboard = [
    "dash>=2.14.0",
    "dash-bootstrap-components>=1.5.0",
]

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

[tool.setuptools.packages.find]
where = ["."]
include = ["mcp_server*", "optimization_engine*", "nx_journals*"]

[tool.black]
line-length = 100
target-version = ['py310']
include = '\.pyi?$'

[tool.ruff]
line-length = 100
select = ["E", "F", "I", "N", "W"]
ignore = ["E501"]

[tool.mypy]
python_version = "3.10"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = false

[tool.pytest.ini_options]
testpaths = ["tests"]
python_files = ["test_*.py"]
python_classes = ["Test*"]
python_functions = ["test_*"]
addopts = "-v --cov=mcp_server --cov=optimization_engine --cov-report=html --cov-report=term"
