how to repeat function definitions less

alex goretoy aleksandr.goretoy at gmail.com
Sat Mar 14 23:02:17 EDT 2009


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?

I have a main method defined like so

    def main(self):
        #XXX
        """
        1
                #get site_name: prepend to curl get/post requests
                #this overrides what it is in the jar

        2
                #get jar_name: jar_name used in directory for
sys.path.append
                #import jar_name and loading jar_name.options and
jar_name.settings
                #cmdline var o|options overrides default jar options and
settings

        3
                #get file_name: parse this file for upload
                #this is optional, you can specify it in the jar options
                #overrides jar specified files to load. makes this the main
file
                #only works with one file this way

        4
                #get verbose = 0:default 1:function/caller output 2:curl
get/post requests/responses
                #this is optional, default is 0
                #still not working how it should, it's on the todo list

        5
                #flavors/butterknives to load with the jar, eg. mysql, curl,
csvparser support
                #with plans for urllib, httplib,https, oracle, postgres,
mssql
                #it is not hard to also add support for user defined custom
protocols this way
                #then just define your mapped functions inside jar
configuration directories
                #specifying this here option in the terminal overrides what
is configured in the jar conf

        6
                #final functions to execute upon completion of all function
mappings and exec for each line

        7
                #file to download and parse, this overrides disregards
file_name if passed in simutaniously
                #to be used with remote files, located on http/s/ftp etc...
it fetches the file and stores it
                #under the key() as the name, which is to be concurrent with
keys in files, so that we know which is main
                #works with multiple files

        8
                #colors - allows you to specify what colors to use for
output of caller/called functions, etc...

        9
                #specify source for options to be loaded from
                #you can specify custom option modules w/ attr & settings to
load
                #todo: implement using options from db
                #todo: implement getting data from different sources other
than csv files

        10
                        #source of our configuration, only jars files work
for now
                        #currently default is storing configuration settings
in jars files

        11
                        # This is the jar conf file located in the jar
directory
                        #it is imported for getting
options/settings/mappings/etc...
                        #name of module to load which is located inside the
jar dir

        12
                        # jar configuration options attribute( dict that
holds all mappings and functions, located in jar conf )
                        # name of options dictionary that hold all jar
options/mapping etc...

        13
                        #jar configuration settings attribute (dict that
holds all settings, located in jar conf file)
                        #name of our settings dictionary that holds all jar
settings

        14
                        #jar file settings
                        #secondary file to parse and use inside you
functions

        """
        for _argsi in range(len("".join(self.args).split('='))-1):
            _args=self.args[_argsi].split("=")
            print ("printing A:",_args)
#XXX#1
            if _args[0] in ("s","site",'sites'):
                self.opt['properties']['site_name'] = _args[1]
                self.soc.debug( "%s"%("args site_name:
",self.opt['properties']['site_name']) )
#XXX#2
            elif _args[0] in ("j","jar",'jars','jar_name'):
                self.opt['properties']['jar_name'] = _args[1]
                self.soc.debug( "%s"%("args jar_name:
",self.opt['properties']['jar_name']) )

#XXX#3
            elif _args[0] in
("f",'file','files','filename','filenames','file_name','file_names'):
                self.opt['properties']['file_name'] = _args[1]
                self.soc.debug( "%s"%("args file_name:
",self.opt['properties']['file_name']) )

#XXX#4
            elif _args[0] in ("v","vv","vvv",'verbose','verbosity'):
                self.opt['properties']['verbose'] = _args[1]
                self.soc.debug( "%s"%("args verbose:
",self.opt['properties']['verbose']) )

#XXX#5
            elif _args[0] in ("ff","flav","flavor","flavors"):
                if _args[1]  is not  "":
                    bk=_args[1] #get flavors/butterknives
                    _bk=bk.split(',')
                    for _bki in range(len(_bk)):
                        __bk=_bk[_bki].split(":")

self.opt['properties']['flavors'][__bk[0]]=int(__bk[1])
                        self.soc.debug( "%s"%("args flavors:
",self.opt['properties']['flavors']) )

#XXX#6
            elif _args[0] in
("fff","finfun","final_func","final_funcs","final_function","final_functions"):
                if _args[1]  is not  "":
                    bk=_args[1] #get flavors/butterknives
                    _bk=bk.split(',')
                    for _bki in range(len(_bk)):
                        __bk=_bk[_bki].split(":")

self.opt['properties']['final_funcs'][__bk[0]]=int(__bk[1])
                        self.soc.debug( "%s"%("args final_funcs:
",self.opt['properties']['final_funcs']) )

#XXX#7
            elif _args[0] in
("d",'df',"down",'down_file','down_files',"download","downloads",'download_file','download_files'):
                if _args[1]  is not  "":
                    bk=_args[1] #get downloads d="file.csv:
http://asdf.asd/file.csv" or d="1" or d="True" etc
                    if bool(bk):
                        print ("\nDOWNLOAD FILES",bk)
                        self.opt['properties']['settings']['download_files']
= 1
                        self.soc.debug( "%s"%("args download_files:
",self.opt['properties']['site_name']) )

                    if bk.find("://") >-1:
                        _bk=bk.split(',')
                        for _bki in range(len(_bk)):
                            __bk=_bk[_bki].split(";")

self.opt['properties']['file_downloads'][__bk[0]]=__bk[1]
                            self.soc.debug( "%s"%("args file_downloads:
",self.opt['properties']['file_downloads']) )

#XXX#8
            elif _args[0] in ("c","col","color","colors",'reaper'):
                if _args[1]  is not  "":
                    c=_args[1] #get flavors/butterknives
                    _c=c.split(',')
                    for _ci in range(len(_c)):
                        __c=_c[_ci].split(":")
                        self.opt['properties']['colors'][__c[0]]=__c[1]
                        self.soc.debug( "%s"%("args colors:
",self.opt['properties']['colors']) )

#XXX#9
            elif _args[0] in ('o','opt','option',"options"):
                options = _args[1]
                _options=options.split(",")
                for _optionsi in range(len(_options)):
                    print (_optionsi, _options[_optionsi].split(':'))
                    __options=_options[_optionsi].split(':')
#XXX#10
                    if __options[0] in ('ss',"src","source","sources"):
                        print (__options[0], __options[1])
                        if __options[1]  is not  "":
                            self.opt['properties']['imp_src'] =
"".join(__options[1])
                            self.soc.debug( "%s"%("args imp_src:
",self.opt['properties']['imp_src']) )

#XXX#11
                    elif __options[0] in ("mod","module","modules"):
                        print (__options[0], __options[1])
                        if __options[1]  is not  "":
                            self.opt['properties']['imp_mod'] =
"".join(__options[1])
                            self.soc.debug( "%s"%("args imp_mod:
",self.opt['properties']['imp_mod']) )

                        else:
                            self.opt['properties']['imp_mod'] =
self.opt['properties']['jar_name']
                            self.soc.debug( "%s"%("args imp_mod:
",self.opt['properties']['imp_mod']) )

#XXX#12
                    elif __options[0] in ("opt","option","options"):
                        print (__options[0], __options[1])
                        if __options[1]  is not  "":
                            self.opt['properties']['imp_opt'] =
"".join(__options[1])
                            self.soc.debug( "%s"%("args imp_opt:
",self.opt['properties']['imp_opt']) )

#XXX#13
                    elif __options[0] in ("set","setting","settings"):
                        print (__options[0], __options[1])
                        if __options[1]  is not  "":
                            self.opt['properties']['imp_set'] =
"".join(__options[1])
                            self.soc.debug( "%s"%("args imp_set:
",self.opt['properties']['imp_set']) )

#XXX#14
                    elif __options[0] in ("file","files"):
                        print (__options[0], __options[1])
                        if __options[1]  is not  "":
                            self.opt['properties']['imp_files'] =
"".join(__options[1])
                            self.soc.debug( "%s"%("args imp_files:
",self.opt['properties']['imp_files']) )

#XXX#15
                    elif __options[0] in ("flav","flavor","flavors"):
                        print (__options[0], __options[1])
                        if __options[1]  is not  "":
                            self.opt['properties']['imp_flavors'] =
"".join(__options[1])
                            self.soc.debug( "%s"%("args imp_flavors:
",self.opt['properties']['imp_flavors']) )

                    elif __options[0] in
("down","download","downloads","file_download"):
                        print (__options[0], __options[1])
                        if __options[1]  is not  "":
                            self.opt['properties']['imp_downloads'] =
"".join(__options[1])
                            self.soc.debug( "%s"%("args imp_downloads:
",self.opt['properties']['imp_downloads']) )

-Alex Goretoy
http://www.goretoy.com



On Sat, Mar 14, 2009 at 6:54 PM, MRAB <google at mrabarnett.plus.com> wrote:

>
>    def write(self, value, color="red", level="INFO"):
>        print "value=%s, color=%s, level=%s" % (repr(value), repr(color),
> repr(level))
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20090314/46837009/attachment.html>


More information about the Python-list mailing list