##// END OF EJS Templates
Ongoing work on the config system....
Ongoing work on the config system. At this point, I am mostly testing out various approaches, but: * class_traits and class_trait_names added. * appconfig example created for testing new config ideas. * InteractiveShell traits updated. * shortname handling added to command line config loader.

File last commit:

r3789:4999878d
r3789:4999878d
Show More
appconfig.py
55 lines | 1.5 KiB | text/x-python | PythonLexer
import sys
from IPython.config.configurable import Configurable
from IPython.utils.traitlets import (
Bool, Unicode, Int, Float, List
)
from IPython.config.loader import KeyValueConfigLoader
class Foo(Configurable):
i = Int(0, config=True, shortname='i', help="The integer i.")
j = Int(1, config=True, shortname='j', help="The integer j.")
name = Unicode(u'Brian', config=True, shortname='name', help="First name.")
class Bar(Configurable):
enabled = Bool(True, config=True, shortname="bar-enabled", help="Enable bar.")
class MyApp(Configurable):
app_name = Unicode(u'myapp', config=True, shortname="myapp", help="The app name.")
running = Bool(False, config=True, shortname="running", help="Is the app running?")
classes = List([Bar, Foo])
def __init__(self, **kwargs):
Configurable.__init__(self, **kwargs)
self.classes.insert(0, self.__class__)
def print_help(self):
for cls in self.classes:
cls.class_print_help()
print
def parse_command_line(self, argv=None):
if argv is None:
argv = sys.argv[1:]
if '-h' in argv or '--h' in argv:
self.print_help()
sys.exit(1)
loader = KeyValueConfigLoader(argv=argv, classes=self.classes)
config = loader.load_config()
self.config = config
def main():
app = MyApp()
app.parse_command_line()
print "app.config:"
print app.config
if __name__ == "__main__":
main()