torc 0.20.7

Workflow management system
[build-system]
requires = ["setuptools"]
build-backend = "setuptools.build_meta"

[project]
name = "torc-client"
# Note: Do not update manually. Use cargo-release from the repo root, such as
# $ cargo release minor --execute
version = "0.20.7"
description = "Workflow management system"
requires-python = ">=3.11,<3.14"
license = "BSD-3-Clause"
readme = "README.md"
authors = [
    { name = "Daniel Thom", email = "daniel.thom@nrel.gov" },
    { name = "Joseph McKinsey", email = "joseph.mckinsey@nrel.gov" },
]
keywords = ["hpc", "workflow", "pipeline"]
classifiers = [
    "Development Status :: 4 - Beta",
    "Natural Language :: English",
    "Programming Language :: Python :: 3.12",
]
dependencies = [
    "click >= 8.2, < 9",
    "isodate",
    "loguru",
    "prettytable >= 3.10, < 4",
    "pydantic >= 2.10, < 3",
    "rmon",
    "rich",
    "rich_click",
    "toml",
    # These are required by the openapi_client. Keep in sync with its setup.py.
    "urllib3 >= 2.1.0, < 3.0.0",
    "python-dateutil >= 2.8.2",
    "typing-extensions >= 4.7.1",
]

[project.scripts]
pytorc = "torc.cli.pytorc:cli"

[tool.setuptools.packages.find]
where = ["src"]

[tool.setuptools.package-data]
"*" = ["*.tcss"]

[project.optional-dependencies]
dev = [
    "flake8",
    "mypy",
    "myst_parser",
    "pre-commit",
    "pytest",
    "pytest-cov",
    "ruff",
    "types-toml",
]

[tool.pytest.ini_options]
pythonpath = "src"
minversion = "6.0"
addopts = "-ra"
testpaths = ["tests"]

[tool.ruff]
# Exclude a variety of commonly ignored directories.
exclude = [
    ".git",
    ".ruff_cache",
    ".venv",
    "_build",
    "build",
    "dist",
    "env",
    "venv",
    "src/torc/openapi_client/*",
]

line-length = 99
indent-width = 4

target-version = "py312"

[tool.mypy]
check_untyped_defs = true
files = [
  "src",
  "tests",
]

[[tool.mypy.overrides]]
ignore_missing_imports = true
module = "isodate.*"

[tool.ruff.lint]
# Enable Pyflakes (`F`) and a subset of the pycodestyle (`E`)  codes by default.
select = [
    "C901",   # McCabe complexity
    "E4",     # Subset of pycodestyle (E)
    "E7",
    "E9",
    "EM",     # string formatting in an exception message
    "F",      # Pyflakes
    "W",      # pycodestyle warnings
]
ignore = []

# Allow fix for all enabled rules (when `--fix`) is provided.
fixable = ["ALL"]
unfixable = []

[tool.ruff.format]
quote-style = "double"
indent-style = "space"
skip-magic-trailing-comma = false
line-ending = "auto"
docstring-code-format = true
docstring-code-line-length = "dynamic"

[tool.ruff.lint.per-file-ignores]
"__init__.py" = ["E402"]
"**/{tests,docs,tools}/*" = ["E402"]

[tool.coverage.run]
# List directories or file patterns to omit from coverage
omit = [
    "src/torc/openapi_client/*",
    "tests/*",
]