2323 JSONDecodeError = ValueError
2424from yaml .parser import ParserError , ScannerError
2525from yaml import YAMLError
26- import cfnlint .decode . cfn_yaml
27- import cfnlint .decode . cfn_json
26+ from cfnlint .decode import cfn_yaml , cfn_json
27+ from cfnlint .rules import Match , ParseError
2828
2929
3030LOGGER = logging .getLogger (__name__ )
@@ -37,24 +37,32 @@ def decode(filename, ignore_bad_template):
3737 template = None
3838 matches = []
3939 try :
40- template = cfnlint . decode . cfn_yaml .load (filename )
40+ template = cfn_yaml .load (filename )
4141 except IOError as e :
4242 if e .errno == 2 :
4343 LOGGER .error ('Template file not found: %s' , filename )
44- matches .append (create_match_file_error (filename , 'Template file not found: %s' % filename ))
44+ matches .append (create_match_file_error (
45+ filename , 'Template file not found: %s' % filename ))
4546 elif e .errno == 21 :
46- LOGGER .error ('Template references a directory, not a file: %s' , filename )
47- matches .append (create_match_file_error (filename , 'Template references a directory, not a file: %s' % filename ))
47+ LOGGER .error ('Template references a directory, not a file: %s' ,
48+ filename )
49+ matches .append (create_match_file_error (
50+ filename ,
51+ 'Template references a directory, not a file: %s' % filename ))
4852 elif e .errno == 13 :
49- LOGGER .error ('Permission denied when accessing template file: %s' , filename )
50- matches .append (create_match_file_error (filename , 'Permission denied when accessing template file: %s' % filename ))
53+ LOGGER .error ('Permission denied when accessing template file: %s' ,
54+ filename )
55+ matches .append (create_match_file_error (
56+ filename ,
57+ 'Permission denied when accessing template file: %s' % filename ))
5158
5259 if matches :
5360 return (None , matches )
5461 except UnicodeDecodeError as err :
5562 LOGGER .error ('Cannot read file contents: %s' , filename )
56- matches .append (create_match_file_error (filename , 'Cannot read file contents: %s' % filename ))
57- except cfnlint .decode .cfn_yaml .CfnParseError as err :
63+ matches .append (create_match_file_error (
64+ filename , 'Cannot read file contents: %s' % filename ))
65+ except cfn_yaml .CfnParseError as err :
5866 err .match .Filename = filename
5967 matches = [err .match ]
6068 except ParserError as err :
@@ -64,28 +72,36 @@ def decode(filename, ignore_bad_template):
6472 'found character \' \\ t\' that cannot start any token' ,
6573 'found unknown escape character' ]:
6674 try :
67- template = cfnlint . decode . cfn_json .load (filename )
68- except cfnlint . decode . cfn_json .JSONDecodeError as json_err :
75+ template = cfn_json .load (filename )
76+ except cfn_json .JSONDecodeError as json_err :
6977 json_err .match .filename = filename
7078 matches = [json_err .match ]
7179 except JSONDecodeError as json_err :
7280 matches = [create_match_json_parser_error (json_err , filename )]
7381 except Exception as json_err : # pylint: disable=W0703
7482 if ignore_bad_template :
75- LOGGER .info ('Template %s is malformed: %s' , filename , err .problem )
76- LOGGER .info ('Tried to parse %s as JSON but got error: %s' , filename , str (json_err ))
83+ LOGGER .info ('Template %s is malformed: %s' ,
84+ filename , err .problem )
85+ LOGGER .info ('Tried to parse %s as JSON but got error: %s' ,
86+ filename , str (json_err ))
7787 else :
78- LOGGER .error ('Template %s is malformed: %s' , filename , err .problem )
79- LOGGER .error ('Tried to parse %s as JSON but got error: %s' , filename , str (json_err ))
80- return (None , [create_match_file_error (filename , 'Tried to parse %s as JSON but got error: %s' % (filename , str (json_err )))])
88+ LOGGER .error (
89+ 'Template %s is malformed: %s' , filename , err .problem )
90+ LOGGER .error ('Tried to parse %s as JSON but got error: %s' ,
91+ filename , str (json_err ))
92+ return (None , [create_match_file_error (
93+ filename ,
94+ 'Tried to parse %s as JSON but got error: %s' % (
95+ filename , str (json_err )))])
8196 else :
8297 matches = [create_match_yaml_parser_error (err , filename )]
8398 except YAMLError as err :
8499 matches = [create_match_file_error (filename , err )]
85100
86101 if not isinstance (template , dict ) and not matches :
87102 # Template isn't a dict which means nearly nothing will work
88- matches = [cfnlint .Match (1 , 1 , 1 , 1 , filename , cfnlint .ParseError (), message = 'Template needs to be an object.' )]
103+ matches = [Match (1 , 1 , 1 , 1 , filename , ParseError (),
104+ message = 'Template needs to be an object.' )]
89105 return (template , matches )
90106
91107
@@ -94,16 +110,16 @@ def create_match_yaml_parser_error(parser_error, filename):
94110 lineno = parser_error .problem_mark .line + 1
95111 colno = parser_error .problem_mark .column + 1
96112 msg = parser_error .problem
97- return cfnlint . Match (
113+ return Match (
98114 lineno , colno , lineno , colno + 1 , filename ,
99- cfnlint . ParseError (), message = msg )
115+ ParseError (), message = msg )
100116
101117
102118def create_match_file_error (filename , msg ):
103119 """Create a Match for a parser error"""
104- return cfnlint . Match (
120+ return Match (
105121 linenumber = 1 , columnnumber = 1 , linenumberend = 1 , columnnumberend = 2 ,
106- filename = filename , rule = cfnlint . ParseError (), message = msg )
122+ filename = filename , rule = ParseError (), message = msg )
107123
108124
109125def create_match_json_parser_error (parser_error , filename ):
@@ -116,5 +132,5 @@ def create_match_json_parser_error(parser_error, filename):
116132 lineno = 1
117133 colno = 1
118134 msg = parser_error .message
119- return cfnlint . Match (
120- lineno , colno , lineno , colno + 1 , filename , cfnlint . ParseError (), message = msg )
135+ return Match (
136+ lineno , colno , lineno , colno + 1 , filename , ParseError (), message = msg )
0 commit comments