mirror of
https://github.com/python/cpython.git
synced 2025-10-10 00:43:41 +00:00
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
5 changed files with 12 additions and 58 deletions
|
@ -212,20 +212,6 @@ Windows Platform
|
||||||
only runs on Win32 compatible platforms.
|
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
|
Mac OS Platform
|
||||||
---------------
|
---------------
|
||||||
|
|
||||||
|
|
|
@ -373,8 +373,13 @@ Deprecated
|
||||||
(Contributed by Serhiy Storchaka in :issue:`33710`.)
|
(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``
|
* The ``pyvenv`` script has been removed in favor of ``python3.8 -m venv``
|
||||||
to help eliminate confusion as to what Python interpreter the ``pyvenv``
|
to help eliminate confusion as to what Python interpreter the ``pyvenv``
|
||||||
|
@ -414,6 +419,9 @@ Changes in Python behavior
|
||||||
Changes in the Python API
|
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
|
* The :meth:`~tkinter.ttk.Treeview.selection` method of the
|
||||||
:class:`tkinter.ttk.Treeview` class no longer takes arguments. Using it with
|
:class:`tkinter.ttk.Treeview` class no longer takes arguments. Using it with
|
||||||
arguments for changing the selection was deprecated in Python 3.6. Use
|
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()
|
pos = m.end()
|
||||||
return lib, version
|
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=''):
|
def _norm_version(version, build=''):
|
||||||
|
|
||||||
""" Normalize the version and build strings and return a single
|
""" Normalize the version and build strings and return a single
|
||||||
|
|
|
@ -3,9 +3,7 @@ import platform
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
import sysconfig
|
import sysconfig
|
||||||
import tempfile
|
|
||||||
import unittest
|
import unittest
|
||||||
import warnings
|
|
||||||
|
|
||||||
from test import support
|
from test import support
|
||||||
|
|
||||||
|
@ -316,37 +314,6 @@ class PlatformTest(unittest.TestCase):
|
||||||
self.assertLess(V('1.13++'), V('5.5.kw'))
|
self.assertLess(V('1.13++'), V('5.5.kw'))
|
||||||
self.assertLess(V('0.960923'), V('2.2beta29'))
|
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__':
|
if __name__ == '__main__':
|
||||||
unittest.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…
Add table
Add a link
Reference in a new issue