gh-107801: Improve the accuracy of io.IOBase.seek docs (#108268)

- Add param docstrings
- Link to os.SEEK_* constants
- Mention the return value in the initial paragraph

Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
This commit is contained in:
Erlend E. Aasland 2023-08-29 21:13:38 +02:00 committed by GitHub
parent 59e46932c8
commit 8178a88bd8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 23 additions and 14 deletions

View file

@ -403,20 +403,19 @@ I/O Base Classes
Note that it's already possible to iterate on file objects using ``for Note that it's already possible to iterate on file objects using ``for
line in file: ...`` without calling :meth:`!file.readlines`. line in file: ...`` without calling :meth:`!file.readlines`.
.. method:: seek(offset, whence=SEEK_SET, /) .. method:: seek(offset, whence=os.SEEK_SET, /)
Change the stream position to the given byte *offset*. *offset* is Change the stream position to the given byte *offset*,
interpreted relative to the position indicated by *whence*. The default interpreted relative to the position indicated by *whence*,
value for *whence* is :data:`!SEEK_SET`. Values for *whence* are: and return the new absolute position.
Values for *whence* are:
* :data:`!SEEK_SET` or ``0`` -- start of the stream (the default); * :data:`os.SEEK_SET` or ``0`` -- start of the stream (the default);
*offset* should be zero or positive *offset* should be zero or positive
* :data:`!SEEK_CUR` or ``1`` -- current stream position; *offset* may * :data:`os.SEEK_CUR` or ``1`` -- current stream position;
be negative *offset* may be negative
* :data:`!SEEK_END` or ``2`` -- end of the stream; *offset* is usually * :data:`os.SEEK_END` or ``2`` -- end of the stream;
negative *offset* is usually negative
Return the new absolute position.
.. versionadded:: 3.1 .. versionadded:: 3.1
The :data:`!SEEK_*` constants. The :data:`!SEEK_*` constants.
@ -1061,6 +1060,10 @@ Text I/O
Any other argument combinations are invalid, Any other argument combinations are invalid,
and may raise exceptions. and may raise exceptions.
.. seealso::
:data:`os.SEEK_SET`, :data:`os.SEEK_CUR`, and :data:`os.SEEK_END`.
.. method:: tell() .. method:: tell()
Return the stream position as an opaque number. Return the stream position as an opaque number.
@ -1068,7 +1071,6 @@ Text I/O
to restore a previous stream position. to restore a previous stream position.
.. class:: StringIO(initial_value='', newline='\n') .. class:: StringIO(initial_value='', newline='\n')
A text stream using an in-memory text buffer. It inherits A text stream using an in-memory text buffer. It inherits

View file

@ -15,6 +15,11 @@ PyDoc_STRVAR(_io__IOBase_seek__doc__,
"\n" "\n"
"Change the stream position to the given byte offset.\n" "Change the stream position to the given byte offset.\n"
"\n" "\n"
" offset\n"
" The stream position, relative to \'whence\'.\n"
" whence\n"
" The relative position to seek from.\n"
"\n"
"The offset is interpreted relative to the position indicated by whence.\n" "The offset is interpreted relative to the position indicated by whence.\n"
"Values for whence are:\n" "Values for whence are:\n"
"\n" "\n"
@ -437,4 +442,4 @@ _io__RawIOBase_readall(PyObject *self, PyObject *Py_UNUSED(ignored))
{ {
return _io__RawIOBase_readall_impl(self); return _io__RawIOBase_readall_impl(self);
} }
/*[clinic end generated code: output=ec741e0961671a86 input=a9049054013a1b77]*/ /*[clinic end generated code: output=d96f5bfd72e6eafb input=a9049054013a1b77]*/

View file

@ -83,7 +83,9 @@ iobase_unsupported(_PyIO_State *state, const char *message)
_io._IOBase.seek _io._IOBase.seek
cls: defining_class cls: defining_class
offset: int(unused=True) offset: int(unused=True)
The stream position, relative to 'whence'.
whence: int(unused=True, c_default='0') = os.SEEK_SET whence: int(unused=True, c_default='0') = os.SEEK_SET
The relative position to seek from.
/ /
Change the stream position to the given byte offset. Change the stream position to the given byte offset.
@ -101,7 +103,7 @@ Return the new absolute position.
static PyObject * static PyObject *
_io__IOBase_seek_impl(PyObject *self, PyTypeObject *cls, _io__IOBase_seek_impl(PyObject *self, PyTypeObject *cls,
int Py_UNUSED(offset), int Py_UNUSED(whence)) int Py_UNUSED(offset), int Py_UNUSED(whence))
/*[clinic end generated code: output=8bd74ea6538ded53 input=8d4e6adcd08292f2]*/ /*[clinic end generated code: output=8bd74ea6538ded53 input=74211232b363363e]*/
{ {
_PyIO_State *state = get_io_state_by_cls(cls); _PyIO_State *state = get_io_state_by_cls(cls);
return iobase_unsupported(state, "seek"); return iobase_unsupported(state, "seek");