summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-07-05 08:48:21 (GMT)
committerGitHub <noreply@github.com>2019-07-05 08:48:21 (GMT)
commitc3ef1a5244ff2a5d25b7186b96d027a446bf0452 (patch)
tree54424e16cf3ce06da7f1cd5eaddd8cbc3ef18209
parent50dc82e790bc3f87123bbb4adc8d3522fdf38b02 (diff)
downloadcpython-c3ef1a5244ff2a5d25b7186b96d027a446bf0452.zip
cpython-c3ef1a5244ff2a5d25b7186b96d027a446bf0452.tar.gz
cpython-c3ef1a5244ff2a5d25b7186b96d027a446bf0452.tar.bz2
Use OSError subclasses in os documentation (GH-14262)
(cherry picked from commit a55f75a6e3e9cda5c7c30bd961386b1a8a2e9892) Co-authored-by: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com>
-rw-r--r--Doc/library/os.rst41
1 files changed, 24 insertions, 17 deletions
diff --git a/Doc/library/os.rst b/Doc/library/os.rst
index ee3c35c..6e8df88 100644
--- a/Doc/library/os.rst
+++ b/Doc/library/os.rst
@@ -36,9 +36,9 @@ Notes on the availability of these functions:
.. note::
- All functions in this module raise :exc:`OSError` in the case of invalid or
- inaccessible file names and paths, or other arguments that have the correct
- type, but are not accepted by the operating system.
+ All functions in this module raise :exc:`OSError` (or subclasses thereof) in
+ the case of invalid or inaccessible file names and paths, or other arguments
+ that have the correct type, but are not accepted by the operating system.
.. exception:: error
@@ -1898,8 +1898,8 @@ features:
directories you can set the umask before invoking :func:`makedirs`. The
file permission bits of existing parent directories are not changed.
- If *exist_ok* is ``False`` (the default), an :exc:`OSError` is raised if the
- target directory already exists.
+ If *exist_ok* is ``False`` (the default), an :exc:`FileExistsError` is
+ raised if the target directory already exists.
.. note::
@@ -2052,8 +2052,8 @@ features:
.. function:: remove(path, *, dir_fd=None)
- Remove (delete) the file *path*. If *path* is a directory, :exc:`OSError` is
- raised. Use :func:`rmdir` to remove directories.
+ Remove (delete) the file *path*. If *path* is a directory, an
+ :exc:`IsADirectoryError` is raised. Use :func:`rmdir` to remove directories.
This function can support :ref:`paths relative to directory descriptors
<dir_fd>`.
@@ -2090,13 +2090,19 @@ features:
.. function:: rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
- Rename the file or directory *src* to *dst*. If *dst* is a directory,
- :exc:`OSError` will be raised. On Unix, if *dst* exists and is a file, it will
- be replaced silently if the user has permission. The operation may fail on some
- Unix flavors if *src* and *dst* are on different filesystems. If successful,
- the renaming will be an atomic operation (this is a POSIX requirement). On
- Windows, if *dst* already exists, :exc:`OSError` will be raised even if it is a
- file.
+ Rename the file or directory *src* to *dst*. If *dst* exists, the operation
+ will fail with an :exc:`OSError` subclass in a number of cases:
+
+ On Windows, if *dst* exists a :exc:`FileExistsError` is always raised.
+
+ On Unix, if *src* is a file and *dst* is a directory or vice-versa, anq:q
+ :exc:`IsADirectoryError` or a :exc:`NotADirectoryError` will be raised
+ respectively. If both are directories and *dst* is empty, *dst* will be
+ silently replaced. If *dst* is a non-empty directory, an :exc:`OSError`
+ is raised. If both are files, *dst* it will be replaced silently if the user
+ has permission. The operation may fail on some Unix flavors if *src* and
+ *dst* are on different filesystems. If successful, the renaming will be an
+ atomic operation (this is a POSIX requirement).
This function can support specifying *src_dir_fd* and/or *dst_dir_fd* to
supply :ref:`paths relative to directory descriptors <dir_fd>`.
@@ -2145,9 +2151,10 @@ features:
.. function:: rmdir(path, *, dir_fd=None)
- Remove (delete) the directory *path*. Only works when the directory is
- empty, otherwise, :exc:`OSError` is raised. In order to remove whole
- directory trees, :func:`shutil.rmtree` can be used.
+ Remove (delete) the directory *path*. If the directory does not exist or is
+ not empty, an :exc:`FileNotFoundError` or an :exc:`OSError` is raised
+ respectively. In order to remove whole directory trees,
+ :func:`shutil.rmtree` can be used.
This function can support :ref:`paths relative to directory descriptors
<dir_fd>`.