]> git.madduck.net Git - etc/vim.git/blob - tests/data/long_strings__regression.py

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Fix incorrect custom breakpoint indices when string group contains fake f-strings...
[etc/vim.git] / tests / data / long_strings__regression.py
1 class A:
2     def foo():
3         result = type(message)("")
4
5
6 # Don't merge multiline (e.g. triple-quoted) strings.
7 def foo():
8     query = (
9         """SELECT xxxxxxxxxxxxxxxxxxxx(xxx)"""
10         """ FROM xxxxxxxxxxxxxxxx WHERE xxxxxxxxxx AND xxx <> xxxxxxxxxxxxxx()""")
11
12 # There was a bug where tuples were being identified as long strings.
13 long_tuple = ('Apple', 'Berry', 'Cherry', 'Dill', 'Evergreen', 'Fig',
14            'Grape', 'Harry', 'Iglu', 'Jaguar')
15
16 stupid_format_method_bug = "Some really long string that just so happens to be the {} {} to force the 'format' method to hang over the line length boundary. This is pretty annoying.".format("perfect", "length")
17
18 class A:
19     def foo():
20         os.system("This is a regression test. xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxxx.".format("xxxxxxxxxx", "xxxxxx", "xxxxxxxxxx"))
21
22
23 class A:
24     def foo():
25         XXXXXXXXXXXX.append(
26             (
27                 "xxx_xxxxxxxxxx(xxxxx={}, xxxx={}, xxxxx, xxxx_xxxx_xxxxxxxxxx={})".format(
28                     xxxxx, xxxx, xxxx_xxxx_xxxxxxxxxx
29                 ),
30                 my_var,
31                 my_other_var,
32             )
33         )
34
35 class A:
36     class B:
37         def foo():
38             bar(
39                 (
40                     "[{}]: xxx_xxxxxxxxxx(xxxxx={}, xxxx={}, xxxxx={}"
41                     " xxxx_xxxx_xxxxxxxxxx={}, xxxx={})"
42                     .format(xxxx._xxxxxxxxxxxxxx, xxxxx, xxxx, xxxx_xxxx_xxxxxxxxxx, xxxxxxx)
43                 ),
44                 varX,
45                 varY,
46                 varZ,
47             )
48
49 def foo(xxxx):
50     for (xxx_xxxx, _xxx_xxx, _xxx_xxxxx, xxx_xxxx) in xxxx:
51         for xxx in xxx_xxxx:
52             assert ("x" in xxx) or (
53                 xxx in xxx_xxx_xxxxx
54             ), "{0} xxxxxxx xx {1}, xxx {1} xx xxx xx xxxx xx xxx xxxx: xxx xxxx {2}".format(
55                 xxx_xxxx, xxx, xxxxxx.xxxxxxx(xxx_xxx_xxxxx)
56             )
57
58 class A:
59     def disappearing_comment():
60         return (
61             (  # xx -x xxxxxxx xx xxx xxxxxxx.
62                 '{{xxx_xxxxxxxxxx_xxxxxxxx}} xxx xxxx'
63                 ' {} {{xxxx}} >&2'
64                 .format(
65                     "{xxxx} {xxxxxx}"
66                     if xxxxx.xx_xxxxxxxxxx
67                     else ( # Disappearing Comment
68                         "--xxxxxxx --xxxxxx=x --xxxxxx-xxxxx=xxxxxx"
69                         " --xxxxxx-xxxx=xxxxxxxxxxx.xxx"
70                     )
71                 )
72             ),
73             (x, y, z),
74         )
75
76 class A:
77     class B:
78         def foo():
79             xxxxx_xxxx(
80                 xx, "\t"
81                 "@xxxxxx '{xxxx_xxx}\t' > {xxxxxx_xxxx}.xxxxxxx;"
82                 "{xxxx_xxx} >> {xxxxxx_xxxx}.xxxxxxx 2>&1; xx=$$?;"
83                 "xxxx $$xx"
84                 .format(xxxx_xxx=xxxx_xxxxxxx, xxxxxx_xxxx=xxxxxxx + "/" + xxxx_xxx_xxxx, x=xxx_xxxxx_xxxxx_xxx),
85                 x,
86                 y,
87                 z,
88             )
89
90 func_call_where_string_arg_has_method_call_and_bad_parens(
91     (
92         "A long string with {}. This string is so long that it is ridiculous. It can't fit on one line at alllll.".format("formatting")
93     ),
94 )
95
96 func_call_where_string_arg_has_old_fmt_and_bad_parens(
97     (
98         "A long string with {}. This string is so long that it is ridiculous. It can't fit on one line at alllll." % "formatting"
99     ),
100 )
101
102 func_call_where_string_arg_has_old_fmt_and_bad_parens(
103     (
104         "A long string with {}. This {} is so long that it is ridiculous. It can't fit on one line at alllll." % ("formatting", "string")
105     ),
106 )
107
108 class A:
109     def append(self):
110         if True:
111             xxxx.xxxxxxx.xxxxx( ('xxxxxxxxxx xxxx xx xxxxxx(%x) xx %x xxxx xx xxx %x.xx'
112                                  % (len(self) + 1,
113                                     xxxx.xxxxxxxxxx,
114                                     xxxx.xxxxxxxxxx))
115                                 + (' %.3f (%s) to %.3f (%s).\n'
116                                    % (xxxx.xxxxxxxxx,
117                                       xxxx.xxxxxxxxxxxxxx(xxxx.xxxxxxxxx),
118                                       x,
119                                       xxxx.xxxxxxxxxxxxxx( xx)
120                                       )))
121
122 class A:
123     def foo():
124         some_func_call(
125             'xxxxxxxxxx',
126             (
127                 "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "
128                 "\"xxxx xxxxxxx xxxxxx xxxx; xxxx xxxxxx_xxxxx xxxxxx xxxx; "
129                 "xxxx.xxxx_xxxxxx(['xxxx.xxx'], xxxx.xxxxxxx().xxxxxxxxxx)\" "
130             ),
131             None,
132             ('xxxxxxxxxxx',),
133         ),
134
135 class A:
136     def foo():
137         some_func_call(
138             (
139                 "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "
140                 "xxxx, ('xxxxxxx xxxxxx xxxx, xxxx') xxxxxx_xxxxx xxxxxx xxxx; "
141                 "xxxx.xxxx_xxxxxx(['xxxx.xxx'], xxxx.xxxxxxx().xxxxxxxxxx)\" "
142             ),
143             None,
144             ('xxxxxxxxxxx',),
145         ),
146
147 xxxxxxx = { 'xx' : 'xxxx xxxxxxx xxxxxxxxx -x xxx -x /xxx/{0} -x xxx,xxx -xx {1} \
148 -xx {1} -xx xxx=xxx_xxxx,xxx_xx,xxx_xxx,xxx_xxxx,xxx_xx,xxx_xxx |\
149  xxxxxx -x xxxxxxxx -x xxxxxxxx -x',
150          'xx' : 'xxxx xxxxxxx xxxxxxxxx -x xxx -x /xxx/{0} -x xxx,xxx -xx {1} \
151 -xx {1} -xx xxx=xxx_xxxx_xxx_xxxx,xxx_xx_xxx_xxxx,xxx_xxxx_xxx_xxxx,\
152 xxx_xx_xxxx_xxxx,xxx_xxx_xxxx,xxx_xxx_xxxx xxxx=xxx | xxxxxx -x xxxxxxxx -x xxxxxxxx -x'
153 }
154
155 class A:
156     def foo(self):
157         if True:
158             xxxxx_xxxxxxxxxxxx('xxx xxxxxx xxx xxxxxxxxx.xx xx xxxxxxxx.  xxx xxxxxxxxxxxxx.xx xxxxxxx '
159                                + 'xx xxxxxx xxxxxx xxxxxx xx xxxxxxx xxx xxx ${0} xx x xxxxxxxx xxxxx'.xxxxxx(xxxxxx_xxxxxx_xxx))
160
161 class A:
162     class B:
163         def foo():
164             row = {
165                 'xxxxxxxxxxxxxxx' : xxxxxx_xxxxx_xxxx,
166                 # 'xxxxxxxxxxxxxxxxxxxxxxx'
167                 # 'xxxxxxxxxxxxxxxxxxxxxx'
168                 # 'xxxxxxxxxxxxxxxxxx'
169                 # 'xxxxxxxxxxxxxxxxx'
170                 'xxxxxxxxxx' : xxxxx_xxxxx,
171                 }
172
173 class A:
174     def xxxx_xxx_xx_xxxxxxxxxx_xxxx_xxxxxxxxx(xxxx):
175         xxxxxxxx = [
176             xxxxxxxxxxxxxxxx(
177                 'xxxx',
178                 xxxxxxxxxxx={
179                     'xxxx' : 1.0,
180                 },
181                 xxxxxx={'xxxxxx 1' : xxxxxx(xxxx='xxxxxx 1', xxxxxx=600.0)},
182                 xxxxxxxx_xxxxxxx=0.0,
183             ),
184             xxxxxxxxxxxxxxxx(
185                 'xxxxxxx',
186                 xxxxxxxxxxx={
187                     'xxxx' : 1.0,
188                 },
189                 xxxxxx={'xxxxxx 1' : xxxxxx(xxxx='xxxxxx 1', xxxxxx=200.0)},
190                 xxxxxxxx_xxxxxxx=0.0,
191             ),
192             xxxxxxxxxxxxxxxx(
193                 'xxxx',
194             ),
195         ]
196
197 some_dictionary = {
198     'xxxxx006': ['xxx-xxx xxxxx3xxxx1xx2xxxxxxxxxxxxxx0xx6xxxxxxxxxx2xxxxxx9xxxxxxxxxx0xxxxx1xxx2x/xx9xx6+x+xxxxxxxxxxxxxx4xxxxxxxxxxxxxxxxxxxxx43xxx2xx2x4x++xxx6xxxxxxxxx+xxxxx/xx9x+xxxxxxxxxxxxxx8x15xxxxxxxxxxxxxxxxx82xx/xxxxxxxxxxxxxx/x5xxxxxxxxxxxxxx6xxxxxx74x4/xxx4x+xxxxxxxxx2xxxxxxxx87xxxxx4xxxxxxxx3xx0xxxxx4xxx1xx9xx5xxxxxxx/xxxxx5xx6xx4xxxx1x/x2xxxxxxxxxxxx64xxxxxxx1x0xx5xxxxxxxxxxxxxx== xxxxx000 xxxxxxxxxx\n',
199                  'xxx-xxx xxxxx3xxxx1xx2xxxxxxxxxxxxxx6xxxxxxxxxxxxxx9xxxxxxxxxxxxx3xxx9xxxxxxxxxxxxxxxx0xxxxxxxxxxxxxxxxx2xxxx2xxx6xxxxx/xx54xxxxxxxxx4xxx3xxxxxx9xx3xxxxx39xxxxxxxxx5xx91xxxx7xxxxxx8xxxxxxxxxxxxxxxx9xxx93xxxxxxxxxxxxxxxxx7xxx8xx8xx4/x1xxxxx1x3xxxxxxxxxxxxx3xxxxxx9xx4xx4x7xxxxxxxxxxxxx1xxxxxxxxx7xxxxxxxxxxxxxx4xx6xxxxxxxxx9xxx7xxxx2xxxxxxxxxxxxxxxxxxxxxx8xxxxxxxxxxxxxxxxxxxx6xx== xxxxx010 xxxxxxxxxx\n'],
200     'xxxxx016': ['xxx-xxx xxxxx3xxxx1xx2xxxxxxxxxxxxxx0xx6xxxxxxxxxx2xxxxxx9xxxxxxxxxx0xxxxx1xxx2x/xx9xx6+x+xxxxxxxxxxxxxx4xxxxxxxxxxxxxxxxxxxxx43xxx2xx2x4x++xxx6xxxxxxxxx+xxxxx/xx9x+xxxxxxxxxxxxxx8x15xxxxxxxxxxxxxxxxx82xx/xxxxxxxxxxxxxx/x5xxxxxxxxxxxxxx6xxxxxx74x4/xxx4x+xxxxxxxxx2xxxxxxxx87xxxxx4xxxxxxxx3xx0xxxxx4xxx1xx9xx5xxxxxxx/xxxxx5xx6xx4xxxx1x/x2xxxxxxxxxxxx64xxxxxxx1x0xx5xxxxxxxxxxxxxx== xxxxx000 xxxxxxxxxx\n',
201                  'xxx-xxx xxxxx3xxxx1xx2xxxxxxxxxxxxxx6xxxxxxxxxxxxxx9xxxxxxxxxxxxx3xxx9xxxxxxxxxxxxxxxx0xxxxxxxxxxxxxxxxx2xxxx2xxx6xxxxx/xx54xxxxxxxxx4xxx3xxxxxx9xx3xxxxx39xxxxxxxxx5xx91xxxx7xxxxxx8xxxxxxxxxxxxxxxx9xxx93xxxxxxxxxxxxxxxxx7xxx8xx8xx4/x1xxxxx1x3xxxxxxxxxxxxx3xxxxxx9xx4xx4x7xxxxxxxxxxxxx1xxxxxxxxx7xxxxxxxxxxxxxx4xx6xxxxxxxxx9xxx7xxxx2xxxxxxxxxxxxxxxxxxxxxx8xxxxxxxxxxxxxxxxxxxx6xx== xxxxx010 xxxxxxxxxx\n']
202 }
203
204 def foo():
205     xxx_xxx = (
206         'xxxx xxx xxxxxxxx_xxxx xx "xxxxxxxxxx".'
207         '\n xxx: xxxxxx xxxxxxxx_xxxx=xxxxxxxxxx'
208     ) # xxxx xxxxxxxxxx xxxx xx xxxx xx xxx xxxxxxxx xxxxxx xxxxx.
209
210 some_tuple = ("some string", "some string" " which should be joined")
211
212 some_commented_string = (
213     "This string is long but not so long that it needs hahahah toooooo be so greatttt"  # This comment gets thrown to the top.
214     " {} that I just can't think of any more good words to say about it at"
215     " allllllllllll".format("ha")  # comments here are fine
216 )
217
218 some_commented_string = (
219     "This string is long but not so long that it needs hahahah toooooo be so greatttt"  # But these
220     " {} that I just can't think of any more good words to say about it at"  # comments will stay
221     " allllllllllll".format("ha")  # comments here are fine
222 )
223
224 lpar_and_rpar_have_comments = func_call(  # LPAR Comment
225     "Long really ridiculous type of string that shouldn't really even exist at all. I mean commmme onnn!!!",  # Comma Comment
226 )  # RPAR Comment
227
228 cmd_fstring = (
229     f"sudo -E deluge-console info --detailed --sort-reverse=time_added "
230     f"{'' if ID is None else ID} | perl -nE 'print if /^{field}:/'"
231 )
232
233 cmd_fstring = f"sudo -E deluge-console info --detailed --sort-reverse=time_added {'' if ID is None else ID} | perl -nE 'print if /^{field}:/'"
234
235 cmd_fstring = f"sudo -E deluge-console info --detailed --sort-reverse=time_added {'{{}}' if ID is None else ID} | perl -nE 'print if /^{field}:/'"
236
237 cmd_fstring = f"sudo -E deluge-console info --detailed --sort-reverse=time_added {{'' if ID is None else ID}} | perl -nE 'print if /^{field}:/'"
238
239 fstring = f"This string really doesn't need to be an {{{{fstring}}}}, but this one most certainly, absolutely {does}."
240
241 fstring = (
242     f"We have to remember to escape {braces}."
243     " Like {these}."
244     f" But not {this}."
245 )
246
247 class A:
248     class B:
249         def foo():
250             st_error = STError(
251                 f"This string ({string_leaf.value}) appears to be pointless (i.e. has"
252                 " no parent)."
253             )
254
255 def foo():
256     user_regex = _lazy_re_compile(
257         r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*\Z"  # dot-atom
258         r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"\Z)',  # quoted-string
259         re.IGNORECASE)
260
261 def foo():
262     user_regex = _lazy_re_compile(
263         "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # dot-atom
264         'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',  # quoted-string
265         xyz
266     )
267
268 def foo():
269     user_regex = _lazy_re_compile(
270         "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # dot-atom
271         'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',  # quoted-string
272         xyz
273     )
274
275 class A:
276     class B:
277         def foo():
278             if not hasattr(module, name):
279                 raise ValueError(
280                     "Could not find object %s in %s.\n"
281                     "Please note that you cannot serialize things like inner "
282                     "classes. Please move the object into the main module "
283                     "body to use migrations.\n"
284                     "For more information, see "
285                     "https://docs.djangoproject.com/en/%s/topics/migrations/#serializing-values"
286                     % (name, module_name, get_docs_version()))
287
288 class A:
289     class B:
290         def foo():
291             if not hasattr(module, name):
292                 raise ValueError(
293                     "Could not find object %s in %s.\nPlease note that you cannot serialize things like inner classes. Please move the object into the main module body to use migrations.\nFor more information, see https://docs.djangoproject.com/en/%s/topics/migrations/#serializing-values"
294                     % (name, module_name, get_docs_version()))
295
296 x = (
297     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
298     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
299     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
300     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
301 )
302
303 class Step(StepBase):
304     def who(self):
305         self.cmd = 'SR AAAA-CORRECT NAME IS {last_name} {first_name}{middle_name} {title}/P{passenger_association}'.format(
306             last_name=last_name,
307             first_name=first_name,
308             middle_name=middle_name,
309             title=title,
310             passenger_association=passenger_association,
311         )
312
313 xxxxxxx_xxxxxx_xxxxxxx = xxx(
314     [
315         xxxxxxxxxxxx(
316             xxxxxx_xxxxxxx=(
317                 '((x.aaaaaaaaa = "xxxxxx.xxxxxxxxxxxxxxxxxxxxx") || (x.xxxxxxxxx = "xxxxxxxxxxxx")) && '
318                 # xxxxx xxxxxxxxxxxx xxxx xxx (xxxxxxxxxxxxxxxx) xx x xxxxxxxxx xx xxxxxx.
319                 "(x.bbbbbbbbbbbb.xxx != "
320                 '"xxx:xxx:xxx::cccccccccccc:xxxxxxx-xxxx/xxxxxxxxxxx/xxxxxxxxxxxxxxxxx") && '
321             )
322         )
323     ]
324 )
325
326 if __name__ == "__main__":
327     for i in range(4, 8):
328         cmd = (
329             r"for pid in $(ps aux | grep paster | grep -v grep | grep '\-%d' | awk '{print $2}'); do kill $pid; done"
330             % (i)
331         )
332
333 def A():
334     def B():
335         def C():
336             def D():
337                 def E():
338                     def F():
339                         def G():
340                             assert (
341                                 c_float(val[0][0] / val[0][1]).value
342                                 == c_float(value[0][0] / value[0][1]).value
343                             ), "%s didn't roundtrip" % tag
344
345 class xxxxxxxxxxxxxxxxxxxxx(xxxx.xxxxxxxxxxxxx):
346     def xxxxxxx_xxxxxx(xxxx):
347         assert xxxxxxx_xxxx in [
348             x.xxxxx.xxxxxx.xxxxx.xxxxxx,
349             x.xxxxx.xxxxxx.xxxxx.xxxx,
350         ], ("xxxxxxxxxxx xxxxxxx xxxx (xxxxxx xxxx) %x xxx xxxxx" % xxxxxxx_xxxx)
351
352 value.__dict__[
353     key
354 ] = "test"  # set some Thrift field to non-None in the struct aa bb cc dd ee
355
356 RE_ONE_BACKSLASH = {
357     "asdf_hjkl_jkl": re.compile(
358         r"(?<!([0-9]\ ))(?<=(^|\ ))([A-Z]+(\ )?|[0-9](\ )|[a-z](\ )){4,7}([A-Z]|[0-9]|[a-z])($|\b)(?!(\ ?([0-9]\ )|(\.)))"
359     ),
360 }
361
362 RE_TWO_BACKSLASHES = {
363     "asdf_hjkl_jkl": re.compile(
364         r"(?<!([0-9]\ ))(?<=(^|\ ))([A-Z]+(\ )?|[0-9](\ )|[a-z](\\ )){4,7}([A-Z]|[0-9]|[a-z])($|\b)(?!(\ ?([0-9]\ )|(\.)))"
365     ),
366 }
367
368 RE_THREE_BACKSLASHES = {
369     "asdf_hjkl_jkl": re.compile(
370         r"(?<!([0-9]\ ))(?<=(^|\ ))([A-Z]+(\ )?|[0-9](\ )|[a-z](\\\ )){4,7}([A-Z]|[0-9]|[a-z])($|\b)(?!(\ ?([0-9]\ )|(\.)))"
371     ),
372 }
373
374 # We do NOT split on f-string expressions.
375 print(f"Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. {[f'{i}' for i in range(10)]}")
376 x = f"This is a long string which contains an f-expr that should not split {{{[i for i in range(5)]}}}."
377
378 # The parens should NOT be removed in this case.
379 (
380     "my very long string that should get formatted if I'm careful to make sure it goes"
381     " over 88 characters which it has now"
382 )
383
384 # The parens should NOT be removed in this case.
385 (
386     "my very long string that should get formatted if I'm careful to make sure it goes over 88 characters which"
387     " it has now"
388 )
389
390 # The parens should NOT be removed in this case.
391 (
392     "my very long string"
393     " that should get formatted"
394     " if I'm careful to make sure"
395     " it goes over 88 characters which"
396     " it has now"
397 )
398
399
400 def _legacy_listen_examples():
401     text += (
402         "    \"listen for the '%(event_name)s' event\"\n"
403         "\n    # ... (event logic logic logic) ...\n"
404         % {
405             "since": since,
406         }
407     )
408
409
410 class X:
411     async def foo(self):
412         msg = ""
413         for candidate in CANDIDATES:
414             msg += (
415                 "**{candidate.object_type} {candidate.rev}**"
416                 " - {candidate.description}\n"
417             )
418
419
420 temp_msg = (
421     f"{f'{humanize_number(pos)}.': <{pound_len+2}} "
422     f"{balance: <{bal_len + 5}} "
423     f"<<{author.display_name}>>\n"
424 )
425
426 assert str(suffix_arr) == (
427     "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
428     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
429     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
430 )
431 assert str(suffix_arr) != (
432     "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
433     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
434     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
435 )
436 assert str(suffix_arr) <= (
437     "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
438     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
439     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
440 )
441 assert str(suffix_arr) >= (
442     "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
443     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
444     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
445 )
446 assert str(suffix_arr) < (
447     "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
448     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
449     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
450 )
451 assert str(suffix_arr) > (
452     "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
453     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
454     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
455 )
456 assert str(suffix_arr) in "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', 'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', 'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
457 assert str(suffix_arr) not in "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', 'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', 'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
458 message = (
459     f"1. Go to Google Developers Console and log in with your Google account."
460     "(https://console.developers.google.com/)"
461     "2. You should be prompted to create a new project (name does not matter)."
462     "3. Click on Enable APIs and Services at the top."
463     "4. In the list of APIs choose or search for YouTube Data API v3 and "
464     "click on it. Choose Enable."
465     "5. Click on Credentials on the left navigation bar."
466     "6. Click on Create Credential at the top."
467     '7. At the top click the link for "API key".'
468     "8. No application restrictions are needed. Click Create at the bottom."
469     "9. You now have a key to add to `{prefix}set api youtube api_key`"
470 )
471 message = (
472     f"1. Go to Google Developers Console and log in with your Google account."
473     "(https://console.developers.google.com/)"
474     "2. You should be prompted to create a new project (name does not matter)."
475     f"3. Click on Enable APIs and Services at the top."
476     "4. In the list of APIs choose or search for YouTube Data API v3 and "
477     "click on it. Choose Enable."
478     f"5. Click on Credentials on the left navigation bar."
479     "6. Click on Create Credential at the top."
480     '7. At the top click the link for "API key".'
481     "8. No application restrictions are needed. Click Create at the bottom."
482     "9. You now have a key to add to `{prefix}set api youtube api_key`"
483 )
484 message = (
485     f"1. Go to Google Developers Console and log in with your Google account."
486     "(https://console.developers.google.com/)"
487     "2. You should be prompted to create a new project (name does not matter)."
488     f"3. Click on Enable APIs and Services at the top."
489     "4. In the list of APIs choose or search for YouTube Data API v3 and "
490     "click on it. Choose Enable."
491     f"5. Click on Credentials on the left navigation bar."
492     "6. Click on Create Credential at the top."
493     '7. At the top click the link for "API key".'
494     "8. No application restrictions are needed. Click Create at the bottom."
495     f"9. You now have a key to add to `{prefix}set api youtube api_key`"
496 )
497
498 # output
499
500
501 class A:
502     def foo():
503         result = type(message)("")
504
505
506 # Don't merge multiline (e.g. triple-quoted) strings.
507 def foo():
508     query = (
509         """SELECT xxxxxxxxxxxxxxxxxxxx(xxx)"""
510         """ FROM xxxxxxxxxxxxxxxx WHERE xxxxxxxxxx AND xxx <> xxxxxxxxxxxxxx()"""
511     )
512
513
514 # There was a bug where tuples were being identified as long strings.
515 long_tuple = (
516     "Apple",
517     "Berry",
518     "Cherry",
519     "Dill",
520     "Evergreen",
521     "Fig",
522     "Grape",
523     "Harry",
524     "Iglu",
525     "Jaguar",
526 )
527
528 stupid_format_method_bug = (
529     "Some really long string that just so happens to be the {} {} to force the 'format'"
530     " method to hang over the line length boundary. This is pretty annoying.".format(
531         "perfect", "length"
532     )
533 )
534
535
536 class A:
537     def foo():
538         os.system(
539             "This is a regression test. xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx"
540             " xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx xxx"
541             " xxxx.".format("xxxxxxxxxx", "xxxxxx", "xxxxxxxxxx")
542         )
543
544
545 class A:
546     def foo():
547         XXXXXXXXXXXX.append(
548             (
549                 "xxx_xxxxxxxxxx(xxxxx={}, xxxx={}, xxxxx, xxxx_xxxx_xxxxxxxxxx={})"
550                 .format(xxxxx, xxxx, xxxx_xxxx_xxxxxxxxxx),
551                 my_var,
552                 my_other_var,
553             )
554         )
555
556
557 class A:
558     class B:
559         def foo():
560             bar(
561                 "[{}]: xxx_xxxxxxxxxx(xxxxx={}, xxxx={}, xxxxx={}"
562                 " xxxx_xxxx_xxxxxxxxxx={}, xxxx={})".format(
563                     xxxx._xxxxxxxxxxxxxx, xxxxx, xxxx, xxxx_xxxx_xxxxxxxxxx, xxxxxxx
564                 ),
565                 varX,
566                 varY,
567                 varZ,
568             )
569
570
571 def foo(xxxx):
572     for (xxx_xxxx, _xxx_xxx, _xxx_xxxxx, xxx_xxxx) in xxxx:
573         for xxx in xxx_xxxx:
574             assert ("x" in xxx) or (xxx in xxx_xxx_xxxxx), (
575                 "{0} xxxxxxx xx {1}, xxx {1} xx xxx xx xxxx xx xxx xxxx: xxx xxxx {2}"
576                 .format(xxx_xxxx, xxx, xxxxxx.xxxxxxx(xxx_xxx_xxxxx))
577             )
578
579
580 class A:
581     def disappearing_comment():
582         return (
583             (  # xx -x xxxxxxx xx xxx xxxxxxx.
584                 "{{xxx_xxxxxxxxxx_xxxxxxxx}} xxx xxxx {} {{xxxx}} >&2".format(
585                     "{xxxx} {xxxxxx}"
586                     if xxxxx.xx_xxxxxxxxxx
587                     else (  # Disappearing Comment
588                         "--xxxxxxx --xxxxxx=x --xxxxxx-xxxxx=xxxxxx"
589                         " --xxxxxx-xxxx=xxxxxxxxxxx.xxx"
590                     )
591                 )
592             ),
593             (x, y, z),
594         )
595
596
597 class A:
598     class B:
599         def foo():
600             xxxxx_xxxx(
601                 xx,
602                 "\t"
603                 "@xxxxxx '{xxxx_xxx}\t' > {xxxxxx_xxxx}.xxxxxxx;"
604                 "{xxxx_xxx} >> {xxxxxx_xxxx}.xxxxxxx 2>&1; xx=$$?;"
605                 "xxxx $$xx".format(
606                     xxxx_xxx=xxxx_xxxxxxx,
607                     xxxxxx_xxxx=xxxxxxx + "/" + xxxx_xxx_xxxx,
608                     x=xxx_xxxxx_xxxxx_xxx,
609                 ),
610                 x,
611                 y,
612                 z,
613             )
614
615
616 func_call_where_string_arg_has_method_call_and_bad_parens(
617     "A long string with {}. This string is so long that it is ridiculous. It can't fit"
618     " on one line at alllll.".format("formatting"),
619 )
620
621 func_call_where_string_arg_has_old_fmt_and_bad_parens(
622     "A long string with {}. This string is so long that it is ridiculous. It can't fit"
623     " on one line at alllll." % "formatting",
624 )
625
626 func_call_where_string_arg_has_old_fmt_and_bad_parens(
627     "A long string with {}. This {} is so long that it is ridiculous. It can't fit on"
628     " one line at alllll." % ("formatting", "string"),
629 )
630
631
632 class A:
633     def append(self):
634         if True:
635             xxxx.xxxxxxx.xxxxx(
636                 "xxxxxxxxxx xxxx xx xxxxxx(%x) xx %x xxxx xx xxx %x.xx"
637                 % (len(self) + 1, xxxx.xxxxxxxxxx, xxxx.xxxxxxxxxx)
638                 + " %.3f (%s) to %.3f (%s).\n"
639                 % (
640                     xxxx.xxxxxxxxx,
641                     xxxx.xxxxxxxxxxxxxx(xxxx.xxxxxxxxx),
642                     x,
643                     xxxx.xxxxxxxxxxxxxx(xx),
644                 )
645             )
646
647
648 class A:
649     def foo():
650         some_func_call(
651             "xxxxxxxxxx",
652             "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "
653             '"xxxx xxxxxxx xxxxxx xxxx; xxxx xxxxxx_xxxxx xxxxxx xxxx; '
654             "xxxx.xxxx_xxxxxx(['xxxx.xxx'], xxxx.xxxxxxx().xxxxxxxxxx)\" ",
655             None,
656             ("xxxxxxxxxxx",),
657         ),
658
659
660 class A:
661     def foo():
662         some_func_call(
663             "xx {xxxxxxxxxxx}/xxxxxxxxxxx.xxx xxxx.xxx && xxxxxx -x "
664             "xxxx, ('xxxxxxx xxxxxx xxxx, xxxx') xxxxxx_xxxxx xxxxxx xxxx; "
665             "xxxx.xxxx_xxxxxx(['xxxx.xxx'], xxxx.xxxxxxx().xxxxxxxxxx)\" ",
666             None,
667             ("xxxxxxxxxxx",),
668         ),
669
670
671 xxxxxxx = {
672     "xx": (
673         "xxxx xxxxxxx xxxxxxxxx -x xxx -x /xxx/{0} -x xxx,xxx -xx {1} -xx {1} -xx"
674         " xxx=xxx_xxxx,xxx_xx,xxx_xxx,xxx_xxxx,xxx_xx,xxx_xxx | xxxxxx -x xxxxxxxx -x"
675         " xxxxxxxx -x"
676     ),
677     "xx": (
678         "xxxx xxxxxxx xxxxxxxxx -x xxx -x /xxx/{0} -x xxx,xxx -xx {1} -xx {1} -xx"
679         " xxx=xxx_xxxx_xxx_xxxx,xxx_xx_xxx_xxxx,xxx_xxxx_xxx_xxxx,xxx_xx_xxxx_xxxx,xxx_xxx_xxxx,xxx_xxx_xxxx"
680         " xxxx=xxx | xxxxxx -x xxxxxxxx -x xxxxxxxx -x"
681     ),
682 }
683
684
685 class A:
686     def foo(self):
687         if True:
688             xxxxx_xxxxxxxxxxxx(
689                 "xxx xxxxxx xxx xxxxxxxxx.xx xx xxxxxxxx.  xxx xxxxxxxxxxxxx.xx"
690                 " xxxxxxx "
691                 + "xx xxxxxx xxxxxx xxxxxx xx xxxxxxx xxx xxx ${0} xx x xxxxxxxx xxxxx"
692                 .xxxxxx(xxxxxx_xxxxxx_xxx)
693             )
694
695
696 class A:
697     class B:
698         def foo():
699             row = {
700                 "xxxxxxxxxxxxxxx": xxxxxx_xxxxx_xxxx,
701                 # 'xxxxxxxxxxxxxxxxxxxxxxx'
702                 # 'xxxxxxxxxxxxxxxxxxxxxx'
703                 # 'xxxxxxxxxxxxxxxxxx'
704                 # 'xxxxxxxxxxxxxxxxx'
705                 "xxxxxxxxxx": xxxxx_xxxxx,
706             }
707
708
709 class A:
710     def xxxx_xxx_xx_xxxxxxxxxx_xxxx_xxxxxxxxx(xxxx):
711         xxxxxxxx = [
712             xxxxxxxxxxxxxxxx(
713                 "xxxx",
714                 xxxxxxxxxxx={
715                     "xxxx": 1.0,
716                 },
717                 xxxxxx={"xxxxxx 1": xxxxxx(xxxx="xxxxxx 1", xxxxxx=600.0)},
718                 xxxxxxxx_xxxxxxx=0.0,
719             ),
720             xxxxxxxxxxxxxxxx(
721                 "xxxxxxx",
722                 xxxxxxxxxxx={
723                     "xxxx": 1.0,
724                 },
725                 xxxxxx={"xxxxxx 1": xxxxxx(xxxx="xxxxxx 1", xxxxxx=200.0)},
726                 xxxxxxxx_xxxxxxx=0.0,
727             ),
728             xxxxxxxxxxxxxxxx(
729                 "xxxx",
730             ),
731         ]
732
733
734 some_dictionary = {
735     "xxxxx006": [
736         "xxx-xxx"
737         " xxxxx3xxxx1xx2xxxxxxxxxxxxxx0xx6xxxxxxxxxx2xxxxxx9xxxxxxxxxx0xxxxx1xxx2x/xx9xx6+x+xxxxxxxxxxxxxx4xxxxxxxxxxxxxxxxxxxxx43xxx2xx2x4x++xxx6xxxxxxxxx+xxxxx/xx9x+xxxxxxxxxxxxxx8x15xxxxxxxxxxxxxxxxx82xx/xxxxxxxxxxxxxx/x5xxxxxxxxxxxxxx6xxxxxx74x4/xxx4x+xxxxxxxxx2xxxxxxxx87xxxxx4xxxxxxxx3xx0xxxxx4xxx1xx9xx5xxxxxxx/xxxxx5xx6xx4xxxx1x/x2xxxxxxxxxxxx64xxxxxxx1x0xx5xxxxxxxxxxxxxx=="
738         " xxxxx000 xxxxxxxxxx\n",
739         "xxx-xxx"
740         " xxxxx3xxxx1xx2xxxxxxxxxxxxxx6xxxxxxxxxxxxxx9xxxxxxxxxxxxx3xxx9xxxxxxxxxxxxxxxx0xxxxxxxxxxxxxxxxx2xxxx2xxx6xxxxx/xx54xxxxxxxxx4xxx3xxxxxx9xx3xxxxx39xxxxxxxxx5xx91xxxx7xxxxxx8xxxxxxxxxxxxxxxx9xxx93xxxxxxxxxxxxxxxxx7xxx8xx8xx4/x1xxxxx1x3xxxxxxxxxxxxx3xxxxxx9xx4xx4x7xxxxxxxxxxxxx1xxxxxxxxx7xxxxxxxxxxxxxx4xx6xxxxxxxxx9xxx7xxxx2xxxxxxxxxxxxxxxxxxxxxx8xxxxxxxxxxxxxxxxxxxx6xx=="
741         " xxxxx010 xxxxxxxxxx\n",
742     ],
743     "xxxxx016": [
744         "xxx-xxx"
745         " xxxxx3xxxx1xx2xxxxxxxxxxxxxx0xx6xxxxxxxxxx2xxxxxx9xxxxxxxxxx0xxxxx1xxx2x/xx9xx6+x+xxxxxxxxxxxxxx4xxxxxxxxxxxxxxxxxxxxx43xxx2xx2x4x++xxx6xxxxxxxxx+xxxxx/xx9x+xxxxxxxxxxxxxx8x15xxxxxxxxxxxxxxxxx82xx/xxxxxxxxxxxxxx/x5xxxxxxxxxxxxxx6xxxxxx74x4/xxx4x+xxxxxxxxx2xxxxxxxx87xxxxx4xxxxxxxx3xx0xxxxx4xxx1xx9xx5xxxxxxx/xxxxx5xx6xx4xxxx1x/x2xxxxxxxxxxxx64xxxxxxx1x0xx5xxxxxxxxxxxxxx=="
746         " xxxxx000 xxxxxxxxxx\n",
747         "xxx-xxx"
748         " xxxxx3xxxx1xx2xxxxxxxxxxxxxx6xxxxxxxxxxxxxx9xxxxxxxxxxxxx3xxx9xxxxxxxxxxxxxxxx0xxxxxxxxxxxxxxxxx2xxxx2xxx6xxxxx/xx54xxxxxxxxx4xxx3xxxxxx9xx3xxxxx39xxxxxxxxx5xx91xxxx7xxxxxx8xxxxxxxxxxxxxxxx9xxx93xxxxxxxxxxxxxxxxx7xxx8xx8xx4/x1xxxxx1x3xxxxxxxxxxxxx3xxxxxx9xx4xx4x7xxxxxxxxxxxxx1xxxxxxxxx7xxxxxxxxxxxxxx4xx6xxxxxxxxx9xxx7xxxx2xxxxxxxxxxxxxxxxxxxxxx8xxxxxxxxxxxxxxxxxxxx6xx=="
749         " xxxxx010 xxxxxxxxxx\n",
750     ],
751 }
752
753
754 def foo():
755     xxx_xxx = (  # xxxx xxxxxxxxxx xxxx xx xxxx xx xxx xxxxxxxx xxxxxx xxxxx.
756         'xxxx xxx xxxxxxxx_xxxx xx "xxxxxxxxxx".\n xxx: xxxxxx xxxxxxxx_xxxx=xxxxxxxxxx'
757     )
758
759
760 some_tuple = ("some string", "some string which should be joined")
761
762 some_commented_string = (  # This comment gets thrown to the top.
763     "This string is long but not so long that it needs hahahah toooooo be so greatttt"
764     " {} that I just can't think of any more good words to say about it at"
765     " allllllllllll".format("ha")  # comments here are fine
766 )
767
768 some_commented_string = (
769     "This string is long but not so long that it needs hahahah toooooo be so greatttt"  # But these
770     " {} that I just can't think of any more good words to say about it at"  # comments will stay
771     " allllllllllll".format("ha")  # comments here are fine
772 )
773
774 lpar_and_rpar_have_comments = func_call(  # LPAR Comment
775     "Long really ridiculous type of string that shouldn't really even exist at all. I"
776     " mean commmme onnn!!!",  # Comma Comment
777 )  # RPAR Comment
778
779 cmd_fstring = (
780     "sudo -E deluge-console info --detailed --sort-reverse=time_added "
781     f"{'' if ID is None else ID} | perl -nE 'print if /^{field}:/'"
782 )
783
784 cmd_fstring = (
785     "sudo -E deluge-console info --detailed --sort-reverse=time_added"
786     f" {'' if ID is None else ID} | perl -nE 'print if /^{field}:/'"
787 )
788
789 cmd_fstring = (
790     "sudo -E deluge-console info --detailed --sort-reverse=time_added"
791     f" {'{{}}' if ID is None else ID} | perl -nE 'print if /^{field}:/'"
792 )
793
794 cmd_fstring = (
795     "sudo -E deluge-console info --detailed --sort-reverse=time_added {'' if ID is"
796     f" None else ID}} | perl -nE 'print if /^{field}:/'"
797 )
798
799 fstring = (
800     "This string really doesn't need to be an {{fstring}}, but this one most"
801     f" certainly, absolutely {does}."
802 )
803
804 fstring = f"We have to remember to escape {braces}. Like {{these}}. But not {this}."
805
806
807 class A:
808     class B:
809         def foo():
810             st_error = STError(
811                 f"This string ({string_leaf.value}) appears to be pointless (i.e. has"
812                 " no parent)."
813             )
814
815
816 def foo():
817     user_regex = _lazy_re_compile(
818         r"(^[-!#$%&'*+/=?^_`{}|~0-9A-Z]+(\.[-!#$%&'*+/=?^_`{}|~0-9A-Z]+)*\Z"  # dot-atom
819         r'|^"([\001-\010\013\014\016-\037!#-\[\]-\177]|\\[\001-\011\013\014\016-\177])*"\Z)',  # quoted-string
820         re.IGNORECASE,
821     )
822
823
824 def foo():
825     user_regex = _lazy_re_compile(
826         "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # dot-atom
827         "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",  # quoted-string
828         xyz,
829     )
830
831
832 def foo():
833     user_regex = _lazy_re_compile(
834         "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"  # dot-atom
835         "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",  # quoted-string
836         xyz,
837     )
838
839
840 class A:
841     class B:
842         def foo():
843             if not hasattr(module, name):
844                 raise ValueError(
845                     "Could not find object %s in %s.\n"
846                     "Please note that you cannot serialize things like inner "
847                     "classes. Please move the object into the main module "
848                     "body to use migrations.\n"
849                     "For more information, see "
850                     "https://docs.djangoproject.com/en/%s/topics/migrations/#serializing-values"
851                     % (name, module_name, get_docs_version())
852                 )
853
854
855 class A:
856     class B:
857         def foo():
858             if not hasattr(module, name):
859                 raise ValueError(
860                     "Could not find object %s in %s.\nPlease note that you cannot"
861                     " serialize things like inner classes. Please move the object into"
862                     " the main module body to use migrations.\nFor more information,"
863                     " see https://docs.djangoproject.com/en/%s/topics/migrations/#serializing-values"
864                     % (name, module_name, get_docs_version())
865                 )
866
867
868 x = (
869     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
870     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
871     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
872     "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
873 )
874
875
876 class Step(StepBase):
877     def who(self):
878         self.cmd = (
879             "SR AAAA-CORRECT NAME IS {last_name} {first_name}{middle_name}"
880             " {title}/P{passenger_association}".format(
881                 last_name=last_name,
882                 first_name=first_name,
883                 middle_name=middle_name,
884                 title=title,
885                 passenger_association=passenger_association,
886             )
887         )
888
889
890 xxxxxxx_xxxxxx_xxxxxxx = xxx(
891     [
892         xxxxxxxxxxxx(
893             xxxxxx_xxxxxxx=(
894                 '((x.aaaaaaaaa = "xxxxxx.xxxxxxxxxxxxxxxxxxxxx") || (x.xxxxxxxxx ='
895                 ' "xxxxxxxxxxxx")) && '
896                 # xxxxx xxxxxxxxxxxx xxxx xxx (xxxxxxxxxxxxxxxx) xx x xxxxxxxxx xx xxxxxx.
897                 "(x.bbbbbbbbbbbb.xxx != "
898                 '"xxx:xxx:xxx::cccccccccccc:xxxxxxx-xxxx/xxxxxxxxxxx/xxxxxxxxxxxxxxxxx") && '
899             )
900         )
901     ]
902 )
903
904 if __name__ == "__main__":
905     for i in range(4, 8):
906         cmd = (
907             r"for pid in $(ps aux | grep paster | grep -v grep | grep '\-%d' | awk"
908             r" '{print $2}'); do kill $pid; done" % (i)
909         )
910
911
912 def A():
913     def B():
914         def C():
915             def D():
916                 def E():
917                     def F():
918                         def G():
919                             assert (
920                                 c_float(val[0][0] / val[0][1]).value
921                                 == c_float(value[0][0] / value[0][1]).value
922                             ), "%s didn't roundtrip" % tag
923
924
925 class xxxxxxxxxxxxxxxxxxxxx(xxxx.xxxxxxxxxxxxx):
926     def xxxxxxx_xxxxxx(xxxx):
927         assert xxxxxxx_xxxx in [
928             x.xxxxx.xxxxxx.xxxxx.xxxxxx,
929             x.xxxxx.xxxxxx.xxxxx.xxxx,
930         ], (
931             "xxxxxxxxxxx xxxxxxx xxxx (xxxxxx xxxx) %x xxx xxxxx" % xxxxxxx_xxxx
932         )
933
934
935 value.__dict__[
936     key
937 ] = "test"  # set some Thrift field to non-None in the struct aa bb cc dd ee
938
939 RE_ONE_BACKSLASH = {
940     "asdf_hjkl_jkl": re.compile(
941         r"(?<!([0-9]\ ))(?<=(^|\ ))([A-Z]+(\ )?|[0-9](\ )|[a-z](\ )){4,7}([A-Z]|[0-9]|[a-z])($|\b)(?!(\ ?([0-9]\ )|(\.)))"
942     ),
943 }
944
945 RE_TWO_BACKSLASHES = {
946     "asdf_hjkl_jkl": re.compile(
947         r"(?<!([0-9]\ ))(?<=(^|\ ))([A-Z]+(\ )?|[0-9](\ )|[a-z](\\"
948         r" )){4,7}([A-Z]|[0-9]|[a-z])($|\b)(?!(\ ?([0-9]\ )|(\.)))"
949     ),
950 }
951
952 RE_THREE_BACKSLASHES = {
953     "asdf_hjkl_jkl": re.compile(
954         r"(?<!([0-9]\ ))(?<=(^|\ ))([A-Z]+(\ )?|[0-9](\ )|[a-z](\\\ )){4,7}([A-Z]|[0-9]|[a-z])($|\b)(?!(\ ?([0-9]\ )|(\.)))"
955     ),
956 }
957
958 # We do NOT split on f-string expressions.
959 print(
960     "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam."
961     f" {[f'{i}' for i in range(10)]}"
962 )
963 x = (
964     "This is a long string which contains an f-expr that should not split"
965     f" {{{[i for i in range(5)]}}}."
966 )
967
968 # The parens should NOT be removed in this case.
969 (
970     "my very long string that should get formatted if I'm careful to make sure it goes"
971     " over 88 characters which it has now"
972 )
973
974 # The parens should NOT be removed in this case.
975 (
976     "my very long string that should get formatted if I'm careful to make sure it goes"
977     " over 88 characters which it has now"
978 )
979
980 # The parens should NOT be removed in this case.
981 (
982     "my very long string"
983     " that should get formatted"
984     " if I'm careful to make sure"
985     " it goes over 88 characters which"
986     " it has now"
987 )
988
989
990 def _legacy_listen_examples():
991     text += (
992         "    \"listen for the '%(event_name)s' event\"\n"
993         "\n    # ... (event logic logic logic) ...\n"
994         % {
995             "since": since,
996         }
997     )
998
999
1000 class X:
1001     async def foo(self):
1002         msg = ""
1003         for candidate in CANDIDATES:
1004             msg += (
1005                 "**{candidate.object_type} {candidate.rev}**"
1006                 " - {candidate.description}\n"
1007             )
1008
1009
1010 temp_msg = (
1011     f"{f'{humanize_number(pos)}.': <{pound_len+2}} "
1012     f"{balance: <{bal_len + 5}} "
1013     f"<<{author.display_name}>>\n"
1014 )
1015
1016 assert (
1017     str(suffix_arr)
1018     == "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
1019     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
1020     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
1021 )
1022 assert (
1023     str(suffix_arr)
1024     != "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
1025     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
1026     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
1027 )
1028 assert (
1029     str(suffix_arr)
1030     <= "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
1031     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
1032     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
1033 )
1034 assert (
1035     str(suffix_arr)
1036     >= "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
1037     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
1038     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
1039 )
1040 assert (
1041     str(suffix_arr)
1042     < "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
1043     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
1044     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
1045 )
1046 assert (
1047     str(suffix_arr)
1048     > "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', "
1049     "'grykangaroo$', 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', "
1050     "'o$', 'oo$', 'roo$', 'rykangaroo$', 'ykangaroo$']"
1051 )
1052 assert (
1053     str(suffix_arr)
1054     in "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', 'grykangaroo$',"
1055     " 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', 'o$', 'oo$', 'roo$', 'rykangaroo$',"
1056     " 'ykangaroo$']"
1057 )
1058 assert (
1059     str(suffix_arr)
1060     not in "['$', 'angaroo$', 'angrykangaroo$', 'aroo$', 'garoo$', 'grykangaroo$',"
1061     " 'kangaroo$', 'ngaroo$', 'ngrykangaroo$', 'o$', 'oo$', 'roo$',"
1062     " 'rykangaroo$', 'ykangaroo$']"
1063 )
1064 message = (
1065     f"1. Go to Google Developers Console and log in with your Google account."
1066     f"(https://console.developers.google.com/)"
1067     f"2. You should be prompted to create a new project (name does not matter)."
1068     f"3. Click on Enable APIs and Services at the top."
1069     f"4. In the list of APIs choose or search for YouTube Data API v3 and "
1070     f"click on it. Choose Enable."
1071     f"5. Click on Credentials on the left navigation bar."
1072     f"6. Click on Create Credential at the top."
1073     f'7. At the top click the link for "API key".'
1074     f"8. No application restrictions are needed. Click Create at the bottom."
1075     f"9. You now have a key to add to `{{prefix}}set api youtube api_key`"
1076 )
1077 message = (
1078     f"1. Go to Google Developers Console and log in with your Google account."
1079     f"(https://console.developers.google.com/)"
1080     f"2. You should be prompted to create a new project (name does not matter)."
1081     f"3. Click on Enable APIs and Services at the top."
1082     f"4. In the list of APIs choose or search for YouTube Data API v3 and "
1083     f"click on it. Choose Enable."
1084     f"5. Click on Credentials on the left navigation bar."
1085     f"6. Click on Create Credential at the top."
1086     f'7. At the top click the link for "API key".'
1087     f"8. No application restrictions are needed. Click Create at the bottom."
1088     f"9. You now have a key to add to `{{prefix}}set api youtube api_key`"
1089 )
1090 message = (
1091     "1. Go to Google Developers Console and log in with your Google account."
1092     "(https://console.developers.google.com/)"
1093     "2. You should be prompted to create a new project (name does not matter)."
1094     "3. Click on Enable APIs and Services at the top."
1095     "4. In the list of APIs choose or search for YouTube Data API v3 and "
1096     "click on it. Choose Enable."
1097     "5. Click on Credentials on the left navigation bar."
1098     "6. Click on Create Credential at the top."
1099     '7. At the top click the link for "API key".'
1100     "8. No application restrictions are needed. Click Create at the bottom."
1101     f"9. You now have a key to add to `{prefix}set api youtube api_key`"
1102 )