- 2026-11-13 -- Removed:
SceneExporterBase.generate_log_file_path(core_utils/engines/scene_export/scene_exporter.py). Retired 2026-10-14 forlog_file_path(the run log is keyed by the scene, not the export file), due in 0.17.0; its 30-day window closed with 2026-11-13 UTC, andcheck_api_surface.py --checkandtest_deprecation.pytest_nothing_in_pythontk_has_outlived_its_windowread it as expired. Nothing in the ecosystem calls it. A removal: the release is 0.25.0.- Test(s):
test_scene_exporter.pytest_generate_log_file_path_is_retiredgoes with the alias;check_api_surface.py --check: API retirements on time for all seven packages.
- Test(s):
- 2026-11-13 -- Fixed: an RPC plugin answers while its host is busy (
net_utils/rpc/plugin_core.pyRpcPlugin.start, new_ThreadedServer,OpRegistry.register(main_thread=), newOpRegistry.needs_main_thread). The server answered one request at a time, and an op waits for the host's main thread: while a bake, an export or a save held that thread nothing was answered, not/healthand not a job's status. A client following a job timed out, found no health either, reported a job that was running fine as failed, and a bridge then dropped the live instance's record.startnow answers each request on a thread of its own; host ops still run one at a time (RpcPlugin._op_lock). An op registeredmain_thread=Falsereads only the plugin's own bookkeeping and is answered on the request's thread at once, assystem.ping,list_ops,describeandidentitynow are. A pumped server (Toolbag) andserveare unchanged: every op on the host's, or the caller's, thread.- Test(s): red first, then green:
test_plugin_core.pynewTestABusyHostStillAnswers(3: health and a bookkeeping op answer while a host op is under way, host ops still one at a time, a pumped server stays on the host's thread);test_plugin_core,test_rpc,test_look_capture145 passed, 5 skipped. Staged into the five plugin payloads (sync_rpc_core.py --check).
- Test(s): red first, then green:
- 2026-11-12 -- Tests: the test folder is
tests/, the pytest convention (wastest/).testis the standard library's own package name, sofrom test.x import ...could resolve to it.pyproject.tomltestpaths,pythonpathand the CI workflows follow. With it: the coverage upload names./coverage.xml, the file pytest-cov writes (it named a path inside the test folder, before and after the rename, so no report was ever found);tests/test_naming_convention.pyruns standalone aspython -m tests.test_naming_convention.