def write_header(self, ): """ what is says Args: Return: state change, output Raises: none planned, file open could fail """ msg = "write header...." AppGlobal.print_debug( msg ) self.open_output_file() #self.fileout = open( self.file_name, "w", encoding = "utf8", errors = 'replace' ) columns_info = self.builder.columns_info # believe it is also a dict like a data dict columns_out = self.builder.columns_out line_parts = [] for ix, i_col in enumerate( columns_out ): i_col_info = columns_info[i_col] fmt = i_col_info["text_format"] col_text = i_col_info["column_head"] line_parts.append( fmt.format( x = col_text ) ) line = "\t".join( line_parts ) #rint( line, flush = True ) self.fileout.write( line + "\n" )
def add_data_path( file_name ): """ complete short path names by adding data_dir part ... remove instance function of same name from another app may not be used here """ ret = "" # why, will fail unless changed, just not well though out try: # in case of config errors log ret = os.path.join( AppGlobal.parameters.data_dir, file_name ) except Exception as exception: # should not really catch all AppGlobal.print_debug( exception.msg ) AppGlobal.gui_write_error( exception.msg ) #self.os_open_text_file( self.parameters.pylogging_fn ) msg = "Exception building file name {AppGlobal.parameters.data_dir} and {file_name} see py_log" #AppGlobal.print_debug( msg ) AppGlobal.gui_write_error( msg ) return ret
def write_header(self, ): """ what is says Args: Return: state change, output Raises: none planned """ lines = [] # will use in other methods self.col_names = [ i_format[0] for i_format in self.table_info.format_list ] msg = f"write_header() self.col_names {self.col_names}" AppGlobal.print_debug( msg ) i_line = f"#---------- SelectLogWriter output from {AppGlobal.controller.app_name} {AppGlobal.controller.app_version}" lines.append( i_line ) lines.append( f" self.table_info.sql = {self.table_info.sql}" ) i_line = f"use_table:{self.table_info.table_name}" lines.append( i_line ) msg = "\n".join( lines ) AppGlobal.logger.log( AppGlobal.force_log_level, msg )
def make_file_writer( builder, ): """ Purpose: what it says -- make a file_writer of the correct format output_format Args: builder -- among other things uses output_format to determine type of writer and file name Returns: a fileWriter, mutates builder Issues: could use a thoughtful refactoring --- consider dict version """ output_format = builder.output_format # msg = f"make_file_writer: for format {output_format}" #rint( msg ) # some are left over and need to be changed # AppGlobal.print_debug( msg ) # AppGlobal.gui_write_progress( msg ) if output_format == "py_log": # fileout_name = add_data_path( AppGlobal.parameters.pylogging_fn ) builder.output_name = "not used" select_writer = SelectLogWriter( builder ) # our use os.path.join( rpath, "temp", "zxqq.txt" ) )) elif output_format == "csv": # fileout_name = add_data_path( "output_select.csv" ) builder.output_name = AppGlobal.parameters.output_path + f"{os.sep}output_select.csv" #AppGlobal.parameters.output_path select_writer = SelectCSVWriter( builder ) elif output_format == "txt": builder.output_name = AppGlobal.parameters.output_path + f"{os.sep}output_select.txt" select_writer = SelectTxtWriter( builder ) elif output_format == "yaml": # still need to do builder.output_name = AppGlobal.parameters.output_path + f"{os.sep}output_select.yaml" select_writer = SelectYamlWriter( builder ) elif output_format == "html": #fileout_name = add_data_path( "output_select.html" ) builder.output_name = AppGlobal.parameters.output_path + f"{os.sep}output_select.html" select_writer = SelectHTMLWriter( builder ) elif output_format == "msg": #fileout_name = add_data_path( "output_select.html" ) builder.output_name = AppGlobal.parameters.output_path + f"{os.sep}output_select.msg" # !! why 2 was one for test resolve and fix select_writer = SelectMessageWriter( builder ) print( "select_writer = SelectMsgWriter( builder )" ) select_writer = SelectMsgWriter( builder ) # elif output_format == "zap": # #fileout_name = add_data_path( "output_select.html" ) # builder.output_name = AppGlobal.parameters.output_path + f"{os.sep}output_select.msg" # select_writer = SelectZapWriter( builder ) else: msg = f"invalid output_format = {output_format}" AppGlobal.gui.display_info_string( msg ) AppGlobal.print_debug( msg ) raise Exception( msg ) # msg = f"make_file_writer: return {( select_writer, fileout_name )}" # AppGlobal.print_debug( msg ) return ( select_writer )