ispconfig-py/pyproject.toml
Sulkta 75d5e65b8d
Some checks failed
gitleaks / scan (push) Failing after 2s
license: relicense to AGPL-3.0-or-later
2026-06-28 21:17:46 -07:00

109 lines
3.1 KiB
TOML

[build-system]
requires = ["setuptools>=68", "wheel"]
build-backend = "setuptools.build_meta"
[project]
name = "ispconfig"
version = "0.2.0"
description = "Python SDK for the ISPConfig remote SOAP API."
readme = "README.md"
license = { text = "AGPL-3.0-or-later" }
requires-python = ">=3.10"
authors = [
{ name = "Sulkta Coop" },
]
# Zero runtime deps on purpose. ISPConfig's SOAP endpoint disables WSDL
# generation (?wsdl returns a fault), so zeep can't help us anyway — we
# hand-roll envelopes with the stdlib.
dependencies = []
[project.optional-dependencies]
dev = [
"pytest>=7",
"mypy>=1.8",
"ruff>=0.3",
]
[project.urls]
Homepage = "https://git.sulkta.com/Sulkta-OSS/ispconfig-py"
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.package-data]
ispconfig = ["py.typed"]
# ---- mypy -----------------------------------------------------------
[tool.mypy]
python_version = "3.10"
packages = ["ispconfig"]
mypy_path = "src"
strict_optional = true
warn_unused_ignores = true
warn_redundant_casts = true
warn_return_any = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
no_implicit_optional = true
# We intentionally don't enable `disallow_any_expr` — SOAP responses are
# dicts of Any and forcing typing everywhere would create fake certainty.
[[tool.mypy.overrides]]
module = "ispconfig.types"
disallow_untyped_defs = false
# ---- ruff -----------------------------------------------------------
[tool.ruff]
line-length = 110
target-version = "py310"
src = ["src"]
[tool.ruff.lint]
select = [
"E", # pycodestyle errors
"F", # pyflakes
"W", # pycodestyle warnings
"I", # isort
"B", # bugbear
"UP", # pyupgrade
"N", # pep8-naming
"SLF", # flake8-self (private access)
"RUF",
]
ignore = [
"E501", # line length — handled by formatter when it cares
"N818", # exception suffix — our hierarchy predates this rule
"B008", # function calls in argument defaults — not our style anyway
]
[tool.ruff.lint.per-file-ignores]
"tests/*" = ["SLF001", "N802"]
# Submodules call back into the client's dispatcher (`_call`) by design —
# it's the single chokepoint for session management and retry logic.
# Every submodule needs this waiver; generator output follows the same pattern.
"src/ispconfig/admin.py" = ["SLF001"]
"src/ispconfig/aps.py" = ["SLF001"]
"src/ispconfig/backups.py" = ["SLF001"]
"src/ispconfig/clients.py" = ["SLF001"]
"src/ispconfig/cron.py" = ["SLF001"]
"src/ispconfig/databases.py" = ["SLF001"]
"src/ispconfig/dns.py" = ["SLF001"]
"src/ispconfig/domains.py" = ["SLF001"]
"src/ispconfig/ftp.py" = ["SLF001"]
"src/ispconfig/mail.py" = ["SLF001"]
"src/ispconfig/misc.py" = ["SLF001"]
"src/ispconfig/monitor.py" = ["SLF001"]
"src/ispconfig/openvz.py" = ["SLF001"]
"src/ispconfig/server.py" = ["SLF001"]
"src/ispconfig/shell.py" = ["SLF001"]
"src/ispconfig/sites.py" = ["SLF001"]
"src/ispconfig/webdav.py" = ["SLF001"]
# ---- pytest ---------------------------------------------------------
[tool.pytest.ini_options]
testpaths = ["tests"]
addopts = "-ra"