diff --git a/Doc/extending/newtypes.rst b/Doc/extending/newtypes.rst index cb20bce4350..d11b40890c9 100644 --- a/Doc/extending/newtypes.rst +++ b/Doc/extending/newtypes.rst @@ -962,10 +962,9 @@ done. This can be done using the :c:func:`PyErr_Fetch` and if (self->my_callback != NULL) { PyObject *err_type, *err_value, *err_traceback; - int have_error = PyErr_Occurred() ? 1 : 0; - if (have_error) - PyErr_Fetch(&err_type, &err_value, &err_traceback); + /* This saves the current exception state */ + PyErr_Fetch(&err_type, &err_value, &err_traceback); cbresult = PyObject_CallObject(self->my_callback, NULL); if (cbresult == NULL) @@ -973,8 +972,8 @@ done. This can be done using the :c:func:`PyErr_Fetch` and else Py_DECREF(cbresult); - if (have_error) - PyErr_Restore(err_type, err_value, err_traceback); + /* This restores the saved exception state */ + PyErr_Restore(err_type, err_value, err_traceback); Py_DECREF(self->my_callback); } diff --git a/Doc/library/difflib.rst b/Doc/library/difflib.rst index 836e240b830..ad1466efaae 100644 --- a/Doc/library/difflib.rst +++ b/Doc/library/difflib.rst @@ -752,7 +752,7 @@ It is also contained in the Python source distribution, as # we're passing these as arguments to the diff function fromdate = time.ctime(os.stat(fromfile).st_mtime) todate = time.ctime(os.stat(tofile).st_mtime) - with open(fromlines) as fromf, open(tofile) as tof: + with open(fromfile) as fromf, open(tofile) as tof: fromlines, tolines = list(fromf), list(tof) if options.u: diff --git a/Doc/library/email.iterators.rst b/Doc/library/email.iterators.rst index 6c7200f98af..7882718695a 100644 --- a/Doc/library/email.iterators.rst +++ b/Doc/library/email.iterators.rst @@ -68,7 +68,7 @@ The following function has been added as a useful debugging tool. It should text/plain text/plain - .. testcleanup:: + .. testsetup:: >>> somefile.close() diff --git a/Doc/library/email.policy.rst b/Doc/library/email.policy.rst index d85054ac833..54ebb1cf111 100644 --- a/Doc/library/email.policy.rst +++ b/Doc/library/email.policy.rst @@ -85,7 +85,7 @@ file on disk and pass it to the system ``sendmail`` program on a Unix system: >>> p.stdin.close() >>> rc = p.wait() -.. testcleanup:: +.. testsetup:: >>> mymsg.close() >>> mocker.stop() diff --git a/Doc/library/unittest.rst b/Doc/library/unittest.rst index 7671f653faf..845bf0a2958 100644 --- a/Doc/library/unittest.rst +++ b/Doc/library/unittest.rst @@ -897,12 +897,12 @@ Test cases Test that a warning is triggered when *callable* is called with any positional or keyword arguments that are also passed to :meth:`assertWarns`. The test passes if *warning* is triggered and - fails if it isn't. Also, any unexpected exception is an error. + fails if it isn't. Any exception is an error. To catch any of a group of warnings, a tuple containing the warning classes may be passed as *warnings*. If only the *warning* and possibly the *msg* arguments are given, - returns a context manager so that the code under test can be written + return a context manager so that the code under test can be written inline rather than as a function:: with self.assertWarns(SomeWarning): @@ -915,7 +915,7 @@ Test cases :attr:`warning` attribute, and the source line which triggered the warnings in the :attr:`filename` and :attr:`lineno` attributes. This can be useful if the intention is to perform additional checks - on the exception raised:: + on the warning caught:: with self.assertWarns(SomeWarning) as cm: do_something() diff --git a/Doc/tutorial/inputoutput.rst b/Doc/tutorial/inputoutput.rst index 744abab988e..7daf89b79bf 100644 --- a/Doc/tutorial/inputoutput.rst +++ b/Doc/tutorial/inputoutput.rst @@ -322,9 +322,11 @@ first:: >>> f.write(s) 18 -``f.tell()`` returns an integer giving the file object's current position in the -file, measured in bytes from the beginning of the file. To change the file -object's position, use ``f.seek(offset, from_what)``. The position is computed +``f.tell()`` returns an integer giving the file object's current position in the file +represented as number of bytes from the beginning of the file when in `binary mode` and +an opaque number when in `text mode`. + +To change the file object's position, use ``f.seek(offset, from_what)``. The position is computed from adding *offset* to a reference point; the reference point is selected by the *from_what* argument. A *from_what* value of 0 measures from the beginning of the file, 1 uses the current file position, and 2 uses the end of the file as @@ -345,7 +347,10 @@ beginning of the file as the reference point. :: In text files (those opened without a ``b`` in the mode string), only seeks relative to the beginning of the file are allowed (the exception being seeking -to the very file end with ``seek(0, 2)``). +to the very file end with ``seek(0, 2)``) and the only valid *offset* values are +those returned from the ``f.tell()``, or zero. Any other *offset* value produces +undefined behaviour. + When you're done with a file, call ``f.close()`` to close it and free up any system resources taken up by the open file. After calling ``f.close()``, diff --git a/Makefile.pre.in b/Makefile.pre.in index 000980271a1..73988b2ba2a 100644 --- a/Makefile.pre.in +++ b/Makefile.pre.in @@ -1012,7 +1012,7 @@ LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ tkinter/test/test_ttk site-packages test \ test/capath test/data \ test/cjkencodings test/decimaltestdata test/xmltestdata \ - test/subprocessdata test/sndhdrdata \ + test/subprocessdata test/sndhdrdata test/support \ test/tracedmodules test/encoded_modules \ test/namespace_pkgs \ test/namespace_pkgs/both_portions \