<s> import sys , argparse <EOL> import tools <EOL> class Conf ( object ) : <EOL> def __init__ ( self , selectors , splitf , printf , headers , filename = None ) : <EOL> self . input = open ( filename ) if filename else sys . stdin <EOL> self . fields = map ( tools . parse_selector , selectors ) <EOL> self . splitf = { <EOL> '<STR_LIT>' : tools . make_regex_split , <EOL> '<STR_LIT>' : tools . make_delim_split , <EOL> '<STR_LIT:default>' : lambda _ : tools . default_split <EOL> } [ splitf [ <NUM_LIT:0> ] ] ( splitf [ <NUM_LIT:1> ] ) <EOL> self . printf = { <EOL> '<STR_LIT>' : tools . aligned_print , <EOL> '<STR_LIT:default>' : tools . default_print <EOL> } [ printf ] <EOL> self . headers = headers <EOL> def __str__ ( self ) : <EOL> return str ( self . __dict__ ) <EOL> parser = argparse . ArgumentParser ( description = '<STR_LIT>' ) <EOL> parser . add_argument ( '<STR_LIT>' , <EOL> metavar = '<STR_LIT>' , <EOL> nargs = '<STR_LIT:+>' , <EOL> help = '<STR_LIT>' <EOL> ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , <EOL> type = lambda regex : ( '<STR_LIT>' , regex ) , <EOL> help = "<STR_LIT>" <EOL> ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , <EOL> type = lambda delim : ( '<STR_LIT>' , delim ) , <EOL> help = "<STR_LIT>" <EOL> ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , <EOL> help = "<STR_LIT>" <EOL> ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , <EOL> action = '<STR_LIT:store_true>' , <EOL> help = "<STR_LIT>" <EOL> ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , <EOL> action = '<STR_LIT>' , <EOL> const = '<STR_LIT>' , <EOL> help = "<STR_LIT>" <EOL> ) <EOL> parser . add_argument ( '<STR_LIT:-c>' , '<STR_LIT>' , <EOL> metavar = '<STR_LIT>' , <EOL> nargs = '<STR_LIT:+>' , <EOL> help = '<STR_LIT>' <EOL> ) <EOL> parser . add_argument ( '<STR_LIT>' , '<STR_LIT>' , <EOL> metavar = '<STR_LIT>' , <EOL> nargs = '<STR_LIT:?>' , <EOL> help = '<STR_LIT>' <EOL> ) <EOL> def parse ( ) : <EOL> args , extra = parser . parse_known_args ( ) <EOL> return Conf ( <EOL> filename = args . file , <EOL> splitf = args . regex or args . delim or ( '<STR_LIT:default>' , None ) , <EOL> printf = args . align or '<STR_LIT:default>' , <EOL> headers = not args . skip_headers , <EOL> selectors = args . selectors + extra , <EOL> ) <EOL> if __name__ == '<STR_LIT:__main__>' : <EOL> print parse ( ) </s>
