--- /dev/null
+#!/usr/bin/env python3
+import asyncio
+import sys
+
+from third_party import X, Y, Z
+
+from library import some_connection, \
+ some_decorator
+# fmt: off
+from third_party import (X,
+ Y, Z)
+# fmt: on
+f'trigger 3.6 mode'
+# Comment 1
+
+# Comment 2
+
+# fmt: off
+def func_no_args():
+ a; b; c
+ if True: raise RuntimeError
+ if False: ...
+ for i in range(10):
+ print(i)
+ continue
+ exec('new-style exec', {}, {})
+ return None
+async def coroutine(arg, exec=False):
+ 'Single-line docstring. Multiline is harder to reformat.'
+ async with some_connection() as conn:
+ await conn.do_what_i_mean('SELECT bobby, tables FROM xkcd', timeout=2)
+ await asyncio.sleep(1)
+@asyncio.coroutine
+@some_decorator(
+with_args=True,
+many_args=[1,2,3]
+)
+def function_signature_stress_test(number:int,no_annotation=None,text:str='default',* ,debug:bool=False,**kwargs) -> str:
+ return text[number:-1]
+# fmt: on
+def spaces(a=1, b=(), c=[], d={}, e=True, f=-1, g=1 if False else 2, h="", i=r''):
+ offset = attr.ib(default=attr.Factory( lambda: _r.uniform(1, 2)))
+ assert task._cancel_stack[:len(old_stack)] == old_stack
+def spaces_types(a: int = 1, b: tuple = (), c: list = [], d: dict = {}, e: bool = True, f: int = -1, g: int = 1 if False else 2, h: str = "", i: str = r''): ...
+def spaces2(result= _core.Value(None)):
+ ...
+something = {
+ # fmt: off
+ key: 'value',
+}
+
+def subscriptlist():
+ atom[
+ # fmt: off
+ 'some big and',
+ 'complex subscript',
+ # fmt: on
+ goes + here, andhere,
+ ]
+
+def import_as_names():
+ # fmt: off
+ from hello import a, b
+ 'unformatted'
+ # fmt: on
+
+def testlist_star_expr():
+ # fmt: off
+ a , b = *hello
+ 'unformatted'
+ # fmt: on
+
+def yield_expr():
+ # fmt: off
+ yield hello
+ 'unformatted'
+ # fmt: on
+ 'formatted'
+ # fmt: off
+ ( yield hello )
+ 'unformatted'
+ # fmt: on
+
+def example(session):
+ # fmt: off
+ result = session\
+ .query(models.Customer.id)\
+ .filter(models.Customer.account_id == account_id,
+ models.Customer.email == email_address)\
+ .order_by(models.Customer.id.asc())\
+ .all()
+ # fmt: on
+def off_and_on_without_data():
+ """All comments here are technically on the same prefix.
+
+ The comments between will be formatted. This is a known limitation.
+ """
+ # fmt: off
+
+
+ #hey, that won't work
+
+
+ # fmt: on
+ pass
+def on_and_off_broken():
+ """Another known limitation."""
+ # fmt: on
+ # fmt: off
+ this=should.not_be.formatted()
+ and_=indeed . it is not formatted
+ because . the . handling . inside . generate_ignored_nodes()
+ now . considers . multiple . fmt . directives . within . one . prefix
+ # fmt: on
+ # fmt: off
+ # ...but comments still get reformatted even though they should not be
+ # fmt: on
+def long_lines():
+ if True:
+ typedargslist.extend(
+ gen_annotated_params(ast_args.kwonlyargs, ast_args.kw_defaults, parameters, implicit_default=True)
+ )
+ # fmt: off
+ a = (
+ unnecessary_bracket()
+ )
+ # fmt: on
+ _type_comment_re = re.compile(
+ r"""
+ ^
+ [\t ]*
+ \#[ ]type:[ ]*
+ (?P<type>
+ [^#\t\n]+?
+ )
+ (?<!ignore) # note: this will force the non-greedy + in <type> to match
+ # a trailing space which is why we need the silliness below
+ (?<!ignore[ ]{1})(?<!ignore[ ]{2})(?<!ignore[ ]{3})(?<!ignore[ ]{4})
+ (?<!ignore[ ]{5})(?<!ignore[ ]{6})(?<!ignore[ ]{7})(?<!ignore[ ]{8})
+ (?<!ignore[ ]{9})(?<!ignore[ ]{10})
+ [\t ]*
+ (?P<nl>
+ (?:\#[^\n]*)?
+ \n?
+ )
+ $
+ """,
+ # fmt: off
+ re.MULTILINE|re.VERBOSE
+ # fmt: on
+ )
+def single_literal_yapf_disable():
+ """Black does not support this."""
+ BAZ = {
+ (1, 2, 3, 4),
+ (5, 6, 7, 8),
+ (9, 10, 11, 12)
+ } # yapf: disable
+cfg.rule(
+ "Default", "address",
+ xxxx_xxxx=["xxx-xxxxxx-xxxxxxxxxx"],
+ xxxxxx="xx_xxxxx", xxxxxxx="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+ xxxxxxxxx_xxxx=True, xxxxxxxx_xxxxxxxxxx=False,
+ xxxxxx_xxxxxx=2, xxxxxx_xxxxx_xxxxxxxx=70, xxxxxx_xxxxxx_xxxxx=True,
+ # fmt: off
+ xxxxxxx_xxxxxxxxxxxx={
+ "xxxxxxxx": {
+ "xxxxxx": False,
+ "xxxxxxx": False,
+ "xxxx_xxxxxx": "xxxxx",
+ },
+ "xxxxxxxx-xxxxx": {
+ "xxxxxx": False,
+ "xxxxxxx": True,
+ "xxxx_xxxxxx": "xxxxxx",
+ },
+ },
+ # fmt: on
+ xxxxxxxxxx_xxxxxxxxxxx_xxxxxxx_xxxxxxxxx=5
+)
+# fmt: off
+yield 'hello'
+# No formatting to the end of the file
+l=[1,2,3]
+d={'a':1,
+ 'b':2}
+
+# output
+
+
+#!/usr/bin/env python3
+import asyncio
+import sys
+
+from third_party import X, Y, Z
+
+from library import some_connection, some_decorator
+# fmt: off
+from third_party import (X,
+ Y, Z)
+# fmt: on
+f"trigger 3.6 mode"
+# Comment 1
+
+# Comment 2
+
+
+# fmt: off
+def func_no_args():
+ a; b; c
+ if True: raise RuntimeError
+ if False: ...
+ for i in range(10):
+ print(i)
+ continue
+ exec('new-style exec', {}, {})
+ return None
+async def coroutine(arg, exec=False):
+ 'Single-line docstring. Multiline is harder to reformat.'
+ async with some_connection() as conn:
+ await conn.do_what_i_mean('SELECT bobby, tables FROM xkcd', timeout=2)
+ await asyncio.sleep(1)
+@asyncio.coroutine
+@some_decorator(
+with_args=True,
+many_args=[1,2,3]
+)
+def function_signature_stress_test(number:int,no_annotation=None,text:str='default',* ,debug:bool=False,**kwargs) -> str:
+ return text[number:-1]
+# fmt: on
+def spaces(a=1, b=(), c=[], d={}, e=True, f=-1, g=1 if False else 2, h="", i=r""):
+ offset = attr.ib(default=attr.Factory(lambda: _r.uniform(1, 2)))
+ assert task._cancel_stack[: len(old_stack)] == old_stack
+
+
+def spaces_types(
+ a: int = 1,
+ b: tuple = (),
+ c: list = [],
+ d: dict = {},
+ e: bool = True,
+ f: int = -1,
+ g: int = 1 if False else 2,
+ h: str = "",
+ i: str = r"",
+):
+ ...
+
+
+def spaces2(result=_core.Value(None)):
+ ...
+
+
+something = {
+ # fmt: off
+ key: 'value',
+}
+
+
+def subscriptlist():
+ atom[
+ # fmt: off
+ 'some big and',
+ 'complex subscript',
+ # fmt: on
+ goes + here,
+ andhere,
+ ]
+
+
+def import_as_names():
+ # fmt: off
+ from hello import a, b
+ 'unformatted'
+ # fmt: on
+
+
+def testlist_star_expr():
+ # fmt: off
+ a , b = *hello
+ 'unformatted'
+ # fmt: on
+
+
+def yield_expr():
+ # fmt: off
+ yield hello
+ 'unformatted'
+ # fmt: on
+ "formatted"
+ # fmt: off
+ ( yield hello )
+ 'unformatted'
+ # fmt: on
+
+
+def example(session):
+ # fmt: off
+ result = session\
+ .query(models.Customer.id)\
+ .filter(models.Customer.account_id == account_id,
+ models.Customer.email == email_address)\
+ .order_by(models.Customer.id.asc())\
+ .all()
+ # fmt: on
+
+
+def off_and_on_without_data():
+ """All comments here are technically on the same prefix.
+
+ The comments between will be formatted. This is a known limitation.
+ """
+ # fmt: off
+
+ # hey, that won't work
+
+ # fmt: on
+ pass
+
+
+def on_and_off_broken():
+ """Another known limitation."""
+ # fmt: on
+ # fmt: off
+ this=should.not_be.formatted()
+ and_=indeed . it is not formatted
+ because . the . handling . inside . generate_ignored_nodes()
+ now . considers . multiple . fmt . directives . within . one . prefix
+ # fmt: on
+ # fmt: off
+ # ...but comments still get reformatted even though they should not be
+ # fmt: on
+
+
+def long_lines():
+ if True:
+ typedargslist.extend(
+ gen_annotated_params(
+ ast_args.kwonlyargs,
+ ast_args.kw_defaults,
+ parameters,
+ implicit_default=True,
+ )
+ )
+ # fmt: off
+ a = (
+ unnecessary_bracket()
+ )
+ # fmt: on
+ _type_comment_re = re.compile(
+ r"""
+ ^
+ [\t ]*
+ \#[ ]type:[ ]*
+ (?P<type>
+ [^#\t\n]+?
+ )
+ (?<!ignore) # note: this will force the non-greedy + in <type> to match
+ # a trailing space which is why we need the silliness below
+ (?<!ignore[ ]{1})(?<!ignore[ ]{2})(?<!ignore[ ]{3})(?<!ignore[ ]{4})
+ (?<!ignore[ ]{5})(?<!ignore[ ]{6})(?<!ignore[ ]{7})(?<!ignore[ ]{8})
+ (?<!ignore[ ]{9})(?<!ignore[ ]{10})
+ [\t ]*
+ (?P<nl>
+ (?:\#[^\n]*)?
+ \n?
+ )
+ $
+ """,
+ # fmt: off
+ re.MULTILINE|re.VERBOSE
+ # fmt: on
+ )
+
+
+def single_literal_yapf_disable():
+ """Black does not support this."""
+ BAZ = {(1, 2, 3, 4), (5, 6, 7, 8), (9, 10, 11, 12)} # yapf: disable
+
+
+cfg.rule(
+ "Default",
+ "address",
+ xxxx_xxxx=["xxx-xxxxxx-xxxxxxxxxx"],
+ xxxxxx="xx_xxxxx",
+ xxxxxxx="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
+ xxxxxxxxx_xxxx=True,
+ xxxxxxxx_xxxxxxxxxx=False,
+ xxxxxx_xxxxxx=2,
+ xxxxxx_xxxxx_xxxxxxxx=70,
+ xxxxxx_xxxxxx_xxxxx=True,
+ # fmt: off
+ xxxxxxx_xxxxxxxxxxxx={
+ "xxxxxxxx": {
+ "xxxxxx": False,
+ "xxxxxxx": False,
+ "xxxx_xxxxxx": "xxxxx",
+ },
+ "xxxxxxxx-xxxxx": {
+ "xxxxxx": False,
+ "xxxxxxx": True,
+ "xxxx_xxxxxx": "xxxxxx",
+ },
+ },
+ # fmt: on
+ xxxxxxxxxx_xxxxxxxxxxx_xxxxxxx_xxxxxxxxx=5,
+)
+# fmt: off
+yield 'hello'
+# No formatting to the end of the file
+l=[1,2,3]
+d={'a':1,
+ 'b':2}