I would imagine that I could do this with a generator and setattr, but I am still learning how to do that kinda of coding....maybe if I had a dictionary like this and then loaded it<br><br>d={<br> "site_name":["s","site",'sites','site_name','site_names'],<br>
"jar_name":["j","jar",'jars','jar_name','jar_names'],<br> ...<br>}<br><br>Once again, I haven't been sleeping regularly lately....working on pynutbutter 24/7...Thanks for all your help<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 10:02 PM, alex goretoy <span dir="ltr"><<a href="mailto:aleksandr.goretoy@gmail.com">aleksandr.goretoy@gmail.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;">
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" target="_blank">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']) )<div class="im">
<br>
<br clear="all">-Alex Goretoy<br><a href="http://www.goretoy.com" target="_blank">http://www.goretoy.com</a><br><br>
<br><br></div><div><div></div><div class="h5"><div class="gmail_quote">On Sat, Mar 14, 2009 at 6:54 PM, MRAB <span dir="ltr"><<a href="mailto:google@mrabarnett.plus.com" target="_blank">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><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>
</div></div></blockquote></div><br>