[build-system]
requires = [
    "pdm-pep517",
]
build-backend = "pdm.pep517.api"

[project]
name = "cognitivefactory-interactive-clustering-gui"
description = "A web application designed for NLP data annotation using Interactive Clustering methodology."
authors = [
    { name = "Erwan Schild", email = "erwan.schild@e-i.com" },
]
readme = "README.md"
requires-python = ">=3.7"
keywords = [
    "natural-language-processing",
    "constraints",
    "annotation-tool",
    "interactive-clustering",
    "constraints-annotation",
]
dynamic = [
    "classifiers",
]
classifiers = [
    "Development Status :: 4 - Beta",
    "Intended Audience :: Developers",
    "Programming Language :: Python",
    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3 :: Only",
    "Programming Language :: Python :: 3.7",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Topic :: Documentation",
    "Topic :: Software Development",
    "Topic :: Software Development :: Documentation",
    "Topic :: Utilities",
    "Typing :: Typed",
]
dependencies = [
    "pandas>=1.1.4",
    "cognitivefactory-interactive-clustering>=0.5.2",
    "scikit-learn>=0.24.1",
    "fastapi>=0.65.2",
    "filelock>=3.0.12",
    "jinja2>=3.0.1",
    "importlib-metadata>=4.8.1",
    "loguru>=0.5.3",
    "openpyxl>=3.0.7",
    "pickle5>=0.0.12; python_version < '3.8'",
    "prometheus-fastapi-instrumentator>=5.5.1",
    "python-multipart>=0.0.5",
    "uvicorn>=0.12.2",
    "zipp>=3.5.0",
]
version = "0.3.0"

[project.license]
text = "CECILL-C"

[project.urls]
Homepage = "https://cognitivefactory.github.io/interactive-clustering-gui"
Documentation = "https://cognitivefactory.github.io/interactive-clustering-gui"
Changelog = "https://cognitivefactory.github.io/interactive-clustering-gui/changelog"
Repository = "https://github.com/cognitivefactory/interactive-clustering-gui"
Issues = "https://github.com/cognitivefactory/interactive-clustering-gui/issues"
Discussions = "https://github.com/cognitivefactory/interactive-clustering-gui/discussions"

[project.scripts]
cognitivefactory-interactive-clustering-gui = "cognitivefactory.interactive_clustering_gui.cli:main"

[tool.pdm]
includes = [
    "src/cognitivefactory",
]

[tool.pdm.version]
source = "scm"

[tool.pdm.build]
package-dir = "src"
editable-backend = "editables"

[tool.pdm.dev-dependencies]
develop = [
    "locust>=1.1",
    "fr-core-news-md @ https://github.com/explosion/spacy-models/releases/download/fr_core_news_md-3.1.0/fr_core_news_md-3.1.0.tar.gz",
]
duty = [
    "duty>=0.7",
]
format = [
    "autoflake>=1.4",
    "black>=21.10b0",
    "isort>=5.10",
]
quality = [
    "darglint>=1.8",
    "flake8-bandit>=2.1",
    "flake8-black>=0.2",
    "flake8-bugbear>=21.9",
    "flake8-builtins>=1.5",
    "flake8-comprehensions>=3.7",
    "flake8-docstrings>=1.6",
    "flake8-pytest-style>=1.5",
    "flake8-string-format>=0.3",
    "flake8-tidy-imports>=4.5",
    "flake8-variables-names>=0.0",
    "pep8-naming>=0.12",
    "wps-light>=0.15",
]
docs = [
    "mkdocs>=1.3",
    "mkdocs-coverage>=0.2",
    "mkdocs-gen-files>=0.3",
    "mkdocs-literate-nav>=0.4",
    "mkdocs-material>=7.3",
    "mkdocs-section-index>=0.3",
    "mkdocstrings[python]>=0.19",
    "markdown-callouts>=0.2",
    "markdown-exec>=0.5",
    "toml>=0.10",
]
typing = [
    "mypy>=0.910",
    "types-python-dateutil",
    "types-filelock",
    "types-markdown>=3.3",
    "types-toml>=0.10",
]
security = [
    "safety>=1.10,<2",
]
tests = [
    "httpx>=0.16",
    "hypothesis>=6.8",
    "pytest>=6.2",
    "pytest-asyncio>=0.14",
    "pytest-cov>=3.0",
    "pytest-mock>=3.4",
    "pytest-randomly>=3.10",
    "pytest-sugar>=0.9",
    "pytest-xdist>=2.4",
    "fr-core-news-md @ https://github.com/explosion/spacy-models/releases/download/fr_core_news_md-3.1.0/fr_core_news_md-3.1.0.tar.gz",
]
maintain = [
    "git-changelog>=0.4",
]

[tool.black]
line-length = 120
exclude = "tests/fixtures"

[tool.isort]
line_length = 120
not_skip = "__init__.py"
multi_line_output = 3
force_single_line = false
balanced_wrapping = true
default_section = "THIRDPARTY"
known_first_party = "cognitivefactory"
include_trailing_comma = true
