Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 77 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -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
24 changes: 24 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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.
28 changes: 28 additions & 0 deletions agent-notes/repair-task6-gui-builder-docs-baseline.md
Original file line number Diff line number Diff line change
@@ -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.
1 change: 0 additions & 1 deletion docs/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 = {
Expand Down