示例#1
0
    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" )
示例#2
0
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
示例#3
0
    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 )
示例#4
0
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 )