Merge "Globalize regex objects"
This commit is contained in:
commit
37e2648df0
|
@ -23,6 +23,14 @@ from sahara.utils.hacking import import_checks
|
||||||
from sahara.utils.hacking import logging_checks
|
from sahara.utils.hacking import logging_checks
|
||||||
|
|
||||||
|
|
||||||
|
RE_OSLO_IMPORTS = (re.compile(r"(((from)|(import))\s+oslo\.)"),
|
||||||
|
re.compile(r"(from\s+oslo\s+import)"))
|
||||||
|
RE_DICT_CONSTRUCTOR_WITH_LIST_COPY = re.compile(r".*\bdict\((\[)?(\(|\[)")
|
||||||
|
RE_USE_JSONUTILS_INVALID_LINE = re.compile(r"(import\s+json)")
|
||||||
|
RE_USE_JSONUTILS_VALID_LINE = re.compile(r"(import\s+jsonschema)")
|
||||||
|
RE_MUTABLE_DEFAULT_ARGS = re.compile(r"^\s*def .+\((.+=\{\}|.+=\[\])")
|
||||||
|
|
||||||
|
|
||||||
def _starts_with_any(line, *prefixes):
|
def _starts_with_any(line, *prefixes):
|
||||||
for prefix in prefixes:
|
for prefix in prefixes:
|
||||||
if line.startswith(prefix):
|
if line.startswith(prefix):
|
||||||
|
@ -72,15 +80,12 @@ def check_oslo_namespace_imports(logical_line):
|
||||||
|
|
||||||
S363
|
S363
|
||||||
"""
|
"""
|
||||||
oslo_imports = (re.compile(r"(((from)|(import))\s+oslo\.)"),
|
if re.match(RE_OSLO_IMPORTS[0], logical_line):
|
||||||
re.compile(r"(from\s+oslo\s+import)"))
|
|
||||||
|
|
||||||
if re.match(oslo_imports[0], logical_line):
|
|
||||||
yield(0, "S363: '%s' must be used instead of '%s'." % (
|
yield(0, "S363: '%s' must be used instead of '%s'." % (
|
||||||
logical_line.replace('oslo.', 'oslo_'),
|
logical_line.replace('oslo.', 'oslo_'),
|
||||||
logical_line))
|
logical_line))
|
||||||
|
|
||||||
if re.match(oslo_imports[1], logical_line):
|
if re.match(RE_OSLO_IMPORTS[1], logical_line):
|
||||||
yield(0, "S363: '%s' must be used instead of '%s'" % (
|
yield(0, "S363: '%s' must be used instead of '%s'" % (
|
||||||
'import oslo_%s' % logical_line.split()[-1],
|
'import oslo_%s' % logical_line.split()[-1],
|
||||||
logical_line))
|
logical_line))
|
||||||
|
@ -91,11 +96,9 @@ def dict_constructor_with_list_copy(logical_line):
|
||||||
|
|
||||||
S368
|
S368
|
||||||
"""
|
"""
|
||||||
dict_constructor_with_list_copy_re = re.compile(r".*\bdict\((\[)?(\(|\[)")
|
if RE_DICT_CONSTRUCTOR_WITH_LIST_COPY.match(logical_line):
|
||||||
|
|
||||||
if dict_constructor_with_list_copy_re.match(logical_line):
|
|
||||||
yield (0, 'S368: Must use a dict comprehension instead of a dict '
|
yield (0, 'S368: Must use a dict comprehension instead of a dict '
|
||||||
'constructor with a sequence of key-value pairs.')
|
'constructor with a sequence of key-value pairs.')
|
||||||
|
|
||||||
|
|
||||||
def use_jsonutils(logical_line, filename):
|
def use_jsonutils(logical_line, filename):
|
||||||
|
@ -105,10 +108,8 @@ def use_jsonutils(logical_line, filename):
|
||||||
"""
|
"""
|
||||||
if pep8.noqa(logical_line):
|
if pep8.noqa(logical_line):
|
||||||
return
|
return
|
||||||
invalid_line = re.compile(r"(import\s+json)")
|
if (RE_USE_JSONUTILS_INVALID_LINE.match(logical_line) and
|
||||||
valid_line = re.compile(r"(import\s+jsonschema)")
|
not RE_USE_JSONUTILS_VALID_LINE.match(logical_line)):
|
||||||
if (re.match(invalid_line, logical_line) and
|
|
||||||
not re.match(valid_line, logical_line)):
|
|
||||||
yield(0, "S375: Use jsonutils from oslo_serialization instead"
|
yield(0, "S375: Use jsonutils from oslo_serialization instead"
|
||||||
" of json")
|
" of json")
|
||||||
|
|
||||||
|
@ -119,8 +120,7 @@ def no_mutable_default_args(logical_line):
|
||||||
S360
|
S360
|
||||||
"""
|
"""
|
||||||
msg = "S360: Method's default argument shouldn't be mutable!"
|
msg = "S360: Method's default argument shouldn't be mutable!"
|
||||||
mutable_default_args = re.compile(r"^\s*def .+\((.+=\{\}|.+=\[\])")
|
if RE_MUTABLE_DEFAULT_ARGS.match(logical_line):
|
||||||
if mutable_default_args.match(logical_line):
|
|
||||||
yield (0, msg)
|
yield (0, msg)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -13,14 +13,14 @@
|
||||||
import re
|
import re
|
||||||
|
|
||||||
|
|
||||||
_all_log_levels = "info|exception|warning|critical|error|debug"
|
ALL_LOG_LEVELS = "info|exception|warning|critical|error|debug"
|
||||||
|
|
||||||
_accepted_log_level = re.compile(
|
RE_ACCEPTED_LOG_LEVELS = re.compile(
|
||||||
r"(.)*LOG\.(%(levels)s)\(" % {'levels': _all_log_levels})
|
r"(.)*LOG\.(%(levels)s)\(" % {'levels': ALL_LOG_LEVELS})
|
||||||
|
|
||||||
# Since _Lx() have been removed, we just need to check _()
|
# Since _Lx() have been removed, we just need to check _()
|
||||||
_translated_log = re.compile(
|
RE_TRANSLATED_LOG = re.compile(
|
||||||
r"(.)*LOG\.(%(levels)s)\(\s*_\(" % {'levels': _all_log_levels})
|
r"(.)*LOG\.(%(levels)s)\(\s*_\(" % {'levels': ALL_LOG_LEVELS})
|
||||||
|
|
||||||
|
|
||||||
def no_translate_logs(logical_line, filename):
|
def no_translate_logs(logical_line, filename):
|
||||||
|
@ -36,7 +36,7 @@ def no_translate_logs(logical_line, filename):
|
||||||
"""
|
"""
|
||||||
|
|
||||||
msg = "S373 Don't translate logs"
|
msg = "S373 Don't translate logs"
|
||||||
if _translated_log.match(logical_line):
|
if RE_TRANSLATED_LOG.match(logical_line):
|
||||||
yield (0, msg)
|
yield (0, msg)
|
||||||
|
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ def accepted_log_levels(logical_line, filename):
|
||||||
if directory in filename:
|
if directory in filename:
|
||||||
return
|
return
|
||||||
msg = ("S374 You used deprecated log level. Accepted log levels are "
|
msg = ("S374 You used deprecated log level. Accepted log levels are "
|
||||||
"%(levels)s" % {'levels': _all_log_levels})
|
"%(levels)s" % {'levels': ALL_LOG_LEVELS})
|
||||||
if logical_line.startswith("LOG."):
|
if logical_line.startswith("LOG."):
|
||||||
if not _accepted_log_level.search(logical_line):
|
if not RE_ACCEPTED_LOG_LEVELS.search(logical_line):
|
||||||
yield(0, msg)
|
yield(0, msg)
|
||||||
|
|
Loading…
Reference in New Issue