Fix dep_updates for v1 recipes using python_min#5306
Conversation
This test case reproduces the issue where the dep_updates migrator fails for v1 recipes when grayskull generates a recipe with `skip: match(python, ...)` but the feedstock's variant config only has `python_min` (not `python`). The test adds: - dominodatalab feedstock as a git submodule (pinned to v1.4.7) - Test case that validates version update from 1.4.7 to 2.0.0 - New `assert_pr_body_not_contains` helper method to check PR body - Assertion that the PR body doesn't contain the dep_updates error message The test currently fails, demonstrating the bug where rattler-build skips all variants when the `python` variable is not in the variant config. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This test reproduces the issue where get_grayskull_comparison fails for v1 recipes when grayskull generates `skip: match(python, "<3.10")` but the variant config only has `python_min` (not `python`). The test is marked as xfail since it currently fails - rattler-build skips all variants when the `python` variable is not set in the variant config. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
The xfail marker was causing pytest to consider the failing test as "passing" (expected failure). Removing it ensures the test actually fails in CI until the bug is fixed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Replace `match(python, ...)` with `match(python_min, ...)` in grayskull-generated v1 recipes. This fixes the dep_updates migrator for feedstocks using CFEP-25's python_min variable. Grayskull generates skip conditions like `skip: match(python, "<3.10")` but v1 recipe variant configs only define `python_min`, not `python`. This caused rattler-build to skip all variants with: "Failed to render recipe YAML! No output recipes found!" See: conda/grayskull#574 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add mock endpoint for version-specific PyPI API (/pypi/dominodatalab/2.0.0/json) - Include 'urls' field in main PyPI endpoint for grayskull sdist discovery - Add spdx.org/* to transparent URLs (grayskull license discovery) - Store full PyPI metadata response for reproducible testing 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
12a2004 to
09ca7cc
Compare
Add documentation to help Claude Code understand the codebase structure, common commands, and integration test setup. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
|
@wolfv rattler build should define python, right? Is this an issue somewhere in rattler-build or smithy maybe? |
…egration-test # Conflicts: # .gitmodules
Guard the match(python, ...) to match(python_min, ...) replacement with a check for package_is_noarch to avoid unintended changes to arch-specific recipes. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Rename CLAUDE.md to AGENTS.md and create symlink for backwards compat - Make content agent-agnostic (remove Claude Code-specific references) - Remove "(recommended for development)" from environment.yml option - Use local conda-lock.yml instead of wget from GitHub - Remove unmaintained test feedstocks list Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #5306 +/- ##
==========================================
+ Coverage 80.66% 80.69% +0.03%
==========================================
Files 144 144
Lines 16968 16976 +8
==========================================
+ Hits 13687 13699 +12
+ Misses 3281 3277 -4 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
This error looks odd? |
|
/relock-conda |
|
@beckermr, I was able to track the bug down to CRM and propose a fix: conda/conda-recipe-manager#480 The inline comment in our code now references the correct upstream issue: conda/conda-recipe-manager#479 My suggestion would be to merge the current version of the branch and remove the fix once we have a new release of CRM. |
|
did you run the integration tests locally? they are not running in CI because you are working from a fork. My suggestion is to remove them or for you to ensure they work locally. |
|
I think the integration tests really add value here, so I'd go with option 2. |
The integration tests are still failing on my local machine. It's probably just a problem with the MITM proxy. I'll check today. |
|
@beckermr alternatively, we could also check if the merge queue passes, right? |
|
Yes let's try the queue. I did not want to debug the tests via the queue which is why I asked. |
|
Thanks for merging, @beckermr. I will test the new version against conda-forge/dominodatalab-feedstock#23. |
|
Worked like a charm: conda-forge/dominodatalab-feedstock#24 🚀 |
Summary
Fix the dep_updates migrator failing for v1 recipes that use
python_min(CFEP-25).Root cause: Grayskull generates
skip: match(python, "<3.10")for noarch recipes, but v1 recipe variant configs only definepython_min, notpython. When rattler-build tries to render the recipe, all variants are skipped becausepythonis undefined.Fix: Replace
match(python,withmatch(python_min,in grayskull-generated v1 recipes before rendering.Changes
_make_grayskull_recipe_v1to replacematch(python,withmatch(python_min,test_get_grayskull_comparison_v1_python_min_mismatchassert_pr_body_not_containshelper method for integration testsTest Evidence
Successful version update PR created by the bot during integration testing:
janjagusch-conda-forge-bot-staging/dominodatalab-feedstock#28
Related
python_minconda/grayskull#574Closes #5123
Unrelated addition: This PR also adds
CLAUDE.mdto provide guidance for Claude Code when working with this repository.🤖 Generated with Claude Code