Skip to content

Commit f912e5a

Browse files
sobolevnhugovk
andauthored
gh-118824: Remove deprecated master_open and slave_open from pty (#118826)
Co-authored-by: Hugo van Kemenade <[email protected]>
1 parent b407ad3 commit f912e5a

File tree

3 files changed

+20
-38
lines changed

3 files changed

+20
-38
lines changed

Doc/whatsnew/3.14.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -175,6 +175,14 @@ pathlib
175175
:meth:`~pathlib.PurePath.is_relative_to`. In previous versions, any such
176176
arguments are joined onto *other*.
177177

178+
pty
179+
___
180+
181+
* Remove deprecated :func:`!pty.master_open` and :func:`!pty.slave_open`.
182+
They had previously raised a :exc:`DeprecationWarning` since Python 3.12.
183+
Use :func:`pty.openpty` instead.
184+
(Contributed by Nikita Sobolev in :gh:`118824`.)
185+
178186
sqlite3
179187
-------
180188

Lib/pty.py

Lines changed: 9 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -32,27 +32,18 @@ def openpty():
3232
except (AttributeError, OSError):
3333
pass
3434
master_fd, slave_name = _open_terminal()
35-
slave_fd = slave_open(slave_name)
36-
return master_fd, slave_fd
37-
38-
def master_open():
39-
"""master_open() -> (master_fd, slave_name)
40-
Open a pty master and return the fd, and the filename of the slave end.
41-
Deprecated, use openpty() instead."""
42-
43-
import warnings
44-
warnings.warn("Use pty.openpty() instead.", DeprecationWarning, stacklevel=2) # Remove API in 3.14
4535

36+
slave_fd = os.open(slave_name, os.O_RDWR)
4637
try:
47-
master_fd, slave_fd = os.openpty()
48-
except (AttributeError, OSError):
38+
from fcntl import ioctl, I_PUSH
39+
except ImportError:
40+
return master_fd, slave_fd
41+
try:
42+
ioctl(result, I_PUSH, "ptem")
43+
ioctl(result, I_PUSH, "ldterm")
44+
except OSError:
4945
pass
50-
else:
51-
slave_name = os.ttyname(slave_fd)
52-
os.close(slave_fd)
53-
return master_fd, slave_name
54-
55-
return _open_terminal()
46+
return master_fd, slave_fd
5647

5748
def _open_terminal():
5849
"""Open pty master and return (master_fd, tty_name)."""
@@ -66,26 +57,6 @@ def _open_terminal():
6657
return (fd, '/dev/tty' + x + y)
6758
raise OSError('out of pty devices')
6859

69-
def slave_open(tty_name):
70-
"""slave_open(tty_name) -> slave_fd
71-
Open the pty slave and acquire the controlling terminal, returning
72-
opened filedescriptor.
73-
Deprecated, use openpty() instead."""
74-
75-
import warnings
76-
warnings.warn("Use pty.openpty() instead.", DeprecationWarning, stacklevel=2) # Remove API in 3.14
77-
78-
result = os.open(tty_name, os.O_RDWR)
79-
try:
80-
from fcntl import ioctl, I_PUSH
81-
except ImportError:
82-
return result
83-
try:
84-
ioctl(result, I_PUSH, "ptem")
85-
ioctl(result, I_PUSH, "ldterm")
86-
except OSError:
87-
pass
88-
return result
8960

9061
def fork():
9162
"""fork() -> (pid, master_fd)
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
Remove deprecated :func:`!pty.master_open` and :func:`!pty.slave_open`.
2+
Use :func:`pty.openpty` instead.
3+
Patch by Nikita Sobolev.

0 commit comments

Comments
 (0)