]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-118824: Remove deprecated `master_open` and `slave_open` from `pty` (#118826)
authorNikita Sobolev <mail@sobolevn.me>
Tue, 28 May 2024 13:42:35 +0000 (16:42 +0300)
committerGitHub <noreply@github.com>
Tue, 28 May 2024 13:42:35 +0000 (16:42 +0300)
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Doc/whatsnew/3.14.rst
Lib/pty.py
Misc/NEWS.d/next/Library/2024-05-09-11-50-26.gh-issue-118824.-jBJQC.rst [new file with mode: 0644]

index bc12d4b3b590ddd1702b78d108cd72b8d0b5caa7..15216479cc6e5c5a58de7690f864b948b26d8a7c 100644 (file)
@@ -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
 -------
 
index 1d97994abef3c888655cd4ebb356a3e8046545de..eb3d5f1ff657bb21b1807ba3b6b015c726d6cc7d 100644 (file)
@@ -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 (file)
index 0000000..c9254f1
--- /dev/null
@@ -0,0 +1,3 @@
+Remove deprecated :func:`!pty.master_open` and :func:`!pty.slave_open`.
+Use :func:`pty.openpty` instead.
+Patch by Nikita Sobolev.