[build-system] requires = ["setuptools>=80.0", "wheel"] build-backend = "setuptools.build_meta" [project] name = "pingouin" description = "Pingouin: statistical package for Python" readme = "README.rst" license = {text = "GPL-3.0"} authors = [ {name = "Raphael Vallat", email = "raphaelvallat9@gmail.com"}, ] maintainers = [ {name = "Raphael Vallat", email = "raphaelvallat9@gmail.com"}, ] classifiers = [ "Intended Audience :: Science/Research", "Operating System :: MacOS", "Operating System :: POSIX", "Operating System :: Unix", "Programming Language :: Python :: 3.10", "Programming Language :: Python :: 3.11", "Programming Language :: Python :: 3.12", "Programming Language :: Python :: 3.13", "Programming Language :: Python :: 3.14", "Topic :: Scientific/Engineering :: Mathematics", ] dynamic = ["version"] requires-python = ">=3.10" dependencies = [ "matplotlib", "numpy>=1.22.4", "pandas>=2.1.1", "pandas_flavor", "scikit-learn>=1.2.2", "scipy>=1.10.0", "seaborn", "statsmodels>=0.14.1", "tabulate", ] [project.optional-dependencies] extras = [ "mpmath", ] [dependency-groups] dev = [ "pre-commit", "ruff>=0.15.0", "pytest>=6", "pytest-cov", # Ensure coverage is new enough for `source_pkgs`. "coverage[toml]>=5.3", "mpmath", ] docs = [ "sphinx>7.0.0", "pydata_sphinx_theme", "numpydoc", "sphinx-copybutton", "sphinx-design", "sphinx-notfound-page", ] [project.urls] Homepage = "https://pingouin-stats.org/index.html" Downloads = "https://github.com/raphaelvallat/pingouin/" Issues = "https://github.com/raphaelvallat/pingouin/issues" Changelog = "https://pingouin-stats.org/build/html/changelog.html" [tool.setuptools] py-modules = ["pingouin"] include-package-data = true [tool.setuptools.package-data] pingouin = [ "datasets/*.csv", ] [tool.setuptools.packages.find] namespaces = false where = ["src"] [tool.setuptools.dynamic] version = {attr = "pingouin.__version__"} [tool.pytest.ini_options] minversion = "6.0" addopts = "--showlocals --durations=10" doctest_optionflags= ["NORMALIZE_WHITESPACE", "IGNORE_EXCEPTION_DETAIL"] filterwarnings = [ "ignore::UserWarning", "ignore::RuntimeWarning", "ignore::FutureWarning", ] markers = ["slow"] [tool.coverage.run] branch = true omit = [ "*/setup.py", "*/examples/*", "*/tests/*", "*/datasets/*", ] source_pkgs = ["pingouin"] [tool.coverage.paths] source = ["src"] [tool.coverage.report] show_missing = true # sort = "Cover" [tool.ruff] line-length = 100 target-version = "py311" exclude = [ "__init__.py", # Skip init files bc they use star imports (breaking rules F403, F405) "notebooks", # Skip jupyter notebook examples ] [tool.ruff.format] docstring-code-format = true [tool.ruff.lint.flake8-import-conventions.aliases] "matplotlib.pyplot" = "plt" numpy = "np" "numpy.typing" = "npt" pandas = "pd" seaborn = "sns" scipy = "sp" [tool.ruff.lint] select = [ "E4", # Subset of pycodestyle rules "E7", # Subset of pycodestyle rules "E9", # Subset of pycodestyle rules "F", # All Pyflakes rules "NPY", # numpy "W", "I", #"PD", # pandas imports #"UP" # Upgrade pythonv versions ] ignore = [ "NPY002" # exlude numpy random ]