Skip to content

mavutil: add type annotations to mavfile subclasses (mavserial, mavud… - #1239

Open
khancyr wants to merge 1 commit into
ArduPilot:masterfrom
khancyr:typing/mavutil-subclasses
Open

mavutil: add type annotations to mavfile subclasses (mavserial, mavud…#1239
khancyr wants to merge 1 commit into
ArduPilot:masterfrom
khancyr:typing/mavutil-subclasses

Conversation

@khancyr

@khancyr khancyr commented Jul 31, 2026

Copy link
Copy Markdown
Contributor

…p, ...)

Types FakeSerial and all mavfile subclasses: mavserial, mavudp, mavmcast, mavtcp, mavtcpin, mavlogfile, mavmmaplog, mavchildexec, mavwebsocket, and mavwebsocket_client. Widens mavfile.recv()'s return type to bytes | str to honestly reflect what these overrides actually return (several fall back to "" on error paths).

This Only set annotation and don't touch anything else ! No code modification

Comment thread mavutil.py
pass

def recv_msg(self):
def recv_msg(self) -> Any:

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Why Any?

SHouldn't this be message-or-None?

Similarly elsewhere

…p, ...)

Types FakeSerial and all mavfile subclasses: mavserial, mavudp,
mavmcast, mavtcp, mavtcpin, mavlogfile, mavmmaplog, mavchildexec,
mavwebsocket, and mavwebsocket_client.

Dynamic/polymorphic attributes (sockets, serial ports, mmap objects,
pipes) that hold different concrete types over their lifetime are
annotated honestly as Optional/Any/cast() rather than forcing a single
type mypy would then fight at every reassignment - e.g. mavserial.port
is serial.Serial or FakeSerial, mavtcp.port is socket.socket | None,
mavmmaplog.data_map is mmap.mmap | None.

Note for reviewers: this PR is not yet 100% mypy-clean standalone -
10 residual "close() signature incompatible with supertype" errors
remain because mavfile.close() itself (a separate, not-yet-submitted
PR) still has a vestigial `n: Any` parameter no subclass override
uses. That resolves once the mavfile base-class typing PR lands;
tracking here so it isn't mistaken for something missed in this PR's
own scope.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@khancyr
khancyr force-pushed the typing/mavutil-subclasses branch from 079cd5c to 313862b Compare August 3, 2026 13:21
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.

2 participants