Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
4f09806e
Commit
4f09806e
authored
Nov 28, 2015
by
R David Murray
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
#25485: Add context manager support to Telnet class.
Patch by Stéphane Wirtel.
parent
37f54219
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
35 additions
and
5 deletions
+35
-5
Doc/library/telnetlib.rst
Doc/library/telnetlib.rst
+11
-0
Doc/whatsnew/3.6.rst
Doc/whatsnew/3.6.rst
+7
-0
Lib/telnetlib.py
Lib/telnetlib.py
+10
-5
Lib/test/test_telnetlib.py
Lib/test/test_telnetlib.py
+5
-0
Misc/NEWS
Misc/NEWS
+2
-0
No files found.
Doc/library/telnetlib.rst
View file @
4f09806e
...
...
@@ -43,6 +43,17 @@ Character), EL (Erase Line), GA (Go Ahead), SB (Subnegotiation Begin).
:exc:`EOFError` when the end of the connection is read, because they can return
an empty string for other reasons. See the individual descriptions below.
A :class:`Telnet` object is a context manager and can be used in a
:keyword:`with` statement. When the :keyword:`with` block ends, the
:meth:`close` method is called::
>>> from telnetlib import Telnet
>>> with Telnet('localhost', 23) as tn:
... tn.interact()
...
.. versionchanged:: 3.6 Context manager support added
.. seealso::
...
...
Doc/whatsnew/3.6.rst
View file @
4f09806e
...
...
@@ -125,6 +125,13 @@ Previously, names of properties and slots which were not yet created on
an instance were excluded. (Contributed by Martin Panter in :issue:`25590`.)
telnetlib
---------
:class:`~telnetlib.Telnet` is now a context manager (contributed by
Stéphane Wirtel in :issue:`25485`).
urllib.robotparser
------------------
...
...
Lib/telnetlib.py
View file @
4f09806e
...
...
@@ -637,6 +637,12 @@ class Telnet:
raise
EOFError
return
(
-
1
,
None
,
text
)
def
__enter__
(
self
):
return
self
def
__exit__
(
self
,
type
,
value
,
traceback
):
self
.
close
()
def
test
():
"""Test program for telnetlib.
...
...
@@ -660,11 +666,10 @@ def test():
port
=
int
(
portstr
)
except
ValueError
:
port
=
socket
.
getservbyname
(
portstr
,
'tcp'
)
tn
=
Telnet
()
tn
.
set_debuglevel
(
debuglevel
)
tn
.
open
(
host
,
port
,
timeout
=
0.5
)
tn
.
interact
()
tn
.
close
()
with
Telnet
()
as
tn
:
tn
.
set_debuglevel
(
debuglevel
)
tn
.
open
(
host
,
port
,
timeout
=
0.5
)
tn
.
interact
()
if
__name__
==
'__main__'
:
test
()
Lib/test/test_telnetlib.py
View file @
4f09806e
...
...
@@ -42,6 +42,11 @@ class GeneralTests(TestCase):
telnet
=
telnetlib
.
Telnet
(
HOST
,
self
.
port
)
telnet
.
sock
.
close
()
def
testContextManager
(
self
):
with
telnetlib
.
Telnet
(
HOST
,
self
.
port
)
as
tn
:
self
.
assertIsNotNone
(
tn
.
get_socket
())
self
.
assertIsNone
(
tn
.
get_socket
())
def
testTimeoutDefault
(
self
):
self
.
assertTrue
(
socket
.
getdefaulttimeout
()
is
None
)
socket
.
setdefaulttimeout
(
30
)
...
...
Misc/NEWS
View file @
4f09806e
...
...
@@ -10,6 +10,8 @@ Release date: XXXX-XX-XX
Core and Builtins
-----------------
- Issue #25485: telnetlib.Telnet is now a context manager.
- Issue #24097: Fixed crash in object.__reduce__() if slot name is freed inside
__getattr__.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment