From caa318f88aecdead2ba335413909d11a4bf69332 Mon Sep 17 00:00:00 2001 From: Christopher Toth Date: Tue, 20 Oct 2026 20:10:54 -0600 Subject: [PATCH] Fix unused Sphinx static path and verify documentation in CI --- .github/workflows/ci.yml | 77 +++++++++++++++++++ README.md | 24 ++++++ .../repair-task6-gui-builder-docs-baseline.md | 28 +++++++ docs/conf.py | 1 - 4 files changed, 129 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml create mode 100644 agent-notes/repair-task6-gui-builder-docs-baseline.md diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..10ee2ae --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,77 @@ +name: Offline tests and documentation + +on: + pull_request: + push: + branches: [master] + +permissions: + contents: read + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + tests: + name: Tests and package (Python ${{ matrix.python }}) + runs-on: windows-latest + timeout-minutes: 10 + strategy: + fail-fast: false + matrix: + include: + - python: "3.8" + pytest: "8.3.5" + - python: "3.14" + pytest: "9.1.1" + env: + PYTHON_VERSION: ${{ matrix.python }} + PYTEST_VERSION: ${{ matrix.pytest }} + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 + with: + version: "0.13.4" + enable-cache: false + - name: Install package and compatible test runner + run: | + uv venv --python "$PYTHON_VERSION" + uv pip install --only-binary wxPython . "pytest==$PYTEST_VERSION" + - name: Import actual wxPython and GUI Builder + run: uv run --no-project --no-sync python -c "import wx; from gui_builder import fields, forms; print(wx.version())" + - name: Run complete tracked unit suite + run: uv run --no-project --no-sync python -m pytest -q + - name: Build wheel and source distribution + run: | + uv build + test -s dist/gui_builder-1.7.0-py3-none-any.whl + test -s dist/gui_builder-1.7.0.tar.gz + + docs: + name: Documentation (Python 3.11) + runs-on: windows-latest + timeout-minutes: 10 + defaults: + run: + shell: bash + steps: + - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1 + with: + persist-credentials: false + - uses: astral-sh/setup-uv@1c37ad07a6a961277cf70c0d37d6f313000f5884 # v10.3.0 + with: + version: "0.13.4" + enable-cache: false + - name: Install actual autodoc dependencies + run: | + uv venv --python 3.11 + uv pip install --only-binary wxPython . -r docs/requirements.txt "sphinx==8.1.3" "sphinx-rtd-theme==3.1.0" "sphinx-autodoc-typehints==3.0.0" + - name: Build real HTML documentation with warnings fatal + working-directory: docs + run: ../.venv/Scripts/python.exe -m sphinx -W --keep-going -b html . _build/html diff --git a/README.md b/README.md index 05648d0..6750f6e 100644 --- a/README.md +++ b/README.md @@ -158,6 +158,30 @@ The project uses: - `uv` for dependency management - `pyproject.toml` for configuration +## Tests and documentation + +The complete tracked unit suite uses controlled event fixtures and creates no GUI windows: + +```bash +uv venv --python 3.14 +uv pip install --only-binary wxPython . pytest==9.1.1 +uv run --no-project --no-sync python -m pytest -q +uv build +``` + +CI installs and imports real wxPython on Windows with Python 3.8 and 3.14, +runs all seven tracked callback tests, and verifies both package artifacts. +Python 3.8 uses pytest 8.3.5; these tests do not exercise interactive accessibility. +The documentation job uses Python 3.11, as configured for Read the Docs, with +the branch's documentation dependency floors and actual wxPython imports: + +```bash +uv venv --python 3.11 +uv pip install --only-binary wxPython . -r docs/requirements.txt sphinx==8.1.3 sphinx-rtd-theme==3.1.0 sphinx-autodoc-typehints==3.0.0 +cd docs +../.venv/Scripts/python.exe -m sphinx -W --keep-going -b html . _build/html +``` + ## License MIT License - see LICENSE.txt for details. diff --git a/agent-notes/repair-task6-gui-builder-docs-baseline.md b/agent-notes/repair-task6-gui-builder-docs-baseline.md new file mode 100644 index 0000000..aaeb708 --- /dev/null +++ b/agent-notes/repair-task6-gui-builder-docs-baseline.md @@ -0,0 +1,28 @@ +# GUI Builder baseline: remove nonexistent custom static directory + +## Goal + +Fix the confirmed baseline documentation configuration failure before updating dependency PRs #5/#9/#10. Retain strict real docs, full seven runtime tests and supported Python coverage. + +## State + +- Fresh authenticated origin git@github.com:accessibleapps/gui_builder.git, master32eb2671a40eb3dc324e5628ef1544318adb6853. Isolated worktree gui-builder-docs-baseline / repair/task6-gui-builder-docs-baseline directly from that master. +- Canonical dirty work and all three published feature tips/archives remain unchanged. No feature dependency bump, source behavior change, warning suppression, model, hook, settings, merge or release call. +- Local prerequisite only; first new draft publication and final-head hosted/Claude gates pending coordinator approval. No full local CI ran. + +## Evidence and decisions + +- Actual pull_request attempt1 runs39530842757 (#5),39530857396 (#9),39530868038 (#10) all failed docs3.11 on exactly one warning: html_static_path entry '_static' does not exist. Actual HTML/autodoc processing completed but -W correctly made each job fail. +- Current master docs/conf.py line38 has the identical declaration; complete tracked docs tree has no _static directory/assets, and tracked grep finds no custom CSS/JS/static callers elsewhere in docs or RTD config. All three feature configs equal master. This is a confirmed baseline config defect, not three dependency failures. +- Remove only html_static_path=['_static']; Sphinx defaults to no custom static directories. Its theme assets are separate and remain. Do not add dummy assets or suppress warning categories. +- Add the same already-reviewed 77-line safe CI from #9, byte-for-byte: Windows3.8/3.14 real package+wx imports, seven unchanged callback tests, wheel/sdist; Windows3.11 real strict Sphinx HTML build with existing dependency floors. Both typehints3.0.0/3.0.1 already require Sphinx>=8.1.3, so pinning8.1.3 does not apply the feature's direct requirement bump. +- No dependency/support metadata or docs requirement changes. README commits the actual test/build authority; no generic framework or new test policy. + +## Verification + +- Original failing hosted evidence is above; all six feature runtime jobs succeeded, but that is not claimed as this new baseline head's hosted result. +- Static diff confirms only the unused config declaration is removed. Workflow Git blob10ee2ae4f0296bbec9b4cadb7a34500d136bd824 exactly equals the previously reviewed/audited #9 workflow (actionlint1.7.12 and zizmor1.31.1 --offline --pedantic both exit0, no findings). Source, seven tests, manifest, docs requirements and release workflow diffs are empty. No full local tests/docs/build rerun. + +## Next step + +Return full master-to-head diff and proposed prerequisite PR to coordinator before publication. Affected features remain at their published failing heads until this prerequisite is reviewed, hosted-green and explicitly allowed to land. diff --git a/docs/conf.py b/docs/conf.py index 6fd1564..fa634cd 100644 --- a/docs/conf.py +++ b/docs/conf.py @@ -35,7 +35,6 @@ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output html_theme = 'sphinx_rtd_theme' -html_static_path = ['_static'] # Theme options html_theme_options = {