Move src/lib/ → src/testium/runtime/ (internal plumbing)
Move src/testium/libs/ → src/testium/api/ (public SDK for test scripts)
Move src/py_func/ → src/testium/py_func/ (Python subprocess)
Move src/lua_func/ → src/testium/lua_func/ (Lua subprocess data)
The package now ships as a single coherent unit instead of four sibling
top-level packages (testium, lib, py_func, lua_func) — pip install
gives a clean site-packages/testium/ with no namespace pollution; .lua
files travel with the wheel via package_data; the wheel installs
cleanly and `testium -b` runs end-to-end including py_func subprocesses
and entry-point exporter plugins.
Naming:
- runtime/ (internal, no API guarantees) clearer than lib/
- api/ (public SDK consumed as `import api.testium as tm`) clearer than libs/
Imports updated en masse: from lib. → from runtime. and from libs. →
from api., plus the importlib.import_module("libs.*") strings in
test_item_console.py and test_item_runtime_plot.py. Test/example
scripts (helper_lib.py, parallel.py, post_execution.py) and the
fake_exporter test suite migrated too.
paths.py: subproc_path() now returns testium_path() — both point at
the testium package directory since the subprocesses live inside.
pyproject.toml: removed exclude=["lua_func", "py_func"] (no longer
needed), added package-data for testium.lua_func/*.lua, removed the
license classifier (PEP 639 conflict with license expression).
Subprocess isolation contract: py_func/ and lua_func/ may only import
runtime/ and their own modules — never interpreter/, main_win/, api/,
or testium/. Enforced by test/validation/items/isolation/ which runs a
py_func that statically scans subprocess source files for forbidden
imports. The contract holds today; the test prevents future drift.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
44 lines
821 B
TOML
44 lines
821 B
TOML
[build-system]
|
|
requires = ["setuptools", "wheel"]
|
|
build-backend = "setuptools.build_meta"
|
|
|
|
[project]
|
|
name="testium"
|
|
requires-python = ">=3.11"
|
|
authors = [
|
|
{name = "François Dausseur", email = "francois@beafrancois.fr"},
|
|
]
|
|
license = "EUPL-1.2"
|
|
license-files = ["../LICENSE"]
|
|
classifiers = [
|
|
"Development Status :: 5 - Production/Stable",
|
|
"Programming Language :: Python",
|
|
]
|
|
dependencies = [
|
|
"setuptools",
|
|
"pyside6",
|
|
"pyyaml",
|
|
"pyserial",
|
|
"colorama",
|
|
"matplotlib",
|
|
"telnetlib3",
|
|
"jinja2",
|
|
"pexpect",
|
|
"gitpython",
|
|
"junit-xml",
|
|
"lxml",
|
|
]
|
|
dynamic = ["version"]
|
|
|
|
[project.scripts]
|
|
testium = "testium:main"
|
|
|
|
[tool.setuptools.packages.find]
|
|
where=["."]
|
|
|
|
[tool.setuptools.package-data]
|
|
"testium.lua_func" = ["*.lua"]
|
|
|
|
[tool.setuptools.dynamic]
|
|
version = {file = ["VERSION"]}
|