pyproject.toml
[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",
]