zincware/ZnTrack

View on GitHub
pyproject.toml

Summary

Maintainability
Test Coverage
[tool.poetry]
name = "ZnTrack"
version = "0.7.3"
description = "Create, Run and Benchmark DVC Pipelines in Python"
authors = ["zincwarecode <zincwarecode@gmail.com>"]
license = "Apache-2.0"
keywords=["data-science", "data-version-control", "machine-learning", "reproducibility", "collaboration"]
readme = "README.md"


[tool.poetry.dependencies]
python = ">=3.9,<4.0.0"
dvc = "^3.3"
pyyaml = "^6"
tqdm = "^4"
pandas = "^2"

dot4dict = "^0.1"
zninit = "^0.1"
znjson = "^0.2"
znflow = "^0.1"
varname = "^0.13"
typer = "^0"


[tool.poetry.urls]
documentation = "https://zntrack.readthedocs.io"
repository = "https://github.com/zincware/ZnTrack"


[tool.poetry.scripts]
zntrack = "zntrack.cli:app"

[tool.poetry.group.dev.dependencies]
pytest-benchmark = "^3"
pytest = "^7"
numpy = "^1"
matplotlib = "^3"
ase = "^3"
pre-commit = "^2"
coverage = "^6"
pytest-xdist = "^2"
optuna = "^3"
scikit-learn = "^1"
nbmake = "^1"

[tool.poetry.group.notebook.dependencies]
jupyterlab = "^3"

[tool.poetry.group.docs.dependencies]
furo = "^2022"
sphinx-copybutton = "^0.5"
sphinx = "^6"
nbsphinx = "^0.8"
nbsphinx-link = "^1"

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


[tool.black]
line-length = 90
preview = true

[tool.isort]
profile = 'black'
multi_line_output = 3

[tool.coverage.run]
relative_files = true
branch = true
# omit the tests themselves
omit = ["*/tests/*", "*/tmp/*", "*/interface/*", "zntrack/examples/*"]

[tool.coverage.report]
exclude_lines = [
    "raise AssertionError",
    "raise NotImplementedError",
    "if 0:",
    "if __name__ == .__main__.:"
]
ignore_errors = true

[tool.coverage.html]
directory = "coverage_html_report"

[tool.pylint.messages_control]

max-line-length = 90

disable = [
    "logging-fstring-interpolation",
    "too-many-arguments",
    "too-many-instance-attributes",
    "dotted-import-in-loop",
    # seems to fail for some cases
    "no-else-return",
    # allow for open TODOs
    "fixme",
]

[tool.ruff]
line-length = 90

select = ["E", "F", "D", "N", "C", "I"] #, "ANN"]
extend-ignore = [
    "D213", "D203",
    "D401",
    "N802", "N801",
    "C901", # for now
]

exclude = [
    "tmp",
    "tests",
    "docs",
]


[tool.codespell]
skip = "poetry.lock,examples/*"

[tool.pytest.ini_options]
markers = [
    "needs_internet: marks tests which need internet access (deselect with '-m \"not needs_internet\"')",
]