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>