content: [build-system]
  requires = [
      # pin NumPy version used in the build
      "numpy>=1.20.1",
      "setuptools>=43.0.0",
  ]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "pymatgen-analysis-diffusion"
  authors = [
      { name = "Materials Virtual Lab", email = "ongsp@ucsd.edu" },
  ]
  maintainers = [
      { name = "Shyue Ping Ong", email = "ongsp@ucsd.edu" },
  ]
  description = "Pymatgen add-on for diffusion analysis."
  readme = "README.rst"
  requires-python = ">=3.10"
  keywords = [
      "ABINIT",
      "analysis",
      "crystal",
      "diagrams",
      "electronic",
      "gaussian",
      "materials",
      "nwchem",
      "phase",
      "project",
      "qchem",
      "science",
      "structure",
      "VASP",
      "diffusion", "molecular dynamics", "MD"
  ]
  license = { text = "BSD" }
  classifiers = [
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.8",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Development Status :: 4 - Beta",
      "Intended Audience :: Science/Research",
      "License :: OSI Approved :: BSD License",
      "Operating System :: OS Independent",
      "Topic :: Scientific/Engineering :: Information Analysis",
      "Topic :: Scientific/Engineering :: Physics",
      "Topic :: Scientific/Engineering :: Chemistry",
      "Topic :: Software Development :: Libraries :: Python Modules",
  ]
  dependencies = [
      'numpy>=1.25.0,<3.0',
      "pymatgen>=2024.6.10",
      "joblib",
      "ase",
      "seaborn"
  ]
  version = "2024.7.15"
  
  [project.urls]
  Homepage = "http://materialsvirtuallab.github.io/pymatgen-analysis-diffusion/"
  Documentation = "http://materialsvirtuallab.github.io/pymatgen-analysis-diffusion/"
  Repository = "https://github.com/materialsvirtuallab/pymatgen-analysis-diffusion"
  Issues = "https://github.com/materialsvirtuallab/pymatgen-analysis-diffusion/issues"
  Pypi = "https://pypi.org/project/pymatgen-analysis-diffusion"
  
  [project.optional-dependencies]
  ci = [
      "pytest>=8",
      "pytest-cov>=4",
      "pytest-split>=0.8",
      "maggma"
  ]
  docs = [
      "sphinx",
      "sphinx_rtd_theme",
  ]
  
  
  [tool.setuptools.packages.find]
  where = ["src"]
  include = ["pymatgen.*"]
  
  
  [tool.ruff]
  target-version = "py310"
  line-length = 120
  lint.select = [
      "ANN", # flake8-annotations
      "B", # flake8-bugbear
      "C4", # flake8-comprehensions
      "D", # pydocstyle
      "E", # pycodestyle error
      "EXE", # flake8-executable
      "F", # pyflakes
      "FA", # flake8-future-annotations
      "FLY", # flynt
      "I", # isort
      "ICN", # flake8-import-conventions
      "ISC", # flake8-implicit-str-concat
      "PD", # pandas-vet
      "PERF", # perflint
      "PIE", # flake8-pie
      "PL", # pylint
      "PT", # flake8-pytest-style
      "PYI", # flakes8-pyi
      "Q", # flake8-quotes
      "RET", # flake8-return
      "RSE", # flake8-raise
      "RUF", # Ruff-specific rules
      "SIM", # flake8-simplify
      "SLOT", # flake8-slots
      "TCH", # flake8-type-checking
      "TID", # tidy imports
      "TID", # flake8-tidy-imports
      "UP", # pyupgrade
      "W", # pycodestyle warning
      "YTT", # flake8-2020
  ]
  lint.ignore = [
      "ANN003", # Missing type annotation for kwargs
      "B023", # Function definition does not bind loop variable
      "B028", # No explicit stacklevel keyword argument found
      "B904", # Within an except clause, raise exceptions with ...
      "C408", # unnecessary-collection-call
      "D105", # Missing docstring in magic method
      "D205", # 1 blank line required between summary line and description
      "D212", # Multi-line docstring summary should start at the first line
      "E501",
      "PD901", # pandas-df-variable-name
      "PERF203", # try-except-in-loop
      "PERF401", # manual-list-comprehension (TODO fix these or wait for autofix)
      "PLR", # pylint refactor
      "PLW2901", # Outer for loop variable overwritten by inner assignment target
      "PT009",
      "PT011",
      "PT013", # pytest-incorrect-pytest-import
      "PYI024", # collections-named-tuple (TODO should maybe fix these)
      "RUF012", # Disable checks for mutable class args. This is a non-problem.
      "SIM105", # Use contextlib.suppress(OSError) instead of try-except-pass
      "SIM115",
      "ISC001"
  ]
  lint.pydocstyle.convention = "google"
  lint.isort.required-imports = ["from __future__ import annotations"]
  lint.isort.split-on-trailing-comma = false
  
  [tool.ruff.lint.per-file-ignores]
  "!src/**.py" = ["D", "EXE"]
  
  
  [tool.pytest.ini_options]
  addopts = "--durations=30 --quiet -r xXs --color=yes -p no:warnings"
  
  [tool.coverage.run]
  branch = true
  
  
  [tool.coverage.report]
  exclude_also = [
      "@deprecated",
      "@np.deprecate",
      "def __repr__",
      "except ImportError:",
      "if 0:",
      "if TYPE_CHECKING:",
      "if __name__ == .__main__.:",
      "if self.debug:",
      "if settings.DEBUG",
      "if typing.TYPE_CHECKING:",
      "pragma: no cover",
      "raise AssertionError",
      "raise NotImplementedError",
      "show_plot",
  ]
  
  [tool.mypy]
  ignore_missing_imports = true
  namespace_packages = true
  explicit_package_bases = true
  no_implicit_optional = false
  disable_error_code = "annotation-unchecked"
  
  
  [[tool.mypy.overrides]]
  module = ["requests.*", "tabulate.*"]
  ignore_missing_imports = true
  
  [tool.codespell]
  ignore-words-list = """
  titel,alls,ans,nd,mater,nwo,te,hart,ontop,ist,ot,fo,nax,coo,coul,ser,leary,thre,hove,
  fase,rute,reson,titels,ges,scalr,strat,struc,hda,nin,ons,pres,kno,loos,lamda,lew,fof,
  tje,afe
  """
  skip = "pymatgen/analysis/aflow_prototypes.json"
  check-filenames = true
  
  [tool.pyright]
  typeCheckingMode = "off"
  reportPossiblyUnboundVariable = true
  reportUnboundVariable = true
  reportMissingImports = false
  reportMissingModuleSource = false
  reportInvalidTypeForm = false
  exclude = ["**/tests"]
  
  [dependency-groups]
  dev = [
      "pre-commit>=4.3.0",
  ]
  