v2.0.4 - (YANK)
Pre-releaseRelease Notes
This Version v2.0.4 is mostly a custodial release with little user-facing changes.
Overview
This custodial release, designated as v2.0.4, primarily focuses on maintenance and resolves multiple pending issues and merge requests. It addresses 20 GitHub issues (#31 to #258) and incorporates or supersedes 13 pull/merge requests (#226 through #263). The overarching theme is to update and unify the build workflows, documentation processes, environment configuration, and exception handling. Users will see minimal direct functional changes but benefit from the improved reliability, testing, and documentation infrastructure.
Key topics covered in this update:
- GitHub Workflows and Automation
- Documentation and Sphinx Enhancements
- New or Updated Internal Modules and Configurations
- Expanded Testing Suites and Metrics
- Style and Linting Improvements
- Version Increment and Relabeled Release
Below is a detailed breakdown of each area.
1. GitHub Workflows and Automation
Continuous Integration Setup
Multiple new or updated workflows were introduced under the .github/workflows directory. Highlights include:
- CI-BUILD.yml: Defines the primary build steps, including cleaning, building, and verifying Python versions.
- CI-DOCS.yml: A dedicated workflow for building and linting documentation on multiple OS/Python matrixes.
- CI-MATs.yml: A “Minimal Acceptance Tests” workflow triggered after a successful build. It only runs if the previous CI-BUILD succeeds.
- Tests.yml: Renamed to
CI-TESTSand restructured to trigger after CI-MATs, introducing more nuanced gating. - Bandit, CodeQL, Scorecard, YAML-Lint, Markdown-Lint: All pinned to specific commit SHAs for reproducibility. Each workflow gained explicit permissions and improved actions usage.
The net effect is a more modular pipeline: each stage carefully checks outputs from the previous step, runs targeted tests, and publishes results consistently.
Dependabot Configuration
In .github/dependabot.yml, the “Testing” label for npm dependencies was replaced with “Linter” to align with the current labeling conventions, and the rest of the ecosystems (pip, GitHub Actions) remain scheduled weekly. This keeps dependencies up-to-date across multiple package managers with minimal confusion about labels.
2. Documentation and Sphinx Enhancements
The PR introduces improvements to documentation, particularly around Sphinx configuration and new references:
- docs/CI.md now includes more badges (CodeCov, OpenSSF Best Practices) and explains newly integrated linting pipelines, preserving clarity about CI processes.
- docs/Environment_Configuration.md is a new guide detailing environment-variable-based configuration for the multicast module, including usage of
MULTICAST_PORT,MULTICAST_GROUP,MULTICAST_TTL, and more. - docs/Exception_Guide.md has been refined with new exceptions, such as
CommandExecutionErrorandShutdownCommandReceived, plus an updated exit code mapping. - Enhanced Sphinx build steps in docs/conf.py:
- Added
sphinx_designextension. - Updated docstring conventions with
napoleon_google_docstringandnapoleon_numpy_docstring. - Bumped Sphinx requirement to 7.3 in docs/requirements.txt.
- Added
These documentation changes strengthen clarity for both developers and end-users, making it easier to configure and troubleshoot multicast usage.
3. New or Updated Internal Modules and Configurations
Environment Module
The new multicast/env.py module centralizes environment variable parsing for the multicast library:
load_config()assembles validated inputs (port, group, TTL, bind address, buffer size).- Implementation-specific validations (e.g.,
validate_multicast_address,validate_port) ensure reliable defaults and warnings for invalid values.
Additionally, multicast/init.py now references these defaults globally, ensuring consistent configuration across the library.
Exception Handling
- multicast/exceptions.py has two new exceptions (
CommandExecutionError,ShutdownCommandReceived) plus updated exit-code mappings. - Decorators like
@exit_on_exceptionunify the approach for error handling, enabling consistent logging and exit codes.
4. Expanded Testing Suites and Metrics
Throughout the tests/ directory, new tests and reorganized scripts ensure thorough coverage:
- tests/init.py now includes doctests from
multicast.env. - tests/check_pip and tests/check_spelling scripts see improved error reporting and security (mitigating command injection, refining venv usage).
- Fuzz testing in tests/test_fuzz.py adjusts the Hypothesis deadline for better stability.
- tests/test_hear_keyboard_interrupt.py includes constants for startup delays and exit codes, improving maintainability.
This ensures the test suite is more robust, with minimal acceptance tests running after successful builds, advanced environment-based tests, and stable fuzz testing across various input scenarios.
5. Style and Linting Improvements
- .markdownlint.yaml sets line length to 100 while allowing code blocks and tables to exceed that limit.
- pyproject.toml adds a new
[tool.flake8]section, ignoring specific codes (E117, D203, etc.) and standardizing docstring style with Google conventions. - Workflow changes in makefile-lint, markdown-lint, and yaml-lint pin action versions for consistent linting results.
These upgrades keep the codebase consistent with CEP-7/CEP-8 guidelines and standard docstring formatting.
6. Version Increment and Relabeled Release
- The version is set to
2.0.4(sometimes labeled as “2.0.4-rc-3”/“2.0.4-rc-1” in files like conf.py or setup.cfg during the iterative release-candidate process). - The user-facing changes are minimal in terms of new features, focusing more on housekeeping, test expansions, pinned dependencies, and doc updates.
- The README.md, Makefile, and LICENSE.md also reflect minor textual updates and clarifications.
This release supersedes prior patch-level PRs like #251 and #259, incorporating both their changes and further refinements.
Conclusion
v2.0.4 (PR #277) is substantial in terms of behind-the-scenes upgrades and documentation improvements while keeping user-facing functionality stable. By reorganizing the CI pipelines, clarifying environment configurations, and expanding test coverage, this update increases the project’s reliability and maintainability. The newly pinned actions ensure consistent, reproducible builds, while extended linting and doc enhancements offer a cleaner developer experience. Users can confidently adopt v2.0.4-rc-1 to benefit from resolved issues, consistent environment setups, and clearer, more robust documentation.
Full Changelog
Known flaws.
Warning
This commit has known flaws. Each commit is subject to minimal acceptance testing, and then select commits are subject to extra testing to evaluate release candidates; This commit has been deemed not ready for release.