[project]
name = "qp-prob"
requires-python = ">=3.9"
license = {file = "LICENSE"}
readme = "README.md"
authors = [
    { name = "LSST Dark Energy Science Collaboration (DESC)", email = "later@later.com" }
]
classifiers = [
    "Development Status :: 4 - Beta",
    "License :: OSI Approved :: MIT License",
    "Intended Audience :: Developers",
    "Intended Audience :: Science/Research",
    "Operating System :: OS Independent",
    "Programming Language :: Python",
]
dynamic = ["version"]

dependencies = [
    "numpy",
    "scipy",
    "tables-io",
    "deprecated",
    "pytdigest",
]

# On a mac, install optional dependencies with `pip install '.[dev]'` (include the single quotes)
[project.optional-dependencies]
dev = [
    "tables-io[full]",
    "matplotlib",
    "scikit-learn",
    "pytest",
    "pytest-cov", # Used to report total code coverage
    "pre-commit", # Used to run checks before finalizing a git commit
    "pylint", # Used for static linting of files
    "packaging",
    "pillow",
    "cycler",
    "python-dateutil",
    "kiwisolver",
    "joblib",
    "threadpoolctl",
    "pylint",
    "mpi4py",
    "coverage",
    "ipyparallel",
]
full = [
    "tables-io[full]",
    "matplotlib",
    "scikit-learn",
]
all = [
    "tables-io[full]",
    "matplotlib",
    "scikit-learn",
]
docs = [
    "nbsphinx",
    "sphinx==6.1.3", # Used to automatically generate documentation
    "sphinx_rtd_theme==1.2.0", # Used to render documentation
    "sphinx-autoapi==2.0.1", # Used to automatically generate api documentation    
]


[build-system]
requires = [
    "wheel",
    "setuptools>=62", # Used to build and package the Python project
    "setuptools_scm>=6.2", # Gets release version from git. Makes it available programmatically
]
build-backend = "setuptools.build_meta"

[tool.setuptools_scm]
write_to = "src/qp/_version.py"

[tool.pytest.ini_options]
testpaths = [
    "tests",
]
addopts = [
    "--cov=qp",
    "--cov-report=html"
]

[tool.pylint]
disable = [
    "abstract-method",
    "invalid-name",
    "too-many-statements",
    "missing-module-docstring",
    "missing-class-docstring",
    "missing-function-docstring",
    "too-few-public-methods",
    "duplicate-code",
    "use-dict-literal",
    "broad-exception-caught",
    "consider-using-f-string",
]
max-line-length = 110
max-locals = 50
max-branches = 25
max-public-methods = 50
