bparzella/secsgem

View on GitHub
pyproject.toml

Summary

Maintainability
Test Coverage
[tool.poetry]
name = "secsgem"
version = "0.2.0-alpha.6"
description = "Python SECS/GEM implementation"
readme = "README.md"

authors = ["Benjamin Parzella <bparzella@gmail.com>"]

license = "LGPL-2.1-or-later"

homepage = "https://github.com/bparzella/secsgem"
repository = "https://github.com/bparzella/secsgem"
documentation = "https://secsgem.readthedocs.io/"

classifiers = [
    "Development Status :: 3 - Alpha",

    "Intended Audience :: Developers",
    "Topic :: Software Development :: Libraries",

    "License :: OSI Approved :: GNU Lesser General Public License v2 or later (LGPLv2+)",

    "Programming Language :: Python :: 3",
    "Programming Language :: Python :: 3.7",
    "Programming Language :: Python :: 3.8",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
]

keywords = ["development", "hsms", "secs", "gem"]

[tool.poetry.dependencies]
python = "^3.8"
python-dateutil = "^2.8.1"
pyserial = "^3.5"
pyyaml = "^6.0.1"

[tool.poetry.dev-dependencies]
pytest = "^7.4.2"
coverage = "^7.3.2"
ruff = "^0.1.3"
pylint = "^3.0.2"
mypy = "^1.6.1"
Jinja2 = "^3.1.2"
sphinx = "^7.1.2"
sphinx-rtd-theme = "^1.3.0"
myst-parser = "^2.0.0"
sphinx-autodoc-typehints = "^1.24.0"
sphinx-autobuild = "^2021.3.14"
types-PyYAML = "^6.0.12.12"
types-python-dateutil = "^2.8.19.14"
types-pyserial = "^3.5.0.10"

[tool.pytest.ini_options]
addopts = "--doctest-modules --doctest-report ndiff"
testpaths = [
    "tests",
    "secsgem"
]

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

[tool.ruff]
line-length = 120
extend-exclude = [
    "tests",
    "data",
    "docs",
    "samples",
    ".venv",
]

[tool.ruff.lint]
extend-select = [
  "F",  # pyflakes
  "E",  # pycodestyle - error
  "W",  # pycodestyle - warning
  "C",  # mccabe
  "I",  # isort
  "N",  # pep8 - naming
  "D",  # pydocstyle
  "UP",  # pyupgrade
  "YTT",  # flake8 - 2020
#  "ANN",  # flake8 - annotations
  "S",  # flake8 - bandit
#  "FBT",  # flake8 - boolean trap
  "B",  # flake8 - bugbear
#  "A",  # flake8 - builtins
#  "COM",  # flake8 - commas
#  "CPY",  # flake8 - copyright
  "C4",  # flake8 - comprehensions
  "DTZ",  # flake8 - datetimez
#  "EM",  # flake8 - errmsg
  "FA",  # flake8 - future annotations
  "ISC",  # flake8 - implicit str concat
  "ICN",  # flake8 - import conventions
  "G",  # flake8 - logging format
  "INP",  # flake8 - no pep420
  "PIE",  # flake8 - pie
  "T20",  # flake8 - print
  "PT",  # flake8 - pytest style
  "Q",  # flake8 - quotes
  "RSE",  # flake8 - raise
  "RET",  # flake8 - return
  "SLF",  # flake8 - self
  "SIM",  # flake8 - simplify
#  "TID",  # flake8 - tidy imports
  "TCH",  # flake8 - type checking
  "ARG",  # flake8 - unused arguments
  "PTH",  # flake8 - use pathlib
  "TD",  # flake8 - todos
  "FIX",  # flake8 - fixme
  "ERA",  # eradicate
  "PGH",  # pygrep hooks
#  "PL",  # pylint
#  "TRY",  # tryceratorps
  "FLY",  # flynt
  "PERF",  # perflint
#  "FURB",  # refurb
#  "LOG",  # flake8 - logging
  "RUF",  # ruff
]
ignore = [
  "ANN101",
  "ANN102",
  "RUF012",  # TODO: remove
]

[tool.ruff.flake8-annotations]
suppress-none-returning = true
mypy-init-return = true
allow-star-arg-any = true

[tool.ruff.lint.pydocstyle]
convention = "google"

[tool.pylint]
max-line-length = 120
disable = [
  "duplicate-code",
  "bad-mcs-classmethod-argument",
]
ignore-paths = [
    "tests",
    "data",
    "docs",
    "samples",
    ".venv",
]

[tool.mypy]
python_version = "3.8"
exclude = [
    "tests",
    "data",
    "docs",
    "samples",
    ".venv",
]