blob: 7db7d8465e2186f9498e4d9ac01341d2926efb3d (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
|
-----------------
2019-05-20 3.5.4
-----------------
* Promoted 3.5.4rc2 to become 3.5.4.
-----------------
2019-05-13 3.5.4rc2
-----------------
* GitHub [#57]: TimeoutExpired and CalledProcessError exceptions can now
be unpickled.
-----------------
2019-05-10 3.5.4rc1
-----------------
* GitHub [#61]: Backport the fixes for https://bugs.python.org/issue10963,
https://bugs.python.org/issue19612, and https://bugs.python.org/issue30418.
When a child process was so short lived it dies or closes its pipes before
you call communicate(). When supplying stdin or reading its output in
this scenario, do not raise an unexpected broken pipe or interrupted
system call exception.
-----------------
2018-10-09 3.5.3
-----------------
* Disallow ridiculously large numbers (millions) of arguments. [#54]
-----------------
2018-06-07 3.5.2
-----------------
* Explicitly include <signal.h> in _posixsubprocess_helpers.c; it already
gets configure checked and pulled in via Python's own <Python.h> in many
circumstances but it is better to be explicit. #IWYU
If you were using subprocess32 on a Python interpreter built *without*
the --with-fpectl configure option enabled, restore_signals is now
useful rather than a no-op. I do not know if such builds were common.
* Adds a functional test for restore_signals=True behavior.
-----------------
2018-05-21 3.5.1
-----------------
* Fix AttributeError: 'module' object has no attribute 'Signals' when
constructing a CalledProcessError exception. [#49]
-----------------
2018-05-13 3.5.0 (3.5.0rc3)
-----------------
* Fixed the packaging problem where the stdlib python3_redirect shim is
supposed to be installed on Python 3.
* Renamed _posixsubprocess to _posixsubprocess32 for consistency.
* Unset CLOEXEC on file descriptors given to Popen pass_fds. (GH #4)
* Drop support for Python 2.4 and 2.5.
* Adds a configure script - run by setup.py - to supply the missing feature
#define's for the _posixsubprocess32 extension module for the things that
Python 2's own configure generated pyconfig.h does not already provide.
-----------------
2017-10-18 3.5.0rc1
-----------------
* Backport the new subprocess.run() API from Python 3.5.
* Backport subprocess.DEVNULL support from 3.3.
* Allow stderr to be redirected to stdout even when stdout is not redirected.
https://bugs.python.org/issue22274
* Fix subprocess.Popen.wait() when the child process has exited to a
a stopped instead of terminated state (ex: when under ptrace).
https://bugs.python.org/issue29335
* Include the private API needed by the multiprocessing module for people who
want to drop subprocess32 in as a replacement for their standard library
subprocess module.
* Fix a compilation issue regarding O_CLOEXEC not being defined on ancient
Linux distros such as RHEL 5.
-----------------
2015-11-15 3.2.7
-----------------
* Issue #6973: When we know a subprocess.Popen process has died, do
not allow the send_signal(), terminate(), or kill() methods to do
anything as they could potentially signal a different process.
* Issue #23564: Fixed a partially broken sanity check in the _posixsubprocess
internals regarding how fds_to_pass were passed to the child. The bug had
no actual impact as subprocess32.py already avoided it.
-----------------
2015-11-14 3.2.7rc2
-----------------
* Moved the repository from code.google.com to github.
* Added a _WAIT_TIMEOUT to satisfy the unsupported people entirely on
their own trying to use this on Windows.
* Similarly: Updated setup.py to not build the extension on non-posix.
-----------------
2014-06-01 3.2.7rc1
-----------------
* Issue #21618: The subprocess module could fail to close open fds that were
inherited by the calling process and already higher than POSIX resource
limits would otherwise allow. On systems with a functioning /proc/self/fd
or /dev/fd interface the max is now ignored and all fds are closed.
-----------------
2014-04-23 3.2.6
-----------------
* Fixes issue #21291: Popen.wait() is now thread safe so that multiple
threads may be calling wait() or poll() on a Popen instance at the same time
without losing the Popen.returncode value.
* Fixes issue #14396: Handle the odd rare case of waitpid returning 0 when not
expected in Popen.wait().
* Fixes issue #16962: Use getdents64 instead of the obsolete getdents syscall
on Linux. Some architectures do not implement the latter.
-----------------
2013-12-10 3.2.5
-----------------
* Fixes issue #15798: subprocess.Popen() no longer fails if file
descriptor 0, 1 or 2 is closed.
* Fixes issue #18763: close_fd file descriptors are now closed after
any preexec_fn call.
-----------------
2013-06-15 3.2.5rc1
-----------------
* Fixes issue #16650 - Don't reference ECHILD from outside the local scope.
* Unittests no longer spew any test data for human verification to stdout.
* Remove a bare print to stdout that could have happened if the child process
wrote garbage to its pre-exec error pipe.
* Fixes issue #16327 - the subprocess module no longer leaks file descriptors
used for stdin/stdout/stderr pipes to the child when the fork() fails. It
also no longer potentially double closes these pipe fds.
* Correct the Python version check around use of imp_module to specify 2.6.3
as the minimum version that exists in. Why is anyone using such an old 2.6?
* Fixes Issue #16114: The subprocess module no longer provides a misleading
error message stating that args[0] did not exist when either the cwd or
executable keyword arguments specified a path that did not exist.
* Add more Popen cwd tests.
* Handle errno.ECHILD in poll.
* Don't leak a reference to the gc module on capi use error.
* Check return value to avoid a crash if the capi were misused.
* Check result of PyObject_IsTrue().
* Adds test_universal_newlines_communicate_input_none.
* Most everything above consists of backports. See the hg logs for their
upstream hg.python.org cpython revision numbers.
----------------
2012-06-10 3.2.3
----------------
* Fixes the references to the 'surrogateescape' unicode encoding error
handler that does not exist in Python 2.x. 'strict' is used so that
a UnicodeEncodeError exception is raised in these situations. These
MAY occur if your sys.getfilesystemencoding() is not UTF-8 and
attempt to use a non-ascii executable, args or env values. Prior to
this change, those would result in a hard to debug LookupError for
surrogateescape.
* Issue #15000: Support the "unique" x32 architecture in _posixsubprocess.c.
* Fix a compilation problem when O_CLOEXEC is not defined.
------------------
2012-02-18 3.2.3b1
------------------
This release brings in the last year and a half's worth of bugfixes and
improvements to Python 3.2's subprocess module:
Off the top of my head, some major bugfix highlights include:
* Timeout support on the APIs.
* close_fds=True is now the default (as it is in 3.2) and performs much faster.
* Fixed EINTR handling.
* Fixed SIGCHLD handling.
* Fixed several race conditions.
* Many more bug fixes too numerous to list.
You can grep out the full list of improvements related to subprocess in:
http://hg.python.org/cpython/file/9ce5d456138b/Misc/NEWS
-------------
2010-06 3.2.0
-------------
This was the first release. Roughly equivalent to Python 3.2.0a1.
|