@staticmethod<EOL><INDENT>def promote_type(orig_type, new_type):<DEDENT>
if not new_type:<EOL><INDENT>return orig_type<EOL><DEDENT>if not orig_type:<EOL><INDENT>return new_type<EOL><DEDENT>try:<EOL><INDENT>orig_type = orig_type.__name__<EOL><DEDENT>except AttributeError:<EOL><INDENT>pass<EOL><DEDENT>try:<EOL><INDENT>new_type = new_type.__name__<EOL><DEDENT>except AttributeError:<EOL><INDENT>pass<EOL><DEDENT>type_precidence = ['<STR_LIT>', '<STR_LIT:int>', '<STR_LIT:float>', '<STR_LIT:date>', '<STR_LIT:time>', '<STR_LIT>', '<STR_LIT:str>', '<STR_LIT>', '<STR_LIT>']<EOL>if type_precidence.index(new_type) > type_precidence.index(orig_type):<EOL><INDENT>return new_type<EOL><DEDENT>else:<EOL><INDENT>return orig_type<EOL><DEDENT>
Given a table with an original type, decide whether a new determination of a new applicable type
        should overide the existing one