99
1010from abc import ABCMeta , abstractmethod
1111from collections import defaultdict
12+ from six import string_types
13+
1214from dltlyse .core .report import Result
1315from dltlyse .core .utils import round_float
1416
17+ # pylint: disable= unsupported-membership-test
18+
1519EXTRACT_DIR = "extracted_files"
1620logger = logging .getLogger (__name__ )
1721
@@ -66,9 +70,7 @@ def add_result(self, **kwargs):
6670 except AttributeError :
6771 testname = ""
6872 kwargs .setdefault ("testname" , testname )
69- self .__results .append (Result (
70- ** kwargs
71- ))
73+ self .__results .append (Result (** kwargs ))
7274
7375 def add_attachments (self , attachments ):
7476 """Adds attachments to the last result, creating a result if none exist"""
@@ -118,7 +120,7 @@ class CSVPlugin(Plugin): # pylint: disable=abstract-method
118120
119121 # If you have only one file you can use these two lines
120122 csv_filename = None # If you only have one file, you can use this. Set to "subdir/example.csv" in subclass
121- csv_fields = None # If using only one file, set this to the list of column headers
123+ csv_fields = None # If using only one file, set this to the list of column headers
122124
123125 # If you want to use multiple CSV files, please use csv_filenames and provide columns per file
124126 csv_filenames = None
@@ -137,30 +139,28 @@ def __init__(self):
137139
138140 def _create_csvfile (self , filename = None ):
139141 """Create csv file and add first row with column names"""
140- filename = filename or self .csv_filenames . keys ( )[0 ]
142+ filename = filename or list ( self .csv_filenames )[0 ]
141143 pathname = os .path .join ("extracted_files" , filename )
142144 if not os .path .exists (os .path .dirname (pathname )):
143145 os .makedirs (os .path .dirname (pathname ))
144146
145147 self ._csv_fileobj [filename ] = open (pathname , "w" )
146- self ._csv [filename ] = csv .writer (
147- self ._csv_fileobj [filename ],
148- )
148+ self ._csv [filename ] = csv .writer (self ._csv_fileobj [filename ])
149149 if self .csv_filenames [filename ]: # Only write header line if columns are defined.
150150 self ._csv [filename ].writerow (self .csv_filenames [filename ])
151151 else :
152152 logger .debug ("No header line written to file %s" , filename )
153153
154154 def writerow (self , data_row , filename = None ):
155155 """Write a row to CSV file"""
156- filename = filename or self .csv_filenames . keys ( )[0 ]
156+ filename = filename or list ( self .csv_filenames )[0 ]
157157 if filename not in self ._csv :
158158 self ._create_csvfile (filename )
159159 self ._csv [filename ].writerow (data_row )
160160
161161 def writerows (self , data_rows , filename = None ):
162162 """Write several rows to csv file"""
163- filename = filename or self .csv_filenames . keys ( )[0 ]
163+ filename = filename or list ( self .csv_filenames )[0 ]
164164 if filename not in self ._csv :
165165 self ._create_csvfile (filename )
166166 self ._csv [filename ].writerows (data_rows )
@@ -172,7 +172,7 @@ def report(self):
172172
173173 def _close_csv_file (self , filename = None ):
174174 """Close CSV file"""
175- filename = filename or self .csv_filenames . keys ( )[0 ]
175+ filename = filename or list ( self .csv_filenames )[0 ]
176176 if self ._csv [filename ]:
177177 self ._csv_fileobj [filename ].close ()
178178
@@ -222,8 +222,9 @@ def dlt_callback(app_id=None, ctx_id=None):
222222 app_id(str): if defined, is the app_id that we want to catch.
223223 ctx_id(str): if defined, is the ctx_id that we want to catch.
224224 """
225+
225226 def wrapper (func ): # pylint: disable=missing-docstring
226- func .filter_condition = app_id or '' , ctx_id or ''
227+ func .filter_condition = app_id or "" , ctx_id or ""
227228
228229 return func
229230
@@ -255,6 +256,7 @@ def gather_version_info(self, frame):
255256 Finally, it automatically sets the log level to DEBUG, and creates a logger using the class
256257 name. The logger is available as the logger member.
257258 """
259+
258260 def __init__ (self ):
259261 """Automatically sets a default for report (None -> no report) and logger."""
260262 self .collect_and_register_callbacks ()
@@ -274,14 +276,14 @@ def collect_and_register_callbacks(self):
274276 self .dlt_greedy_callbacks = []
275277 for member_name in dir (self ): # Scans the class members.
276278 member = getattr (self , member_name )
277- filter_condition = getattr (member , ' filter_condition' , None )
279+ filter_condition = getattr (member , " filter_condition" , None )
278280 if filter_condition :
279281 if filter_condition [0 ] or filter_condition [1 ]:
280- if self .message_filters != ' all' :
282+ if self .message_filters != " all" :
281283 self .message_filters .append (filter_condition ) # pylint: disable=no-member
282284 self .dlt_callbacks [filter_condition ].append (member )
283285 else :
284- self .message_filters = ' all'
286+ self .message_filters = " all"
285287 self .dlt_greedy_callbacks .append (member )
286288
287289 # pylint: disable=invalid-name
@@ -298,17 +300,17 @@ def add_callback_from_template_function(self, template_function, app_id, ctx_id,
298300 """
299301 # Data should be converted to strings, since dltlyse fails to register a filter if it's using unicode strings.
300302 app_id , ctx_id , userdata = (str (app_id ), str (ctx_id ),
301- str (userdata ) if isinstance (userdata , basestring ) else userdata )
303+ str (userdata ) if isinstance (userdata , string_types ) else userdata )
302304
303305 callback = functools .partial (template_function , app_id = app_id , ctx_id = ctx_id , userdata = userdata )
304306 callback = dlt_callback (app_id , ctx_id )(callback )
305307 filter_condition = app_id , ctx_id
306308 if filter_condition [0 ] or filter_condition [1 ]:
307- if self .message_filters != ' all' :
309+ if self .message_filters != " all" :
308310 self .message_filters .append (filter_condition ) # pylint: disable=no-member
309311 self .dlt_callbacks [filter_condition ].append (callback )
310312 else :
311- self .message_filters = ' all'
313+ self .message_filters = " all"
312314 self .dlt_greedy_callbacks .append (callback )
313315
314316 def get_result_dir (self ):
@@ -321,9 +323,9 @@ def get_result_dir(self):
321323 def report_filename (self ):
322324 """Builds & returns a standard/base filename for the report."""
323325 # Converts all uppercase letters in lowercase, pre-pending them with a '_'.
324- report_filename = re .sub (r' ([A-Z])' , r' _\1' , self .get_plugin_name ())
326+ report_filename = re .sub (r" ([A-Z])" , r" _\1" , self .get_plugin_name ())
325327
326- return report_filename .lower ().strip ('_' ) + ' .txt'
328+ return report_filename .lower ().strip ("_" ) + " .txt"
327329
328330 def prepare_report (self ):
329331 """It's invoked just before writing the report to file, in case that some operation needs
@@ -341,9 +343,8 @@ def get_report(self):
341343 """
342344 self .prepare_report ()
343345 if self .report_output is None :
344- return 'No report is generated!'
345- else :
346- return self .write_to_domain_file (self .report_filename (), str (self .report_output ))
346+ return "No report is generated!"
347+ return self .write_to_domain_file (self .report_filename (), str (self .report_output ))
347348
348349 def write_to_domain_file (self , filename , report ):
349350 """Write the given report to a file.
@@ -353,7 +354,7 @@ def write_to_domain_file(self, filename, report):
353354 report(str): the string with the report to be saved.
354355 """
355356 fullpath = os .path .join (self .get_result_dir (), filename )
356- with open (fullpath , 'wb' ) as report_file :
357+ with open (fullpath , "w" ) as report_file :
357358 report_file .write (report )
358359 self .logger .info ("See %s" , fullpath )
359360
0 commit comments