Skip to content

Version 1.0.4#117

Merged
rsgalloway merged 5 commits into
masterfrom
chore/lint-and-ci-setup
Jul 25, 2026
Merged

Version 1.0.4#117
rsgalloway merged 5 commits into
masterfrom
chore/lint-and-ci-setup

Conversation

@rsgalloway

@rsgalloway rsgalloway commented Jul 25, 2026

Copy link
Copy Markdown
Owner

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:

  • Added a new GitHub Actions workflow (.github/workflows/publish-docs.yml) to automatically build and publish project documentation to GitHub Pages on pushes to master or main.
  • Enhanced the test workflow (.github/workflows/tests.yml) to include a dedicated lint job (running black, isort, and flake8), and refactored test setup to use a dev extra for local and CI installs. [1] [2]
  • Introduced a .flake8 configuration file with project-specific settings and per-file ignores to standardize linting.
  • Added a dev extra to dependencies for one-command local setup with pytest, black, isort, and flake8, as described in the changelog.

Documentation and Project Metadata:

  • Replaced the Makefile with streamlined developer and CI workflows, moving test/lint/build logic into the GitHub Actions and Python tooling.
  • Redesigned the landing page (docs/index.md) to provide a concise overview, quickstart, and links to deeper documentation, and added a project logo to both README.md and docs. [1] [2]
  • Updated the changelog (CHANGELOG.md) for version 1.0.4, detailing new features, changes, and bugfixes, and documenting the yanked 1.0.3 release. [1] [2]
  • Updated the roadmap to reflect the addition of lightweight performance regression tests and future benchmarking plans. [1] [2]

Bug Fixes and Compatibility:

  • Fixed AES-GCM encryption compatibility on Python 3.8 and current cryptography by explicitly passing a backend to Cipher, restoring support for older environments. [1] [2] [3] [4]
  • Restored the missing envstack.wrapper module to release artifacts by improving build hygiene (see changelog).

Codebase Cleanup and Minor Improvements:

  • Updated lib/envstack/__init__.py to expose all public API functions in a single line and bump the version to 1.0.4.
  • Minor refactors in lib/envstack/cli.py for clarity and import order. [1] [2] [3]

These changes collectively improve developer experience, test coverage, documentation, and cross-version compatibility.

@rsgalloway rsgalloway self-assigned this Jul 25, 2026
@rsgalloway rsgalloway added the enhancement New feature or request label Jul 25, 2026
@rsgalloway rsgalloway linked an issue Jul 25, 2026 that may be closed by this pull request
@rsgalloway rsgalloway changed the title Fix packaging and test tooling for local dev and CI Version 1.0.4 Jul 25, 2026
@rsgalloway rsgalloway added documentation Improvements or additions to documentation bug Something isn't working labels Jul 25, 2026
@rsgalloway
rsgalloway marked this pull request as ready for review July 25, 2026 14:10
@rsgalloway
rsgalloway requested a review from Copilot July 25, 2026 14:10

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 dev extra; move pytest config into pyproject.toml and add a .flake8 config.
  • Add GitHub Pages publishing workflow plus a small docs-site build script; refresh docs landing page and roadmap/changelog.
  • Fix AES-GCM Cipher construction for Python 3.8/current cryptography; 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 cryptography backend 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.

Comment thread tests/test_performance.py
@rsgalloway
rsgalloway merged commit 43a5153 into master Jul 25, 2026
44 checks passed
@rsgalloway
rsgalloway deleted the chore/lint-and-ci-setup branch July 25, 2026 14:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working documentation Improvements or additions to documentation enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

API documentation source structure

2 participants