Nice, this is good code. Thank you. Seeing as we are still on the same subject, how would I do it on sysarg values from getopt?<br><br>I have a main method defined like so<br><br>Â Â Â def main(self):<br>Â Â Â Â Â Â Â #XXX<br>Â Â Â Â Â Â Â """<br>
       1<br>               #get site_name: prepend to curl get/post requests<br>               #this overrides what it is in the jar<br>       <br>       2<br>               #get jar_name: jar_name used in directory for sys.path.append<br>
               #import jar_name and loading jar_name.options and jar_name.settings<br>               #cmdline var o|options overrides default jar options and settings<br>               <br>       3<br>               #get file_name: parse this file for upload<br>
               #this is optional, you can specify it in the jar options<br>               #overrides jar specified files to load. makes this the main file<br>               #only works with one file this way<br>       <br>
       4<br>               #get verbose = 0:default 1:function/caller output 2:curl get/post requests/responses<br>               #this is optional, default is 0<br>               #still not working how it should, it's on the todo list<br>
       <br>       5<br>               #flavors/butterknives to load with the jar, eg. mysql, curl, csvparser support<br>               #with plans for urllib, httplib,https, oracle, postgres, mssql<br>               #it is not hard to also add support for user defined custom protocols this way<br>
               #then just define your mapped functions inside jar configuration directories<br>               #specifying this here option in the terminal overrides what is configured in the jar conf<br>               <br>
       6<br>               #final functions to execute upon completion of all function mappings and exec for each line<br>               <br>       7<br>               #file to download and parse, this overrides disregards file_name if passed in simutaniously<br>
               #to be used with remote files, located on http/s/ftp etc... it fetches the file and stores it<br>               #under the key() as the name, which is to be concurrent with keys in files, so that we know which is main<br>
               #works with multiple files<br>               <br>       8<br>               #colors - allows you to specify what colors to use for output of caller/called functions, etc...<br>               <br>       9<br>
               #specify source for options to be loaded from<br>               #you can specify custom option modules w/ attr & settings to load <br>               #todo: implement using options from db<br>               #todo: implement getting data from different sources other than csv files<br>
               <br>       10<br>                       #source of our configuration, only jars files work for now<br>                       #currently default is storing configuration settings in jars files<br>                       <br>
       11<br>                       # This is the jar conf file located in the jar directory<br>                       #it is imported for getting options/settings/mappings/etc...<br>                       #name of module to load which is located inside the jar dir<br>
                       <br>       12<br>                       # jar configuration options attribute( dict that holds all mappings and functions, located in jar conf )<br>                       # name of options dictionary that hold all jar options/mapping etc...<br>
                       <br>       13<br>                       #jar configuration settings attribute (dict that holds all settings, located in jar conf file)<br>                       #name of our settings dictionary that holds all jar settings<br>
                       <br>       14<br>                       #jar file settings<br>                       #secondary file to parse and use inside you functions<br>                       <br>       """<br>
       for _argsi in range(len("".join(self.args).split('='))-1):<br>           _args=self.args[_argsi].split("=")<br>           print ("printing A:",_args)<br>#XXX#1<br>           if _args[0] in ("s","site",'sites'):<br>
               self.opt['properties']['site_name'] = _args[1]<br>               self.soc.debug( "%s"%("args site_name: ",self.opt['properties']['site_name']) )<br>#XXX#2<br>
           elif _args[0] in ("j","jar",'jars','jar_name'):<br>               self.opt['properties']['jar_name'] = _args[1]<br>               self.soc.debug( "%s"%("args jar_name: ",self.opt['properties']['jar_name']) )<br>
<br>#XXX#3<br>Â Â Â Â Â Â Â Â Â Â Â elif _args[0] in ("f",'file','files','filename','filenames','file_name','file_names'):<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â self.opt['properties']['file_name'] = _args[1]<br>
               self.soc.debug( "%s"%("args file_name: ",self.opt['properties']['file_name']) )<br><br>#XXX#4<br>           elif _args[0] in ("v","vv","vvv",'verbose','verbosity'):<br>
               self.opt['properties']['verbose'] = _args[1]<br>               self.soc.debug( "%s"%("args verbose: ",self.opt['properties']['verbose']) )<br><br>#XXX#5<br>
           elif _args[0] in ("ff","flav","flavor","flavors"):<br>               if _args[1] is not "":<br>                   bk=_args[1] #get flavors/butterknives<br>
                   _bk=bk.split(',')<br>                   for _bki in range(len(_bk)):<br>                       __bk=_bk[_bki].split(":")<br>                       self.opt['properties']['flavors'][__bk[0]]=int(__bk[1])<br>
                       self.soc.debug( "%s"%("args flavors: ",self.opt['properties']['flavors']) )<br><br>#XXX#6<br>           elif _args[0] in ("fff","finfun","final_func","final_funcs","final_function","final_functions"):<br>
               if _args[1] is not "":<br>                   bk=_args[1] #get flavors/butterknives<br>                   _bk=bk.split(',')<br>                   for _bki in range(len(_bk)):<br>                       __bk=_bk[_bki].split(":")<br>
                       self.opt['properties']['final_funcs'][__bk[0]]=int(__bk[1])<br>                       self.soc.debug( "%s"%("args final_funcs: ",self.opt['properties']['final_funcs']) )<br>
<br>#XXX#7<br>Â Â Â Â Â Â Â Â Â Â Â elif _args[0] in ("d",'df',"down",'down_file','down_files',"download","downloads",'download_file','download_files'):<br>
               if _args[1] is not "":<br>                   bk=_args[1] #get downloads d="file.csv:<a href="http://asdf.asd/file.csv">http://asdf.asd/file.csv</a>" or d="1" or d="True" etc<br>
                   if bool(bk):<br>                       print ("\nDOWNLOAD FILES",bk)<br>                       self.opt['properties']['settings']['download_files'] = 1<br>                       self.soc.debug( "%s"%("args download_files: ",self.opt['properties']['site_name']) )<br>
<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â if bk.find("://") >-1:<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â _bk=bk.split(',')<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â for _bki in range(len(_bk)):<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â __bk=_bk[_bki].split(";")<br>
                           self.opt['properties']['file_downloads'][__bk[0]]=__bk[1]<br>                           self.soc.debug( "%s"%("args file_downloads: ",self.opt['properties']['file_downloads']) )<br>
<br>#XXX#8<br>           elif _args[0] in ("c","col","color","colors",'reaper'):<br>               if _args[1] is not "":<br>                   c=_args[1] #get flavors/butterknives<br>
                   _c=c.split(',')<br>                   for _ci in range(len(_c)):<br>                       __c=_c[_ci].split(":")<br>                       self.opt['properties']['colors'][__c[0]]=__c[1]<br>
                       self.soc.debug( "%s"%("args colors: ",self.opt['properties']['colors']) )<br><br>#XXX#9<br>           elif _args[0] in ('o','opt','option',"options"):<br>
               options = _args[1]<br>               _options=options.split(",")<br>               for _optionsi in range(len(_options)):<br>                   print (_optionsi, _options[_optionsi].split(':'))<br>
                   __options=_options[_optionsi].split(':')<br>#XXX#10<br>                   if __options[0] in ('ss',"src","source","sources"):<br>                       print (__options[0], __options[1])<br>
                       if __options[1] is not "":<br>                           self.opt['properties']['imp_src'] = "".join(__options[1])<br>                           self.soc.debug( "%s"%("args imp_src: ",self.opt['properties']['imp_src']) )<br>
<br>#XXX#11<br>                   elif __options[0] in ("mod","module","modules"):<br>                       print (__options[0], __options[1])<br>                       if __options[1] is not "":<br>
                           self.opt['properties']['imp_mod'] = "".join(__options[1])<br>                           self.soc.debug( "%s"%("args imp_mod: ",self.opt['properties']['imp_mod']) )<br>
<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â else:<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â self.opt['properties']['imp_mod'] = self.opt['properties']['jar_name']<br>Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â self.soc.debug( "%s"%("args imp_mod: ",self.opt['properties']['imp_mod']) )<br>
<br>#XXX#12<br>                   elif __options[0] in ("opt","option","options"):<br>                       print (__options[0], __options[1])<br>                       if __options[1] is not "":<br>
                           self.opt['properties']['imp_opt'] = "".join(__options[1])<br>                           self.soc.debug( "%s"%("args imp_opt: ",self.opt['properties']['imp_opt']) )<br>
<br>#XXX#13<br>                   elif __options[0] in ("set","setting","settings"):<br>                       print (__options[0], __options[1])<br>                       if __options[1] is not "":<br>
                           self.opt['properties']['imp_set'] = "".join(__options[1])<br>                           self.soc.debug( "%s"%("args imp_set: ",self.opt['properties']['imp_set']) )<br>
<br>#XXX#14<br>                   elif __options[0] in ("file","files"):<br>                       print (__options[0], __options[1])<br>                       if __options[1] is not "":<br>
                           self.opt['properties']['imp_files'] = "".join(__options[1])<br>                           self.soc.debug( "%s"%("args imp_files: ",self.opt['properties']['imp_files']) )<br>
<br>#XXX#15<br>                   elif __options[0] in ("flav","flavor","flavors"):<br>                       print (__options[0], __options[1])<br>                       if __options[1] is not "":<br>
                           self.opt['properties']['imp_flavors'] = "".join(__options[1])<br>                           self.soc.debug( "%s"%("args imp_flavors: ",self.opt['properties']['imp_flavors']) )<br>
<br>                   elif __options[0] in ("down","download","downloads","file_download"):<br>                       print (__options[0], __options[1])<br>                       if __options[1] is not "":<br>
                           self.opt['properties']['imp_downloads'] = "".join(__options[1])<br>                           self.soc.debug( "%s"%("args imp_downloads: ",self.opt['properties']['imp_downloads']) )<br>
<br clear="all">-Alex Goretoy<br><a href="http://www.goretoy.com">http://www.goretoy.com</a><br><br>
<br><br><div class="gmail_quote">On Sat, Mar 14, 2009 at 6:54 PM, MRAB <span dir="ltr"><<a href="mailto:google@mrabarnett.plus.com">google@mrabarnett.plus.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="im"><br>
  def write(self, value, color="red", level="INFO"):<br></div>
    print "value=%s, color=%s, level=%s" % (repr(value), repr(color), repr(level))</blockquote></div><br>