fix: typo in CondaEnvDirSpec.__eq__ (issue #3192)#3613
Conversation
📝 WalkthroughWalkthroughThe changes correct the equality comparison in the Changes
Sequence Diagram(s)sequenceDiagram
participant TestRunner
participant Shell
participant Conda
participant Snakemake
participant Script
TestRunner->>Shell: Execute "conda create -y -n test_issue3192 python"
Shell->>Conda: Create environment
Conda-->>Shell: Environment ready
TestRunner->>Snakemake: Run workflow "test_issue3192" with CONDA deployment
Snakemake->>Conda: Activate environment at conda_env
Snakemake->>Script: Run script.py for a2b (a.txt -> b.txt)
Script->>Script: Copy a.txt to b.txt
Snakemake->>Script: Run script.py for b2c (b.txt -> c.txt)
Script->>Script: Copy b.txt to c.txt
Snakemake-->>TestRunner: Workflow complete, verify c.txt
Assessment against linked issues
Assessment against linked issues: Out-of-scope changesNo out-of-scope changes detected. Suggested reviewers
📜 Recent review detailsConfiguration used: CodeRabbit UI 📒 Files selected for processing (1)
🚧 Files skipped from review as they are similar to previous changes (1)
✨ Finishing Touches
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. 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
SupportNeed help? Create a ticket on our support page for assistance with any issues or questions. Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
CodeRabbit Configuration File (
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (1)
tests/tests_using_conda.py (1)
324-333: Consider adding error handling and cleanup for the conda environment.The test follows the established pattern in this file, but consider these improvements:
- Add error handling for the conda environment creation
- Clean up the created environment after the test to prevent accumulation
Apply this diff to improve robustness:
@conda def test_issue_3192(): - sp.run( - "conda create -n test_issue3192 python", - shell=True, - ) - run( - dpath("test_issue3192"), - deployment_method={DeploymentMethod.CONDA} - ) + try: + sp.run( + "conda create -n test_issue3192 python", + shell=True, + check=True, + ) + run( + dpath("test_issue3192"), + deployment_method={DeploymentMethod.CONDA} + ) + finally: + # Cleanup the test environment + sp.run( + "conda env remove -n test_issue3192", + shell=True, + check=False, # Don't fail if environment doesn't exist + )
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (6)
src/snakemake/deployment/conda.py(1 hunks)tests/test_issue3192/Snakefile(1 hunks)tests/test_issue3192/a.txt(1 hunks)tests/test_issue3192/expected-results/c.txt(1 hunks)tests/test_issue3192/script.py(1 hunks)tests/tests_using_conda.py(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
`**/*.py`: Do not try to improve formatting. Do not suggest type annotations for functions that are defined inside of functions or methods. Do not suggest type annotation of the `s...
**/*.py: Do not try to improve formatting.
Do not suggest type annotations for functions that are defined inside of functions or methods.
Do not suggest type annotation of theselfargument of methods.
Do not suggest type annotation of theclsargument of classmethods.
Do not suggest return type annotation if a function or method does not contain areturnstatement.
tests/test_issue3192/script.pysrc/snakemake/deployment/conda.pytests/tests_using_conda.py
🧬 Code Graph Analysis (1)
tests/tests_using_conda.py (1)
tests/common.py (1)
dpath(32-35)
🪛 Ruff (0.11.9)
tests/test_issue3192/script.py
4-4: Undefined name snakemake
(F821)
5-5: Undefined name snakemake
(F821)
🪛 Pylint (3.3.7)
tests/test_issue3192/script.py
[error] 4-4: Undefined variable 'snakemake'
(E0602)
[error] 5-5: Undefined variable 'snakemake'
(E0602)
🔇 Additional comments (5)
tests/test_issue3192/a.txt (1)
1-1: LGTM! Simple test input file.The content is appropriate for a test data file.
src/snakemake/deployment/conda.py (1)
970-970: Correctly fixes the equality comparison bug.The change aligns with the consistent pattern used in similar classes (
CondaEnvFileSpeccomparesfileattributes,CondaEnvNameSpeccomparesnameattributes), andCondaEnvDirSpecshould indeed comparepathattributes since that's what this class stores in itspathfield.tests/test_issue3192/expected-results/c.txt (1)
1-1: LGTM! Appropriate expected test result.The content matches the expected output for the test workflow.
tests/test_issue3192/script.py (1)
1-6: LGTM! Script correctly implements file copying for Snakemake workflow.The script is functionally correct. The static analysis tools are flagging
snakemakeas undefined, but this is a false positive - thesnakemakeobject is automatically injected by the Snakemake runtime when executing scripts, providing access to input/output paths and other workflow context.🧰 Tools
🪛 Ruff (0.11.9)
4-4: Undefined name
snakemake(F821)
5-5: Undefined name
snakemake(F821)
🪛 Pylint (3.3.7)
[error] 4-4: Undefined variable 'snakemake'
(E0602)
[error] 5-5: Undefined variable 'snakemake'
(E0602)
tests/test_issue3192/Snakefile (1)
3-25: Well-structured test workflow for conda environment verification.The workflow correctly defines a simple pipeline that processes files through intermediate steps using a shared conda environment. This structure effectively tests the conda environment integration that the PR aims to fix.
Head branch was pushed to by a user without write access
🤖 I have created a release *beep* *boop* --- ## [9.6.0](v9.5.1...v9.6.0) (2025-06-16) ### Features * Prefer papermill to nbconvert ([#2857](#2857)) ([4263b03](4263b03)) ### Bug Fixes * DeprecationWarning when using snakemake.utils.validate ([#3420](#3420)) ([cf72427](cf72427)) * display group jobs on dryrun ([#3435](#3435)) ([3bebef4](3bebef4)) * expandvars for special profile keys ([#3597](#3597)) ([4020188](4020188)) * fix bug causing --precommand to not being executed before each remote job ([#3625](#3625)) ([e59d125](e59d125)) * improved toggle switch behavior in reports ([#3623](#3623)) ([0c4bd23](0c4bd23)) * pass envvars defined via the envvars directive to remote jobs ([#3626](#3626)) ([d4890b4](d4890b4)) * remove wms arg, update logging cli docs ([#3622](#3622)) ([3a9a5ac](3a9a5ac)) * typo in CondaEnvDirSpec.__eq__ (issue [#3192](#3192)) ([#3613](#3613)) ([f4c107f](f4c107f)) * Unclear handling of params overriding with inheritance ([#3624](#3624)) ([077ac4a](077ac4a)) ### Documentation * Added snakemake command to execute the rule plot_with_python ([#3608](#3608)) ([bd99c11](bd99c11)) * Updated Reporting Section of The Tutorial(Interaction, Visualization, and Reporting with Snakemake) ([#3606](#3606)) ([91e90ba](91e90ba)) * Updated Requirement Section of The Tutorial With Warning of Not Installing The Tools Manually ([#3607](#3607)) ([3bd114b](3bd114b)) * Updated Wrapper Version in Tutorial and Used Simple Rule For Consistency & Ease ([#3605](#3605)) ([b3bcc21](b3bcc21)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
…#3613) Issue snakemake#3192 is related to a typo in `CondaEnvDirSpec.__eq__`. This PR fixes this issue and add a test case. Fixes snakemake#3192 ### QC <!-- Make sure that you can tick the boxes below. --> * [X] The PR contains a test case for the changes or the changes are already covered by an existing test case. * [X] The documentation (`docs/`) is updated to reflect the changes or this is not necessary (e.g. if the change does neither modify the language nor the behavior or functionalities of Snakemake). <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Summary by CodeRabbit - **Bug Fixes** - Improved the handling of conda environment directory comparisons to ensure correct behavior when matching environment paths. - **Tests** - Added a new test workflow to verify conda environment handling, including sample input, expected output, and supporting scripts. - Introduced a dedicated test to validate the new conda environment behavior. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
🤖 I have created a release *beep* *boop* --- ## [9.6.0](snakemake/snakemake@v9.5.1...v9.6.0) (2025-06-16) ### Features * Prefer papermill to nbconvert ([snakemake#2857](snakemake#2857)) ([4263b03](snakemake@4263b03)) ### Bug Fixes * DeprecationWarning when using snakemake.utils.validate ([snakemake#3420](snakemake#3420)) ([cf72427](snakemake@cf72427)) * display group jobs on dryrun ([snakemake#3435](snakemake#3435)) ([3bebef4](snakemake@3bebef4)) * expandvars for special profile keys ([snakemake#3597](snakemake#3597)) ([4020188](snakemake@4020188)) * fix bug causing --precommand to not being executed before each remote job ([snakemake#3625](snakemake#3625)) ([e59d125](snakemake@e59d125)) * improved toggle switch behavior in reports ([snakemake#3623](snakemake#3623)) ([0c4bd23](snakemake@0c4bd23)) * pass envvars defined via the envvars directive to remote jobs ([snakemake#3626](snakemake#3626)) ([d4890b4](snakemake@d4890b4)) * remove wms arg, update logging cli docs ([snakemake#3622](snakemake#3622)) ([3a9a5ac](snakemake@3a9a5ac)) * typo in CondaEnvDirSpec.__eq__ (issue [snakemake#3192](snakemake#3192)) ([snakemake#3613](snakemake#3613)) ([f4c107f](snakemake@f4c107f)) * Unclear handling of params overriding with inheritance ([snakemake#3624](snakemake#3624)) ([077ac4a](snakemake@077ac4a)) ### Documentation * Added snakemake command to execute the rule plot_with_python ([snakemake#3608](snakemake#3608)) ([bd99c11](snakemake@bd99c11)) * Updated Reporting Section of The Tutorial(Interaction, Visualization, and Reporting with Snakemake) ([snakemake#3606](snakemake#3606)) ([91e90ba](snakemake@91e90ba)) * Updated Requirement Section of The Tutorial With Warning of Not Installing The Tools Manually ([snakemake#3607](snakemake#3607)) ([3bd114b](snakemake@3bd114b)) * Updated Wrapper Version in Tutorial and Used Simple Rule For Consistency & Ease ([snakemake#3605](snakemake#3605)) ([b3bcc21](snakemake@b3bcc21)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Issue #3192 is related to a typo in
CondaEnvDirSpec.__eq__. This PR fixes this issue and add a test case.Fixes #3192
QC
docs/) is updated to reflect the changes or this is not necessary (e.g. if the change does neither modify the language nor the behavior or functionalities of Snakemake).Summary by CodeRabbit
Summary by CodeRabbit
Bug Fixes
Tests