summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNikita Sobolev <mail@sobolevn.me>2024-05-28 13:42:35 (GMT)
committerGitHub <noreply@github.com>2024-05-28 13:42:35 (GMT)
commitf912e5a2f6d128b17f85229b722422e4a2478e23 (patch)
tree85c00054c83116a26646a64ba999eed647d87059
parentb407ad38fb93585332c370b8fa56905fb238cdfd (diff)
downloadcpython-f912e5a2f6d128b17f85229b722422e4a2478e23.zip
cpython-f912e5a2f6d128b17f85229b722422e4a2478e23.tar.gz
cpython-f912e5a2f6d128b17f85229b722422e4a2478e23.tar.bz2
gh-118824: Remove deprecated `master_open` and `slave_open` from `pty` (#118826)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
-rw-r--r--Doc/whatsnew/3.14.rst8
-rw-r--r--Lib/pty.py47
-rw-r--r--Misc/NEWS.d/next/Library/2024-05-09-11-50-26.gh-issue-118824.-jBJQC.rst3
3 files changed, 20 insertions, 38 deletions
diff --git a/Doc/whatsnew/3.14.rst b/Doc/whatsnew/3.14.rst
index bc12d4b..1521647 100644
--- a/Doc/whatsnew/3.14.rst
+++ b/Doc/whatsnew/3.14.rst
@@ -175,6 +175,14 @@ pathlib
:meth:`~pathlib.PurePath.is_relative_to`. In previous versions, any such
arguments are joined onto *other*.
+pty
+___
+
+* Remove deprecated :func:`!pty.master_open` and :func:`!pty.slave_open`.
+ They had previously raised a :exc:`DeprecationWarning` since Python 3.12.
+ Use :func:`pty.openpty` instead.
+ (Contributed by Nikita Sobolev in :gh:`118824`.)
+
sqlite3
-------
diff --git a/Lib/pty.py b/Lib/pty.py
index 1d97994..eb3d5f1 100644
--- a/Lib/pty.py
+++ b/Lib/pty.py
@@ -32,27 +32,18 @@ def openpty():
except (AttributeError, OSError):
pass
master_fd, slave_name = _open_terminal()
- slave_fd = slave_open(slave_name)
- return master_fd, slave_fd
-
-def master_open():
- """master_open() -> (master_fd, slave_name)
- Open a pty master and return the fd, and the filename of the slave end.
- Deprecated, use openpty() instead."""
-
- import warnings
- warnings.warn("Use pty.openpty() instead.", DeprecationWarning, stacklevel=2) # Remove API in 3.14
+ slave_fd = os.open(slave_name, os.O_RDWR)
try:
- master_fd, slave_fd = os.openpty()
- except (AttributeError, OSError):
+ from fcntl import ioctl, I_PUSH
+ except ImportError:
+ return master_fd, slave_fd
+ try:
+ ioctl(result, I_PUSH, "ptem")
+ ioctl(result, I_PUSH, "ldterm")
+ except OSError:
pass
- else:
- slave_name = os.ttyname(slave_fd)
- os.close(slave_fd)
- return master_fd, slave_name
-
- return _open_terminal()
+ return master_fd, slave_fd
def _open_terminal():
"""Open pty master and return (master_fd, tty_name)."""
@@ -66,26 +57,6 @@ def _open_terminal():
return (fd, '/dev/tty' + x + y)
raise OSError('out of pty devices')
-def slave_open(tty_name):
- """slave_open(tty_name) -> slave_fd
- Open the pty slave and acquire the controlling terminal, returning
- opened filedescriptor.
- Deprecated, use openpty() instead."""
-
- import warnings
- warnings.warn("Use pty.openpty() instead.", DeprecationWarning, stacklevel=2) # Remove API in 3.14
-
- result = os.open(tty_name, os.O_RDWR)
- try:
- from fcntl import ioctl, I_PUSH
- except ImportError:
- return result
- try:
- ioctl(result, I_PUSH, "ptem")
- ioctl(result, I_PUSH, "ldterm")
- except OSError:
- pass
- return result
def fork():
"""fork() -> (pid, master_fd)
diff --git a/Misc/NEWS.d/next/Library/2024-05-09-11-50-26.gh-issue-118824.-jBJQC.rst b/Misc/NEWS.d/next/Library/2024-05-09-11-50-26.gh-issue-118824.-jBJQC.rst
new file mode 100644
index 0000000..c9254f1
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2024-05-09-11-50-26.gh-issue-118824.-jBJQC.rst
@@ -0,0 +1,3 @@
+Remove deprecated :func:`!pty.master_open` and :func:`!pty.slave_open`.
+Use :func:`pty.openpty` instead.
+Patch by Nikita Sobolev.