make TextIOBase writable, handle malformed utf-8 in read() #1119
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This:
UnicodeError
and subtypes,TextIOWrapper
throw aUnicodeDecodeError
on malformed utf-8 in a file,TextIOWrapper
writable if underlying buffer is writable,TextIOWrapper
not readable if underlying buffer is writable.When the wrapper is not readable/writable, CPython throws an
io.UnsupportedOperation
which inherits from bothOSError
andValueError
. I just throwValueError
here – do we have multiple inheritance yet to do a properUnsupportedOperation
?Also, all the
UnicodeError
types in CPython have more internal structure than the simple exceptions I added here.Some more things to be done to close the rest of #547 are:
PyObjectPayload
to hide the underlying RustFile
internally and no longer depend onfileno
?,fileno
just an accessor method.But I’d rather try to do them in separate pull requests (or let somebody else do them if anyone gets to it before me).