[project]
name = "studies"
version = "0.1.0"
description = "A curated collection of mathematics and data science projects developed during my academic journey."
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
    "catboost>=1.2.8",
    "imblearn>=0.0",
    "ipykernel>=6.29.5",
    "keras>=3.11.3",
    "matplotlib>=3.10.1",
    "nbformat>=5.10.4",
    "numpy>=2.2.5",
    "opencv-python>=4.11.0.86",
    "pandas>=2.2.3",
    "pandas-stubs>=2.3.2.250926",
    "plotly>=6.3.0",
    "scikit-learn>=1.6.1",
    "scipy>=1.15.2",
    "seaborn>=0.13.2",
    "shap>=0.49.1",
    "tensorflow>=2.20.0",
    "yfinance>=0.2.66",
]

[dependency-groups]
dev = [
    "ipykernel>=6.29.5",
    "uv>=0.6.16",
]

[tool.ty.rules]
index-out-of-bounds = "ignore"

[tool.ruff]
extend-include = ["*.ipynb"]
line-length = 88

[tool.ruff.lint]
# Activer les règles de linting courantes
select = [
    "E",  # pycodestyle errors
    "W",  # pycodestyle warnings
    "F",  # Pyflakes
    "I",  # isort
    "B",  # flake8-bugbear
    "C4", # flake8-comprehensions
    "UP", # pyupgrade
]

# Désactiver certaines règles
ignore = [
    "E501", # line too long, géré par le formatter
    "E402", # Imports in top of file
]

# Exclure certains fichiers ou répertoires
exclude = [
    ".bzr",
    ".direnv",
    ".eggs",
    ".git",
    ".hg",
    ".mypy_cache",
    ".nox",
    ".pants.d",
    ".pytype",
    ".ruff_cache",
    ".svn",
    ".tox",
    ".venv",
    "__pypackages__",
    "_build",
    "buck-out",
    "build",
    "dist",
    "node_modules",
    "venv",
]

# Permettre à Ruff de corriger automatiquement certaines erreurs
fixable = ["ALL"]
unfixable = []

# Formatage des imports
[tool.isort]
known_third_party = ["pydantic", "django"]
