TASK: [dependency-investigation] Investigate the behave dependency — version pin, compatibility, and upgrade path #2236

Open
opened 2026-04-03 09:45:02 +00:00 by freemo · 2 comments
Owner

Metadata

  • Branch: task/investigate-behave-dependency
  • Commit Message: chore(deps): investigate behave dependency version pin and upgrade path
  • Milestone: v3.7.0
  • Parent Epic: #1678

Background and Context

The project currently pins behave==1.3.3 in both the dev and tests dependency groups in pyproject.toml. While 1.3.3 is the latest release on PyPI (released 2025-09-04), the pin is strict (==) rather than a minimum-compatible constraint (>=). This warrants investigation to:

  1. Understand why the version is pinned strictly rather than using a flexible constraint.
  2. Assess whether the current version is appropriate for the project's BDD testing needs.
  3. Evaluate any known issues, open bugs, or incompatibilities with the rest of the dependency stack (e.g., Python 3.13, cucumber-expressions, parse-type, six).
  4. Determine whether the strict pin should be relaxed, kept, or replaced with an alternative.

The project's BDD testing philosophy (CONTRIBUTING.md) mandates Cucumber/Gherkin-based testing via behave. Any instability or incompatibility in this dependency directly impacts the test pipeline and CI reliability.

Current Behavior

  • behave==1.3.3 is pinned strictly in both [project.optional-dependencies.dev] and [project.optional-dependencies.tests].
  • The noxfile uses a custom behave-parallel in-process runner built on top of behave's Python API.
  • No documented rationale exists for the strict pin.

Expected Behavior

  • The dependency constraint should be intentional and documented.
  • If the strict pin is necessary (e.g., due to a known regression in a future release or API incompatibility with behave-parallel), the reason should be captured in a comment in pyproject.toml and/or in this issue.
  • If the strict pin is unnecessary, it should be relaxed to >=1.3.3 or the most appropriate constraint.

Acceptance Criteria

  • The rationale for the current ==1.3.3 pin is documented (or confirmed to be arbitrary).
  • Compatibility with Python 3.13 and the current dependency stack is verified.
  • The behave-parallel in-process runner's dependency on behave's internal Python API is assessed for version sensitivity.
  • A recommendation is made: keep strict pin (with documented reason), relax to >=, or replace with an alternative.
  • If a change to the constraint is warranted, it is implemented and all nox sessions pass.

Supporting Information

  • behave PyPI page: https://pypi.org/project/behave/
  • behave GitHub: https://github.com/behave/behave
  • Current pin location: pyproject.toml[project.optional-dependencies.dev] and [project.optional-dependencies.tests]
  • Custom runner: noxfile.py_install_behave_parallel() and _behave_parallel_args()
  • Related: scripts/run_behave_parallel.py

Subtasks

  • Review pyproject.toml for the strict behave==1.3.3 pin and document the current state
  • Check behave changelog and GitHub issues for any known regressions or breaking changes between versions
  • Verify behave==1.3.3 compatibility with Python 3.13 and all transitive dependencies (cucumber-expressions, parse-type, six, etc.)
  • Audit noxfile.py _install_behave_parallel() and scripts/run_behave_parallel.py for any version-sensitive use of behave's internal API
  • Determine whether the strict pin is intentional or incidental
  • Decide on the appropriate constraint (==, >=, or range) and update pyproject.toml if needed
  • Add an inline comment in pyproject.toml explaining the constraint choice
  • Run nox (all default sessions) and verify all tests pass
  • Verify coverage >= 97% via nox -s coverage_report

Definition of Done

This issue is complete when:

  • All subtasks above are completed and checked off.
  • The rationale for the behave version constraint is documented in pyproject.toml (inline comment) and/or in this issue.
  • If the constraint was changed, a Git commit is created where the first line of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the investigation findings.
  • The commit is pushed to the remote on the branch matching the Branch in Metadata exactly.
  • The commit is submitted as a pull request to master, reviewed, and merged before this issue is marked done.
  • All nox stages pass.
  • Coverage >= 97%.

Automated by CleverAgents Bot
Supervisor: Unknown | Agent: ca-new-issue-creator

## Metadata - **Branch**: `task/investigate-behave-dependency` - **Commit Message**: `chore(deps): investigate behave dependency version pin and upgrade path` - **Milestone**: v3.7.0 - **Parent Epic**: #1678 ## Background and Context The project currently pins `behave==1.3.3` in both the `dev` and `tests` dependency groups in `pyproject.toml`. While `1.3.3` is the latest release on PyPI (released 2025-09-04), the pin is strict (`==`) rather than a minimum-compatible constraint (`>=`). This warrants investigation to: 1. Understand **why** the version is pinned strictly rather than using a flexible constraint. 2. Assess whether the current version is appropriate for the project's BDD testing needs. 3. Evaluate any known issues, open bugs, or incompatibilities with the rest of the dependency stack (e.g., Python 3.13, `cucumber-expressions`, `parse-type`, `six`). 4. Determine whether the strict pin should be relaxed, kept, or replaced with an alternative. The project's BDD testing philosophy (CONTRIBUTING.md) mandates Cucumber/Gherkin-based testing via `behave`. Any instability or incompatibility in this dependency directly impacts the test pipeline and CI reliability. ## Current Behavior - `behave==1.3.3` is pinned strictly in both `[project.optional-dependencies.dev]` and `[project.optional-dependencies.tests]`. - The noxfile uses a custom `behave-parallel` in-process runner built on top of `behave`'s Python API. - No documented rationale exists for the strict pin. ## Expected Behavior - The dependency constraint should be intentional and documented. - If the strict pin is necessary (e.g., due to a known regression in a future release or API incompatibility with `behave-parallel`), the reason should be captured in a comment in `pyproject.toml` and/or in this issue. - If the strict pin is unnecessary, it should be relaxed to `>=1.3.3` or the most appropriate constraint. ## Acceptance Criteria - [ ] The rationale for the current `==1.3.3` pin is documented (or confirmed to be arbitrary). - [ ] Compatibility with Python 3.13 and the current dependency stack is verified. - [ ] The `behave-parallel` in-process runner's dependency on `behave`'s internal Python API is assessed for version sensitivity. - [ ] A recommendation is made: keep strict pin (with documented reason), relax to `>=`, or replace with an alternative. - [ ] If a change to the constraint is warranted, it is implemented and all nox sessions pass. ## Supporting Information - `behave` PyPI page: https://pypi.org/project/behave/ - `behave` GitHub: https://github.com/behave/behave - Current pin location: `pyproject.toml` → `[project.optional-dependencies.dev]` and `[project.optional-dependencies.tests]` - Custom runner: `noxfile.py` → `_install_behave_parallel()` and `_behave_parallel_args()` - Related: `scripts/run_behave_parallel.py` ## Subtasks - [ ] Review `pyproject.toml` for the strict `behave==1.3.3` pin and document the current state - [ ] Check `behave` changelog and GitHub issues for any known regressions or breaking changes between versions - [ ] Verify `behave==1.3.3` compatibility with Python 3.13 and all transitive dependencies (`cucumber-expressions`, `parse-type`, `six`, etc.) - [ ] Audit `noxfile.py` `_install_behave_parallel()` and `scripts/run_behave_parallel.py` for any version-sensitive use of `behave`'s internal API - [ ] Determine whether the strict pin is intentional or incidental - [ ] Decide on the appropriate constraint (`==`, `>=`, or range) and update `pyproject.toml` if needed - [ ] Add an inline comment in `pyproject.toml` explaining the constraint choice - [ ] Run `nox` (all default sessions) and verify all tests pass - [ ] Verify coverage >= 97% via `nox -s coverage_report` ## Definition of Done This issue is complete when: - All subtasks above are completed and checked off. - The rationale for the `behave` version constraint is documented in `pyproject.toml` (inline comment) and/or in this issue. - If the constraint was changed, a Git commit is created where the **first line** of the commit message matches the Commit Message in Metadata exactly, followed by a blank line, then additional lines providing relevant details about the investigation findings. - The commit is pushed to the remote on the branch matching the **Branch** in Metadata exactly. - The commit is submitted as a **pull request** to `master`, reviewed, and **merged** before this issue is marked done. - All nox stages pass. - Coverage >= 97%. --- **Automated by CleverAgents Bot** Supervisor: Unknown | Agent: ca-new-issue-creator
freemo added this to the v3.7.0 milestone 2026-04-03 09:58:41 +00:00
Author
Owner

Issue triaged by project owner:

  • State: Verified
  • Priority: Backlog (confirmed) — Dependency investigation is a maintenance task, not blocking any deliverables.
  • Milestone: v3.7.0 (assigning — the issue body says v3.7.0 but no milestone was set. Assigning to v3.7.0.)
  • MoSCoW: Could Have — Investigating the behave dependency pin is a maintenance task. The current pin works; this is about understanding and documenting the constraint.
  • Parent Epic: #1678 (confirmed correct)

Note: This issue is missing a milestone assignment. Assigning to v3.7.0.


Automated by CleverAgents Bot
Supervisor: Project Owner | Agent: ca-project-owner

Issue triaged by project owner: - **State**: Verified - **Priority**: Backlog (confirmed) — Dependency investigation is a maintenance task, not blocking any deliverables. - **Milestone**: v3.7.0 (assigning — the issue body says v3.7.0 but no milestone was set. Assigning to v3.7.0.) - **MoSCoW**: Could Have — Investigating the behave dependency pin is a maintenance task. The current pin works; this is about understanding and documenting the constraint. - **Parent Epic**: #1678 (confirmed correct) Note: This issue is missing a milestone assignment. Assigning to v3.7.0. --- **Automated by CleverAgents Bot** Supervisor: Project Owner | Agent: ca-project-owner
freemo self-assigned this 2026-04-03 16:57:57 +00:00
Author
Owner

Starting implementation on branch task/investigate-behave-dependency.

This is a research/investigation task with 9 subtasks covering: reviewing the current pin, checking behave changelog, verifying Python 3.13 compatibility, auditing version-sensitive API usage in noxfile and scripts, determining pin intent, updating the constraint, adding inline documentation, and running full test suite.

Difficulty assessment: Low → starting at sonnet tier.


Automated by CleverAgents Bot
Supervisor: Implementation | Agent: ca-issue-worker

Starting implementation on branch `task/investigate-behave-dependency`. This is a research/investigation task with 9 subtasks covering: reviewing the current pin, checking behave changelog, verifying Python 3.13 compatibility, auditing version-sensitive API usage in noxfile and scripts, determining pin intent, updating the constraint, adding inline documentation, and running full test suite. Difficulty assessment: Low → starting at sonnet tier. --- **Automated by CleverAgents Bot** Supervisor: Implementation | Agent: ca-issue-worker
freemo removed this from the v3.7.0 milestone 2026-04-07 01:13:25 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Reference
cleveragents/cleveragents-core#2236
No description provided.