Skip to content

Regression: IO[str] not compatible with SupportsWrite[AnyStr] #17863

Closed
@JukkaL

Description

@JukkaL

This code generates a false positive, but type checked cleanly on mypy 1.11:

from typing import IO
from shutil import copyfileobj

f: IO[str]
copyfileobj(f, f)  # Cannot infer type argument 1 of "copyfileobj"

I believe the reason is that the definition of IO.write changed in typeshed, and this triggered a mypy bug. Here's how IO.write is currently defined:

class IO(Iterator[AnyStr]):
    ...
    @abstractmethod
    @overload
    def write(self: IO[bytes], s: ReadableBuffer, /) -> int: ...
    @abstractmethod
    @overload
    def write(self, s: AnyStr, /) -> int: ...

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions