Skip to content

Add override annotations to catalog and file IO implementations#3359

Closed
adminlip wants to merge 1 commit into
apache:mainfrom
adminlip:fix/add-typing-override
Closed

Add override annotations to catalog and file IO implementations#3359
adminlip wants to merge 1 commit into
apache:mainfrom
adminlip:fix/add-typing-override

Conversation

@adminlip
Copy link
Copy Markdown

Adds typing.override annotations to concrete catalog and file IO implementations so overridden base-class methods are explicit and can be checked by type tooling on supported Python versions. The change covers the SQL catalog methods and the PyArrow/Fsspec file implementations referenced in the issue while keeping the diff limited to those implementation files.

Closes #1310

@rambleraptor
Copy link
Copy Markdown
Contributor

Thanks a lot for this PR! It looks like this method is only supported in Python 3.12+. We're still supporting 3.10 + 3.11, so I don't think we can merge this in.

Fokko pushed a commit that referenced this pull request May 15, 2026
Adds `@override` from `typing_extensions` to all concrete
implementations of `Catalog`, `MetastoreCatalog`, `FileIO`, `InputFile`,
and `OutputFile` so overridden base-class methods are explicit and can
be verified by static type checkers.

Uses `from typing_extensions import override` (same pattern already used
for `Self` in `typedef.py`) instead of `from typing import override`
which requires Python 3.12+ and would break the supported 3.10/3.11
versions.

Closes #1310

# Rationale for this change

`@typing.override` (PEP 698) makes it explicit which methods
intentionally override a parent class method, helping static type
checkers catch mistakes early. The previous attempt (#1312) and the
currently open PR (#3359) both use `from typing import override` which
only exists in Python 3.12+. This PR uses `typing_extensions` to support
all versions from 3.10+.

## Are these changes tested?

No new tests are needed — `@override` is a static analysis marker with
zero runtime effect. `make lint` and `make test` (3625 passed) both pass
cleanly.

## Are there any user-facing changes?

No.
@Fokko
Copy link
Copy Markdown
Contributor

Fokko commented May 15, 2026

Thanks @adminlip for working on this, but @rambleraptor is right that it requires Python 3.12 onward for the native annotation. #3360 imports it from the typing_extensions which is the right way forward. I'll go ahead and close this, nevertheless thank you for working on this

@Fokko Fokko closed this May 15, 2026
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.

Add @typing.override to functions

3 participants