Skip to content

Pre-release 3.7.0#104

Open
colonesej wants to merge 32 commits into
mainfrom
develop
Open

Pre-release 3.7.0#104
colonesej wants to merge 32 commits into
mainfrom
develop

Conversation

@colonesej

@colonesej colonesej commented Jul 8, 2026

Copy link
Copy Markdown
Collaborator

Description

This pull request introduces improvements and new features to the codebase, focusing on enhanced support for ecFlow repeat types, improved version compatibility handling, expanded QA and CI tooling, and more robust handling of exit hooks and resource limits. The changes also include updates to documentation and environment configurations to reflect these improvements and ensure consistency.

New features and compatibility improvements:

  • Added RepeatDateTimeList support, allowing nodes to repeat over a list of datetime values, and improved RepeatDateTime with better string parsing and documentation. Both are version-gated to supported ecFlow versions using a new @supported decorator. (pyflow/attributes.py, pyflow/importer.py, pyflow/__init__.py, docs/content/api-reference.rst, docs/_ext/ecflow_lexers.py, [1] [2] [3] [4] [5] [6] [7] [8] [9]
  • Introduced a @supported decorator to restrict usage of features to specific ecFlow versions, raising NotImplementedError if the version is not compatible. (pyflow/importer.py, [1] [2]

Quality assurance and CI enhancements:

  • Added a .pre-commit-config.yaml with isort, black, and flake8 hooks, and updated the README.md to document QA checks and local usage. CI and ReadTheDocs workflows updated for consistency and to use Ubuntu 22.04. (.pre-commit-config.yaml, README.md, .github/workflows/ci.yml, .github/workflows/readthedocs-pr.yml, .readthedocs.yaml, [1] [2] [3] [4] [5] [6]

Resource limits and hooks improvements:

  • Enhanced InLimit to support additional parameters (path, tokens, limit_this_node_only, limit_submission) for more granular resource control. (pyflow/attributes.py, pyflow/attributes.pyR1035-R1091)
  • Refactored exit hook handling to robustly normalize and propagate hooks, supporting strings, scripts, or iterables, and ensuring consistent application across node hierarchies. (pyflow/nodes.py, [1] [2] [3] [4]

Documentation and environment updates:

  • Updated documentation and environment files to remove redundant dependencies, add new requirements, and clarify build instructions. (docs/environment.yml, docs/requirements.txt, [1] [2]
  • Added packaging as a required dependency. (pyproject.toml, pyproject.tomlR33)

Changes to ERROR function for task generated script:

  • Improved error trapping in host scripts to capture exit reasons and codes more accurately. (pyflow/host.py, [1] [2]

Contributor Declaration

By opening this pull request, I affirm the following:

  • All authors agree to the Contributor License Agreement.
  • The code follows the project's coding standards.
  • I have performed self-review and added comments where needed.
  • I have added or updated tests to verify that my changes are effective and functional.
  • I have run all existing tests and confirmed they pass.

📚 Documentation preview 📚: https://pyflow-workflow-generator--104.org.readthedocs.build/en/104/

jinmannwong and others added 26 commits July 8, 2026 15:03
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…alues

Add test to ensure the functionality is as documented.
This allows using the latest changes when building the documentation.
As per the documentation of readthedocs/actions/preview@v1.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

Pre-release 3.7.0 update adding ecFlow-version-gated repeat attributes (including a new RepeatDateTimeList), improving exit-hook propagation behavior, expanding InLimit capabilities, and aligning repo QA/CI + docs build tooling.

Changes:

  • Added @supported decorator plus new repeat types (RepeatDateTimeList, enhanced RepeatDateTime) and related docs/lexer updates.
  • Refined exit-hook handling and improved host-script error trapping to propagate richer exit context.
  • Added/updated QA tooling (pre-commit, CI tweaks) and expanded test coverage for the new behaviors.

Reviewed changes

Copilot reviewed 20 out of 20 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
tests/test_supported.py New tests for @supported decorator and repeat attribute version gating.
tests/test_inlimits.py Adds parametrized coverage for new InLimit options.
tests/test_host.py Extends assertions for ERROR/trap contract variables and rc propagation.
tests/test_families.py Updates/expands exit-hook propagation tests (strings, Script, duplicates).
tests/test_attributes.py Adds RepeatDateTimeList tests and validation cases.
README.md Documents CI-equivalent QA checks and local pre-commit usage.
pyproject.toml Adds packaging dependency and new optional deps for QA/dev; updates setuptools_scm config.
pyflow/nodes.py Introduces exit-hook normalization and changes propagation/deduplication behavior.
pyflow/importer.py Adds @supported decorator for ecFlow-version-gated classes.
pyflow/host.py Improves ERROR/trap handling to export exit context and preserve return codes.
pyflow/attributes.py Adds RepeatDateTimeList, version-gates repeat types, and expands InLimit parameters.
pyflow/init.py Exposes RepeatDateTimeList at top-level API.
docs/requirements.txt Updates docs build requirements (adds pypandoc_binary, removes redundant entries).
docs/environment.yml Removes redundant source install entry from docs conda environment.
docs/content/api-reference.rst Adds autodoc entries for RepeatDateTime and RepeatDateTimeList.
docs/_ext/ecflow_lexers.py Updates lexer regex to recognize new repeat keywords.
.readthedocs.yaml Updates OS and installs checked-out source in RTD build env.
.pre-commit-config.yaml Adds pinned isort/black/flake8 pre-commit hooks aligned with CI QA job.
.github/workflows/readthedocs-pr.yml Switches to pull_request_target for RTD PR preview linkage.
.github/workflows/ci.yml Pins docs job runner to Ubuntu 22.04.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread pyflow/attributes.py
Comment thread pyflow/attributes.py Outdated
Comment thread pyflow/attributes.py Outdated
Comment thread tests/test_attributes.py
Comment thread tests/test_attributes.py Outdated
Comment thread pyflow/importer.py
Comment thread .github/workflows/readthedocs-pr.yml
colonesej and others added 6 commits July 8, 2026 15:07
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants