build: read version from _const.py, drop phantom scipy/pandas deps
Single source of truth for the package + pinned solver versions in src/otko/_const.py (hatch dynamic version). scipy/pandas were listed in [gui] but never imported. mypy strict mode rescoped to core/services/viewmodels; tomli added for tomllib-less Pythons.
This commit is contained in:
parent
4d1b3092f8
commit
12c78ea8cb
3 changed files with 31 additions and 10 deletions
|
|
@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|||
|
||||
[project]
|
||||
name = "otko"
|
||||
version = "0.1.0"
|
||||
dynamic = ["version"]
|
||||
description = "OTKO — a modern, SAP2000-style desktop GUI for OpenSeesPy."
|
||||
readme = "README.md"
|
||||
requires-python = ">=3.10"
|
||||
|
|
@ -42,10 +42,6 @@ gui = [
|
|||
"vtk>=9.3",
|
||||
"pyqtgraph>=0.13",
|
||||
"imageio[ffmpeg]>=2.34",
|
||||
# scipy and pandas are listed for forward-compatibility; they are not
|
||||
# currently imported by any module in this repo (phantom deps as of 2026-06-15).
|
||||
"scipy>=1.11",
|
||||
"pandas>=2.1",
|
||||
]
|
||||
dev = [
|
||||
"pytest>=7.4",
|
||||
|
|
@ -55,6 +51,7 @@ dev = [
|
|||
"mypy>=1.8",
|
||||
"pre-commit>=3.6",
|
||||
"hatch>=1.9",
|
||||
"tomli>=2.0; python_version < '3.11'",
|
||||
]
|
||||
docs = [
|
||||
"sphinx>=7.2",
|
||||
|
|
@ -72,6 +69,9 @@ Issues = "https://github.com/ogunc/otko/issues"
|
|||
[tool.hatch.build.targets.wheel]
|
||||
packages = ["src/otko"]
|
||||
|
||||
[tool.hatch.version]
|
||||
path = "src/otko/_const.py"
|
||||
|
||||
# ─────────── Ruff ───────────
|
||||
[tool.ruff]
|
||||
line-length = 100
|
||||
|
|
@ -97,12 +97,13 @@ quote-style = "double"
|
|||
# ─────────── Mypy ───────────
|
||||
[tool.mypy]
|
||||
python_version = "3.10"
|
||||
strict = true
|
||||
warn_unused_ignores = true
|
||||
warn_return_any = true
|
||||
disallow_untyped_defs = true
|
||||
warn_unused_configs = true
|
||||
plugins = []
|
||||
|
||||
[[tool.mypy.overrides]]
|
||||
module = ["otko.core.*", "otko.services.*", "otko.viewmodels.*"]
|
||||
strict = true
|
||||
|
||||
[[tool.mypy.overrides]]
|
||||
module = ["openseespy.*", "pyvista.*", "pyvistaqt.*", "vtk.*", "pyqtgraph.*"]
|
||||
ignore_missing_imports = true
|
||||
|
|
@ -121,3 +122,8 @@ markers = [
|
|||
branch = true
|
||||
source = ["src/otko"]
|
||||
omit = ["src/otko/views/*"] # GUI excluded from coverage targets
|
||||
|
||||
[tool.coverage.report]
|
||||
exclude_lines = ["if TYPE_CHECKING:", "raise NotImplementedError"]
|
||||
# Conservative floor for the headless suite; raise deliberately with evidence.
|
||||
fail_under = 50
|
||||
|
|
|
|||
Loading…
Reference in a new issue