Skip to content

Conversation

@janjagusch
Copy link
Contributor

@janjagusch janjagusch commented Dec 29, 2025

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 define python_min, not python. When rattler-build tries to render the recipe, all variants are skipped because python is undefined.

Fix: Replace match(python, with match(python_min, in grayskull-generated v1 recipes before rendering.

Changes

  • Add workaround in _make_grayskull_recipe_v1 to replace match(python, with match(python_min,
  • Add integration test case for dominodatalab feedstock
  • Add unit test test_get_grayskull_comparison_v1_python_min_mismatch
  • Add assert_pr_body_not_contains helper method for integration tests

Test Evidence

Successful version update PR created by the bot during integration testing:
janjagusch-conda-forge-bot-staging/dominodatalab-feedstock#28

Related

Closes #5123


Unrelated addition: This PR also adds CLAUDE.md to provide guidance for Claude Code when working with this repository.

🤖 Generated with Claude Code

janjagusch and others added 4 commits December 29, 2025 13:37
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
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 <[email protected]>
@janjagusch janjagusch changed the title Add failing tests for dominodatalab dep_updates issue Fix dep_updates for v1 recipes using python_min Dec 29, 2025
@janjagusch janjagusch marked this pull request as draft December 29, 2025 14:55
- 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 <[email protected]>
@janjagusch janjagusch force-pushed the add-dominodatalab-integration-test branch from 12a2004 to 09ca7cc Compare December 29, 2025 16:21
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 <[email protected]>
@janjagusch janjagusch marked this pull request as ready for review December 29, 2025 16:23
@beckermr
Copy link
Contributor

@wolfv rattler build should define python, right? Is this an issue somewhere in rattler-build or smithy maybe?

@ytausch ytausch self-requested a review January 19, 2026 17:19
janjagusch and others added 4 commits January 31, 2026 13:10
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 <[email protected]>
- 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 <[email protected]>
@janjagusch
Copy link
Contributor Author

@beckermr, @ytausch, took me a bit to get back to it, but it should be ready for another round of reviews now. :)

@codecov
Copy link

codecov bot commented Jan 31, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 80.63%. Comparing base (d529852) to head (d80d423).
⚠️ Report is 4 commits behind head on main.

Additional details and impacted files
@@           Coverage Diff           @@
##             main    #5306   +/-   ##
=======================================
  Coverage   80.62%   80.63%           
=======================================
  Files         144      144           
  Lines       17005    17013    +8     
=======================================
+ Hits        13710    13718    +8     
  Misses       3295     3295           

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@beckermr
Copy link
Contributor

This error looks odd?

tests/test_update_deps.py::test_get_grayskull_comparison_v1_python_min_mismatch - RuntimeError: Failed to render recipe YAML! No output recipes found!
[]

@beckermr
Copy link
Contributor

/relock-conda

@beckermr
Copy link
Contributor

@janjagusch We need to diagnose the error here, update the comment in the code, and report it upstream to grayskull before we can merge this.

Do you know what is still broken in the generated recipe even in 3.1.0?

@janjagusch
Copy link
Contributor Author

@janjagusch We need to diagnose the error here, update the comment in the code, and report it upstream to grayskull before we can merge this.

Do you know what is still broken in the generated recipe even in 3.1.0?

Sure, I can report that the Grayskull patch seemingly doesn't work for us. It might take me a few days before I can get back to it, though. :)

janjagusch and others added 2 commits February 1, 2026 13:27
The original issue regro#574 was closed prematurely. We opened a new issue
regro#644 that specifically addresses the skip condition for v1 noarch recipes.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
The root cause is in conda-recipe-manager's v0 to v1 recipe conversion,
not in grayskull itself.

Co-Authored-By: Claude Opus 4.5 <[email protected]>
@janjagusch
Copy link
Contributor Author

@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.

@janjagusch janjagusch requested a review from beckermr February 1, 2026 12:38
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.

Recent failures with v1 recipe grayskull updates

3 participants