Skip to content

fix: add explicit return type annotations to BaseVector abstract methods#32516

Merged
asukaminato0721 merged 2 commits intolanggenius:mainfrom
longway-code:fix/opengauss-bad-override-type-annotations
Feb 24, 2026
Merged

fix: add explicit return type annotations to BaseVector abstract methods#32516
asukaminato0721 merged 2 commits intolanggenius:mainfrom
longway-code:fix/opengauss-bad-override-type-annotations

Conversation

@longway-code
Copy link
Copy Markdown
Contributor

Abstract methods without return type annotations caused pyright to infer Never as the return type (since bodies only contain raise NotImplementedError). Subclass implementations returning list[str] or None were then flagged as bad-override errors.

Fixes #32511

Abstract methods without return type annotations caused pyright to infer
`Never` as the return type (since bodies only contain `raise NotImplementedError`).
Subclass implementations returning `list[str]` or `None` were then flagged
as bad-override errors.

Fixes langgenius#32511
@dosubot dosubot bot added the size:XS This PR changes 0-9 lines, ignoring generated files. label Feb 24, 2026
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @longway-code, 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 enhances the type safety and clarity of the BaseVector abstract class by introducing explicit return type annotations to its abstract methods. This crucial update addresses a specific problem with the pyright type checker, which previously inferred an incorrect Never return type for these methods, causing bad-override errors when subclasses provided concrete implementations with actual return values.

Highlights

  • Type Annotations: Explicit return type annotations were added to several abstract methods within the BaseVector class.
  • Type Checker Fix: This change resolves pyright type checker issues where it incorrectly inferred Never as the return type for abstract methods, leading to bad-override errors in subclass implementations.

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

Changelog
  • api/core/rag/datasource/vdb/vector_base.py
    • Added -> list[str] return type to add_texts abstract method.
    • Added -> None return type to delete_by_ids abstract method.
    • Added -> None return type to delete_by_metadata_field abstract method.
    • Added -> None return type to delete abstract method.
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.

@dosubot dosubot bot added the 👻 feat:rag Embedding related issue, like qdrant, weaviate, milvus, vector database. label Feb 24, 2026
Copy link
Copy Markdown
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 correctly adds explicit return type annotations to several abstract methods in the BaseVector class, which resolves typing issues with pyright. The changes are a good improvement for code clarity and type safety. I've added one high-severity comment regarding an inconsistency with add_texts that is surfaced by these changes and could lead to other issues. Additionally, as a suggestion for a follow-up, the get_ids_by_metadata_field method in the same file is not marked as abstract and lacks a return type annotation. Aligning it with the other abstract methods would further improve the consistency and robustness of the BaseVector interface.

@dosubot dosubot bot added the lgtm This PR has been approved by a maintainer label Feb 24, 2026
@asukaminato0721 asukaminato0721 merged commit a1991c5 into langgenius:main Feb 24, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

👻 feat:rag Embedding related issue, like qdrant, weaviate, milvus, vector database. lgtm This PR has been approved by a maintainer size:XS This PR changes 0-9 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Refactor/Chore] ERROR Class member OpenGauss.add_texts overrides parent class BaseVector in an inconsistent manner [bad-override]

2 participants