##// END OF EJS Templates
Merge with upstream
Merge with upstream

File last commit:

r1609:dd2a047c
r1670:099aada6 merge
Show More
api.py
106 lines | 3.3 KiB | text/x-python | PythonLexer
# encoding: utf-8
"""This is the official entry point to IPython's configuration system. """
__docformat__ = "restructuredtext en"
#-------------------------------------------------------------------------------
# Copyright (C) 2008 The IPython Development Team
#
# Distributed under the terms of the BSD License. The full license is in
# the file COPYING, distributed as part of this software.
#-------------------------------------------------------------------------------
#-------------------------------------------------------------------------------
# Imports
#-------------------------------------------------------------------------------
import os
from os.path import join as pjoin
from IPython.genutils import get_home_dir, get_ipython_dir
from IPython.external.configobj import ConfigObj
# Traitlets config imports
from IPython.config import traitlets
from IPython.config.config import *
from traitlets import *
class ConfigObjManager(object):
def __init__(self, configObj, filename):
self.current = configObj
self.current.indent_type = ' '
self.filename = filename
# self.write_default_config_file()
def get_config_obj(self):
return self.current
def update_config_obj(self, newConfig):
self.current.merge(newConfig)
def update_config_obj_from_file(self, filename):
newConfig = ConfigObj(filename, file_error=False)
self.current.merge(newConfig)
def update_config_obj_from_default_file(self, ipythondir=None):
fname = self.resolve_file_path(self.filename, ipythondir)
self.update_config_obj_from_file(fname)
def write_config_obj_to_file(self, filename):
f = open(filename, 'w')
self.current.write(f)
f.close()
def write_default_config_file(self):
ipdir = get_ipython_dir()
fname = pjoin(ipdir, self.filename)
if not os.path.isfile(fname):
print "Writing the configuration file to: " + fname
self.write_config_obj_to_file(fname)
def _import(self, key):
package = '.'.join(key.split('.')[0:-1])
obj = key.split('.')[-1]
execString = 'from %s import %s' % (package, obj)
exec execString
exec 'temp = %s' % obj
return temp
def resolve_file_path(self, filename, ipythondir = None):
"""Resolve filenames into absolute paths.
This function looks in the following directories in order:
1. In the current working directory or by absolute path with ~ expanded
2. In ipythondir if that is set
3. In the IPYTHONDIR environment variable if it exists
4. In the ~/.ipython directory
Note: The IPYTHONDIR is also used by the trunk version of IPython so
changing it will also affect it was well.
"""
# In cwd or by absolute path with ~ expanded
trythis = os.path.expanduser(filename)
if os.path.isfile(trythis):
return trythis
# In ipythondir if it is set
if ipythondir is not None:
trythis = pjoin(ipythondir, filename)
if os.path.isfile(trythis):
return trythis
trythis = pjoin(get_ipython_dir(), filename)
if os.path.isfile(trythis):
return trythis
return None