Version 1.0.4#117
Merged
Merged
Conversation
rsgalloway
marked this pull request as ready for review
July 25, 2026 14:10
There was a problem hiding this comment.
Pull request overview
This PR cuts the 1.0.4 release by improving developer/CI ergonomics, adding automated GitHub Pages publishing for docs, and restoring AES-GCM compatibility on Python 3.8 with newer cryptography. It also streamlines documentation and adds coarse performance regression tests to help detect major slowdowns.
Changes:
- Add CI linting + refactor test installs to use a
devextra; move pytest config intopyproject.tomland add a.flake8config. - Add GitHub Pages publishing workflow plus a small docs-site build script; refresh docs landing page and roadmap/changelog.
- Fix AES-GCM
Cipherconstruction for Python 3.8/currentcryptography; add performance regression tests and test-suite helpers/bootstrap.
Reviewed changes
Copilot reviewed 30 out of 34 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/test_wrapper.py | Reorders imports and reformats assertions for lint/format consistency. |
| tests/test_util.py | Import ordering and formatting updates; minor whitespace tweaks. |
| tests/test_performance.py | Adds coarse performance regression tests (new). |
| tests/test_path.py | Reformats a call for style consistency. |
| tests/test_node.py | Reformats YAML node creation and key env setup. |
| tests/test_env.py | Moves shared helpers to tests/helpers.py and applies small formatting tweaks. |
| tests/test_encrypt.py | Simplifies encryptor imports (style cleanup). |
| tests/test_cmds.py | Switches to shared helpers and applies formatting changes. |
| tests/helpers.py | Introduces shared test helpers for env fixtures (new). |
| tests/conftest.py | Adds test bootstrap to ensure lib/ is on sys.path (new). |
| scripts/build_pages_site.py | Adds a builder to generate a Jekyll-friendly Pages source tree (new). |
| README.md | Adds a centered logo to the README. |
| pytest.ini | Removes legacy pytest config (moved into pyproject.toml). |
| pyproject.toml | Bumps version to 1.0.4; adds dev extra and tool configs (pytest/black/isort). |
| Makefile | Removes Make-based workflows (superseded by CI/tooling). |
| make.bat | Removes Windows Make runner (superseded by CI/tooling). |
| lib/envstack/wrapper.py | Minor formatting and cleanup in capture_output exception handling. |
| lib/envstack/util.py | Collapses imports and applies formatting-only refactors. |
| lib/envstack/path.py | Formatting cleanup and minor log line refactor. |
| lib/envstack/node.py | Condenses an assert message formatting. |
| lib/envstack/env.py | Collapses imports and minor formatting refactors. |
| lib/envstack/encrypt.py | Restores AES-GCM compatibility by passing an explicit backend to Cipher. |
| lib/envstack/cli.py | Import ordering and formatting changes. |
| lib/envstack/init.py | Bumps version to 1.0.4; consolidates public re-exports. |
| docs/roadmap.md | Updates roadmap narrative to reflect perf regression coverage. |
| docs/index.md | Redesigns landing page to a shorter “home page” style with quickstart. |
| CHANGELOG.md | Adds 1.0.4 release notes; documents yanked 1.0.3. |
| bin/whichenv | Adds spacing for lint/format compliance. |
| bin/hello | Minor spacing and formatting updates. |
| bin/envstack | Adds spacing for lint/format compliance. |
| .github/workflows/tests.yml | Adds a lint job, path filters, and pip install -e ".[dev]"; expands test matrix. |
| .github/workflows/publish-docs.yml | Adds GitHub Pages build+deploy workflow (new). |
| .flake8 | Adds project flake8 configuration and per-file ignores (new). |
Comments suppressed due to low confidence (3)
tests/test_performance.py:72
- This wall-clock budget (1.0s) for resolving a 500-variable modifier graph can be highly runner-dependent and may intermittently fail on slower CI machines/OSes. For a coarse regression test, consider loosening the default and/or allowing configuration via an env var.
tests/test_performance.py:85 - The 1.5s budget for 100 encrypted load+resolve iterations is very sensitive to OS, CPU, and
cryptographybackend performance. To reduce CI flakiness while still catching major regressions, consider a higher default budget and/or an env-var override.
tests/test_performance.py:98 - This 1.0s budget for encrypting an expanded environment may be borderline on slower CI runners (especially Windows/macOS) and could cause intermittent failures. Consider loosening the default and/or making it configurable so the test remains a coarse regression guardrail.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several improvements and fixes across the codebase, focusing on developer experience, CI/CD enhancements, documentation, and bug fixes. It adds a new GitHub Pages publishing workflow, improves lint/test automation, introduces a development requirements extra, and restores compatibility with Python 3.8 for encryption. Documentation has been streamlined, including a redesigned landing page and an updated changelog.
CI/CD and Developer Tooling Improvements:
.github/workflows/publish-docs.yml) to automatically build and publish project documentation to GitHub Pages on pushes tomasterormain..github/workflows/tests.yml) to include a dedicated lint job (runningblack,isort, andflake8), and refactored test setup to use adevextra for local and CI installs. [1] [2].flake8configuration file with project-specific settings and per-file ignores to standardize linting.devextra to dependencies for one-command local setup withpytest,black,isort, andflake8, as described in the changelog.Documentation and Project Metadata:
Makefilewith streamlined developer and CI workflows, moving test/lint/build logic into the GitHub Actions and Python tooling.docs/index.md) to provide a concise overview, quickstart, and links to deeper documentation, and added a project logo to bothREADME.mdand docs. [1] [2]CHANGELOG.md) for version 1.0.4, detailing new features, changes, and bugfixes, and documenting the yanked 1.0.3 release. [1] [2]Bug Fixes and Compatibility:
cryptographyby explicitly passing a backend toCipher, restoring support for older environments. [1] [2] [3] [4]envstack.wrappermodule to release artifacts by improving build hygiene (see changelog).Codebase Cleanup and Minor Improvements:
lib/envstack/__init__.pyto expose all public API functions in a single line and bump the version to 1.0.4.lib/envstack/cli.pyfor clarity and import order. [1] [2] [3]These changes collectively improve developer experience, test coverage, documentation, and cross-version compatibility.