PEP 433: inherance => inheritance

This commit is contained in:
Victor Stinner 2013-01-30 09:51:02 +01:00
parent 8794e08fd7
commit e3240efb66
1 changed files with 11 additions and 11 deletions

View File

@ -38,7 +38,7 @@ inherited; the file descriptor is inherited by child processes if the
close-on-exec flag is cleared and if ``CreateProcess()`` is called with close-on-exec flag is cleared and if ``CreateProcess()`` is called with
the *bInheritHandles* parameter set to ``TRUE`` (when the *bInheritHandles* parameter set to ``TRUE`` (when
``subprocess.Popen`` is created with ``close_fds=False`` for example). ``subprocess.Popen`` is created with ``close_fds=False`` for example).
Windows does now have "close-on-exec" flag but an inherance flag which Windows does now have "close-on-exec" flag but an inheritance flag which
is just the opposite value. For example, setting close-on-exec flag is just the opposite value. For example, setting close-on-exec flag
means clearing the ``HANDLE_FLAG_INHERIT`` flag of an handle. means clearing the ``HANDLE_FLAG_INHERIT`` flag of an handle.
@ -235,7 +235,7 @@ Drawbacks of the proposal:
* It is not more possible to know if the close-on-exec flag will be * It is not more possible to know if the close-on-exec flag will be
set or not on a newly created file descriptor just by reading the set or not on a newly created file descriptor just by reading the
source code. source code.
* If the inherance of a file descriptor matters, the *cloexec* * If the inheritance of a file descriptor matters, the *cloexec*
parameter must now be specified explicitly, or the library or the parameter must now be specified explicitly, or the library or the
application will not work depending on the default value of the application will not work depending on the default value of the
*cloexec* parameter. *cloexec* parameter.
@ -244,12 +244,12 @@ Drawbacks of the proposal:
Alternatives Alternatives
============ ============
Enable inherance by default and no configurable default Inheritance enabled by default, default no configurable
------------------------------------------------------- -------------------------------------------------------
Add a new optional parameter *cloexec* on functions creating file Add a new optional parameter *cloexec* on functions creating file
descriptors. The default value of the *cloexec* parameter is ``False``, descriptors. The default value of the *cloexec* parameter is ``False``,
and this default cannot be changed. No file descriptor inherance by and this default cannot be changed. No file descriptor inheritance by
default is also the default on POSIX and on Windows. This alternative is default is also the default on POSIX and on Windows. This alternative is
the most convervative option. the most convervative option.
@ -259,8 +259,8 @@ file descriptors have to be modified to set *cloexec=True* in each
module used by an application to fix all these issues. module used by an application to fix all these issues.
Enable inherance by default, default can only be set to True Inheritance enabled by default, default can only be set to True
------------------------------------------------------------ ---------------------------------------------------------------
This alternative is based on the proposal: the only difference is that This alternative is based on the proposal: the only difference is that
``sys.setdefaultcloexec()`` does not take any argument, it can only be ``sys.setdefaultcloexec()`` does not take any argument, it can only be
@ -286,7 +286,7 @@ Advantages of setting close-on-exec flag by default:
* There are far more programs that are bitten by FD inheritance upon * There are far more programs that are bitten by FD inheritance upon
exec (see `Inherited file descriptors issues`_ and `Security`_) exec (see `Inherited file descriptors issues`_ and `Security`_)
than programs relying on it (see `Applications using inherance of than programs relying on it (see `Applications using inheritance of
file descriptors`_). file descriptors`_).
Drawbacks of setting close-on-exec flag by default: Drawbacks of setting close-on-exec flag by default:
@ -302,7 +302,7 @@ Drawbacks of setting close-on-exec flag by default:
* Extra system calls, if any, may slow down Python: see * Extra system calls, if any, may slow down Python: see
`Performances`_. `Performances`_.
Backward compatibility: only a few programs rely on inherance of file Backward compatibility: only a few programs rely on inheritance of file
descriptors, and they only pass a few file descriptors, usually just descriptors, and they only pass a few file descriptors, usually just
one. These programs will fail immediatly with ``EBADF`` error, and it one. These programs will fail immediatly with ``EBADF`` error, and it
will be simple to fix them: add ``cloexec=False`` parameter or use will be simple to fix them: add ``cloexec=False`` parameter or use
@ -366,11 +366,11 @@ Bikeshedding on the name of the new parameter
Applications using inherance of file descriptors Applications using inheritance of file descriptors
================================================ ==================================================
Most developers don't know that file descriptors are inherited by Most developers don't know that file descriptors are inherited by
default. Most programs do not rely on inherance of file descriptors. default. Most programs do not rely on inheritance of file descriptors.
For example, ``subprocess.Popen`` was changed in Python 3.2 to close For example, ``subprocess.Popen`` was changed in Python 3.2 to close
all file descriptors greater than 2 in the child process by default. all file descriptors greater than 2 in the child process by default.
No user complained about this behavior change yet. No user complained about this behavior change yet.