mirror of
https://github.com/davidhalter/parso.git
synced 2026-02-18 07:54:30 +08:00
Add better line length checks (E501).
This commit is contained in:
@@ -455,15 +455,7 @@ class PEP8Normalizer(Normalizer):
|
|||||||
self._check_spacing(leaf, spacing)
|
self._check_spacing(leaf, spacing)
|
||||||
|
|
||||||
self._analyse_non_prefix(leaf)
|
self._analyse_non_prefix(leaf)
|
||||||
last_column = leaf.end_pos[1]
|
self._check_line_length(leaf, spacing)
|
||||||
if last_column > self._config.max_characters:
|
|
||||||
self.add_issue(
|
|
||||||
501,
|
|
||||||
'Line too long (%s > %s characters)' %
|
|
||||||
(last_column, self._config.max_characters),
|
|
||||||
leaf
|
|
||||||
)
|
|
||||||
|
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
# Finalizing. Updating the state.
|
# Finalizing. Updating the state.
|
||||||
# -------------------------------
|
# -------------------------------
|
||||||
@@ -504,6 +496,29 @@ class PEP8Normalizer(Normalizer):
|
|||||||
self._previous_spacing = spacing
|
self._previous_spacing = spacing
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def _check_line_length(self, leaf, spacing):
|
||||||
|
if leaf.type == 'backslash':
|
||||||
|
last_column = leaf.start_pos[1] + 1
|
||||||
|
else:
|
||||||
|
last_column = leaf.end_pos[1]
|
||||||
|
if last_column > self._config.max_characters \
|
||||||
|
and spacing.start_pos[1] <= self._config.max_characters :
|
||||||
|
# Special case for long URLs in multi-line docstrings or comments,
|
||||||
|
# but still report the error when the 72 first chars are whitespaces.
|
||||||
|
report = True
|
||||||
|
if leaf.type == 'comment':
|
||||||
|
splitted = leaf.value[1:].split()
|
||||||
|
if len(splitted) == 1 \
|
||||||
|
and (leaf.end_pos[1] - len(splitted[0])) < 72:
|
||||||
|
report = False
|
||||||
|
if report:
|
||||||
|
self.add_issue(
|
||||||
|
501,
|
||||||
|
'Line too long (%s > %s characters)' %
|
||||||
|
(last_column, self._config.max_characters),
|
||||||
|
leaf
|
||||||
|
)
|
||||||
|
|
||||||
def _check_spacing(self, leaf, spacing):
|
def _check_spacing(self, leaf, spacing):
|
||||||
def add_if_spaces(*args):
|
def add_if_spaces(*args):
|
||||||
if spaces:
|
if spaces:
|
||||||
|
|||||||
126
test/normalizer_issue_files/E50.py
Normal file
126
test/normalizer_issue_files/E50.py
Normal file
@@ -0,0 +1,126 @@
|
|||||||
|
#: E501:4
|
||||||
|
a = '12345678901234567890123456789012345678901234567890123456789012345678901234567890'
|
||||||
|
#: E501:80
|
||||||
|
a = '1234567890123456789012345678901234567890123456789012345678901234567890' or \
|
||||||
|
6
|
||||||
|
#: E501+1:80
|
||||||
|
a = 7 or \
|
||||||
|
'1234567890123456789012345678901234567890123456789012345678901234567890' or \
|
||||||
|
6
|
||||||
|
#: E501+1:80 E501+2:80
|
||||||
|
a = 7 or \
|
||||||
|
'1234567890123456789012345678901234567890123456789012345678901234567890' or \
|
||||||
|
'1234567890123456789012345678901234567890123456789012345678901234567890' or \
|
||||||
|
6
|
||||||
|
#: E501:78
|
||||||
|
a = '1234567890123456789012345678901234567890123456789012345678901234567890' # \
|
||||||
|
#: E502:78
|
||||||
|
a = ('123456789012345678901234567890123456789012345678901234567890123456789' \
|
||||||
|
'01234567890')
|
||||||
|
#: E502+1:11
|
||||||
|
a = ('AAA \
|
||||||
|
BBB' \
|
||||||
|
'CCC')
|
||||||
|
#: E502:38
|
||||||
|
if (foo is None and bar is "e000" and \
|
||||||
|
blah == 'yeah'):
|
||||||
|
blah = 'yeahnah'
|
||||||
|
#
|
||||||
|
# Okay
|
||||||
|
a = ('AAA'
|
||||||
|
'BBB')
|
||||||
|
|
||||||
|
a = ('AAA \
|
||||||
|
BBB'
|
||||||
|
'CCC')
|
||||||
|
|
||||||
|
a = 'AAA' \
|
||||||
|
'BBB' \
|
||||||
|
'CCC'
|
||||||
|
|
||||||
|
a = ('AAA\
|
||||||
|
BBBBBBBBB\
|
||||||
|
CCCCCCCCC\
|
||||||
|
DDDDDDDDD')
|
||||||
|
#
|
||||||
|
# Okay
|
||||||
|
if aaa:
|
||||||
|
pass
|
||||||
|
elif bbb or \
|
||||||
|
ccc:
|
||||||
|
pass
|
||||||
|
|
||||||
|
ddd = \
|
||||||
|
ccc
|
||||||
|
|
||||||
|
('\
|
||||||
|
' + ' \
|
||||||
|
')
|
||||||
|
('''
|
||||||
|
''' + ' \
|
||||||
|
')
|
||||||
|
#: E501:67 E225:21 E225:22
|
||||||
|
very_long_identifiers=and_terrible_whitespace_habits(are_no_excuse+for_long_lines)
|
||||||
|
#
|
||||||
|
#: E501
|
||||||
|
'''multiline string
|
||||||
|
with a long long long long long long long long long long long long long long long long line
|
||||||
|
'''
|
||||||
|
#: E501
|
||||||
|
'''same thing, but this time without a terminal newline in the string
|
||||||
|
long long long long long long long long long long long long long long long long line'''
|
||||||
|
#
|
||||||
|
# issue 224 (unavoidable long lines in docstrings)
|
||||||
|
# Okay
|
||||||
|
"""
|
||||||
|
I'm some great documentation. Because I'm some great documentation, I'm
|
||||||
|
going to give you a reference to some valuable information about some API
|
||||||
|
that I'm calling:
|
||||||
|
|
||||||
|
http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
|
||||||
|
"""
|
||||||
|
#: E501
|
||||||
|
"""
|
||||||
|
longnospaceslongnospaceslongnospaceslongnospaceslongnospaceslongnospaceslongnospaceslongnospaces"""
|
||||||
|
|
||||||
|
|
||||||
|
# Regression test for #622
|
||||||
|
def foo():
|
||||||
|
"""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis pulvinar vitae
|
||||||
|
"""
|
||||||
|
|
||||||
|
|
||||||
|
# Okay
|
||||||
|
"""
|
||||||
|
This
|
||||||
|
almost_empty_line
|
||||||
|
"""
|
||||||
|
|
||||||
|
"""
|
||||||
|
This
|
||||||
|
almost_empty_line
|
||||||
|
"""
|
||||||
|
# A basic comment
|
||||||
|
#: E501
|
||||||
|
# with a long long long long long long long long long long long long long long long long line
|
||||||
|
|
||||||
|
#
|
||||||
|
# Okay
|
||||||
|
# I'm some great comment. Because I'm so great, I'm going to give you a
|
||||||
|
# reference to some valuable information about some API that I'm calling:
|
||||||
|
#
|
||||||
|
# http://msdn.microsoft.com/en-us/library/windows/desktop/aa363858(v=vs.85).aspx
|
||||||
|
|
||||||
|
x = 3
|
||||||
|
|
||||||
|
# longnospaceslongnospaceslongnospaceslongnospaceslongnospaceslongnospaceslongnospaceslongnospaces
|
||||||
|
|
||||||
|
#
|
||||||
|
# Okay
|
||||||
|
# This
|
||||||
|
# almost_empty_line
|
||||||
|
|
||||||
|
#
|
||||||
|
#: E501+1
|
||||||
|
# This
|
||||||
|
# almost_empty_line
|
||||||
Reference in New Issue
Block a user