Merge lp:~jelmer/loggerhead/pyupgrade into lp:loggerhead

Proposed by Jelmer Vernooij
Status: Merged
Approved by: Colin Watson
Approved revision: 548
Merge reported by: Otto Co-Pilot
Merged at revision: not available
Proposed branch: lp:~jelmer/loggerhead/pyupgrade
Merge into: lp:loggerhead
Diff against target: 335 lines (+47/-53)
8 files modified
loggerhead/tests/test_controllers.py (+10/-11)
loggerhead/tests/test_corners.py (+0/-2)
loggerhead/tests/test_history.py (+11/-11)
loggerhead/tests/test_http_head.py (+1/-2)
loggerhead/tests/test_load_test.py (+19/-19)
loggerhead/tests/test_revision_ui.py (+2/-3)
loggerhead/tests/test_simple.py (+3/-4)
loggerhead/tests/test_templating.py (+1/-1)
To merge this branch: bzr merge lp:~jelmer/loggerhead/pyupgrade
Reviewer Review Type Date Requested Status
Colin Watson (community) Approve
Review via email: mp+436797@code.launchpad.net

Commit message

Upgrade Python code to a modern version

Description of the change

Upgrade code to a modern version (3.x+)

To post a comment you must log in.
Revision history for this message
Colin Watson (cjwatson) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'loggerhead/tests/test_controllers.py'
2--- loggerhead/tests/test_controllers.py 2023-02-01 18:02:41 +0000
3+++ loggerhead/tests/test_controllers.py 2023-02-02 20:36:19 +0000
4@@ -14,7 +14,6 @@
5 # along with this program; if not, write to the Free Software
6 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
7
8-from __future__ import absolute_import
9
10 import json
11 import tarfile
12@@ -174,7 +173,7 @@
13
14 def test_add_template_values_with_non_ascii(self):
15 branch_app = self.make_branch_app_for_revision_ui(
16- [(u'skr\xe1', b'content\n')], [(u'skr\xe1', b'new content\n')])
17+ [('skr\xe1', b'content\n')], [('skr\xe1', b'new content\n')])
18 env = {'SCRIPT_NAME': '/',
19 'PATH_INFO': '/revision/1',
20 'QUERY_STRING': 'start_revid=1',
21@@ -192,7 +191,7 @@
22 'diff-1': 'rev-1/null%253A/skr%25C3%25A1'})
23 self.assertEqual(
24 json.loads(values['path_to_id']),
25- {'/': 'diff-0', u'skr\xe1': 'diff-1'})
26+ {'/': 'diff-0', 'skr\xe1': 'diff-1'})
27
28 def test_get_values_smoke(self):
29 branch_app = self.make_branch_app_for_revision_ui(
30@@ -246,7 +245,7 @@
31 # A lot of this state is set up by __call__, but we'll do it directly
32 # here.
33 ann_ui.args = ['rev2']
34- annotate_info = ann_ui.get_values(u'filename', kwargs={}, headers={})
35+ annotate_info = ann_ui.get_values('filename', kwargs={}, headers={})
36 annotated = annotate_info['annotated']
37 self.assertEqual(2, len(annotated))
38 self.assertEqual('2', annotated[1].change.revno)
39@@ -257,7 +256,7 @@
40 history = [(b'rev1', b'old\nold\n', '.'), (b'rev2', b'new\nold\n', '')]
41 ann_ui = self.make_annotate_ui_for_file_history('filename', history)
42 ann_ui.args = ['rev2']
43- ann_ui.get_values(u'filename', kwargs={}, headers={})
44+ ann_ui.get_values('filename', kwargs={}, headers={})
45
46 def test_annotate_file_zero_sized(self):
47 # Test against a zero-sized file without breaking. No annotation
48@@ -265,7 +264,7 @@
49 history = [(b'rev1', b'', '.')]
50 ann_ui = self.make_annotate_ui_for_file_history('filename', history)
51 ann_ui.args = ['rev1']
52- annotate_info = ann_ui.get_values(u'filename', kwargs={}, headers={})
53+ annotate_info = ann_ui.get_values('filename', kwargs={}, headers={})
54 annotated = annotate_info['annotated']
55 self.assertEqual(0, len(annotated))
56
57@@ -274,14 +273,14 @@
58 ann_ui = self.make_annotate_ui_for_file_history('filename', history)
59 ann_ui.args = ['rev1']
60 self.assertRaises(
61- HTTPNotFound, ann_ui.get_values, u'not-filename', {}, {})
62+ HTTPNotFound, ann_ui.get_values, 'not-filename', {}, {})
63
64 def test_annotate_nonexistent_rev(self):
65 history = [(b'rev1', b'', '.')]
66 ann_ui = self.make_annotate_ui_for_file_history('filename', history)
67 ann_ui.args = ['norev']
68 self.assertRaises(
69- HTTPNotFound, ann_ui.get_values, u'not-filename', {}, {})
70+ HTTPNotFound, ann_ui.get_values, 'not-filename', {}, {})
71
72
73 class TestFileDiffUI(BasicTests):
74@@ -303,7 +302,7 @@
75 def test_get_values_smoke(self):
76 branch_app, (rev1, rev2) = self.make_branch_app_for_filediff_ui()
77 env = {'SCRIPT_NAME': '/',
78- 'PATH_INFO': '/+filediff/%s/%s/filename' % (rev2.decode('utf-8'), rev1.decode('utf-8')),
79+ 'PATH_INFO': '/+filediff/{}/{}/filename'.format(rev2.decode('utf-8'), rev1.decode('utf-8')),
80 'REQUEST_METHOD': 'GET',
81 'wsgi.url_scheme': 'http',
82 'SERVER_NAME': 'localhost',
83@@ -318,7 +317,7 @@
84 def test_json_render_smoke(self):
85 branch_app, (rev1, rev2) = self.make_branch_app_for_filediff_ui()
86 env = {'SCRIPT_NAME': '/',
87- 'PATH_INFO': '/+json/+filediff/%s/%s/filename' % (rev2.decode('utf-8'), rev1.decode('utf-8')),
88+ 'PATH_INFO': '/+json/+filediff/{}/{}/filename'.format(rev2.decode('utf-8'), rev1.decode('utf-8')),
89 'REQUEST_METHOD': 'GET',
90 'wsgi.url_scheme': 'http',
91 'SERVER_NAME': 'localhost',
92@@ -422,7 +421,7 @@
93 % response.headers)
94
95 def __str__(self):
96- return 'MatchesDownloadHeaders(%r, %r)' % (
97+ return 'MatchesDownloadHeaders({!r}, {!r})'.format(
98 self.expect_filename, self.expect_mimetype)
99
100
101
102=== modified file 'loggerhead/tests/test_corners.py'
103--- loggerhead/tests/test_corners.py 2023-02-02 11:08:17 +0000
104+++ loggerhead/tests/test_corners.py 2023-02-02 20:36:19 +0000
105@@ -1,5 +1,3 @@
106-from __future__ import absolute_import
107-
108 import os
109
110 from .test_simple import BasicTests
111
112=== modified file 'loggerhead/tests/test_history.py'
113--- loggerhead/tests/test_history.py 2023-02-01 18:02:41 +0000
114+++ loggerhead/tests/test_history.py 2023-02-02 20:36:19 +0000
115@@ -107,7 +107,7 @@
116 list(history.get_revids_from(search_revs, tip_rev)))
117
118
119-class _DictProxy(object):
120+class _DictProxy:
121
122 def __init__(self, d):
123 self._d = d
124@@ -167,7 +167,7 @@
125 # We already know revs[-1] because we passed it in.
126 self.assertEqual(set(), accessed)
127 self.assertEqual(revs[-2], next(result))
128- self.assertEqual(set([history._rev_indices[revs[-1]]]), accessed)
129+ self.assertEqual({history._rev_indices[revs[-1]]}, accessed)
130
131 def test_get_revids_doesnt_over_produce_for_merges(self):
132 # get_revids_from shouldn't walk the whole ancestry just to get the
133@@ -179,13 +179,13 @@
134 self.assertEqual(revs[-3], next(result))
135 # We access 'W' because we are checking that W wasn't merged into X.
136 # The important bit is that we aren't getting the whole ancestry.
137- self.assertEqual(set([history._rev_indices[x] for x in list(reversed(revs))[:4]]),
138+ self.assertEqual({history._rev_indices[x] for x in list(reversed(revs))[:4]},
139 accessed)
140 self.assertEqual(revs[-5], next(result))
141- self.assertEqual(set([history._rev_indices[x] for x in list(reversed(revs))[:6]]),
142+ self.assertEqual({history._rev_indices[x] for x in list(reversed(revs))[:6]},
143 accessed)
144 self.assertRaises(StopIteration, next, result)
145- self.assertEqual(set([history._rev_indices[x] for x in list(reversed(revs))[:6]]),
146+ self.assertEqual({history._rev_indices[x] for x in list(reversed(revs))[:6]},
147 accessed)
148
149
150@@ -238,16 +238,16 @@
151 tree = self.make_branch_and_tree('test')
152 rev_id = tree.commit('Commit Message', timestamp=1299838474.317,
153 timezone=3600, committer='Joe Example <joe@example.com>',
154- revprops={'authors': u'A Author <aauthor@example.com>\n'
155- u'B Author <bauthor@example.com>'})
156+ revprops={'authors': 'A Author <aauthor@example.com>\n'
157+ 'B Author <bauthor@example.com>'})
158 self.addCleanup(tree.branch.lock_write().unlock)
159 rev = tree.branch.repository.get_revision(rev_id)
160 history = _mod_history.History(tree.branch, {})
161 change = history._change_from_revision(rev)
162- self.assertEqual(u'Joe Example <joe@example.com>',
163+ self.assertEqual('Joe Example <joe@example.com>',
164 change.committer)
165- self.assertEqual([u'A Author <aauthor@example.com>',
166- u'B Author <bauthor@example.com>'],
167+ self.assertEqual(['A Author <aauthor@example.com>',
168+ 'B Author <bauthor@example.com>'],
169 change.authors)
170
171
172@@ -295,7 +295,7 @@
173 self.assertEqual(list(reversed(revs))[:6], revid_list)
174 self.assertEqual(revs[-1], revid)
175 self.assertEqual(revs[-1], start_revid)
176- self.assertEqual(set([history._rev_indices[x] for x in list(reversed(revs))[:6]]),
177+ self.assertEqual({history._rev_indices[x] for x in list(reversed(revs))[:6]},
178 accessed)
179
180
181
182=== modified file 'loggerhead/tests/test_http_head.py'
183--- loggerhead/tests/test_http_head.py 2023-01-31 19:08:09 +0000
184+++ loggerhead/tests/test_http_head.py 2023-02-02 20:36:19 +0000
185@@ -31,8 +31,7 @@
186
187 def yielding_app(environ, start_response):
188 writer = start_response('200 OK', headers)
189- for chunk in content:
190- yield chunk
191+ yield from content
192
193
194 def list_app(environ, start_response):
195
196=== modified file 'loggerhead/tests/test_load_test.py'
197--- loggerhead/tests/test_load_test.py 2023-02-01 18:02:41 +0000
198+++ loggerhead/tests/test_load_test.py 2023-02-02 20:36:19 +0000
199@@ -122,7 +122,7 @@
200 class TestRequestWorker(tests.TestCaseWithTransport):
201
202 def setUp(self):
203- super(TestRequestWorker, self).setUp()
204+ super().setUp()
205 self.transport_readonly_server = http_server.HttpServer
206
207 def test_request_items(self):
208@@ -278,22 +278,22 @@
209 class TestActionScriptIntegration(tests.TestCaseWithTransport):
210
211 def setUp(self):
212- super(TestActionScriptIntegration, self).setUp()
213+ super().setUp()
214 self.transport_readonly_server = http_server.HttpServer
215
216 def test_full_integration(self):
217 self.build_tree(['first', 'second', 'third', 'fourth'])
218 url = self.get_readonly_url()
219- script = load_test.ActionScript.parse("""{
220- "parameters": {"base_url": "%s", "blocking_timeout": 2.0},
221+ script = load_test.ActionScript.parse("""{{
222+ "parameters": {{"base_url": "{}", "blocking_timeout": 2.0}},
223 "requests": [
224- {"thread": "1", "relpath": "first"},
225- {"thread": "2", "relpath": "second"},
226- {"thread": "1", "relpath": "no-this"},
227- {"thread": "2", "relpath": "or-this"},
228- {"thread": "1", "relpath": "third"},
229- {"thread": "2", "relpath": "fourth"}
230- ]}""" % (url,))
231+ {{"thread": "1", "relpath": "first"}},
232+ {{"thread": "2", "relpath": "second"}},
233+ {{"thread": "1", "relpath": "no-this"}},
234+ {{"thread": "2", "relpath": "or-this"}},
235+ {{"thread": "1", "relpath": "third"}},
236+ {{"thread": "2", "relpath": "fourth"}}
237+ ]}}""".format(url))
238 script.run()
239 worker = script._get_worker("1")
240 self.assertEqual([("first", True), ('no-this', False),
241@@ -310,21 +310,21 @@
242 class TestRunScript(tests.TestCaseWithTransport):
243
244 def setUp(self):
245- super(TestRunScript, self).setUp()
246+ super().setUp()
247 self.transport_readonly_server = http_server.HttpServer
248
249 def test_run_script(self):
250 self.build_tree(['file1', 'file2', 'file3', 'file4'])
251 url = self.get_readonly_url()
252- self.build_tree_contents([('localhost.script', """{
253- "parameters": {"base_url": "%s", "blocking_timeout": 0.1},
254+ self.build_tree_contents([('localhost.script', """{{
255+ "parameters": {{"base_url": "{}", "blocking_timeout": 0.1}},
256 "requests": [
257- {"thread": "1", "relpath": "file1"},
258- {"thread": "2", "relpath": "file2"},
259- {"thread": "1", "relpath": "file3"},
260- {"thread": "2", "relpath": "file4"}
261+ {{"thread": "1", "relpath": "file1"}},
262+ {{"thread": "2", "relpath": "file2"}},
263+ {{"thread": "1", "relpath": "file3"}},
264+ {{"thread": "2", "relpath": "file4"}}
265 ]
266-}""" % (url,))])
267+}}""".format(url))])
268 script = load_test.run_script('localhost.script')
269 worker = script._threads["1"][0]
270 self.assertEqual([("file1", True), ('file3', True)],
271
272=== modified file 'loggerhead/tests/test_revision_ui.py'
273--- loggerhead/tests/test_revision_ui.py 2023-02-01 18:02:41 +0000
274+++ loggerhead/tests/test_revision_ui.py 2023-02-02 20:36:19 +0000
275@@ -15,7 +15,6 @@
276 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
277 #
278
279-from __future__ import absolute_import
280
281 from .test_simple import BasicTests
282
283@@ -25,8 +24,8 @@
284 def test_authors_vs_committer(self):
285 self.createBranch()
286 self.tree.commit('First', committer="Joe Example <joe@example.com>",
287- revprops={'authors': u'A Author <aauthor@example.com>\n'
288- u'B Author <bauthor@example.com>'})
289+ revprops={'authors': 'A Author <aauthor@example.com>\n'
290+ 'B Author <bauthor@example.com>'})
291 app = self.setUpLoggerhead()
292 res = app.get('/revision/1')
293 # We would like to assert that Joe Example is connected to Committer,
294
295=== modified file 'loggerhead/tests/test_simple.py'
296--- loggerhead/tests/test_simple.py 2023-02-01 18:02:41 +0000
297+++ loggerhead/tests/test_simple.py 2023-02-02 20:36:19 +0000
298@@ -15,7 +15,6 @@
299 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
300 #
301
302-from __future__ import absolute_import
303
304 import json
305 import logging
306@@ -124,7 +123,7 @@
307 self.assertIn(
308 escaped,
309 body_no_span,
310- "did not find %r in %r" % (escaped, body_no_span)
311+ "did not find {!r} in {!r}".format(escaped, body_no_span)
312 )
313
314 def test_inventory(self):
315@@ -192,8 +191,8 @@
316 ensure_config_dir_exists = config.ensure_config_dir_exists
317 ensure_config_dir_exists()
318 with open(locations, 'w') as f:
319- f.write('[%s]\nhttp_serve = False' % (
320- self.tree.branch.base,))
321+ f.write('[{}]\nhttp_serve = False'.format(
322+ self.tree.branch.base))
323
324 def test_no_access(self):
325 app = self.setUpLoggerhead()
326
327=== modified file 'loggerhead/tests/test_templating.py'
328--- loggerhead/tests/test_templating.py 2018-10-20 11:09:30 +0000
329+++ loggerhead/tests/test_templating.py 2023-02-02 20:36:19 +0000
330@@ -1,6 +1,6 @@
331 from ..zptsupport import load_template
332
333-RENDERED = u"<html>\n<head>\n<title>%s</title>\n</head>\n\
334+RENDERED = "<html>\n<head>\n<title>%s</title>\n</head>\n\
335 <body>\n<div>Hello, %s</div>\n</body>\n</html>"
336
337

Subscribers

People subscribed via source and target branches