Skip to content

Conversation

@tedil
Copy link

@tedil tedil commented Oct 8, 2025

During update-conda-envs --pin-envs environment.yaml, if the environment.yaml has no changes (e.g. if completely unconstrained), the pins would never be touched, even though there will likely be newer versions that fulfill the implicit * constraints. This change now always tries updating the pins if --pin-envs is provided (which I'd say is the expected behaviour?)

Summary by CodeRabbit

  • Bug Fixes
    • Environment pinning now always runs when pinning is enabled, regardless of whether an update was attempted or succeeded, and regardless of existing pin files.
    • Ensures consistent creation and refresh of pin files after environment operations, reducing skipped pins and improving reproducibility across runs.
    • Removes prior behavior where pinning could be skipped based on update outcomes or pin file presence.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Oct 8, 2025

📝 Walkthrough

Walkthrough

Simplifies conditional logic in snakedeploy/conda.py so that pinning is always attempted when pin_envs is true, independent of update_envs outcome or pin file existence, and within the same try block following any environment update.

Changes

Cohort / File(s) Summary
Conda env pinning control flow
snakedeploy/conda.py
Removed conditional checks tying pinning to update result and pin file presence; now always pins when pin_envs is true, executed after potential env update within the same try block.

Sequence Diagram(s)

sequenceDiagram
  autonumber
  participant Caller
  participant Conda as conda.py

  Caller->>Conda: run(envs, update_envs, pin_envs)
  rect rgba(220,235,255,0.5)
    note over Conda: Potential environment update
    alt update_envs == true
      Conda->>Conda: update environments
      opt update may fail
        Conda-->>Caller: raise/handle exception (per existing error handling)
      end
    else
      Conda->>Conda: skip update
    end
  end

  rect rgba(220,255,220,0.5)
    note over Conda: Pinning
    alt pin_envs == true
      Conda->>Conda: pin environments (always attempt)
    else
      Conda->>Conda: skip pin
    end
  end

  Conda-->>Caller: return/complete
Loading

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title Check ✅ Passed The title succinctly identifies the primary change to always update pins when the --pin-envs flag is used, directly reflecting the pull request’s main objective and making the intent clear to reviewers.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
✨ Finishing touches
  • 📝 Generate docstrings
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch always-update-pins

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

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.

2 participants