diff --git a/Doc/library/os.rst b/Doc/library/os.rst --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1103,10 +1103,14 @@ .. function:: readv(fd, buffers) - Read from a file descriptor into a number of writable buffers. *buffers* is - an arbitrary sequence of writable buffers. Returns the total number of bytes - read. - + Read from a file descriptor *fd* into a number of mutable + :term:`bytes-like objects ` + ("buffers"). :func:`~os.readv` will transfer data into each buffer + until it is full and then move on to the next buffer in the + sequence to hold the rest of the data. :func:`~os.readv` returns + the total number of bytes read (which may be less than the total + capacity of all the objects). + Availability: Unix. .. versionadded:: 3.3 @@ -1155,10 +1159,11 @@ .. function:: writev(fd, buffers) - Write the contents of *buffers* to file descriptor *fd*, where *buffers* - is an arbitrary sequence of buffers. - Returns the total number of bytes written. - + Write the contents of *buffers* to file descriptor *fd*. *buffers* + must be a sequence of :term:`bytes-like objects `. :func:`~os.writev` writes the contents of each object to the file + descriptor and returns the total number of bytes written. + Availability: Unix. .. versionadded:: 3.3 diff --git a/Misc/NEWS b/Misc/NEWS --- a/Misc/NEWS +++ b/Misc/NEWS @@ -84,6 +84,9 @@ - Issue #14455: Fix some problems with the new binary plist support in plistlib. +- Issue #17811: Improve documentation of os.writev and os.readv. Patch + by Nikolaus Rath. + IDLE ---- diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c --- a/Modules/posixmodule.c +++ b/Modules/posixmodule.c @@ -8061,9 +8061,12 @@ #ifdef HAVE_READV PyDoc_STRVAR(posix_readv__doc__, "readv(fd, buffers) -> bytesread\n\n\ -Read from a file descriptor into a number of writable buffers. buffers\n\ -is an arbitrary sequence of writable buffers.\n\ -Returns the total number of bytes read."); +Read from a file descriptor fd into a number of mutable, bytes-like\n\ +objects (\"buffers\"). readv will transfer data into each buffer\n\ +until it is full and then move on to the next buffer in the sequence\n\ +to hold the rest of the data.\n\n\ +readv returns the total number of bytes read (which may be less than\n\ +the total capacity of all the buffers."); static PyObject * posix_readv(PyObject *self, PyObject *args) @@ -8457,9 +8460,10 @@ #ifdef HAVE_WRITEV PyDoc_STRVAR(posix_writev__doc__, "writev(fd, buffers) -> byteswritten\n\n\ -Write the contents of buffers to a file descriptor, where buffers is an\n\ -arbitrary sequence of buffers.\n\ -Returns the total bytes written."); +Write the contents of *buffers* to file descriptor *fd*. *buffers*\n\ +must be a sequence of bytes-like objects.\n\n\ +writev writes the contents of each object to the file descriptor\n\ +and returns the total number of bytes written."); static PyObject * posix_writev(PyObject *self, PyObject *args)