Have you considered storing your arguments separately?
args = [{"args":("-u", "--url"),
"kwargs": {"action": "store", "dest": "url", "default": url,
"help": 'test script URL like "http://127.0.0.1/isof/hdb_ver_xml.hdb" or "hdb://127.0.0.1/isof/hdb_ver_xml.hdb"'}
}, ...]
Then whichever library you use, you can call:
try:
import argparse
parser = argparse.ArgumentParser()
for arg in args:
parser.add_argument(*arg['args'], **arg['kwargs'])
except:
import optparse
parser = optparse.OptionParser()
for arg in args:
parser.add_option(*arg['args'], **arg['kwargs'])
You could simplify further, allowing you to reduce the code in the try
block, by using the bound method separately:
try:
import argparse
except ImportError:
import optparse
parser = optparse.OptionParser()
add_func = parser.add_option
else:
parser = argparse.ArgumentParser()
add_func = parser.add_argument
for arg in args:
add_func(*arg["args"], **arg["kwargs"])