octal-values: Pre-compile regex for performance

This commit is contained in:
Derek Brown 2022-06-09 15:05:01 -07:00 committed by Adrien Vergé
parent bdbec7dc4d
commit 5658cf7f42

View File

@ -84,9 +84,7 @@ CONF = {'forbid-implicit-octal': bool,
DEFAULT = {'forbid-implicit-octal': True,
'forbid-explicit-octal': True}
def _is_octal_number(string):
return re.match(r'^[0-7]+$', string) is not None
IS_OCTAL_NUMBER_PATTERN = re.compile(r'^[0-7]+$')
def check(conf, token, prev, next, nextnext, context):
@ -98,7 +96,7 @@ def check(conf, token, prev, next, nextnext, context):
if not token.style:
val = token.value
if (val.isdigit() and len(val) > 1 and val[0] == '0' and
_is_octal_number(val[1:])):
IS_OCTAL_NUMBER_PATTERN.match(val[1:]) is not None):
yield LintProblem(
token.start_mark.line + 1, token.end_mark.column + 1,
'forbidden implicit octal value "%s"' %
@ -109,7 +107,7 @@ def check(conf, token, prev, next, nextnext, context):
if not token.style:
val = token.value
if (len(val) > 2 and val[:2] == '0o' and
_is_octal_number(val[2:])):
IS_OCTAL_NUMBER_PATTERN.match(val[2:]) is not None):
yield LintProblem(
token.start_mark.line + 1, token.end_mark.column + 1,
'forbidden explicit octal value "%s"' %