Skip to content

Conversation

@asukaminato0721
Copy link
Contributor

Important

  1. Make sure you have read our contribution guidelines
  2. Ensure there is an associated issue and you have been assigned to it
  3. Use the correct syntax to link this PR: Fixes #<issue number>.

Summary

Part of #25860, add ast-grep script to auto-rewrite fields.

ref https://ast-grep.github.io/catalog/python/rewrite-sqlalchemy-mapped-column.html

Screenshots

Before After
... ...

Checklist

  • This change requires a documentation update, included: Dify Document
  • I understand that this PR may be closed in case there was no previous discussion or issues. (This doesn't apply to typos!)
  • I've added a test for each change that was introduced, and I tried as much as possible to make a single atomic change.
  • I've updated the documentation accordingly.
  • I ran dev/reformat(backend) and cd web && npx lint-staged(frontend) to appease the lint gods

@asukaminato0721 asukaminato0721 changed the title use ast-grep rule CI: use ast-grep rule Dec 4, 2025
@gemini-code-assist
Copy link
Contributor

Summary of Changes

Hello @asukaminato0721, 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 integrates ast-grep into the project, providing a robust framework for automated code refactoring. The primary focus of this initial integration is to modernize SQLAlchemy mapped_column definitions in Python code. By introducing specific ast-grep rules, the PR automates the conversion of string field declarations to use contemporary Mapped type hints, effectively removing redundant nullable=True or nullable=False arguments. This enhancement aims to improve code consistency, readability, and maintainability by streamlining common refactoring tasks.

Highlights

  • AST-grep Integration: Introduced ast-grep as a new tool for automated code refactoring, enabling semantic-aware code transformations.
  • SQLAlchemy Nullable String Refactoring: Added an ast-grep rule to automatically rewrite mapped_column definitions for nullable string fields (where nullable=True) to use the modern Mapped[str | None] type hint, while removing the redundant nullable argument.
  • SQLAlchemy Non-Nullable String Refactoring: Implemented an ast-grep rule to automatically refactor mapped_column definitions for non-nullable string fields (where nullable=False) to use the Mapped[str] type hint, also removing the explicit nullable argument as nullable=False is the default.
  • AST-grep Configuration: Configured ast-grep to recognize and utilize the newly defined refactoring rules located in the rules directory.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/autofix.yml
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.

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 introduces ast-grep rules to automate the refactoring of SQLAlchemy models to the modern 2.0 style, which is a good improvement for code maintainability. However, the current implementation has a few critical issues. Both new rule files use the same id, which will cause ast-grep to fail. Additionally, the rule for nullable strings contains a logical error in its rewriter that would incorrectly remove the column type definition, leading to broken code. I've provided detailed comments and code suggestions to fix these problems by ensuring unique rule IDs and correcting the rewriter logic. I also recommended more descriptive filenames for better clarity.

@asukaminato0721
Copy link
Contributor Author

cc @QuantumGhost

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 participant