Merge ~cjwatson/lazr.sshserver:pyupgrade into lazr.sshserver:main
- Git
- lp:~cjwatson/lazr.sshserver
- pyupgrade
- Merge into main
Proposed by
Colin Watson
Status: | Merged |
---|---|
Merged at revision: | 15d3b420dc7e4e34241d71f171a3f56097b23bc0 |
Proposed branch: | ~cjwatson/lazr.sshserver:pyupgrade |
Merge into: | lazr.sshserver:main |
Diff against target: |
323 lines (+20/-53) 14 files modified
.pre-commit-config.yaml (+4/-0) src/lazr/sshserver/__init__.py (+0/-1) src/lazr/sshserver/accesslog.py (+0/-3) src/lazr/sshserver/auth.py (+1/-4) src/lazr/sshserver/events.py (+0/-3) src/lazr/sshserver/service.py (+1/-4) src/lazr/sshserver/session.py (+1/-4) src/lazr/sshserver/sftp.py (+1/-6) src/lazr/sshserver/tests/__init__.py (+0/-1) src/lazr/sshserver/tests/test_accesslog.py (+2/-6) src/lazr/sshserver/tests/test_auth.py (+7/-11) src/lazr/sshserver/tests/test_events.py (+1/-5) src/lazr/sshserver/tests/test_session.py (+1/-5) tox.ini (+1/-0) |
Related bugs: |
Reviewer | Review Type | Date Requested | Status |
---|---|---|---|
Jürgen Gmach | Approve | ||
Review via email: mp+437443@code.launchpad.net |
Commit message
Run pyupgrade
Description of the change
To post a comment you must log in.
Revision history for this message
Jürgen Gmach (jugmac00) : | # |
review:
Approve
Preview Diff
[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1 | diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml | |||
2 | index 0837591..76be99b 100644 | |||
3 | --- a/.pre-commit-config.yaml | |||
4 | +++ b/.pre-commit-config.yaml | |||
5 | @@ -14,6 +14,10 @@ repos: | |||
6 | 14 | - id: debug-statements | 14 | - id: debug-statements |
7 | 15 | - id: end-of-file-fixer | 15 | - id: end-of-file-fixer |
8 | 16 | - id: trailing-whitespace | 16 | - id: trailing-whitespace |
9 | 17 | - repo: https://github.com/asottile/pyupgrade | ||
10 | 18 | rev: v3.3.1 | ||
11 | 19 | hooks: | ||
12 | 20 | - id: pyupgrade | ||
13 | 17 | - repo: https://github.com/psf/black | 21 | - repo: https://github.com/psf/black |
14 | 18 | rev: 22.12.0 | 22 | rev: 22.12.0 |
15 | 19 | hooks: | 23 | hooks: |
16 | diff --git a/src/lazr/sshserver/__init__.py b/src/lazr/sshserver/__init__.py | |||
17 | index f688203..a8bf348 100644 | |||
18 | --- a/src/lazr/sshserver/__init__.py | |||
19 | +++ b/src/lazr/sshserver/__init__.py | |||
20 | @@ -16,7 +16,6 @@ | |||
21 | 16 | 16 | ||
22 | 17 | "The lazr.sshserver package." | 17 | "The lazr.sshserver package." |
23 | 18 | 18 | ||
24 | 19 | __metaclass__ = type | ||
25 | 20 | __all__ = [] | 19 | __all__ = [] |
26 | 21 | 20 | ||
27 | 22 | try: | 21 | try: |
28 | diff --git a/src/lazr/sshserver/accesslog.py b/src/lazr/sshserver/accesslog.py | |||
29 | index c18c7a9..b4f04be 100644 | |||
30 | --- a/src/lazr/sshserver/accesslog.py | |||
31 | +++ b/src/lazr/sshserver/accesslog.py | |||
32 | @@ -3,9 +3,6 @@ | |||
33 | 3 | 3 | ||
34 | 4 | """Logging for the SSH server.""" | 4 | """Logging for the SSH server.""" |
35 | 5 | 5 | ||
36 | 6 | from __future__ import absolute_import, print_function | ||
37 | 7 | |||
38 | 8 | __metaclass__ = type | ||
39 | 9 | __all__ = [ | 6 | __all__ = [ |
40 | 10 | "LoggingManager", | 7 | "LoggingManager", |
41 | 11 | ] | 8 | ] |
42 | diff --git a/src/lazr/sshserver/auth.py b/src/lazr/sshserver/auth.py | |||
43 | index 8bfc634..84aabac 100644 | |||
44 | --- a/src/lazr/sshserver/auth.py | |||
45 | +++ b/src/lazr/sshserver/auth.py | |||
46 | @@ -9,9 +9,6 @@ Launchpad's SSH server authenticates users against a XML-RPC service (see | |||
47 | 9 | case of failed authentication (see `SSHUserAuthServer`). | 9 | case of failed authentication (see `SSHUserAuthServer`). |
48 | 10 | """ | 10 | """ |
49 | 11 | 11 | ||
50 | 12 | from __future__ import absolute_import, print_function | ||
51 | 13 | |||
52 | 14 | __metaclass__ = type | ||
53 | 15 | __all__ = [ | 12 | __all__ = [ |
54 | 16 | "LaunchpadAvatar", | 13 | "LaunchpadAvatar", |
55 | 17 | "PublicKeyFromLaunchpadChecker", | 14 | "PublicKeyFromLaunchpadChecker", |
56 | @@ -53,7 +50,7 @@ class NoSuchPersonWithName(xmlrpc.Fault): | |||
57 | 53 | msg_template = "No such person or team: %(person_name)s" | 50 | msg_template = "No such person or team: %(person_name)s" |
58 | 54 | 51 | ||
59 | 55 | def __init__(self, person_name): | 52 | def __init__(self, person_name): |
61 | 56 | super(NoSuchPersonWithName, self).__init__( | 53 | super().__init__( |
62 | 57 | self.error_code, self.msg_template % {"person_name": person_name} | 54 | self.error_code, self.msg_template % {"person_name": person_name} |
63 | 58 | ) | 55 | ) |
64 | 59 | 56 | ||
65 | diff --git a/src/lazr/sshserver/events.py b/src/lazr/sshserver/events.py | |||
66 | index 5d0165b..c58d59a 100644 | |||
67 | --- a/src/lazr/sshserver/events.py | |||
68 | +++ b/src/lazr/sshserver/events.py | |||
69 | @@ -3,9 +3,6 @@ | |||
70 | 3 | 3 | ||
71 | 4 | """Events generated by the SSH server.""" | 4 | """Events generated by the SSH server.""" |
72 | 5 | 5 | ||
73 | 6 | from __future__ import absolute_import, print_function | ||
74 | 7 | |||
75 | 8 | __metaclass__ = type | ||
76 | 9 | __all__ = [ | 6 | __all__ = [ |
77 | 10 | "AuthenticationFailed", | 7 | "AuthenticationFailed", |
78 | 11 | "AvatarEvent", | 8 | "AvatarEvent", |
79 | diff --git a/src/lazr/sshserver/service.py b/src/lazr/sshserver/service.py | |||
80 | index 2d0622f..f9a8960 100644 | |||
81 | --- a/src/lazr/sshserver/service.py | |||
82 | +++ b/src/lazr/sshserver/service.py | |||
83 | @@ -6,9 +6,6 @@ | |||
84 | 6 | An `SSHService` object can be used to launch the SSH server. | 6 | An `SSHService` object can be used to launch the SSH server. |
85 | 7 | """ | 7 | """ |
86 | 8 | 8 | ||
87 | 9 | from __future__ import absolute_import, print_function | ||
88 | 10 | |||
89 | 11 | __metaclass__ = type | ||
90 | 12 | __all__ = [ | 9 | __all__ = [ |
91 | 13 | "SSHService", | 10 | "SSHService", |
92 | 14 | ] | 11 | ] |
93 | @@ -148,7 +145,7 @@ class Factory(SSHFactory): | |||
94 | 148 | try: | 145 | try: |
95 | 149 | if self._moduli_path is not None: | 146 | if self._moduli_path is not None: |
96 | 150 | return primes.parseModuliFile(self._moduli_path) | 147 | return primes.parseModuliFile(self._moduli_path) |
98 | 151 | except IOError: | 148 | except OSError: |
99 | 152 | pass | 149 | pass |
100 | 153 | return None | 150 | return None |
101 | 154 | 151 | ||
102 | diff --git a/src/lazr/sshserver/session.py b/src/lazr/sshserver/session.py | |||
103 | index cdeefc3..3168895 100644 | |||
104 | --- a/src/lazr/sshserver/session.py | |||
105 | +++ b/src/lazr/sshserver/session.py | |||
106 | @@ -3,9 +3,6 @@ | |||
107 | 3 | 3 | ||
108 | 4 | """Patched SSH session for the Launchpad server.""" | 4 | """Patched SSH session for the Launchpad server.""" |
109 | 5 | 5 | ||
110 | 6 | from __future__ import absolute_import, print_function | ||
111 | 7 | |||
112 | 8 | __metaclass__ = type | ||
113 | 9 | __all__ = [ | 6 | __all__ = [ |
114 | 10 | "DoNothingSession", | 7 | "DoNothingSession", |
115 | 11 | "PatchedSSHSession", | 8 | "PatchedSSHSession", |
116 | @@ -16,7 +13,7 @@ from twisted.conch.ssh import channel, connection, session | |||
117 | 16 | from zope.interface import implementer | 13 | from zope.interface import implementer |
118 | 17 | 14 | ||
119 | 18 | 15 | ||
121 | 19 | class PatchedSSHSession(session.SSHSession, object): | 16 | class PatchedSSHSession(session.SSHSession): |
122 | 20 | """Session adapter that corrects bugs in Conch. | 17 | """Session adapter that corrects bugs in Conch. |
123 | 21 | 18 | ||
124 | 22 | This object provides no custom logic for Launchpad, it just addresses some | 19 | This object provides no custom logic for Launchpad, it just addresses some |
125 | diff --git a/src/lazr/sshserver/sftp.py b/src/lazr/sshserver/sftp.py | |||
126 | index 1335ce8..3fa6026 100644 | |||
127 | --- a/src/lazr/sshserver/sftp.py | |||
128 | +++ b/src/lazr/sshserver/sftp.py | |||
129 | @@ -3,9 +3,6 @@ | |||
130 | 3 | 3 | ||
131 | 4 | """Generic SFTP server functionality.""" | 4 | """Generic SFTP server functionality.""" |
132 | 5 | 5 | ||
133 | 6 | from __future__ import absolute_import, print_function | ||
134 | 7 | |||
135 | 8 | __metaclass__ = type | ||
136 | 9 | __all__ = [ | 6 | __all__ = [ |
137 | 10 | "FileIsADirectory", | 7 | "FileIsADirectory", |
138 | 11 | "FileTransferServer", | 8 | "FileTransferServer", |
139 | @@ -25,9 +22,7 @@ class FileIsADirectory(Exception): | |||
140 | 25 | 22 | ||
141 | 26 | def __init__(self, path, extra=None): | 23 | def __init__(self, path, extra=None): |
142 | 27 | self.path = path | 24 | self.path = path |
146 | 28 | super(FileIsADirectory, self).__init__( | 25 | super().__init__("File is a directory: %r" % path) |
144 | 29 | "File is a directory: %r" % path | ||
145 | 30 | ) | ||
147 | 31 | 26 | ||
148 | 32 | 27 | ||
149 | 33 | class FileTransferServer(filetransfer.FileTransferServer): | 28 | class FileTransferServer(filetransfer.FileTransferServer): |
150 | diff --git a/src/lazr/sshserver/tests/__init__.py b/src/lazr/sshserver/tests/__init__.py | |||
151 | index fde15ac..126b89a 100644 | |||
152 | --- a/src/lazr/sshserver/tests/__init__.py | |||
153 | +++ b/src/lazr/sshserver/tests/__init__.py | |||
154 | @@ -16,5 +16,4 @@ | |||
155 | 16 | 16 | ||
156 | 17 | "The lazr.sshserver tests." | 17 | "The lazr.sshserver tests." |
157 | 18 | 18 | ||
158 | 19 | __metaclass__ = type | ||
159 | 20 | __all__ = [] | 19 | __all__ = [] |
160 | diff --git a/src/lazr/sshserver/tests/test_accesslog.py b/src/lazr/sshserver/tests/test_accesslog.py | |||
161 | index f855def..d921345 100644 | |||
162 | --- a/src/lazr/sshserver/tests/test_accesslog.py | |||
163 | +++ b/src/lazr/sshserver/tests/test_accesslog.py | |||
164 | @@ -3,10 +3,6 @@ | |||
165 | 3 | 3 | ||
166 | 4 | """Tests for the logging system of the sshserver.""" | 4 | """Tests for the logging system of the sshserver.""" |
167 | 5 | 5 | ||
168 | 6 | from __future__ import absolute_import, print_function | ||
169 | 7 | |||
170 | 8 | __metaclass__ = type | ||
171 | 9 | |||
172 | 10 | import logging | 6 | import logging |
173 | 11 | import os | 7 | import os |
174 | 12 | import sys | 8 | import sys |
175 | @@ -29,7 +25,7 @@ class LoggingManagerMixin: | |||
176 | 29 | def makeLogger(self, name=None): | 25 | def makeLogger(self, name=None): |
177 | 30 | if name is None: | 26 | if name is None: |
178 | 31 | self._log_count += 1 | 27 | self._log_count += 1 |
180 | 32 | name = "%s-%s" % (self.id().split(".")[-1], self._log_count) | 28 | name = "{}-{}".format(self.id().split(".")[-1], self._log_count) |
181 | 33 | return logging.getLogger(name) | 29 | return logging.getLogger(name) |
182 | 34 | 30 | ||
183 | 35 | def installLoggingManager( | 31 | def installLoggingManager( |
184 | @@ -57,7 +53,7 @@ class TestLoggingBreezyInteraction(BrzTestCase, LoggingManagerMixin): | |||
185 | 57 | directory = self.useFixture(fixtures.TempDir()).path | 53 | directory = self.useFixture(fixtures.TempDir()).path |
186 | 58 | self.overrideEnv("BRZ_LOG", os.path.join(directory, "brz.log")) | 54 | self.overrideEnv("BRZ_LOG", os.path.join(directory, "brz.log")) |
187 | 59 | breezy.get_global_state() | 55 | breezy.get_global_state() |
189 | 60 | super(TestLoggingBreezyInteraction, self).setUp() | 56 | super().setUp() |
190 | 61 | 57 | ||
191 | 62 | def test_leaves_brz_handlers_unchanged(self): | 58 | def test_leaves_brz_handlers_unchanged(self): |
192 | 63 | # Breezy's log handling is untouched by logging setup. | 59 | # Breezy's log handling is untouched by logging setup. |
193 | diff --git a/src/lazr/sshserver/tests/test_auth.py b/src/lazr/sshserver/tests/test_auth.py | |||
194 | index adea2c4..658b979 100644 | |||
195 | --- a/src/lazr/sshserver/tests/test_auth.py | |||
196 | +++ b/src/lazr/sshserver/tests/test_auth.py | |||
197 | @@ -1,10 +1,6 @@ | |||
198 | 1 | # Copyright 2009-2018 Canonical Ltd. This software is licensed under the | 1 | # Copyright 2009-2018 Canonical Ltd. This software is licensed under the |
199 | 2 | # GNU Lesser General Public License version 3 (see the file LICENSE). | 2 | # GNU Lesser General Public License version 3 (see the file LICENSE). |
200 | 3 | 3 | ||
201 | 4 | from __future__ import absolute_import, print_function | ||
202 | 5 | |||
203 | 6 | __metaclass__ = type | ||
204 | 7 | |||
205 | 8 | import base64 | 4 | import base64 |
206 | 9 | import functools | 5 | import functools |
207 | 10 | import io | 6 | import io |
208 | @@ -101,9 +97,9 @@ class MockSSHTransport(SSHServerTransport): | |||
209 | 101 | pass | 97 | pass |
210 | 102 | 98 | ||
211 | 103 | 99 | ||
213 | 104 | class UserAuthServerMixin(object): | 100 | class UserAuthServerMixin: |
214 | 105 | def setUp(self): | 101 | def setUp(self): |
216 | 106 | super(UserAuthServerMixin, self).setUp() | 102 | super().setUp() |
217 | 107 | self.portal = Portal(MockRealm()) | 103 | self.portal = Portal(MockRealm()) |
218 | 108 | self.transport = MockSSHTransport(self.portal) | 104 | self.transport = MockSSHTransport(self.portal) |
219 | 109 | self.user_auth = auth.SSHUserAuthServer(self.transport) | 105 | self.user_auth = auth.SSHUserAuthServer(self.transport) |
220 | @@ -219,7 +215,7 @@ class TestUserAuthServer(UserAuthServerMixin, testtools.TestCase): | |||
221 | 219 | # An initial SSH_MSG_USERAUTH_REQUEST packet may be sent without a | 215 | # An initial SSH_MSG_USERAUTH_REQUEST packet may be sent without a |
222 | 220 | # signature to query whether publickey authentication would be | 216 | # signature to query whether publickey authentication would be |
223 | 221 | # acceptable. See RFC 4252, Section 7. | 217 | # acceptable. See RFC 4252, Section 7. |
225 | 222 | class MockLogin(object): | 218 | class MockLogin: |
226 | 223 | def __init__(self, portal): | 219 | def __init__(self, portal): |
227 | 224 | self.portal = portal | 220 | self.portal = portal |
228 | 225 | 221 | ||
229 | @@ -255,7 +251,7 @@ class TestUserAuthServer(UserAuthServerMixin, testtools.TestCase): | |||
230 | 255 | def test_worksAroundShortParamikoSignatures(self): | 251 | def test_worksAroundShortParamikoSignatures(self): |
231 | 256 | # paramiko < 2.0.0 truncates RSA signatures whose most significant | 252 | # paramiko < 2.0.0 truncates RSA signatures whose most significant |
232 | 257 | # byte is zero. auth_publickey tolerates this. | 253 | # byte is zero. auth_publickey tolerates this. |
234 | 258 | class MockLogin(object): | 254 | class MockLogin: |
235 | 259 | def __init__(self, portal): | 255 | def __init__(self, portal): |
236 | 260 | self.portal = portal | 256 | self.portal = portal |
237 | 261 | 257 | ||
238 | @@ -331,14 +327,14 @@ class TestAuthenticationBannerDisplay(UserAuthServerMixin, testtools.TestCase): | |||
239 | 331 | run_tests_with = AsynchronousDeferredRunTest | 327 | run_tests_with = AsynchronousDeferredRunTest |
240 | 332 | 328 | ||
241 | 333 | def setUp(self): | 329 | def setUp(self): |
243 | 334 | super(TestAuthenticationBannerDisplay, self).setUp() | 330 | super().setUp() |
244 | 335 | self.portal.registerChecker(MockChecker()) | 331 | self.portal.registerChecker(MockChecker()) |
245 | 336 | self.user_auth.serviceStarted() | 332 | self.user_auth.serviceStarted() |
246 | 337 | self.key_data = self._makeKey() | 333 | self.key_data = self._makeKey() |
247 | 338 | 334 | ||
248 | 339 | def tearDown(self): | 335 | def tearDown(self): |
249 | 340 | self.user_auth.serviceStopped() | 336 | self.user_auth.serviceStopped() |
251 | 341 | super(TestAuthenticationBannerDisplay, self).tearDown() | 337 | super().tearDown() |
252 | 342 | 338 | ||
253 | 343 | def _makeKey(self): | 339 | def _makeKey(self): |
254 | 344 | keydir = sibpath(__file__, "keys") | 340 | keydir = sibpath(__file__, "keys") |
255 | @@ -524,7 +520,7 @@ class TestPublicKeyFromLaunchpadChecker(testtools.TestCase): | |||
256 | 524 | return failure.Failure(UnauthorizedLogin()) | 520 | return failure.Failure(UnauthorizedLogin()) |
257 | 525 | 521 | ||
258 | 526 | def setUp(self): | 522 | def setUp(self): |
260 | 527 | super(TestPublicKeyFromLaunchpadChecker, self).setUp() | 523 | super().setUp() |
261 | 528 | self.authserver = self.FakeAuthenticationEndpoint() | 524 | self.authserver = self.FakeAuthenticationEndpoint() |
262 | 529 | 525 | ||
263 | 530 | @defer.inlineCallbacks | 526 | @defer.inlineCallbacks |
264 | diff --git a/src/lazr/sshserver/tests/test_events.py b/src/lazr/sshserver/tests/test_events.py | |||
265 | index a3e790a..fc6582e 100644 | |||
266 | --- a/src/lazr/sshserver/tests/test_events.py | |||
267 | +++ b/src/lazr/sshserver/tests/test_events.py | |||
268 | @@ -3,10 +3,6 @@ | |||
269 | 3 | 3 | ||
270 | 4 | """Tests for the logging events.""" | 4 | """Tests for the logging events.""" |
271 | 5 | 5 | ||
272 | 6 | from __future__ import absolute_import, print_function | ||
273 | 7 | |||
274 | 8 | __metaclass__ = type | ||
275 | 9 | |||
276 | 10 | import logging | 6 | import logging |
277 | 11 | 7 | ||
278 | 12 | import testtools | 8 | import testtools |
279 | @@ -62,7 +58,7 @@ class TestLoggingEvent(testtools.TestCase): | |||
280 | 62 | self.assertLogs([record], notify, logging_event) | 58 | self.assertLogs([record], notify, logging_event) |
281 | 63 | 59 | ||
282 | 64 | def setUp(self): | 60 | def setUp(self): |
284 | 65 | super(TestLoggingEvent, self).setUp() | 61 | super().setUp() |
285 | 66 | logger = logging.getLogger(self.getUniqueString()) | 62 | logger = logging.getLogger(self.getUniqueString()) |
286 | 67 | logger.setLevel(logging.DEBUG) | 63 | logger.setLevel(logging.DEBUG) |
287 | 68 | self.logger = logger | 64 | self.logger = logger |
288 | diff --git a/src/lazr/sshserver/tests/test_session.py b/src/lazr/sshserver/tests/test_session.py | |||
289 | index aebc200..388944b 100644 | |||
290 | --- a/src/lazr/sshserver/tests/test_session.py | |||
291 | +++ b/src/lazr/sshserver/tests/test_session.py | |||
292 | @@ -3,10 +3,6 @@ | |||
293 | 3 | 3 | ||
294 | 4 | """Tests for generic SSH session support.""" | 4 | """Tests for generic SSH session support.""" |
295 | 5 | 5 | ||
296 | 6 | from __future__ import absolute_import, print_function | ||
297 | 7 | |||
298 | 8 | __metaclass__ = type | ||
299 | 9 | |||
300 | 10 | import testtools | 6 | import testtools |
301 | 11 | from twisted.conch.interfaces import ISession | 7 | from twisted.conch.interfaces import ISession |
302 | 12 | from twisted.conch.ssh import connection | 8 | from twisted.conch.ssh import connection |
303 | @@ -51,7 +47,7 @@ class TestDoNothing(testtools.TestCase): | |||
304 | 51 | """Tests for DoNothingSession.""" | 47 | """Tests for DoNothingSession.""" |
305 | 52 | 48 | ||
306 | 53 | def setUp(self): | 49 | def setUp(self): |
308 | 54 | super(TestDoNothing, self).setUp() | 50 | super().setUp() |
309 | 55 | self.session = DoNothingSession(None) | 51 | self.session = DoNothingSession(None) |
310 | 56 | 52 | ||
311 | 57 | def test_getPtyIsANoOp(self): | 53 | def test_getPtyIsANoOp(self): |
312 | diff --git a/tox.ini b/tox.ini | |||
313 | index b8f1aca..16b91cd 100644 | |||
314 | --- a/tox.ini | |||
315 | +++ b/tox.ini | |||
316 | @@ -13,6 +13,7 @@ commands = | |||
317 | 13 | deps = | 13 | deps = |
318 | 14 | .[test] | 14 | .[test] |
319 | 15 | py35: breezy<3.2.0 | 15 | py35: breezy<3.2.0 |
320 | 16 | py36: breezy<3.3.0 | ||
321 | 16 | 17 | ||
322 | 17 | [testenv:lint] | 18 | [testenv:lint] |
323 | 18 | basepython = | 19 | basepython = |