aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2026-04-29hotfix: pin pypa/gh-action-pypi-publish to commit SHA not tag-object SHA (#53)v0.3.0Bobby1-1/+2
## Symptom The v0.3.0 publish workflow failed at the Docker image pull step: > docker: Error response from daemon: manifest unknown > ghcr.io/pypa/gh-action-pypi-publish:6733eb7d741f0b11ec6a39b58540dab7590f9b7d PyPI upload didn't happen. v0.3.0 tag and GitHub release exist, but the package is not yet on PyPI. ## Root cause #35 pinned `pypa/gh-action-pypi-publish` to `6733eb7d741f0b11ec6a39b58540dab7590f9b7d`. That's the **tag-object SHA** for v1.14.0, not the **commit SHA** the tag points to. Annotated tags have their own SHA which dereferences to a commit, and I used `.object.sha` from `git/refs/tags/v1.14.0` directly without checking `.object.type` (which was `tag`, not `commit`). The actual v1.14.0 commit SHA is `cef221092ed1bacb1cc03d23a2d87d1d172e277b` (verified by following the tag object, and cross-checked against `refs/heads/release/v1` which points at the same commit). Docker images for the publish action are tagged with the *commit* SHA, not the tag-object SHA, hence "manifest unknown." ## Fix Two changes to `.github/workflows/python-publish.yml`: 1. SHA bump: `6733eb7d…` → `cef221092…` (still v1.14.0, just the right SHA this time). 2. Add `workflow_dispatch:` trigger so we can manually re-run publish after merge without deleting/recreating the release. ## After merge Run `gh workflow run python-publish.yml` to dispatch the fixed workflow against `main`. The package contents are identical to what's at the v0.3.0 tag (we only changed the workflow file), so PyPI gets `edify==0.3.0` as intended. Closes #52
2026-04-29hotfix: pin pypa/gh-action-pypi-publish to commit SHA not tag-object SHAnatsuoto1-1/+2
#35 pinned `pypa/gh-action-pypi-publish` to `6733eb7d741f0b11ec6a39b58540dab7590f9b7d`, which is the **tag object** SHA for v1.14.0, not the commit it points to. The publish action's Docker image is built per commit SHA, so pulling `ghcr.io/pypa/gh-action-pypi-publish:6733eb7d...` failed with "manifest unknown" and the v0.3.0 PyPI upload never happened. The actual v1.14.0 commit SHA is `cef221092ed1bacb1cc03d23a2d87d1d172e277b` (the tag object dereferences to it, and `refs/heads/release/v1` agrees). Also adding `workflow_dispatch:` trigger so we can re-run publish without deleting/recreating the GitHub release. The release-only trigger left us with no path to retry after the failure. Closes #52
2026-04-29chore(release): date 0.3.0 changelog entry (#51)Bobby1-1/+1
## Summary One-line change: `0.3.0 (unreleased)` → `0.3.0 (2026-04-29)`. Stamps the changelog with the release date so it's ready to be the body of the GitHub release we cut after this lands. No metadata changes — version was bumped to 0.3.0 in #45 and has been parked there since. This is purely the changelog header date. ## After merge 1. Sync `main` locally. 2. Create GitHub release tagged `v0.3.0` with the relevant changelog section as release notes. 3. The `Upload Python Package` workflow runs on `release: published` and uploads to PyPI via the existing `PYPI_API_TOKEN` secret. 4. Confirm `edify==0.3.0` is live on PyPI. Closes #50
2026-04-29chore(release): date 0.3.0 changelog entrynatsuoto1-1/+1
Stamp the changelog header with today's date in preparation for tagging v0.3.0. No metadata changes — version was already set to 0.3.0 in #45; this just dates the entry so the release notes are ready when we cut the tag. Closes #50
2026-04-28fix(docs): drop PDF and EPUB builds from RTD (#49)Bobby1-1/+0
## Summary RTD has been failing the build pipeline for `latest` because the PDF format can't be produced. HTML and htmlzip succeed; PDF fails on `pdflatex`'s inability to render the README's SVG badges or the IPA Unicode in the project pronunciation, leaves a damaged output, and RTD's uploader refuses with *"Build output directory for format 'pdf' contains multiple files."* This drops the `formats: all` line from `.readthedocs.yml`, which defaults RTD back to HTML-only. Re-introducing PDF would require switching the LaTeX engine to `xelatex`/`lualatex` and hiding every README badge behind `.. only:: html` directives, with the standing risk that any new badge or non-ASCII character re-breaks it. PDFs of a regex-builder library aren't worth that maintenance bill. If the htmlzip download specifically is missed, that's a one-line follow-up: `formats: [htmlzip]`. Closes #48
2026-04-28fix(docs): drop PDF and EPUB builds from Read the Docsnatsuoto1-1/+0
RTD's PDF format was failing because: 1. README.rst's SVG badges can't be embedded by pdflatex (`Unknown graphics extension: .svg` x 8). 2. The IPA pronunciation `/ˈɛdɪfaɪ/` uses Unicode codepoints not set up for use with pdflatex (would need xelatex/lualatex). `latexmk` exited 12, leaving a damaged `edify.pdf` plus aux files in the output directory; RTD's uploader then refused with "Build output directory for format 'pdf' contains multiple files." Removing `formats: all` from `.readthedocs.yml` defaults RTD to HTML only. PDFs of a regex-builder library aren't worth the maintenance cost — fixing them would require switching the LaTeX engine and hiding every badge behind `.. only:: html` directives, with the guarantee that any new badge or Unicode glyph re-breaks it. Closes #48
2026-04-28chore: remove dead cookiecutter regeneration infrastructure (#47)Bobby10-314/+13
## Summary The repo was bootstrapped from `cookiecutter-pylibrary`. The regeneration scaffolding has been sitting around since then — unused, out of date, and in some cases pointing at infrastructure (AppVeyor) that hasn't been part of CI for years. This PR knocks it all down in one sweep so nothing dead-by-design remains in the tree. 10 files changed, **+13 / -314**. ## Removed - `.cookiecutterrc` — cookiecutter regen metadata. - `ci/bootstrap.py` — entry point for regenerating workflow files from the templates. - `ci/templates/` (whole directory): - `.appveyor.yml` template — AppVeyor isn't wired up. - `.github/workflows/github-actions.yml` Jinja template — the live workflow has evolved past it via #32, #35, #37. ## Coupled updates - `tox.ini` — dropped the `[testenv:bootstrap]` env (calls deleted `bootstrap.py`) and the `bootstrap` reference in the basepython selector. - `MANIFEST.in` — removed `include .cookiecutterrc`. - `setup.cfg` — removed `ci/templates` from the flake8 `exclude` and isort `skip` lists. - `.pre-commit-config.yaml` — removed `ci/templates` from the top-level `exclude` regex. - `tests.local.sh` — replaced the per-version `if/elif` chain (which still listed Python 3.7 and missed 3.12-3.14) with a single programmatic `tox -e py$VERSION` lookup against `tox --listenvs-all`. Self-maintaining when the matrix changes. - `CHANGELOG.rst` — added a Housekeeping bullet for this PR under `0.3.0 (unreleased)`. ## Live and untouched `ci/requirements.txt` is installed by every CI workflow (`pip install -r ci/requirements.txt`). Not regen-related. After this lands there should be **no dead infra** left in the tree. Closes #46
2026-04-28chore: remove dead cookiecutter regeneration infrastructurenatsuoto10-314/+13
The repo was bootstrapped from `cookiecutter-pylibrary`. The regeneration scaffolding has been sitting around since then — unused, out of date, and in some cases pointing at infrastructure (AppVeyor) that hasn't been part of CI for years. Knock it all down in one sweep so there's nothing dead-by-design in the tree after this PR. Removed - `.cookiecutterrc` — cookiecutter regen metadata. - `ci/bootstrap.py` — entry point for regenerating workflow files from the templates. - `ci/templates/` (whole directory): - `.appveyor.yml` template (AppVeyor isn't wired up). - `.github/workflows/github-actions.yml` Jinja template (the live workflow has evolved past it via #32, #35, #37). Coupled updates - `tox.ini`: dropped the `[testenv:bootstrap]` env (calls deleted `bootstrap.py`) and the `bootstrap` reference in the basepython selector. - `MANIFEST.in`: removed `include .cookiecutterrc`. - `setup.cfg`: removed `ci/templates` from the flake8 `exclude` and isort `skip` lists (dead exclusion paths). - `.pre-commit-config.yaml`: removed `ci/templates` from the top-level `exclude` regex. - `tests.local.sh`: replaced the per-version `if/elif` chain (which still listed Python 3.7 and missed 3.12-3.14) with a single programmatic `tox -e py$VERSION` lookup against `tox --listenvs-all`. Self-maintaining when the matrix changes. - `CHANGELOG.rst`: added a Housekeeping bullet for this PR. Live and untouched - `ci/requirements.txt` is still installed by every CI workflow (`pip install -r ci/requirements.txt`). Not regen-related. Closes #46
2026-04-28chore(release): bump version to 0.3.0 and write changelognatsuoto6-12/+54
Park the metadata at 0.3.0. This is not the release — the changelog header stays "(unreleased)" and we'll swap in a date when we actually tag. - setup.py, docs/conf.py, src/edify/__init__.py, .bumpversion.cfg: 0.2.2 -> 0.3.0. - README.rst: bump both `commits-since/v0.2.2` shields to v0.3.0. The shield will 404 until v0.3.0 is tagged, which is an accepted trade-off for keeping `bumpversion` config consistent. - CHANGELOG.rst: replace Copilot's stub `Unreleased` heading with a real `0.3.0 (unreleased)` entry covering everything since 0.2.2 — Python 3.7 drop (#32), 3.12/3.13/3.14 support and RTD updates (#31), GitHub Actions and PyPy and pre-commit modernization (#33, #35, #37), dependency floor bumps (#25-#29), repo infrastructure (#39), and housekeeping (#41, #43). - docs/conf.py: fix `extlinks` caption format. The old style — a bare prefix string like 'PR #' — was deprecated in Sphinx 5 and removed in Sphinx 6, but the bug stayed latent because no existing CHANGELOG entry actually used the `:pr:` or `:issue:` roles. The new changelog uses `:pr:` for every cross-reference, which is what surfaced the breakage in the docs CI job. Updated both captions to the modern `'PR #%s'` / `'#%s'` form. Closes #44
2026-04-28chore: drop dead template exclusion and refresh copyright yearnatsuoto2-3/+1
Two unrelated-but-tiny housekeeping items: - ci/templates/.github/workflows/github-actions.yml: the cookiecutter template still wrapped the matrix loop in `{% if prefix not in ['py37', 'pypy37'] %}`. Those tox envs were removed from `envlist` in #32, so the loop never visits them and the guard never fires. Dead Jinja, removed. - docs/conf.py: copyright year was hardcoded to '2022', which Sphinx was happily rendering as the docs footer in 2026. Bumped to a '2022-2026' span. Closes #42
2026-04-28chore: update author website URL to shi.foonatsuoto2-2/+2
Bobby's personal website moved from `thatcomputerscientist.com` to `shi.foo`. Two files held the old URL: - `AUTHORS.rst`: author line - `.cookiecutterrc`: `website:` field used by the cookiecutter template that originally generated this project natsuoto's entry in AUTHORS (added in #39) is unaffected. Closes #40
2026-04-28chore: add CODEOWNERS and natsuoto to AUTHORSnatsuoto2-0/+2
Two pieces of collaboration infrastructure: - `.github/CODEOWNERS`: a single `* @luciferreeves` rule. Combined with the "Require review from Code Owners" branch-protection rule on `main`, every PR will auto-request Bobby as reviewer and cannot merge without his approval. - `AUTHORS.rst`: add `natsuoto`, the agent identity that has authored every commit from #32 onward. Closes #38
2026-04-28chore: refresh PyPy CI matrix to maintained versions (#37)Bobby2-14/+32
## Summary Our CI was the only PyPy line tested was `pypy-3.8`, which reached end-of-life in October 2024 (last release December 2022). Replace it with the actively maintained PyPy lines. ## State per upstream Source: https://downloads.python.org/pypy/versions.json | PyPy line | Last stable | Status | |---|---|---| | `pypy-3.8` | 2022-12-29 | **EOL** | | `pypy-3.9` | 2024-04-24 | Effectively EOL — no releases in ~2 years | | `pypy-3.10` | 2025-02-26 | Maintained | | `pypy-3.11` | 2026-03-13 | Current stable | ## Changes - **`tox.ini`** — `envlist`: `pypy38` → `pypy310, pypy311`. Same swap in the `basepython` block. - **`.github/workflows/github-actions.yml`** — 3 `pypy38` matrix entries removed, 6 new entries added (`pypy310` and `pypy311`, each across `ubuntu-latest`, `windows-latest`, `macos-latest`), mirroring the existing CPython 3-OS pattern. `pypy-3.9` is intentionally skipped — its last release was April 2024 with no signal of ongoing maintenance, so testing it would just inherit the same stale-CI problem we're fixing. `setup.py` classifiers don't enumerate PyPy minor versions (only `Implementation :: PyPy`), so no metadata change is needed there. The Jinja template at `ci/templates/.github/workflows/github-actions.yml` still has a `['py37', 'pypy37']` exclusion that's now dead code (those envs have been gone since #32). Cleaning the template is out of scope for this PR. Closes #36
2026-04-28chore: refresh PyPy CI matrix to maintained versionsnatsuoto2-14/+32
PyPy 3.8 reached end-of-life in October 2024 and was the only PyPy line we tested. PyPy 3.9's last release was April 2024 and is effectively EOL too. Per upstream (downloads.python.org/pypy): - pypy-3.10 last release 2025-02-26 (maintained) - pypy-3.11 last release 2026-03-13 (current stable) Drop pypy38 jobs and replace with pypy310 and pypy311, mirroring the existing 3-OS pattern (ubuntu, windows, macos). - tox.ini: envlist swap pypy38 -> pypy310, pypy311; same swap in the basepython block. - .github/workflows/github-actions.yml: 3 pypy38 jobs out, 6 new ones (2 versions x 3 OSes) in the matrix include list. setup.py classifiers don't enumerate PyPy minor versions (`Implementation :: PyPy`), so no metadata change needed. Closes #36
2026-04-28chore: bump GitHub Actions to current major versions (#35)Bobby4-11/+11
## Summary Pure version bumps for the four GitHub Actions referenced under `.github/workflows/`. No behavior change — actions are pinned to current majors (or the current SHA, in the case of the third-party publish action). | File | Action | Before | After | |---|---|---|---| | `github-actions.yml`, `coverage.yml`, `python-publish.yml`, `codeql-analysis.yml` | `actions/checkout` | `@v3` | `@v5` | | `github-actions.yml`, `coverage.yml`, `python-publish.yml` | `actions/setup-python` | `@v3` | `@v5` | | `codeql-analysis.yml` | `github/codeql-action/{init,autobuild,analyze}` | `@v2` | `@v3` | | `python-publish.yml` | `pypa/gh-action-pypi-publish` | old SHA | `v1.14.0` SHA + version comment | ## Why now The `@v3` actions ran on the **Node 16 runtime**, which reached end-of-life in 2023 and is on borrowed time on GitHub-hosted runners. `@v5` (and `codeql-action @v3`) all use Node 20, the current supported runtime. We were also missing security/bug fixes shipped in newer majors. ## Conventions used - First-party actions (`actions/*`, `github/*`) → floating major-version tag (`@v5`, `@v3`). Standard for first-party, low supply-chain risk. - Third-party action (`pypa/gh-action-pypi-publish`) → stays SHA-pinned for supply-chain safety. The trailing `# v1.14.0` comment makes the human-readable version visible without sacrificing the immutable pin. Closes #34
2026-04-28chore: bump GitHub Actions to current major versionsnatsuoto4-11/+11
Pure version bumps; workflow behavior is unchanged. - actions/checkout v3 -> v5 - actions/setup-python v3 -> v5 - github/codeql-action/{init,autobuild,analyze} v2 -> v3 - pypa/gh-action-pypi-publish SHA-pinned -> v1.14.0 SHA, with trailing version comment for human readability The @v3 actions ran on the deprecated Node 16 runtime; @v5 (and codeql-action @v3) all use Node 20, the current GitHub-supported runtime. Third-party pypa publish action stays SHA-pinned for supply-chain safety. Closes #34
2026-04-28chore: modernize pre-commit hook configuration (#33)Bobby1-7/+7
## Summary `.pre-commit-config.yaml` was broken on three fronts. This PR fixes all of them. ### What was wrong 1. **`rev: main` / `rev: master`** — modern pre-commit rejects floating refs and requires immutable tags (or a SHA) so hook versions are reproducible across contributors. Every hook in the file had this. 2. **Dead repo URLs.** - `gitlab.com/pycqa/flake8` was archived years ago. `flake8` now lives at [`github.com/PyCQA/flake8`](https://github.com/PyCQA/flake8). - `timothycrosley/isort` was renamed to [`PyCQA/isort`](https://github.com/PyCQA/isort) and the old org redirect can't be relied on for hooks. 3. **`psf/black`** still works, but the upstream-recommended hook source is now [`psf/black-pre-commit-mirror`](https://github.com/psf/black-pre-commit-mirror), which ships without black's full dependency tree → significantly faster hook installs. ### Pinned versions | Hook | Old | New | |---|---|---| | `pre-commit/pre-commit-hooks` | `main` | `v6.0.0` | | `PyCQA/isort` (was `timothycrosley/isort`) | `main` | `8.0.1` | | `psf/black-pre-commit-mirror` (was `psf/black`) | `main` | `26.3.1` | | `PyCQA/flake8` (was `gitlab.com/pycqa/flake8`) | `master` | `7.3.0` | All four are the latest stable releases as of this PR. ## Notes - Hooks run in pre-commit's own isolated venvs, so the linter Pythons don't have to match the project's `python_requires=>=3.8` floor. - The existing `[flake8]` config in `setup.cfg` (`max-line-length = 140`, exclusions) is unchanged and still applies. - pre-commit.ci was discussed but intentionally left out of this PR to keep scope narrow. Easy follow-up if we want it. ## Test plan - [ ] CI `check` env still passes (it runs `flake8` and `isort --check-only` directly via tox, not via pre-commit, so this PR shouldn't affect it). - [ ] `pre-commit run --all-files` works locally on a fresh checkout (hooks install from the new revs).
2026-04-28chore: modernize pre-commit hook configurationnatsuoto1-7/+7
The pre-commit config was broken on three fronts: - `rev: main` / `rev: master` is rejected by modern pre-commit, which requires immutable tags (or a SHA) so hook versions are reproducible. - `gitlab.com/pycqa/flake8` was archived years ago. flake8 now lives at `github.com/PyCQA/flake8`. - `timothycrosley/isort` was renamed to `PyCQA/isort` and the old path no longer resolves reliably. Pin every hook to its current latest release and replace `psf/black` with `psf/black-pre-commit-mirror`, the upstream-recommended mirror that ships without black's full dependency tree (faster hook installs). - pre-commit/pre-commit-hooks → v6.0.0 - PyCQA/isort → 8.0.1 - psf/black-pre-commit-mirror → 26.3.1 - PyCQA/flake8 → 7.3.0
2026-04-28feat!: drop Python 3.7 support (#32)Bobby5-10/+7
## Summary Python 3.7 reached end-of-life on 2023-06-27. Copilot dropped 3.7 from the CI matrix in #30 but left the rest of the project metadata pointing at it. This PR finishes the job so 3.8 is the consistent floor everywhere. ## Changes - [`setup.py`](../blob/drop-python-3.7-support/setup.py): drop the `Programming Language :: Python :: 3.7` classifier and bump `python_requires` to `>=3.8`. - [`pyproject.toml`](../blob/drop-python-3.7-support/pyproject.toml): bump black `target-version` to `py38`. - [`tox.ini`](../blob/drop-python-3.7-support/tox.ini): drop the `py37` and `pypy37` envs from `envlist` and their `basepython` entries. - [`README.rst`](../blob/drop-python-3.7-support/README.rst): update the quick-start to "Python 3.8-3.14". - [`ci/templates/.appveyor.yml`](../blob/drop-python-3.7-support/ci/templates/.appveyor.yml): bump the `check` env from Python 3.6 → 3.8 so the template's floor matches the project's. Template only — not currently rendered into a live AppVeyor config. PyPy 3.8 is end-of-life as of October 2024, but I've intentionally left it in this PR so the diff stays scoped to "drop 3.7." It will be cleaned up in a follow-up PR that refreshes the PyPy CI matrix. **BREAKING CHANGE:** Edify now requires Python 3.8 or newer. The next release will be `0.3.0`. ## Test plan - [ ] CI matrix passes on all of py38, py39, py310, py311, py312, py313, py314, and pypy38. - [ ] `check` and `docs` tox envs pass.
2026-04-28feat!: drop Python 3.7 supportClaude5-10/+7
3.7 reached end-of-life on 2023-06-27. Copilot dropped 3.7 from the CI matrix in #30 but left the rest of the metadata pointing at it. - setup.py: drop the 3.7 classifier and bump `python_requires` to >=3.8 - pyproject.toml: bump black `target-version` to py38 - tox.ini: drop `py37` and `pypy37` envs and basepython entries - README.rst: bump quick-start Python range to 3.8-3.14 - ci/templates/.appveyor.yml: bump the `check` env from Python 3.6 to 3.8 to keep the floor consistent (template only, not currently rendered) BREAKING CHANGE: Edify now requires Python 3.8 or newer.
2026-04-28Update docs for Python 3.14 support and RTD config (#31)Bobby3-1/+10
## Summary - note Python 3.7-3.14 support in the README - add an Unreleased changelog entry for 3.14 support and RTD config updates - add Read the Docs build configuration with explicit OS/Python settings ## Testing - tox -e check,docs,py312 *(fails: sphinx linkcheck cannot resolve external URLs in this environment)*
2026-04-28Update docs for Python 3.14 and fix RTD configcopilot-swe-agent[bot]3-1/+10
Agent-Logs-Url: https://github.com/luciferreeves/edify/sessions/2225fc94-db6d-4e8e-a836-dcf75baa47c8 Co-authored-by: luciferreeves <[email protected]>
2026-04-28fix: drop Python 3.7 and PyPy 3.7 from CI matrix (#30)Bobby7-51/+69
- [x] Fix `pyproject.toml` setuptools pin (>=75.0) - [x] Change macOS runner from macos-13 → macos-latest - [x] Fix remaining macOS failures: remove `python_arch: x64` from all macOS matrix entries (dyld/libintl error on ARM runners) - [x] Add Python 3.12, 3.13, 3.14 to `tox.ini` envlist and basepython - [x] Add py312/313/314 matrix entries (ubuntu, windows, macos) in workflow - [x] Add classifiers for 3.12, 3.13, 3.14 in `setup.py` - [x] Update Jinja template to fix macOS `python_arch` and support new versions <!-- START COPILOT ORIGINAL PROMPT --> <details> <summary>Original prompt</summary> > Repo: luciferreeves/edify > > Goal: Fix failing GitHub Actions build job where `actions/setup-python` cannot find Python 3.7 x64 (error: "Version 3.7 with arch x64 not found"). > > Context: > - Failing workflow: `.github/workflows/github-actions.yml` at ref `e793aec73c03266d6952fb5bc901229e69814809`. > - The matrix includes CPython 3.7 jobs (`py37 (ubuntu/windows/macos)`) and PyPy 3.7 jobs (`pypy37 (ubuntu/windows/macos)`), which may fail similarly. > > Tasks: > 1) Update `.github/workflows/github-actions.yml` to ensure CI passes on GitHub-hosted runners. > - Remove or disable Python 3.7 jobs across all OSes. > - Also remove/disable PyPy 3.7 jobs if present to avoid future similar failures. > - Keep the rest of the matrix intact (3.8, 3.9, 3.10, 3.11, check, docs, pypy38). > 2) If there is a templated workflow at `ci/templates/.github/workflows/github-actions.yml`, update it consistently so regeneration won’t reintroduce 3.7 entries. > 3) Ensure the workflow still runs tox for remaining environments; adjust any tox env references if needed. > 4) Create a PR with a clear title and description referencing the failure. > > Notes: > - Do not assume default branch name; let tooling pick. > - Ensure changes apply to "all builds" (i.e., all OS matrix entries) by removing 3.7 variants everywhere. > > > The following is the prior conversation context from the user's chat exploration (may be truncated): > > User: Please find a solution for this failing job. Use the logs, job definition, and any referenced files where the failure occurred. Keep your response focused on the solution and include code suggestions when appropriate. > > Assistant: The job is failing before tests even start because the workflow tries to install **Python 3.7 (x64)** via `actions/setup-python`, and GitHub Actions no longer provides Python **3.7** builds in the runner toolcache: > > - Log error (job ref `e793aec73c03266d6952fb5bc901229e69814809`): > `##[error]Version 3.7 with arch x64 not found` > > ### Fix (recommended): Stop testing on Python 3.7 in GitHub Actions > Update the matrix in `.github/workflows/github-actions.yml` (ref `e793aec73c03266d6952fb5bc901229e69814809`) to remove the `py37` entries (and any `pypy-3.7` entries if they also start failing), since the runner can’t provision them anymore. > > **Edit:** `https://github.com/luciferreeves/edify/blob/e793aec73c03266d6952fb5bc901229e69814809/.github/workflows/github-actions.yml` > > Remove these blocks: > > ```yaml > - name: 'py37 (ubuntu)' > python: '3.7' > toxpython: 'python3.7' > python_arch: 'x64' > tox_env: 'py37' > os: 'ubuntu-latest' > > - name: 'py37 (windows)' > python: '3.7' > toxpython: 'python3.7' > python_arch: 'x64' > tox_env: 'py37' > os: 'windows-latest' > > - name: 'py37 (macos)' > python: '3.7' > toxpython: 'python3.7' > python_arch: 'x64' > tox_env: 'py37' > os: 'macos-latest' > ``` > > Optionally also remove the PyPy 3.7 matrix entries if you see similar setup failures later: > > ```yaml > - name: 'pypy37 (ubuntu)' > python: 'pypy-3.7' > # ... > - name: 'pypy37 (windows)' > python: 'pypy-3.7' > # ... > - name: 'pypy37 (macos)' > python: 'pypy-3.7' > # ... > ``` > > ### Alternative (if you must keep 3.7 coverage): move 3.7 to a different CI strategy > If Python 3.7 support is a hard requirement, you generally can’t rely on the default hosted runners’ `setup-python` anymore. Common approaches are: > - run 3.7 tests in a **Docker container** (Linux) that has Python 3.7 available, or > - use a **self-hosted runner** where you control installed Python versions. > > But the simplest/most robust fix for the current failure is: **drop Python 3.7 from the GitHub Actions matrix**. > > User: Open Fix PR and commit for all builds > > Assistant: I’ve kicked off the fix PR creation process and am now waiting for your confirmation in the approval dialog to proceed with committing the changes and opening the PR. > > </details> <!-- START COPILOT CODING AGENT SUFFIX --> *This pull request was created from Copilot chat.* >
2026-04-28feat: fix macOS python_arch and add Python 3.12/3.13/3.14 supportcopilot-swe-agent[bot]4-9/+61
Agent-Logs-Url: https://github.com/luciferreeves/edify/sessions/16418662-2de9-4625-aad9-e9fc6cecb1c5 Co-authored-by: luciferreeves <[email protected]>
2026-04-28fix: lower setuptools in pyproject.toml and use macos-latest for all macOS ↵copilot-swe-agent[bot]3-5/+5
CI jobs Agent-Logs-Url: https://github.com/luciferreeves/edify/sessions/8d8a009c-758c-4ab2-b58c-3fc7b67455a9 Co-authored-by: luciferreeves <[email protected]>
2026-04-28fix: lower setuptools requirement to >=75.0 for Python 3.8 compatibilitycopilot-swe-agent[bot]1-1/+1
Agent-Logs-Url: https://github.com/luciferreeves/edify/sessions/d523264f-a40b-4cb6-883b-568d6c65cace Co-authored-by: luciferreeves <[email protected]>
2026-04-28fix: resolve 18 failing CI checks (pip version, macOS ARM, flake8 E721)copilot-swe-agent[bot]4-8/+8
Agent-Logs-Url: https://github.com/luciferreeves/edify/sessions/e7f51b79-93cc-48ac-bcc0-db3ca7b27a85 Co-authored-by: luciferreeves <[email protected]>
2026-04-28fix: remove Python 3.7 and PyPy 3.7 from CI matrix to fix failing buildscopilot-swe-agent[bot]2-36/+2
Agent-Logs-Url: https://github.com/luciferreeves/edify/sessions/84345a0f-6985-4c88-99ec-f3b073ec18e1 Co-authored-by: luciferreeves <[email protected]>
2026-04-28Initial plancopilot-swe-agent[bot]0-0/+0
2026-04-28Update pip requirement from >=19.1.1 to >=26.0.1 (#27)Bobby1-1/+1
[//]: # (dependabot-start) ⚠️ **Dependabot is rebasing this PR** ⚠️ Rebasing might not happen immediately, so don't worry if this takes some time. Note: if you make any changes to this PR yourself, they will take precedence over the rebase. --- [//]: # (dependabot-end) Updates the requirements on [pip](https://github.com/pypa/pip) to permit the latest version. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pypa/pip/blob/main/NEWS.rst">pip's changelog</a>.</em></p> <blockquote> <h1>26.0.1 (2026-02-04)</h1> <h2>Bug Fixes</h2> <ul> <li>Fix <code>--pre</code> not being respected from the command line when a requirement file includes an option e.g. <code>-extra-index-url</code>. (<code>[#13788](https://github.com/pypa/pip/issues/13788) &lt;https://github.com/pypa/pip/issues/13788&gt;</code>_)</li> </ul> <h1>26.0 (2026-01-30)</h1> <h2>Deprecations and Removals</h2> <ul> <li>Remove support for non-bare project names in egg fragments. Affected users should use the <code>Direct URL requirement syntax &lt;https://packaging.python.org/en/latest/specifications/version-specifiers/#direct-references&gt;</code><em>. (<code>[#13157](https://github.com/pypa/pip/issues/13157) &lt;https://github.com/pypa/pip/issues/13157&gt;</code></em>)</li> </ul> <h2>Features</h2> <ul> <li> <p>Display pip's command-line help in colour, if possible. (<code>[#12134](https://github.com/pypa/pip/issues/12134) &lt;https://github.com/pypa/pip/issues/12134&gt;</code>_)</p> </li> <li> <p>Support installing dependencies declared with inline script metadata (:pep:<code>723</code>) with <code>--requirements-from-script</code>. (<code>[#12891](https://github.com/pypa/pip/issues/12891) &lt;https://github.com/pypa/pip/issues/12891&gt;</code>_)</p> </li> <li> <p>Add <code>--all-releases</code> and <code>--only-final</code> options to control pre-release and final release selection during package installation. (<code>[#13221](https://github.com/pypa/pip/issues/13221) &lt;https://github.com/pypa/pip/issues/13221&gt;</code>_)</p> </li> <li> <p>Add <code>--uploaded-prior-to</code> option to only consider packages uploaded prior to a given datetime when the <code>upload-time</code> field is available from a remote index. (<code>[#13625](https://github.com/pypa/pip/issues/13625) &lt;https://github.com/pypa/pip/issues/13625&gt;</code>_)</p> </li> <li> <p>Add <code>--use-feature inprocess-build-deps</code> to request that build dependencies are installed within the same pip install process. This new mechanism is faster, supports <code>--no-clean</code> and <code>--no-cache-dir</code> reliably, and supports prompting for authentication.</p> <p>Enabling this feature will also enable <code>--use-feature build-constraints</code>. This feature will become the default in a future pip version. (<code>[#9081](https://github.com/pypa/pip/issues/9081) &lt;https://github.com/pypa/pip/issues/9081&gt;</code>_)</p> </li> <li> <p><code>pip cache purge</code> and <code>pip cache remove</code> now clean up empty directories and legacy files left by older pip versions. (<code>[#9058](https://github.com/pypa/pip/issues/9058) &lt;https://github.com/pypa/pip/issues/9058&gt;</code>_)</p> </li> </ul> <h2>Bug Fixes</h2> <ul> <li>Fix selecting pre-release versions when only pre-releases match. For example, <code>package&gt;1.0</code> with versions <code>1.0, 2.0rc1</code> now installs <code>2.0rc1</code> instead of failing. (<code>[#13746](https://github.com/pypa/pip/issues/13746) &lt;https://github.com/pypa/pip/issues/13746&gt;</code>_)</li> <li>Revisions in version control URLs now must be percent-encoded. For example, use <code>git+https://example.com/repo.git@issue%231</code> to specify the branch <code>issue#1</code>. If you previously used a branch name containing a <code>%</code> character in a version control URL, you now need to replace it with <code>%25</code> to ensure correct percent-encoding. (<code>[#13407](https://github.com/pypa/pip/issues/13407) &lt;https://github.com/pypa/pip/issues/13407&gt;</code>_)</li> <li>Preserve original casing when a path is displayed. (<code>[#6823](https://github.com/pypa/pip/issues/6823) &lt;https://github.com/pypa/pip/issues/6823&gt;</code>_)</li> <li>Fix bash completion when the <code>$IFS</code> variable has been modified from its default. (<code>[#13555](https://github.com/pypa/pip/issues/13555) &lt;https://github.com/pypa/pip/issues/13555&gt;</code>_)</li> <li>Precompute Python requirements on each candidate, reducing time of long resolutions. (<code>[#13656](https://github.com/pypa/pip/issues/13656) &lt;https://github.com/pypa/pip/issues/13656&gt;</code>_)</li> <li>Skip redundant work converting version objects to strings when using the</li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pypa/pip/commit/5fe4ea4f24cd9756316a4b5ef05daa15d84f7d0c"><code>5fe4ea4</code></a> Bump for release</li> <li><a href="https://github.com/pypa/pip/commit/bea3cbe3b4d637be6d5007e9a5a2327e500b00d8"><code>bea3cbe</code></a> windows fix tests</li> <li><a href="https://github.com/pypa/pip/commit/ed22252bd19a71ce351b84405fa23230ca45ceea"><code>ed22252</code></a> News Entry</li> <li><a href="https://github.com/pypa/pip/commit/af1327407f048bd2310b8b633f8e8a4e41c38d2c"><code>af13274</code></a> Match release control behavior to the same as format control behavior</li> <li><a href="https://github.com/pypa/pip/commit/2f4d4a836ed00076001376fbb0ce6dc4f22cdae2"><code>2f4d4a8</code></a> Merge pull request <a href="https://redirect.github.com/pypa/pip/issues/13779">#13779</a> from notatallshaw/fix-26.0-news</li> <li><a href="https://github.com/pypa/pip/commit/04307a42261749cfa1c86a5537ad88f44ed2a41a"><code>04307a4</code></a> fix 26.0 news</li> <li><a href="https://github.com/pypa/pip/commit/6ec7b0a488f614a7632442fe7c651957fdb5fc85"><code>6ec7b0a</code></a> Merge pull request <a href="https://redirect.github.com/pypa/pip/issues/13775">#13775</a> from notatallshaw/release/26.0</li> <li><a href="https://github.com/pypa/pip/commit/4104356cd83d1614af45d203d64cb84705dad9d2"><code>4104356</code></a> Bump for release</li> <li><a href="https://github.com/pypa/pip/commit/58be8836b68814295d33bc5c56c38d3a0659ae81"><code>58be883</code></a> Update AUTHORS.txt</li> <li><a href="https://github.com/pypa/pip/commit/66f2dece5ba9cc0ee9fe7035c46ba4b0756559b5"><code>66f2dec</code></a> Merge pull request <a href="https://redirect.github.com/pypa/pip/issues/13778">#13778</a> from ichard26/docs/groups</li> <li>Additional commits viewable in <a href="https://github.com/pypa/pip/compare/19.1.1...26.0.1">compare view</a></li> </ul> </details> <br />
2026-04-28Merge branch 'main' into dependabot/pip/pip-gte-26.0.1Bobby3-3/+3
2026-04-28Update setuptools requirement from >=30.3.0 to >=82.0.1 (#25)Bobby2-2/+2
Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pypa/setuptools/blob/main/NEWS.rst">setuptools's changelog</a>.</em></p> <blockquote> <h1>v82.0.1</h1> <h2>Bugfixes</h2> <ul> <li>Fix the loading of <code>launcher manifest.xml</code> file. (<a href="https://redirect.github.com/pypa/setuptools/issues/5047">#5047</a>)</li> <li>Replaced deprecated <code>json.__version__</code> with fixture in tests. (<a href="https://redirect.github.com/pypa/setuptools/issues/5186">#5186</a>)</li> </ul> <h2>Improved Documentation</h2> <ul> <li>Add advice about how to improve predictability when installing sdists. (<a href="https://redirect.github.com/pypa/setuptools/issues/5168">#5168</a>)</li> </ul> <h2>Misc</h2> <ul> <li><a href="https://redirect.github.com/pypa/setuptools/issues/4941">#4941</a>, <a href="https://redirect.github.com/pypa/setuptools/issues/5157">#5157</a>, <a href="https://redirect.github.com/pypa/setuptools/issues/5169">#5169</a>, <a href="https://redirect.github.com/pypa/setuptools/issues/5175">#5175</a></li> </ul> <h1>v82.0.0</h1> <h2>Deprecations and Removals</h2> <ul> <li><code>pkg_resources</code> has been removed from Setuptools. Most common uses of <code>pkg_resources</code> have been superseded by the <code>importlib.resources &lt;https://docs.python.org/3/library/importlib.resources.html&gt;</code>_ and <code>importlib.metadata &lt;https://docs.python.org/3/library/importlib.metadata.html&gt;</code>_ projects. Projects and environments relying on <code>pkg_resources</code> for namespace packages or other behavior should depend on older versions of <code>setuptools</code>. (<a href="https://redirect.github.com/pypa/setuptools/issues/3085">#3085</a>)</li> </ul> <h1>v81.0.0</h1> <h2>Deprecations and Removals</h2> <ul> <li>Removed support for the --dry-run parameter to setup.py. This one feature by its nature threads through lots of core and ancillary functionality, adding complexity and friction. Removal of this parameter will help decouple the compiler functionality from distutils and thus the eventual full integration of distutils. These changes do affect some class and function signatures, so any derivative functionality may require some compatibility shims to support their expected interface. Please report any issues to the Setuptools project for investigation. (<a href="https://redirect.github.com/pypa/setuptools/issues/4872">#4872</a>)</li> </ul> <h1>v80.10.2</h1> <h2>Bugfixes</h2> <ul> <li>Update vendored dependencies. (<a href="https://redirect.github.com/pypa/setuptools/issues/5159">#5159</a>)</li> </ul> <p>Misc</p> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pypa/setuptools/commit/5a13876673a41e3cd21d4d6e587f53d0fb4fd8e5"><code>5a13876</code></a> Bump version: 82.0.0 → 82.0.1</li> <li><a href="https://github.com/pypa/setuptools/commit/51ab8f183f1c4112675d8d6ec6b004406d518ee8"><code>51ab8f1</code></a> Avoid using (deprecated) 'json.<strong>version</strong>' in tests (<a href="https://redirect.github.com/pypa/setuptools/issues/5194">#5194</a>)</li> <li><a href="https://github.com/pypa/setuptools/commit/f9c37b20bb0ed11203f676f9683452a4c3ace6f6"><code>f9c37b2</code></a> Docs/CI: Fix intersphinx references (<a href="https://redirect.github.com/pypa/setuptools/issues/5195">#5195</a>)</li> <li><a href="https://github.com/pypa/setuptools/commit/8173db2a4fc0f6cb28926b3dba59116b79f435c8"><code>8173db2</code></a> Docs: Fix intersphinx references</li> <li><a href="https://github.com/pypa/setuptools/commit/09bafbc74923f2a3591b5b098be75d6af6ca5141"><code>09bafbc</code></a> Fix past tense on newsfragment</li> <li><a href="https://github.com/pypa/setuptools/commit/461ea56c8e629819a23920f44d9298d4f041abde"><code>461ea56</code></a> Add news fragment</li> <li><a href="https://github.com/pypa/setuptools/commit/c4ffe535b58235ff9f9ebe90d24a2cffb57e70ae"><code>c4ffe53</code></a> Avoid using (deprecated) 'json.<strong>version</strong>' in tests</li> <li><a href="https://github.com/pypa/setuptools/commit/749258b1a96c7accc05ea7d842fb19fc378866fe"><code>749258b</code></a> Cleanup <code>pkg_resources</code> dependencies and configuration (<a href="https://redirect.github.com/pypa/setuptools/issues/5175">#5175</a>)</li> <li><a href="https://github.com/pypa/setuptools/commit/2019c16701667db1010c62ec11c6ef78c2e58206"><code>2019c16</code></a> Parse <code>ext-module.define-macros</code> from <code>pyproject.toml</code> as list of tuples (<a href="https://redirect.github.com/pypa/setuptools/issues/5169">#5169</a>)</li> <li><a href="https://github.com/pypa/setuptools/commit/b809c86a37d97fcce290d5f51d4c293ab40bc685"><code>b809c86</code></a> Sync setuptools schema with validate-pyproject (<a href="https://redirect.github.com/pypa/setuptools/issues/5157">#5157</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pypa/setuptools/compare/v30.3.0...v82.0.1">compare view</a></li> </ul> </details> <br />
2026-04-28Merge branch 'main' into dependabot/pip/setuptools-gte-82.0.1Bobby1-1/+1
2026-04-28Update pip requirement from >=19.1.1 to >=26.0.1dependabot[bot]1-1/+1
Updates the requirements on [pip](https://github.com/pypa/pip) to permit the latest version. - [Changelog](https://github.com/pypa/pip/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/pip/compare/19.1.1...26.0.1) --- updated-dependencies: - dependency-name: pip dependency-version: 26.0.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]>
2026-04-28Update setuptools requirement from >=30.3.0 to >=82.0.1dependabot[bot]2-2/+2
Updates the requirements on [setuptools](https://github.com/pypa/setuptools) to permit the latest version. - [Release notes](https://github.com/pypa/setuptools/releases) - [Changelog](https://github.com/pypa/setuptools/blob/main/NEWS.rst) - [Commits](https://github.com/pypa/setuptools/compare/v30.3.0...v82.0.1) --- updated-dependencies: - dependency-name: setuptools dependency-version: 82.0.1 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]>
2026-04-28Update sphinx requirement from >=1.3 to >=7.4.7 (#26)Bobby1-1/+1
Updates the requirements on [sphinx](https://github.com/sphinx-doc/sphinx) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/sphinx-doc/sphinx/releases">sphinx's releases</a>.</em></p> <blockquote> <h2>Sphinx 7.4.7</h2> <p>Changelog: <a href="https://www.sphinx-doc.org/en/master/changes.html">https://www.sphinx-doc.org/en/master/changes.html</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/sphinx-doc/sphinx/blob/v7.4.7/CHANGES.rst">sphinx's changelog</a>.</em></p> <blockquote> <h1>Release 7.4.7 (released Jul 20, 2024)</h1> <h2>Bugs fixed</h2> <ul> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12096">#12096</a>: Warn when files are overwritten in the build directory. Patch by Adam Turner and Bénédikt Tran.</li> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12620">#12620</a>: Ensure that old-style object description options are respected. Patch by Adam Turner.</li> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12601">#12601</a>, <a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12625">#12625</a>: Support callable objects in :py:class:<code>~typing.Annotated</code> type metadata in the Python domain. Patch by Adam Turner.</li> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12601">#12601</a>, <a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12622">#12622</a>: Resolve :py:class:<code>~typing.Annotated</code> warnings with <code>sphinx.ext.autodoc</code>, especially when using :mod:<code>dataclasses</code> as type metadata. Patch by Adam Turner.</li> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12589">#12589</a>, <a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12626">#12626</a>: autosummary: Fix warnings with :rst:role:<code>!autolink</code>. Patch by Adam Turner.</li> </ul> <h1>Release 7.4.6 (released Jul 18, 2024)</h1> <h2>Bugs fixed</h2> <ul> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12589">#12589</a>, <a href="https://redirect.github.com/sphinx-doc/sphinx/issues/9743">#9743</a>, <a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12609">#12609</a>: autosummary: Do not add the package prefix when generating autosummary directives for modules within a package. Patch by Adam Turner.</li> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12613">#12613</a>: Reduce log severity for ambiguity detection during inventory loading. Patch by James Addison.</li> </ul> <h1>Release 7.4.5 (released Jul 16, 2024)</h1> <h2>Bugs fixed</h2> <ul> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12593">#12593</a>, <a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12600">#12600</a>: Revert coercing the type of selected :confval:<code>html_sidebars</code> values to a list. Log an error message when string values are detected. Patch by Adam Turner.</li> <li><a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12594">#12594</a>: LaTeX: since 7.4.0, :rst:dir:<code>seealso</code> and other &quot;light&quot; admonitions now break PDF builds if they contain a :dudir:<code>figure</code> directive; and also if they are contained in a table cell (rendered by <code>tabulary</code>). Patch by Jean-François B.</li> </ul> <h1>Release 7.4.4 (released Jul 15, 2024)</h1> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/sphinx-doc/sphinx/commit/0d912c85fd3ec385432fe707f6a0678425d1e841"><code>0d912c8</code></a> Bump to 7.4.7 final</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/bbc97e035720d96f617921dbd25022e121495b98"><code>bbc97e0</code></a> autosummary: Filter invalid import prefixes in <code>autolink</code> (<a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12626">#12626</a>)</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/6c486a575c858b8b82d2580b76c410121663505f"><code>6c486a5</code></a> Fix detecting file changes for the overwritten file warning (<a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12627">#12627</a>)</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/2bd973e7191c5bc382c1a92b37ab1f20268f42d6"><code>2bd973e</code></a> autodoc: Fix warnings with dataclasses in <code>Annotated</code> metadata (<a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12622">#12622</a>)</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/dd77f851494d24d19aecf0328c6913d121b8b51c"><code>dd77f85</code></a> Support callables in <code>Annotated</code> types (<a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12625">#12625</a>)</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/1ed4ca7e038364b3b10e3d36abb84ee034d4d94c"><code>1ed4ca7</code></a> Mark <code>test_build_manpage</code> as XFAIL following changes in Docutils master</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/cd8ce07d31cfab61b6996cec1334681600dd3259"><code>cd8ce07</code></a> Update message catalogues following reverted commits</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/c6cd25f50dcc2a0bc369da80e75f105a4821d43b"><code>c6cd25f</code></a> Partially revert &quot;Update message catalogues (<a href="https://redirect.github.com/sphinx-doc/sphinx/issues/11626">#11626</a>)&quot;</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/fa2ba7d5aeaff36aeb1a6c2f49846432fc932c7a"><code>fa2ba7d</code></a> Partially Revert &quot;[bot]: Update message catalogues (<a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12563">#12563</a>)&quot;</li> <li><a href="https://github.com/sphinx-doc/sphinx/commit/e439c6f33f8d8e7bc06b4f6f25dadfda74869ee0"><code>e439c6f</code></a> Ensure that old-style object description options are respected (<a href="https://redirect.github.com/sphinx-doc/sphinx/issues/12620">#12620</a>)</li> <li>Additional commits viewable in <a href="https://github.com/sphinx-doc/sphinx/compare/v1.3...v7.4.7">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
2026-04-28Merge branch 'main' into dependabot/pip/sphinx-gte-7.4.7Bobby1-2/+2
2026-04-28Update virtualenv requirement from >=16.6.0 to >=21.3.0 (#28)Bobby1-1/+1
Updates the requirements on [virtualenv](https://github.com/pypa/virtualenv) to permit the latest version. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/pypa/virtualenv/releases">virtualenv's releases</a>.</em></p> <blockquote> <h2>21.3.0</h2> <!-- raw HTML omitted --> <h2>What's Changed</h2> <ul> <li>🐛 fix(type): stop ty flagging default_source on Action by <a href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in <a href="https://redirect.github.com/pypa/virtualenv/pull/3124">pypa/virtualenv#3124</a></li> <li>feat: Reintroduce xonsh shell support by <a href="https://github.com/anki-code"><code>@​anki-code</code></a> in <a href="https://redirect.github.com/pypa/virtualenv/pull/3125">pypa/virtualenv#3125</a></li> <li>🐛 fix(test): prevent PowerShell activation test from crashing xdist workers on Windows by <a href="https://github.com/gaborbernat"><code>@​gaborbernat</code></a> in <a href="https://redirect.github.com/pypa/virtualenv/pull/3128">pypa/virtualenv#3128</a></li> <li>docs: Add usage instruction for Xonsh activation by <a href="https://github.com/anki-code"><code>@​anki-code</code></a> in <a href="https://redirect.github.com/pypa/virtualenv/pull/3130">pypa/virtualenv#3130</a></li> <li>Upgrade embedded pip/setuptools/wheel by <a href="https://github.com/github-actions"><code>@​github-actions</code></a>[bot] in <a href="https://redirect.github.com/pypa/virtualenv/pull/3132">pypa/virtualenv#3132</a></li> </ul> <h2>New Contributors</h2> <ul> <li><a href="https://github.com/anki-code"><code>@​anki-code</code></a> made their first contribution in <a href="https://redirect.github.com/pypa/virtualenv/pull/3125">pypa/virtualenv#3125</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/pypa/virtualenv/compare/21.2.4...21.3.0">https://github.com/pypa/virtualenv/compare/21.2.4...21.3.0</a></p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst">virtualenv's changelog</a>.</em></p> <blockquote> <h1>Features - 21.3.0</h1> <ul> <li>Re-introduce <code>xonsh</code> shell activator (<code>activate.xsh</code>) previously removed in 20.7.0, and make the plugin loader prefer virtualenv's built-in entry points so a third-party package cannot override them by registering a duplicate name. (:issue:<code>3003</code>)</li> </ul> <h1>Bugfixes - 21.3.0</h1> <ul> <li> <p>Upgrade embedded wheels:</p> <ul> <li>pip to <code>26.1</code> (:issue:<code>3132</code>)</li> </ul> </li> </ul> <hr /> <p>v21.2.4 (2026-04-14)</p> <hr /> <h1>Bugfixes - 21.2.4</h1> <ul> <li>Security hardening: validate each entry of a seed wheel archive before extracting it so a tampered wheel cannot escape the app-data image directory via an absolute path or <code>..</code> traversal. (:issue:<code>3118</code>)</li> <li>Security hardening: verify the SHA-256 of every bundled seed wheel when it is loaded so a corrupted or tampered file on disk fails loud instead of being handed to pip. The hash table is generated alongside <code>BUNDLE_SUPPORT</code> by <code>tasks/upgrade_wheels.py</code>. (:issue:<code>3119</code>)</li> <li>Security hardening: validate the distribution name and version specifier passed to <code>pip download</code> when acquiring a seed wheel so extras, pip flags, or shell metacharacters cannot be smuggled into the subprocess command line. (:issue:<code>3120</code>)</li> <li>Security hardening: replace the string-prefix containment check in <code>virtualenv.util.zipapp</code> with <code>Path.relative_to</code> so the zipapp extraction helpers refuse any path that does not resolve under the archive root. (:issue:<code>3121</code>)</li> <li>Security hardening: do not silently fall back to an unverified HTTPS context when the periodic update request to PyPI fails TLS verification. The returned metadata drives which wheel version virtualenv considers &quot;up to date&quot;, so accepting an unverified response lets a network-level attacker suppress security updates. Set <code>VIRTUALENV_PERIODIC_UPDATE_INSECURE=1</code> to restore the previous behavior on hosts with broken trust stores. (:issue:<code>3122</code>)</li> </ul> <hr /> <p>v21.2.3 (2026-04-14)</p> <hr /> <p>No significant changes.</p> <hr /> <p>v21.2.2 (2026-04-13)</p> <hr /> <h1>Bugfixes - 21.2.2</h1> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/pypa/virtualenv/commit/e917cc244e659160607c890de2cbad3a7bc2a28c"><code>e917cc2</code></a> release 21.3.0</li> <li><a href="https://github.com/pypa/virtualenv/commit/21152f1b88c49cdefda2743cddc2cf36d50e2e57"><code>21152f1</code></a> Upgrade embedded pip/setuptools/wheel (<a href="https://redirect.github.com/pypa/virtualenv/issues/3132">#3132</a>)</li> <li><a href="https://github.com/pypa/virtualenv/commit/096bdcd72d7a6c92dcb9dee97fd429fe3e0231a5"><code>096bdcd</code></a> chore(deps): bump astral-sh/setup-uv from 8.0.0 to 8.1.0 (<a href="https://redirect.github.com/pypa/virtualenv/issues/3131">#3131</a>)</li> <li><a href="https://github.com/pypa/virtualenv/commit/01610dc7a8ef08158c815f43dc22ceadb98b85c0"><code>01610dc</code></a> docs: Add usage instruction for Xonsh activation (<a href="https://redirect.github.com/pypa/virtualenv/issues/3130">#3130</a>)</li> <li><a href="https://github.com/pypa/virtualenv/commit/fb6ec7c461db2b0ccfabe7ec6255368e86cfaed3"><code>fb6ec7c</code></a> 🐛 fix(test): prevent PowerShell activation test from crashing xdist workers o...</li> <li><a href="https://github.com/pypa/virtualenv/commit/60956799efa82adac0c3d5e70d9ca1fdd63125f8"><code>6095679</code></a> [pre-commit.ci] pre-commit autoupdate (<a href="https://redirect.github.com/pypa/virtualenv/issues/3129">#3129</a>)</li> <li><a href="https://github.com/pypa/virtualenv/commit/8d3179cf42332501240e9ee3ddca7e376a790752"><code>8d3179c</code></a> chore(deps): bump peter-evans/create-pull-request from 8.1.0 to 8.1.1 (<a href="https://redirect.github.com/pypa/virtualenv/issues/3127">#3127</a>)</li> <li><a href="https://github.com/pypa/virtualenv/commit/a159c50a400d4e18aca3bfde5224f09e71d2eb17"><code>a159c50</code></a> chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 (<a href="https://redirect.github.com/pypa/virtualenv/issues/3126">#3126</a>)</li> <li><a href="https://github.com/pypa/virtualenv/commit/9ba729bbbbec89c121c3ce4ef205fdd403e33e26"><code>9ba729b</code></a> feat: Reintroduce xonsh shell support (<a href="https://redirect.github.com/pypa/virtualenv/issues/3125">#3125</a>)</li> <li><a href="https://github.com/pypa/virtualenv/commit/d42ea5cd19a116dbdbb9852becace188d5b3a225"><code>d42ea5c</code></a> 🐛 fix(type): stop ty flagging default_source on Action (<a href="https://redirect.github.com/pypa/virtualenv/issues/3124">#3124</a>)</li> <li>Additional commits viewable in <a href="https://github.com/pypa/virtualenv/compare/16.6.0...21.3.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
2026-04-28Update six requirement from >=1.14.0 to >=1.17.0 (#29)Bobby1-1/+1
Updates the requirements on [six](https://github.com/benjaminp/six) to permit the latest version. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/benjaminp/six/blob/main/CHANGES">six's changelog</a>.</em></p> <blockquote> <h2>1.17.0</h2> <ul> <li> <p>Pull request <a href="https://redirect.github.com/benjaminp/six/issues/388">#388</a>: Remove <code>URLopener</code> and <code>FancyURLopener</code> classes from <code>urllib.request</code> when running on Python 3.14 or greater.</p> </li> <li> <p>Pull request <a href="https://redirect.github.com/benjaminp/six/issues/365">#365</a>, issue <a href="https://redirect.github.com/benjaminp/six/issues/283">#283</a>: <code>six.moves.UserDict</code> now points to <code>UserDict.IterableUserDict</code> instead of <code>UserDict.UserDict</code> on Python 2.</p> </li> </ul> <h2>1.16.0</h2> <ul> <li>Pull request <a href="https://redirect.github.com/benjaminp/six/issues/343">#343</a>, issue <a href="https://redirect.github.com/benjaminp/six/issues/341">#341</a>, pull request <a href="https://redirect.github.com/benjaminp/six/issues/349">#349</a>: Port _SixMetaPathImporter to Python 3.10.</li> </ul> <h2>1.15.0</h2> <ul> <li>Pull request <a href="https://redirect.github.com/benjaminp/six/issues/331">#331</a>: Optimize <code>six.ensure_str</code> and <code>six.ensure_binary</code>.</li> </ul> <h2>1.14.0</h2> <ul> <li> <p>Issue <a href="https://redirect.github.com/benjaminp/six/issues/288">#288</a>, pull request <a href="https://redirect.github.com/benjaminp/six/issues/289">#289</a>: Add <code>six.assertNotRegex</code>.</p> </li> <li> <p>Issue <a href="https://redirect.github.com/benjaminp/six/issues/317">#317</a>: <code>six.moves._dummy_thread</code> now points to the <code>_thread</code> module on Python 3.9+. Python 3.7 and later requires threading and deprecated the <code>_dummy_thread</code> module.</p> </li> <li> <p>Issue <a href="https://redirect.github.com/benjaminp/six/issues/308">#308</a>, pull request <a href="https://redirect.github.com/benjaminp/six/issues/314">#314</a>: Remove support for Python 2.6 and Python 3.2.</p> </li> <li> <p>Issue <a href="https://redirect.github.com/benjaminp/six/issues/250">#250</a>, issue <a href="https://redirect.github.com/benjaminp/six/issues/165">#165</a>, pull request <a href="https://redirect.github.com/benjaminp/six/issues/251">#251</a>: <code>six.wraps</code> now ignores missing attributes. This follows the Python 3.2+ standard library behavior.</p> </li> </ul> <h2>1.13.0</h2> <ul> <li> <p>Issue <a href="https://redirect.github.com/benjaminp/six/issues/298">#298</a>, pull request <a href="https://redirect.github.com/benjaminp/six/issues/299">#299</a>: Add <code>six.moves.dbm_ndbm</code>.</p> </li> <li> <p>Issue <a href="https://redirect.github.com/benjaminp/six/issues/155">#155</a>: Add <code>six.moves.collections_abc</code>, which aliases the <code>collections</code> module on Python 2-3.2 and the <code>collections.abc</code> module on Python 3.3 and greater.</p> </li> <li> <p>Pull request <a href="https://redirect.github.com/benjaminp/six/issues/304">#304</a>: Re-add distutils fallback in <code>setup.py</code>.</p> </li> <li> <p>Pull request <a href="https://redirect.github.com/benjaminp/six/issues/305">#305</a>: On Python 3.7, <code>with_metaclass</code> supports classes using PEP 560 features.</p> </li> </ul> <h2>1.12.0</h2> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/benjaminp/six/commit/ebd9b3af90247b8858d415a05e96e9ee61e48d07"><code>ebd9b3a</code></a> six 1.17.0</li> <li><a href="https://github.com/benjaminp/six/commit/40d248e516ae9bb32221a417de49a3d2fd9e39c1"><code>40d248e</code></a> Expunge travis.</li> <li><a href="https://github.com/benjaminp/six/commit/dd7940e4b8760c620e61dd0e99ec0e60ee759fc8"><code>dd7940e</code></a> Add PyPI publication workflow. (<a href="https://redirect.github.com/benjaminp/six/issues/390">#390</a>)</li> <li><a href="https://github.com/benjaminp/six/commit/8cb688f32f24b6ebe94938b15e92ec5c75dd8f12"><code>8cb688f</code></a> Update copyright years.</li> <li><a href="https://github.com/benjaminp/six/commit/86f89c5da1488463a00bd090c8f9e29aeabf6a10"><code>86f89c5</code></a> Add a GitHub actions CI workflow. (<a href="https://redirect.github.com/benjaminp/six/issues/389">#389</a>)</li> <li><a href="https://github.com/benjaminp/six/commit/06430b9fc66e3912bea2c0a2d13b22d7054a9ac7"><code>06430b9</code></a> Make test_getoutput work on Windows.</li> <li><a href="https://github.com/benjaminp/six/commit/ceddaf2d0a45cf3a19ce0ac63a24ca4ffc76ba7c"><code>ceddaf2</code></a> Add a changelog for <a href="https://redirect.github.com/benjaminp/six/issues/314">#314</a>.</li> <li><a href="https://github.com/benjaminp/six/commit/9a05aab157c79647aa11c49f31a6bff5b18404a5"><code>9a05aab</code></a> Python 3.14 removed the URLopener and FancyURLopener classes from urllib.req...</li> <li><a href="https://github.com/benjaminp/six/commit/c1b416f24de52ebd8eaed3e379ab85ec9c3e935b"><code>c1b416f</code></a> Fix deprecation warning from setuptools (<a href="https://redirect.github.com/benjaminp/six/issues/382">#382</a>)</li> <li><a href="https://github.com/benjaminp/six/commit/02c3bcab0b94eb7a86f6606bc8b02e3ee0a72860"><code>02c3bca</code></a> tkinter.tix was removed from Python 3.13, skip the test (<a href="https://redirect.github.com/benjaminp/six/issues/377">#377</a>)</li> <li>Additional commits viewable in <a href="https://github.com/benjaminp/six/compare/1.14.0...1.17.0">compare view</a></li> </ul> </details> <br /> Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
2026-04-28Update six requirement from >=1.14.0 to >=1.17.0dependabot[bot]1-1/+1
Updates the requirements on [six](https://github.com/benjaminp/six) to permit the latest version. - [Changelog](https://github.com/benjaminp/six/blob/main/CHANGES) - [Commits](https://github.com/benjaminp/six/compare/1.14.0...1.17.0) --- updated-dependencies: - dependency-name: six dependency-version: 1.17.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]>
2026-04-28Update virtualenv requirement from >=16.6.0 to >=21.3.0dependabot[bot]1-1/+1
Updates the requirements on [virtualenv](https://github.com/pypa/virtualenv) to permit the latest version. - [Release notes](https://github.com/pypa/virtualenv/releases) - [Changelog](https://github.com/pypa/virtualenv/blob/main/docs/changelog.rst) - [Commits](https://github.com/pypa/virtualenv/compare/16.6.0...21.3.0) --- updated-dependencies: - dependency-name: virtualenv dependency-version: 21.3.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]>
2026-04-28Update sphinx requirement from >=1.3 to >=7.4.7dependabot[bot]1-1/+1
Updates the requirements on [sphinx](https://github.com/sphinx-doc/sphinx) to permit the latest version. - [Release notes](https://github.com/sphinx-doc/sphinx/releases) - [Changelog](https://github.com/sphinx-doc/sphinx/blob/v7.4.7/CHANGES.rst) - [Commits](https://github.com/sphinx-doc/sphinx/compare/v1.3...v7.4.7) --- updated-dependencies: - dependency-name: sphinx dependency-version: 7.4.7 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <[email protected]>
2022-12-22Updated Changelogv0.2.2Bobby1-0/+1
2022-12-22Updated Changelog and Fixed DocumentationBobby2-2/+6
2022-12-22Bump version: 0.2.1 → 0.2.2Bobby1-10/+10
2022-12-22Bump version: 0.2.1 → 0.2.2Bobby4-4/+4
2022-12-22Update Actions to Run on NodeJS 16Bobby1-2/+2
2022-12-22Update Actions to Support Python 3.11Bobby2-2/+20
2022-12-22Add Support for Python 3.11Bobby4-2/+11
2022-11-27Added examples to readmeBobby1-8/+124