
Previously _Black_ produces invalid code because the `# fmt: on` is used on a different block level. While _Black_ requires `# fmt: off` and `# fmt: on` to be used at the same block level, incorrect usage shouldn't cause crashes. The formatting behavior this PR introduces is, the code below the initial `# fmt: off` block level will be turned off for formatting, when `# fmt: on` is used on a different level or there is no `# fmt: on`. This also matches the current behavior when `# fmt: off` is used at the top-level without a matching `# fmt: on`, it turns off formatting for everything below `# fmt: off`. - Fixes #2567 - Fixes #3184 - Fixes #2985 - Fixes #2882 - Fixes #2232 - Fixes #2140 - Fixes #1817 - Fixes #569
159 lines
3.2 KiB
Python
159 lines
3.2 KiB
Python
# Regression test for https://github.com/psf/black/issues/3129.
|
|
setup(
|
|
entry_points={
|
|
# fmt: off
|
|
"console_scripts": [
|
|
"foo-bar"
|
|
"=foo.bar.:main",
|
|
# fmt: on
|
|
] # Includes an formatted indentation.
|
|
},
|
|
)
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/2015.
|
|
run(
|
|
# fmt: off
|
|
[
|
|
"ls",
|
|
"-la",
|
|
]
|
|
# fmt: on
|
|
+ path,
|
|
check=True,
|
|
)
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/3026.
|
|
def test_func():
|
|
# yapf: disable
|
|
if unformatted( args ):
|
|
return True
|
|
# yapf: enable
|
|
elif b:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/2567.
|
|
if True:
|
|
# fmt: off
|
|
for _ in range( 1 ):
|
|
# fmt: on
|
|
print ( "This won't be formatted" )
|
|
print ( "This won't be formatted either" )
|
|
else:
|
|
print ( "This will be formatted" )
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/3184.
|
|
class A:
|
|
async def call(param):
|
|
if param:
|
|
# fmt: off
|
|
if param[0:4] in (
|
|
"ABCD", "EFGH"
|
|
) :
|
|
# fmt: on
|
|
print ( "This won't be formatted" )
|
|
|
|
elif param[0:4] in ("ZZZZ",):
|
|
print ( "This won't be formatted either" )
|
|
|
|
print ( "This will be formatted" )
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/2985
|
|
class Named(t.Protocol):
|
|
# fmt: off
|
|
@property
|
|
def this_wont_be_formatted ( self ) -> str: ...
|
|
|
|
class Factory(t.Protocol):
|
|
def this_will_be_formatted ( self, **kwargs ) -> Named: ...
|
|
# fmt: on
|
|
|
|
|
|
# output
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/3129.
|
|
setup(
|
|
entry_points={
|
|
# fmt: off
|
|
"console_scripts": [
|
|
"foo-bar"
|
|
"=foo.bar.:main",
|
|
# fmt: on
|
|
] # Includes an formatted indentation.
|
|
},
|
|
)
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/2015.
|
|
run(
|
|
# fmt: off
|
|
[
|
|
"ls",
|
|
"-la",
|
|
]
|
|
# fmt: on
|
|
+ path,
|
|
check=True,
|
|
)
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/3026.
|
|
def test_func():
|
|
# yapf: disable
|
|
if unformatted( args ):
|
|
return True
|
|
# yapf: enable
|
|
elif b:
|
|
return True
|
|
|
|
return False
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/2567.
|
|
if True:
|
|
# fmt: off
|
|
for _ in range( 1 ):
|
|
# fmt: on
|
|
print ( "This won't be formatted" )
|
|
print ( "This won't be formatted either" )
|
|
else:
|
|
print("This will be formatted")
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/3184.
|
|
class A:
|
|
async def call(param):
|
|
if param:
|
|
# fmt: off
|
|
if param[0:4] in (
|
|
"ABCD", "EFGH"
|
|
) :
|
|
# fmt: on
|
|
print ( "This won't be formatted" )
|
|
|
|
elif param[0:4] in ("ZZZZ",):
|
|
print ( "This won't be formatted either" )
|
|
|
|
print("This will be formatted")
|
|
|
|
|
|
# Regression test for https://github.com/psf/black/issues/2985
|
|
class Named(t.Protocol):
|
|
# fmt: off
|
|
@property
|
|
def this_wont_be_formatted ( self ) -> str: ...
|
|
|
|
|
|
class Factory(t.Protocol):
|
|
def this_will_be_formatted(self, **kwargs) -> Named:
|
|
...
|
|
|
|
# fmt: on
|