Skip to content

Conversation

@aignas
Copy link
Collaborator

@aignas aignas commented Jan 20, 2026

It seems that with the pipstar port there was a typo and the initial
tests that we had for Python were insufficient to catch such a
regression.

The second if statement where we loop through packages again had a req
instead of req_ in the if statement and the test coverage was not
sufficient.

I have abstracted the if statement into a function to easier spot such
issues and added an extra test to ensure that a regression would be
actually caught. With this the Starlark test suite is now officially
more robust than the Python version.

Fixes #3524

It seems that with the `pipstar` port there was a typo and the initial
tests that we had for Python were insufficient to catch such a
regression.

The second if statement where we loop through packages again had a `req`
instead of `req_` in the `if` statement and the test coverage was not
sufficient.

I have abstracted the if statement into a function to easier spot such
issues and added an extra test to ensure that a regression would be
actually caught. With this the Starlark test suite is now officially
more robust than the Python version.

Fixes #3524
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @aignas, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request addresses a critical regression in the pipstar port that prevented correct resolution of complex self-dependencies, particularly when dealing with package extras. The fix involves correcting a subtle typo in the dependency evaluation logic, abstracting this logic into a dedicated helper function for clarity, and significantly bolstering the test suite to ensure the issue remains resolved and to prevent similar regressions in the future.

Highlights

  • Dependency Resolution Fix: Fixed a regression in pipstar's dependency resolution logic, specifically addressing an incorrect variable usage (req instead of req_) when handling complex self-dependencies and extras.
  • Code Refactoring: Refactored the conditional logic for evaluating package markers and extras into a new helper function _evaluate_any for improved readability and maintainability within _resolve_extras.
  • Test Coverage Enhancement: Enhanced test coverage by adding a new test case (test_self_include_deps_from_previously_visited) to prevent future regressions related to complex self-dependencies and ensure correct extra resolution, and updated an existing test.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

@aignas aignas mentioned this pull request Jan 20, 2026
Copy link
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request effectively fixes a regression in handling complex self-dependencies within pipstar by correcting a variable name typo in a loop. The introduction of the _evaluate_any function is a good step towards improving code clarity and preventing similar issues. The added test case also strengthens the test suite against future regressions.

My main feedback is a suggestion to refactor the dependency resolution logic. The current nested loop is complex and may not correctly handle all dependency chain lengths. I've proposed an alternative implementation using a work queue, which is a more standard, robust, and efficient pattern for this kind of transitive dependency resolution.

@rickeylev rickeylev enabled auto-merge January 20, 2026 16:22
@rickeylev rickeylev added this pull request to the merge queue Jan 20, 2026
Merged via the queue into main with commit c52aeaa Jan 20, 2026
8 checks passed
@rickeylev rickeylev deleted the aignas.fix.pipstar_etils_and_tensorflow_datasets branch January 20, 2026 16: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.

1.8.0 breaks tensorflow_datasets

3 participants