[tool.poetry]
name = "aiida-mlip"
version = "0.2.1"
description = "machine learning interatomic potentials aiida plugin"
authors = [
    "Federica Zanca <federica.zanca@stfc.ac.uk>",
    "Elliott Kasoar",
    "Jacob Wilkins",
    "Alin M. Elena"
]
readme = "README.md"
packages = [{include = "aiida_mlip"}]
classifiers = [
    "Programming Language :: Python",
    "Intended Audience :: Science/Research",
    "License :: OSI Approved :: BSD License",
    "Natural Language :: English",
    "Development Status :: 5 - Production/Stable",
    "Framework :: AiiDA"
]
keywords = ["aiida", "plugin"]
repository = "https://github.com/stfc/aiida-mlip/"
documentation = "https://stfc.github.io/aiida-mlip/"

[tool.poetry.urls]
"Source" = "https://github.com/aiidateam/aiida-mlip"

[tool.poetry.dependencies]
python = "^3.9"
aiida-core = "^2.6"
ase = "^3.23.0"
voluptuous = "^0.14"
janus-core = "^v0.6.0b0"

[tool.poetry.group.dev.dependencies]
coverage = {extras = ["toml"], version = "^7.4.1"}
pgtest = "^1.3.2"
pytest = "^8.0"
pytest-cov = "^4.1.0"
tox = "^4.12.1"
wheel = "^0.42"

[tool.poetry.group.pre-commit]
optional = true
[tool.poetry.group.pre-commit.dependencies]
black = "^24.1.1"
pre-commit = "^3.6.0"
pylint = "^2.15.10"

[tool.poetry.group.docs]
optional = true
[tool.poetry.group.docs.dependencies]
furo = "^2024.1.29"
markupsafe = "<2.1"
numpydoc = "^1.6.0"
sphinx = "^7.2.6"
sphinxcontrib-contentui = "^0.2.5"
sphinxcontrib-details-directive = "^0.1"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

[tool.poetry.plugins] # Optional super table

[tool.poetry.plugins."aiida.data"]
"mlip.modeldata" = "aiida_mlip.data.model:ModelData"
"mlip.config" = "aiida_mlip.data.config:JanusConfigfile"

[tool.poetry.plugins."aiida.calculations"]
"mlip.sp" = "aiida_mlip.calculations.singlepoint:Singlepoint"
"mlip.opt" = "aiida_mlip.calculations.geomopt:GeomOpt"
"mlip.md" = "aiida_mlip.calculations.md:MD"
"mlip.train" = "aiida_mlip.calculations.train:Train"

[tool.poetry.plugins."aiida.parsers"]
"mlip.sp_parser" = "aiida_mlip.parsers.sp_parser:SPParser"
"mlip.opt_parser" = "aiida_mlip.parsers.opt_parser:GeomOptParser"
"mlip.md_parser" = "aiida_mlip.parsers.md_parser:MDParser"
"mlip.train_parser" = "aiida_mlip.parsers.train_parser:TrainParser"

[tool.black]
line-length = 88

[tool.pylint.format]
max-line-length = 88

[tool.pylint.messages_control]
disable = [
    "too-many-ancestors",
    "invalid-name",
    "duplicate-code",
]

[tool.pytest.ini_options]
# Configuration for [pytest](https://docs.pytest.org)
python_files = "test_*.py example_*.py"
addopts = '--cov-report xml'
filterwarnings = [
    "ignore::DeprecationWarning:aiida:",
    "ignore:Creating AiiDA configuration folder:",
    "ignore::DeprecationWarning:plumpy:",
    "ignore::DeprecationWarning:yaml:",
]
pythonpath = ["."]

[tool.coverage.run]
# Configuration of [coverage.py](https://coverage.readthedocs.io)
# reporting which lines of your plugin are covered by tests
source=["aiida_mlip"]

[tool.isort]
# Configuration of [isort](https://isort.readthedocs.io)
force_sort_within_sections = true
line_length = 88
profile = "black"
sections = ['FUTURE', 'STDLIB', 'THIRDPARTY', 'AIIDA', 'FIRSTPARTY', 'LOCALFOLDER']
known_aiida = ['aiida']

[tool.numpydoc_validation]
# report on all checks, except the below
checks = [
    "all",
    "EX01",
    "SA01",
    "ES01",
]
# Don't report on objects that match any of these regex
exclude = [
    ".__weakref__$",
    ".__repr__$",
]
