Hello!
I finally found the complete tell/seek documentation:
https://docs.python.org/3.7/library/io.html#io.TextIOBase.tell
https://docs.python.org/3.7/library/io.html#io.TextIOBase.seek
"""
tell()
Return the current stream position as an opaque number. The number
does not usually represent a number of bytes in the underlying
binary storage.
seek(offset, whence=SEEK_SET)
Change the stream position to the given offset. Behaviour depends on
the whence parameter. The default value for whence is SEEK_SET.
SEEK_SET or 0: seek from the start of the stream (the default);
offset must either be a number returned by TextIOBase.tell(), or
zero. Any other offset value produces undefined behaviour.
SEEK_CUR or 1: “seek” to the current position; offset must be
zero, which is a no-operation (all other values are
unsupported).
SEEK_END or 2: seek to the end of the stream; offset must be
zero (all other values are unsupported).
Return the new absolute position as an opaque number.
New in version 3.1: The SEEK_* constants.
"""
So presumably this is not really a bug. There are plenty of
inconsistencies in the documentation though.
The class hierarchy suggests the only seek/tell implementations one
needs to look up are in IOBase and those have the semantics i was
expecting:
https://docs.python.org/3.7/library/io.html#class-hierarchy
The documentation available from the help() command still reflects the
semantics i was expecting. It does however suggest that the first
argument of seek has been renamed from offset to cookie which the online
documentation has not yet caught up to at:
https://docs.python.org/3.7/library/io.html#class-hierarchy
The documentation for seek from the help() command still refers to
offset though there is now no argument of that name.
>>> help(fh.tell)
Help on built-in function tell:
tell() method of _io.TextIOWrapper instance
Return current stream position.
>>> help(fh.seek)
Help on built-in function seek:
seek(cookie, whence=0, /) method of _io.TextIOWrapper instance
Change stream position.
Change the stream position to the given byte offset. The offset is
interpreted relative to the position indicated by whence. Values
for whence are:
* 0 -- start of stream (the default); offset should be zero or positive
* 1 -- current stream position; offset may be negative
* 2 -- end of stream; offset is usually negative
Return the new absolute position.
Best regards
/Ulrik Haugen