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-0001.html>
More information about the Python-list
mailing list