Skip to content

fix(python): accept RawIOBase streams in identify_stream (#1403) - #1426

Open
MeiSiristhebest wants to merge 1 commit into
google:mainfrom
MeiSiristhebest:fix/identify-stream-raw-binary-streams
Open

fix(python): accept RawIOBase streams in identify_stream (#1403)#1426
MeiSiristhebest wants to merge 1 commit into
google:mainfrom
MeiSiristhebest:fix/identify-stream-raw-binary-streams

Conversation

@MeiSiristhebest

Copy link
Copy Markdown

Summary

  • Magika.identify_stream() previously rejected valid BinaryIO streams such as io.FileIO (an io.RawIOBase) with a TypeError, even though the type hint accepts BinaryIO. This made statically-typed usage like m.identify_stream(io.FileIO(path, "rb")) crash at runtime.
  • Broaden the runtime check to also accept io.RawIOBase, aligning behavior with the documented BinaryIO contract (see identify_stream() crashes on valid BinaryIO streams (like io.FileIO) #1403).

Test plan

  • Added tests/test_identify_stream_binaryio.py covering io.FileIO, open(path, "rb"), io.BytesIO (all accepted) and io.StringIO (still rejected with a helpful error).
  • ruff check / ruff format --check / mypy src/magika tests / full pytest suite (-m "not slow") pass locally.
  • Verified by multi-model subagent audit (Reasoning, Lite, Default) with 100% unanimous APPROVE.

Fixes #1403

identify_stream() rejected valid BinaryIO streams such as io.FileIO (an
io.RawIOBase) with a TypeError, even though the BinaryIO type hint
accepts them. Broaden the runtime check to also accept io.RawIOBase so
the behavior matches the documented type contract.

Fixes google#1403
@google-cla

google-cla Bot commented Aug 2, 2026

Copy link
Copy Markdown

Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA).

View this failed invocation of the CLA check for more information.

For the most up to date status, view the checks section at the bottom of the pull request.

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.

identify_stream() crashes on valid BinaryIO streams (like io.FileIO)

1 participant