bpo-35345: Remove platform.popen() (GH-10781)
Remove platform.popen() function, it was deprecated since Python 3.3: use os.popen() instead. Rename also the "Removed" section to "API and Feature Removals" of What's New in Python 3.8.
This commit is contained in:
parent
7cc1fa40b7
commit
73104fa1e6
|
@ -212,20 +212,6 @@ Windows Platform
|
|||
only runs on Win32 compatible platforms.
|
||||
|
||||
|
||||
Win95/98 specific
|
||||
^^^^^^^^^^^^^^^^^
|
||||
|
||||
.. function:: popen(cmd, mode='r', bufsize=-1)
|
||||
|
||||
Portable :func:`popen` interface. Find a working popen implementation
|
||||
preferring :func:`win32pipe.popen`. On Windows NT, :func:`win32pipe.popen`
|
||||
should work; on Windows 9x it hangs due to bugs in the MS C library.
|
||||
|
||||
.. deprecated:: 3.3
|
||||
This function is obsolete. Use the :mod:`subprocess` module. Check
|
||||
especially the :ref:`subprocess-replacements` section.
|
||||
|
||||
|
||||
Mac OS Platform
|
||||
---------------
|
||||
|
||||
|
|
|
@ -373,8 +373,13 @@ Deprecated
|
|||
(Contributed by Serhiy Storchaka in :issue:`33710`.)
|
||||
|
||||
|
||||
Removed
|
||||
=======
|
||||
API and Feature Removals
|
||||
========================
|
||||
|
||||
The following features and APIs have been removed from Python 3.8:
|
||||
|
||||
* The function :func:`platform.popen` has been removed, it was deprecated since
|
||||
Python 3.3: use :func:`os.popen` instead.
|
||||
|
||||
* The ``pyvenv`` script has been removed in favor of ``python3.8 -m venv``
|
||||
to help eliminate confusion as to what Python interpreter the ``pyvenv``
|
||||
|
@ -414,6 +419,9 @@ Changes in Python behavior
|
|||
Changes in the Python API
|
||||
-------------------------
|
||||
|
||||
* The function :func:`platform.popen` has been removed, it was deprecated since
|
||||
Python 3.3: use :func:`os.popen` instead.
|
||||
|
||||
* The :meth:`~tkinter.ttk.Treeview.selection` method of the
|
||||
:class:`tkinter.ttk.Treeview` class no longer takes arguments. Using it with
|
||||
arguments for changing the selection was deprecated in Python 3.6. Use
|
||||
|
|
|
@ -227,15 +227,6 @@ def libc_ver(executable=sys.executable, lib='', version='', chunksize=16384):
|
|||
pos = m.end()
|
||||
return lib, version
|
||||
|
||||
def popen(cmd, mode='r', bufsize=-1):
|
||||
|
||||
""" Portable popen() interface.
|
||||
"""
|
||||
import warnings
|
||||
warnings.warn('use os.popen instead', DeprecationWarning, stacklevel=2)
|
||||
return os.popen(cmd, mode, bufsize)
|
||||
|
||||
|
||||
def _norm_version(version, build=''):
|
||||
|
||||
""" Normalize the version and build strings and return a single
|
||||
|
|
|
@ -3,9 +3,7 @@ import platform
|
|||
import subprocess
|
||||
import sys
|
||||
import sysconfig
|
||||
import tempfile
|
||||
import unittest
|
||||
import warnings
|
||||
|
||||
from test import support
|
||||
|
||||
|
@ -316,37 +314,6 @@ class PlatformTest(unittest.TestCase):
|
|||
self.assertLess(V('1.13++'), V('5.5.kw'))
|
||||
self.assertLess(V('0.960923'), V('2.2beta29'))
|
||||
|
||||
def test_popen(self):
|
||||
mswindows = (sys.platform == "win32")
|
||||
|
||||
if mswindows:
|
||||
command = '"{}" -c "print(\'Hello\')"'.format(sys.executable)
|
||||
else:
|
||||
command = "'{}' -c 'print(\"Hello\")'".format(sys.executable)
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter("ignore", DeprecationWarning)
|
||||
with platform.popen(command) as stdout:
|
||||
hello = stdout.read().strip()
|
||||
stdout.close()
|
||||
self.assertEqual(hello, "Hello")
|
||||
|
||||
data = 'plop'
|
||||
if mswindows:
|
||||
command = '"{}" -c "import sys; data=sys.stdin.read(); exit(len(data))"'
|
||||
else:
|
||||
command = "'{}' -c 'import sys; data=sys.stdin.read(); exit(len(data))'"
|
||||
command = command.format(sys.executable)
|
||||
with warnings.catch_warnings():
|
||||
warnings.simplefilter("ignore", DeprecationWarning)
|
||||
with platform.popen(command, 'w') as stdin:
|
||||
stdout = stdin.write(data)
|
||||
ret = stdin.close()
|
||||
self.assertIsNotNone(ret)
|
||||
if os.name == 'nt':
|
||||
returncode = ret
|
||||
else:
|
||||
returncode = ret >> 8
|
||||
self.assertEqual(returncode, len(data))
|
||||
|
||||
if __name__ == '__main__':
|
||||
unittest.main()
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
The function `platform.popen` has been removed, it was deprecated since Python
|
||||
3.3: use :func:`os.popen` instead.
|
Loading…
Reference in New Issue