##// END OF EJS Templates
update config docs with recent changes...
MinRK -
Show More
@@ -1,61 +1,61 b''
1 .. _extensions_overview:
1 .. _extensions_overview:
2
2
3 ==================
3 ==================
4 IPython extensions
4 IPython extensions
5 ==================
5 ==================
6
6
7 Configuration files are just the first level of customization that IPython
7 Configuration files are just the first level of customization that IPython
8 supports. The next level is that of extensions. An IPython extension is an
8 supports. The next level is that of extensions. An IPython extension is an
9 importable Python module that has a a few special function. By defining these
9 importable Python module that has a a few special function. By defining these
10 functions, users can customize IPython by accessing the actual runtime objects
10 functions, users can customize IPython by accessing the actual runtime objects
11 of IPython. Here is a sample extension::
11 of IPython. Here is a sample extension::
12
12
13 # myextension.py
13 # myextension.py
14
14
15 def load_ipython_extension(ipython):
15 def load_ipython_extension(ipython):
16 # The ``ipython`` argument is the currently active
16 # The ``ipython`` argument is the currently active
17 # :class:`InteractiveShell` instance that can be used in any way.
17 # :class:`InteractiveShell` instance that can be used in any way.
18 # This allows you do to things like register new magics, plugins or
18 # This allows you do to things like register new magics, plugins or
19 # aliases.
19 # aliases.
20
20
21 def unload_ipython_extension(ipython):
21 def unload_ipython_extension(ipython):
22 # If you want your extension to be unloadable, put that logic here.
22 # If you want your extension to be unloadable, put that logic here.
23
23
24 This :func:`load_ipython_extension` function is called after your extension is
24 This :func:`load_ipython_extension` function is called after your extension is
25 imported and the currently active :class:`InteractiveShell` instance is passed
25 imported and the currently active :class:`InteractiveShell` instance is passed
26 as the only argument. You can do anything you want with IPython at that point.
26 as the only argument. You can do anything you want with IPython at that point.
27
27
28 The :func:`load_ipython_extension` will be called again is you load or reload
28 The :func:`load_ipython_extension` will be called again is you load or reload
29 the extension again. It is up to the extension author to add code to manage
29 the extension again. It is up to the extension author to add code to manage
30 that.
30 that.
31
31
32 You can put your extension modules anywhere you want, as long as they can be
32 You can put your extension modules anywhere you want, as long as they can be
33 imported by Python's standard import mechanism. However, to make it easy to
33 imported by Python's standard import mechanism. However, to make it easy to
34 write extensions, you can also put your extensions in
34 write extensions, you can also put your extensions in
35 ``os.path.join(self.ipython_dir, 'extensions')``. This directory is added to
35 ``os.path.join(self.ipython_dir, 'extensions')``. This directory is added to
36 ``sys.path`` automatically.
36 ``sys.path`` automatically.
37
37
38 Using extensions
38 Using extensions
39 ================
39 ================
40
40
41 There are two ways you can tell IPython to use your extension:
41 There are two ways you can tell IPython to use your extension:
42
42
43 1. Listing it in a configuration file.
43 1. Listing it in a configuration file.
44 2. Using the ``%load_ext`` magic function.
44 2. Using the ``%load_ext`` magic function.
45
45
46 To load an extension called :file:`myextension.py` add the following logic
46 To load an extension called :file:`myextension.py` add the following logic
47 to your configuration file::
47 to your configuration file::
48
48
49 c.Global.extensions = [
49 c.InteractiveShellApp.extensions = [
50 'myextension'
50 'myextension'
51 ]
51 ]
52
52
53 To load that same extension at runtime, use the ``%load_ext`` magic::
53 To load that same extension at runtime, use the ``%load_ext`` magic::
54
54
55 .. sourcecode:: ipython
55 .. sourcecode:: ipython
56
56
57 In [1]: %load_ext myextension
57 In [1]: %load_ext myextension
58
58
59 To summarize, in conjunction with configuration files and profiles, IPython
59 To summarize, in conjunction with configuration files and profiles, IPython
60 extensions give you complete and flexible control over your IPython
60 extensions give you complete and flexible control over your IPython
61 setup.
61 setup.
@@ -1,136 +1,147 b''
1 .. _configuring_ipython:
1 .. _configuring_ipython:
2
2
3 ===========================================================
3 ===========================================================
4 Configuring the :command:`ipython` command line application
4 Configuring the :command:`ipython` command line application
5 ===========================================================
5 ===========================================================
6
6
7 This section contains information about how to configure the
7 This section contains information about how to configure the
8 :command:`ipython` command line application. See the :ref:`configuration
8 :command:`ipython` command line application. See the :ref:`configuration
9 overview <config_overview>` for a more general description of the
9 overview <config_overview>` for a more general description of the
10 configuration system and configuration file format.
10 configuration system and configuration file format.
11
11
12 The default configuration file for the :command:`ipython` command line application
12 The default configuration file for the :command:`ipython` command line application
13 is :file:`ipython_config.py`. By setting the attributes in this file, you
13 is :file:`ipython_config.py`. By setting the attributes in this file, you
14 can configure the application. A sample is provided in
14 can configure the application. A sample is provided in
15 :mod:`IPython.config.default.ipython_config`. Simply copy this file to your
15 :mod:`IPython.config.default.ipython_config`. Simply copy this file to your
16 :ref:`IPython directory <ipython_dir>` to start using it.
16 :ref:`IPython directory <ipython_dir>` to start using it.
17
17
18 Most configuration attributes that this file accepts are associated with
18 Most configuration attributes that this file accepts are associated with classes
19 classes that are subclasses of :class:`~IPython.core.component.Component`.
19 that are subclasses of :class:`~IPython.config.configurable.Configurable`.
20
20
21 A few configuration attributes are not associated with a particular
21 Applications themselves are Configurable as well, so we will start with some
22 :class:`~IPython.core.component.Component` subclass. These are application
22 application-level config.
23 wide configuration attributes and are stored in the ``Global``
24 sub-configuration section. We begin with a description of these
25 attributes.
26
23
27 Global configuration
24 Application-level configuration
28 ====================
25 ===============================
29
26
30 Assuming that your configuration file has the following at the top::
27 Assuming that your configuration file has the following at the top::
31
28
32 c = get_config()
29 c = get_config()
33
30
34 the following attributes can be set in the ``Global`` section.
31 the following attributes are set application-wide:
35
32
36 :attr:`c.IPythonApp.display_banner`
33 terminal IPython-only flags:
34
35 :attr:`c.TerminalIPythonApp.display_banner`
37 A boolean that determined if the banner is printer when :command:`ipython`
36 A boolean that determined if the banner is printer when :command:`ipython`
38 is started.
37 is started.
39
38
40 :attr:`c.IPythonApp.classic`
39 :attr:`c.TerminalIPythonApp.classic`
41 A boolean that determines if IPython starts in "classic" mode. In this
40 A boolean that determines if IPython starts in "classic" mode. In this
42 mode, the prompts and everything mimic that of the normal :command:`python`
41 mode, the prompts and everything mimic that of the normal :command:`python`
43 shell
42 shell
44
43
45 :attr:`c.IPythonApp.nosep`
44 :attr:`c.TerminalIPythonApp.nosep`
46 A boolean that determines if there should be no blank lines between
45 A boolean that determines if there should be no blank lines between
47 prompts.
46 prompts.
48
47
49 :attr:`c.IPythonApp.log_level`
48 :attr:`c.Application.log_level`
50 An integer that sets the detail of the logging level during the startup
49 An integer that sets the detail of the logging level during the startup
51 of :command:`ipython`. The default is 30 and the possible values are
50 of :command:`ipython`. The default is 30 and the possible values are
52 (0, 10, 20, 30, 40, 50). Higher is quieter and lower is more verbose.
51 (0, 10, 20, 30, 40, 50). Higher is quieter and lower is more verbose.
52 This can also be set by the name of the logging level, e.g. INFO=20,
53 WARN=30.
54
55 Some options, such as extensions and startup code, can be set for any
56 application that starts an
57 :class:`~IPython.core.interactiveshell.InteractiveShell`. These apps are
58 subclasses of :class:`~IPython.core.shellapp.InteractiveShellApp`. Since
59 subclasses inherit configuration, setting a trait of
60 :attr:`c.InteractiveShellApp` will affect all IPython applications, but if you
61 want terminal IPython and the QtConsole to have different values, you can set
62 them via :attr:`c.TerminalIPythonApp` and :attr:`c.IPKernelApp` respectively.
63
53
64
54 :attr:`c.IPythonApp.extensions`
65 :attr:`c.InteractiveShellApp.extensions`
55 A list of strings, each of which is an importable IPython extension. An
66 A list of strings, each of which is an importable IPython extension. An
56 IPython extension is a regular Python module or package that has a
67 IPython extension is a regular Python module or package that has a
57 :func:`load_ipython_extension(ip)` method. This method gets called when
68 :func:`load_ipython_extension(ip)` method. This method gets called when
58 the extension is loaded with the currently running
69 the extension is loaded with the currently running
59 :class:`~IPython.core.iplib.InteractiveShell` as its only argument. You
70 :class:`~IPython.core.interactiveshell.InteractiveShell` as its only
60 can put your extensions anywhere they can be imported but we add the
71 argument. You can put your extensions anywhere they can be imported but we
61 :file:`extensions` subdirectory of the ipython directory to ``sys.path``
72 add the :file:`extensions` subdirectory of the ipython directory to
62 during extension loading, so you can put them there as well. Extensions
73 ``sys.path`` during extension loading, so you can put them there as well.
63 are not executed in the user's interactive namespace and they must be pure
74 Extensions are not executed in the user's interactive namespace and they
64 Python code. Extensions are the recommended way of customizing
75 must be pure Python code. Extensions are the recommended way of customizing
65 :command:`ipython`. Extensions can provide an
76 :command:`ipython`. Extensions can provide an
66 :func:`unload_ipython_extension` that will be called when the extension is
77 :func:`unload_ipython_extension` that will be called when the extension is
67 unloaded.
78 unloaded.
68
79
69 :attr:`c.IPythonApp.exec_lines`
80 :attr:`c.InteractiveShellApp.exec_lines`
70 A list of strings, each of which is Python code that is run in the user's
81 A list of strings, each of which is Python code that is run in the user's
71 namespace after IPython start. These lines can contain full IPython syntax
82 namespace after IPython start. These lines can contain full IPython syntax
72 with magics, etc.
83 with magics, etc.
73
84
74 :attr:`c.IPythonApp.exec_files`
85 :attr:`c.InteractiveShellApp.exec_files`
75 A list of strings, each of which is the full pathname of a ``.py`` or
86 A list of strings, each of which is the full pathname of a ``.py`` or
76 ``.ipy`` file that will be executed as IPython starts. These files are run
87 ``.ipy`` file that will be executed as IPython starts. These files are run
77 in IPython in the user's namespace. Files with a ``.py`` extension need to
88 in IPython in the user's namespace. Files with a ``.py`` extension need to
78 be pure Python. Files with a ``.ipy`` extension can have custom IPython
89 be pure Python. Files with a ``.ipy`` extension can have custom IPython
79 syntax (magics, etc.). These files need to be in the cwd, the ipythondir
90 syntax (magics, etc.). These files need to be in the cwd, the ipythondir
80 or be absolute paths.
91 or be absolute paths.
81
92
82 Classes that can be configured
93 Classes that can be configured
83 ==============================
94 ==============================
84
95
85 The following classes can also be configured in the configuration file for
96 The following classes can also be configured in the configuration file for
86 :command:`ipython`:
97 :command:`ipython`:
87
98
88 * :class:`~IPython.core.iplib.InteractiveShell`
99 * :class:`~IPython.core.interactiveshell.InteractiveShell`
89
100
90 * :class:`~IPython.core.prefilter.PrefilterManager`
101 * :class:`~IPython.core.prefilter.PrefilterManager`
91
102
92 * :class:`~IPython.core.alias.AliasManager`
103 * :class:`~IPython.core.alias.AliasManager`
93
104
94 To see which attributes of these classes are configurable, please see the
105 To see which attributes of these classes are configurable, please see the
95 source code for these classes, the class docstrings or the sample
106 source code for these classes, the class docstrings or the sample
96 configuration file :mod:`IPython.config.default.ipython_config`.
107 configuration file :mod:`IPython.config.default.ipython_config`.
97
108
98 Example
109 Example
99 =======
110 =======
100
111
101 For those who want to get a quick start, here is a sample
112 For those who want to get a quick start, here is a sample
102 :file:`ipython_config.py` that sets some of the common configuration
113 :file:`ipython_config.py` that sets some of the common configuration
103 attributes::
114 attributes::
104
115
105 # sample ipython_config.py
116 # sample ipython_config.py
106 c = get_config()
117 c = get_config()
107
118
108 c.IPythonApp.display_banner = True
119 c.IPythonTerminalApp.display_banner = True
109 c.IPythonApp.log_level = 20
120 c.InteractiveShellApp.log_level = 20
110 c.IPythonApp.extensions = [
121 c.InteractiveShellApp.extensions = [
111 'myextension'
122 'myextension'
112 ]
123 ]
113 c.IPythonApp.exec_lines = [
124 c.InteractiveShellApp.exec_lines = [
114 'import numpy',
125 'import numpy',
115 'import scipy'
126 'import scipy'
116 ]
127 ]
117 c.IPythonApp.exec_files = [
128 c.InteractiveShellApp.exec_files = [
118 'mycode.py',
129 'mycode.py',
119 'fancy.ipy'
130 'fancy.ipy'
120 ]
131 ]
121 c.InteractiveShell.autoindent = True
132 c.InteractiveShell.autoindent = True
122 c.InteractiveShell.colors = 'LightBG'
133 c.InteractiveShell.colors = 'LightBG'
123 c.InteractiveShell.confirm_exit = False
134 c.InteractiveShell.confirm_exit = False
124 c.InteractiveShell.deep_reload = True
135 c.InteractiveShell.deep_reload = True
125 c.InteractiveShell.editor = 'nano'
136 c.InteractiveShell.editor = 'nano'
126 c.InteractiveShell.prompt_in1 = 'In [\#]: '
137 c.InteractiveShell.prompt_in1 = 'In [\#]: '
127 c.InteractiveShell.prompt_in2 = ' .\D.: '
138 c.InteractiveShell.prompt_in2 = ' .\D.: '
128 c.InteractiveShell.prompt_out = 'Out[\#]: '
139 c.InteractiveShell.prompt_out = 'Out[\#]: '
129 c.InteractiveShell.prompts_pad_left = True
140 c.InteractiveShell.prompts_pad_left = True
130 c.InteractiveShell.xmode = 'Context'
141 c.InteractiveShell.xmode = 'Context'
131
142
132 c.PrefilterManager.multi_line_specials = True
143 c.PrefilterManager.multi_line_specials = True
133
144
134 c.AliasManager.user_aliases = [
145 c.AliasManager.user_aliases = [
135 ('la', 'ls -al')
146 ('la', 'ls -al')
136 ]
147 ]
@@ -1,342 +1,479 b''
1 .. _config_overview:
1 .. _config_overview:
2
2
3 ============================================
3 ============================================
4 Overview of the IPython configuration system
4 Overview of the IPython configuration system
5 ============================================
5 ============================================
6
6
7 This section describes the IPython configuration system. Starting with version
7 This section describes the IPython configuration system. Starting with version
8 0.11, IPython has a completely new configuration system that is quite
8 0.11, IPython has a completely new configuration system that is quite
9 different from the older :file:`ipythonrc` or :file:`ipy_user_conf.py`
9 different from the older :file:`ipythonrc` or :file:`ipy_user_conf.py`
10 approaches. The new configuration system was designed from scratch to address
10 approaches. The new configuration system was designed from scratch to address
11 the particular configuration needs of IPython. While there are many
11 the particular configuration needs of IPython. While there are many
12 other excellent configuration systems out there, we found that none of them
12 other excellent configuration systems out there, we found that none of them
13 met our requirements.
13 met our requirements.
14
14
15 .. warning::
15 .. warning::
16
16
17 If you are upgrading to version 0.11 of IPython, you will need to migrate
17 If you are upgrading to version 0.11 of IPython, you will need to migrate
18 your old :file:`ipythonrc` or :file:`ipy_user_conf.py` configuration files
18 your old :file:`ipythonrc` or :file:`ipy_user_conf.py` configuration files
19 to the new system. Read on for information on how to do this.
19 to the new system. Read on for information on how to do this.
20
20
21 The discussion that follows is focused on teaching user's how to configure
21 The discussion that follows is focused on teaching users how to configure
22 IPython to their liking. Developer's who want to know more about how they
22 IPython to their liking. Developers who want to know more about how they
23 can enable their objects to take advantage of the configuration system
23 can enable their objects to take advantage of the configuration system
24 should consult our :ref:`developer guide <developer_guide>`
24 should consult our :ref:`developer guide <developer_guide>`
25
25
26 The main concepts
26 The main concepts
27 =================
27 =================
28
28
29 There are a number of abstractions that the IPython configuration system uses.
29 There are a number of abstractions that the IPython configuration system uses.
30 Each of these abstractions is represented by a Python class.
30 Each of these abstractions is represented by a Python class.
31
31
32 Configuration object: :class:`~IPython.config.loader.Config`
32 Configuration object: :class:`~IPython.config.loader.Config`
33 A configuration object is a simple dictionary-like class that holds
33 A configuration object is a simple dictionary-like class that holds
34 configuration attributes and sub-configuration objects. These classes
34 configuration attributes and sub-configuration objects. These classes
35 support dotted attribute style access (``Foo.bar``) in addition to the
35 support dotted attribute style access (``Foo.bar``) in addition to the
36 regular dictionary style access (``Foo['bar']``). Configuration objects
36 regular dictionary style access (``Foo['bar']``). Configuration objects
37 are smart. They know how to merge themselves with other configuration
37 are smart. They know how to merge themselves with other configuration
38 objects and they automatically create sub-configuration objects.
38 objects and they automatically create sub-configuration objects.
39
39
40 Application: :class:`~IPython.core.application.Application`
40 Application: :class:`~IPython.config.application.Application`
41 An application is a process that does a specific job. The most obvious
41 An application is a process that does a specific job. The most obvious
42 application is the :command:`ipython` command line program. Each
42 application is the :command:`ipython` command line program. Each
43 application reads a *single* configuration file and command line options
43 application reads *one or more* configuration files and a single set of
44 command line options
44 and then produces a master configuration object for the application. This
45 and then produces a master configuration object for the application. This
45 configuration object is then passed to the configurable objects that the
46 configuration object is then passed to the configurable objects that the
46 application creates. These configurable objects implement the actual logic
47 application creates. These configurable objects implement the actual logic
47 of the application and know how to configure themselves given the
48 of the application and know how to configure themselves given the
48 configuration object.
49 configuration object.
50
51 Applications always have a `log` attribute that is a configured Logger.
52 This allows centralized logging configuration per-application.
49
53
50 Component: :class:`~IPython.config.configurable.Configurable`
54 Component: :class:`~IPython.config.configurable.Configurable`
51 A configurable is a regular Python class that serves as a base class for
55 A configurable is a regular Python class that serves as a base class for
52 all main classes in an application. The
56 all main classes in an application. The
53 :class:`~IPython.config.configurable.Configurable` base class is
57 :class:`~IPython.config.configurable.Configurable` base class is
54 lightweight and only does one things.
58 lightweight and only does one things.
55
59
56 This :class:`~IPython.config.configurable.Configurable` is a subclass
60 This :class:`~IPython.config.configurable.Configurable` is a subclass
57 of :class:`~IPython.utils.traitlets.HasTraits` that knows how to configure
61 of :class:`~IPython.utils.traitlets.HasTraits` that knows how to configure
58 itself. Class level traits with the metadata ``config=True`` become
62 itself. Class level traits with the metadata ``config=True`` become
59 values that can be configured from the command line and configuration
63 values that can be configured from the command line and configuration
60 files.
64 files.
61
65
62 Developers create :class:`~IPython.config.configurable.Configurable`
66 Developers create :class:`~IPython.config.configurable.Configurable`
63 subclasses that implement all of the logic in the application. Each of
67 subclasses that implement all of the logic in the application. Each of
64 these subclasses has its own configuration information that controls how
68 these subclasses has its own configuration information that controls how
65 instances are created.
69 instances are created.
66
70
71 Singletons: :class:`~IPython.config.configurable.SingletonConfigurable`
72 Any object for which there is a single canonical instance. These are
73 just like Configurables, except they have a class method
74 :meth:`~IPython.config.configurable.SingletonConfigurable.instance`,
75 that returns the current active instance (or creates one if it
76 does not exist). Examples of singletons include
77 :class:`~IPython.config.application.Application`s and
78 :class:`~IPython.core.interactiveshell.InteractiveShell`. This lets
79 objects easily connect to the current running Application without passing
80 objects around everywhere. For instance, to get the current running
81 Application instance, simply do: ``app = Application.instance()``.
82
83
84 .. note::
85
86 Singletons are not strictly enforced - you can have many instances
87 of a given singleton class, but the :meth:`instance` method will always
88 return the same one.
89
67 Having described these main concepts, we can now state the main idea in our
90 Having described these main concepts, we can now state the main idea in our
68 configuration system: *"configuration" allows the default values of class
91 configuration system: *"configuration" allows the default values of class
69 attributes to be controlled on a class by class basis*. Thus all instances of
92 attributes to be controlled on a class by class basis*. Thus all instances of
70 a given class are configured in the same way. Furthermore, if two instances
93 a given class are configured in the same way. Furthermore, if two instances
71 need to be configured differently, they need to be instances of two different
94 need to be configured differently, they need to be instances of two different
72 classes. While this model may seem a bit restrictive, we have found that it
95 classes. While this model may seem a bit restrictive, we have found that it
73 expresses most things that need to be configured extremely well. However, it
96 expresses most things that need to be configured extremely well. However, it
74 is possible to create two instances of the same class that have different
97 is possible to create two instances of the same class that have different
75 trait values. This is done by overriding the configuration.
98 trait values. This is done by overriding the configuration.
76
99
77 Now, we show what our configuration objects and files look like.
100 Now, we show what our configuration objects and files look like.
78
101
79 Configuration objects and files
102 Configuration objects and files
80 ===============================
103 ===============================
81
104
82 A configuration file is simply a pure Python file that sets the attributes
105 A configuration file is simply a pure Python file that sets the attributes
83 of a global, pre-created configuration object. This configuration object is a
106 of a global, pre-created configuration object. This configuration object is a
84 :class:`~IPython.config.loader.Config` instance. While in a configuration
107 :class:`~IPython.config.loader.Config` instance. While in a configuration
85 file, to get a reference to this object, simply call the :func:`get_config`
108 file, to get a reference to this object, simply call the :func:`get_config`
86 function. We inject this function into the global namespace that the
109 function. We inject this function into the global namespace that the
87 configuration file is executed in.
110 configuration file is executed in.
88
111
89 Here is an example of a super simple configuration file that does nothing::
112 Here is an example of a super simple configuration file that does nothing::
90
113
91 c = get_config()
114 c = get_config()
92
115
93 Once you get a reference to the configuration object, you simply set
116 Once you get a reference to the configuration object, you simply set
94 attributes on it. All you have to know is:
117 attributes on it. All you have to know is:
95
118
96 * The name of each attribute.
119 * The name of each attribute.
97 * The type of each attribute.
120 * The type of each attribute.
98
121
99 The answers to these two questions are provided by the various
122 The answers to these two questions are provided by the various
100 :class:`~IPython.config.configurable.Configurable` subclasses that an
123 :class:`~IPython.config.configurable.Configurable` subclasses that an
101 application uses. Let's look at how this would work for a simple component
124 application uses. Let's look at how this would work for a simple component
102 subclass::
125 subclass::
103
126
104 # Sample component that can be configured.
127 # Sample component that can be configured.
105 from IPython.config.configurable import Configurable
128 from IPython.config.configurable import Configurable
106 from IPython.utils.traitlets import Int, Float, Str, Bool
129 from IPython.utils.traitlets import Int, Float, Str, Bool
107
130
108 class MyClass(Configurable):
131 class MyClass(Configurable):
109 name = Str('defaultname', config=True)
132 name = Unicode(u'defaultname', config=True)
110 ranking = Int(0, config=True)
133 ranking = Int(0, config=True)
111 value = Float(99.0)
134 value = Float(99.0)
112 # The rest of the class implementation would go here..
135 # The rest of the class implementation would go here..
113
136
114 In this example, we see that :class:`MyClass` has three attributes, two
137 In this example, we see that :class:`MyClass` has three attributes, two
115 of whom (``name``, ``ranking``) can be configured. All of the attributes
138 of whom (``name``, ``ranking``) can be configured. All of the attributes
116 are given types and default values. If a :class:`MyClass` is instantiated,
139 are given types and default values. If a :class:`MyClass` is instantiated,
117 but not configured, these default values will be used. But let's see how
140 but not configured, these default values will be used. But let's see how
118 to configure this class in a configuration file::
141 to configure this class in a configuration file::
119
142
120 # Sample config file
143 # Sample config file
121 c = get_config()
144 c = get_config()
122
145
123 c.MyClass.name = 'coolname'
146 c.MyClass.name = 'coolname'
124 c.MyClass.ranking = 10
147 c.MyClass.ranking = 10
125
148
126 After this configuration file is loaded, the values set in it will override
149 After this configuration file is loaded, the values set in it will override
127 the class defaults anytime a :class:`MyClass` is created. Furthermore,
150 the class defaults anytime a :class:`MyClass` is created. Furthermore,
128 these attributes will be type checked and validated anytime they are set.
151 these attributes will be type checked and validated anytime they are set.
129 This type checking is handled by the :mod:`IPython.utils.traitlets` module,
152 This type checking is handled by the :mod:`IPython.utils.traitlets` module,
130 which provides the :class:`Str`, :class:`Int` and :class:`Float` types. In
153 which provides the :class:`Str`, :class:`Int` and :class:`Float` types. In
131 addition to these traitlets, the :mod:`IPython.utils.traitlets` provides
154 addition to these traitlets, the :mod:`IPython.utils.traitlets` provides
132 traitlets for a number of other types.
155 traitlets for a number of other types.
133
156
134 .. note::
157 .. note::
135
158
136 Underneath the hood, the :class:`Configurable` base class is a subclass of
159 Underneath the hood, the :class:`Configurable` base class is a subclass of
137 :class:`IPython.utils.traitlets.HasTraits`. The
160 :class:`IPython.utils.traitlets.HasTraits`. The
138 :mod:`IPython.utils.traitlets` module is a lightweight version of
161 :mod:`IPython.utils.traitlets` module is a lightweight version of
139 :mod:`enthought.traits`. Our implementation is a pure Python subset
162 :mod:`enthought.traits`. Our implementation is a pure Python subset
140 (mostly API compatible) of :mod:`enthought.traits` that does not have any
163 (mostly API compatible) of :mod:`enthought.traits` that does not have any
141 of the automatic GUI generation capabilities. Our plan is to achieve 100%
164 of the automatic GUI generation capabilities. Our plan is to achieve 100%
142 API compatibility to enable the actual :mod:`enthought.traits` to
165 API compatibility to enable the actual :mod:`enthought.traits` to
143 eventually be used instead. Currently, we cannot use
166 eventually be used instead. Currently, we cannot use
144 :mod:`enthought.traits` as we are committed to the core of IPython being
167 :mod:`enthought.traits` as we are committed to the core of IPython being
145 pure Python.
168 pure Python.
146
169
147 It should be very clear at this point what the naming convention is for
170 It should be very clear at this point what the naming convention is for
148 configuration attributes::
171 configuration attributes::
149
172
150 c.ClassName.attribute_name = attribute_value
173 c.ClassName.attribute_name = attribute_value
151
174
152 Here, ``ClassName`` is the name of the class whose configuration attribute you
175 Here, ``ClassName`` is the name of the class whose configuration attribute you
153 want to set, ``attribute_name`` is the name of the attribute you want to set
176 want to set, ``attribute_name`` is the name of the attribute you want to set
154 and ``attribute_value`` the the value you want it to have. The ``ClassName``
177 and ``attribute_value`` the the value you want it to have. The ``ClassName``
155 attribute of ``c`` is not the actual class, but instead is another
178 attribute of ``c`` is not the actual class, but instead is another
156 :class:`~IPython.config.loader.Config` instance.
179 :class:`~IPython.config.loader.Config` instance.
157
180
158 .. note::
181 .. note::
159
182
160 The careful reader may wonder how the ``ClassName`` (``MyClass`` in
183 The careful reader may wonder how the ``ClassName`` (``MyClass`` in
161 the above example) attribute of the configuration object ``c`` gets
184 the above example) attribute of the configuration object ``c`` gets
162 created. These attributes are created on the fly by the
185 created. These attributes are created on the fly by the
163 :class:`~IPython.config.loader.Config` instance, using a simple naming
186 :class:`~IPython.config.loader.Config` instance, using a simple naming
164 convention. Any attribute of a :class:`~IPython.config.loader.Config`
187 convention. Any attribute of a :class:`~IPython.config.loader.Config`
165 instance whose name begins with an uppercase character is assumed to be a
188 instance whose name begins with an uppercase character is assumed to be a
166 sub-configuration and a new empty :class:`~IPython.config.loader.Config`
189 sub-configuration and a new empty :class:`~IPython.config.loader.Config`
167 instance is dynamically created for that attribute. This allows deeply
190 instance is dynamically created for that attribute. This allows deeply
168 hierarchical information created easily (``c.Foo.Bar.value``) on the fly.
191 hierarchical information created easily (``c.Foo.Bar.value``) on the fly.
169
192
170 Configuration files inheritance
193 Configuration files inheritance
171 ===============================
194 ===============================
172
195
173 Let's say you want to have different configuration files for various purposes.
196 Let's say you want to have different configuration files for various purposes.
174 Our configuration system makes it easy for one configuration file to inherit
197 Our configuration system makes it easy for one configuration file to inherit
175 the information in another configuration file. The :func:`load_subconfig`
198 the information in another configuration file. The :func:`load_subconfig`
176 command can be used in a configuration file for this purpose. Here is a simple
199 command can be used in a configuration file for this purpose. Here is a simple
177 example that loads all of the values from the file :file:`base_config.py`::
200 example that loads all of the values from the file :file:`base_config.py`::
178
201
179 # base_config.py
202 # base_config.py
180 c = get_config()
203 c = get_config()
181 c.MyClass.name = 'coolname'
204 c.MyClass.name = 'coolname'
182 c.MyClass.ranking = 100
205 c.MyClass.ranking = 100
183
206
184 into the configuration file :file:`main_config.py`::
207 into the configuration file :file:`main_config.py`::
185
208
186 # main_config.py
209 # main_config.py
187 c = get_config()
210 c = get_config()
188
211
189 # Load everything from base_config.py
212 # Load everything from base_config.py
190 load_subconfig('base_config.py')
213 load_subconfig('base_config.py')
191
214
192 # Now override one of the values
215 # Now override one of the values
193 c.MyClass.name = 'bettername'
216 c.MyClass.name = 'bettername'
194
217
195 In a situation like this the :func:`load_subconfig` makes sure that the
218 In a situation like this the :func:`load_subconfig` makes sure that the
196 search path for sub-configuration files is inherited from that of the parent.
219 search path for sub-configuration files is inherited from that of the parent.
197 Thus, you can typically put the two in the same directory and everything will
220 Thus, you can typically put the two in the same directory and everything will
198 just work.
221 just work.
199
222
223 You can also load configuration files by profile, for instance:
224
225 .. sourcecode:: python
226
227 load_subconfig('ipython_config.py', profile='default')
228
229 to inherit your default configuration as a starting point.
230
231
200 Class based configuration inheritance
232 Class based configuration inheritance
201 =====================================
233 =====================================
202
234
203 There is another aspect of configuration where inheritance comes into play.
235 There is another aspect of configuration where inheritance comes into play.
204 Sometimes, your classes will have an inheritance hierarchy that you want
236 Sometimes, your classes will have an inheritance hierarchy that you want
205 to be reflected in the configuration system. Here is a simple example::
237 to be reflected in the configuration system. Here is a simple example::
206
238
207 from IPython.config.configurable import Configurable
239 from IPython.config.configurable import Configurable
208 from IPython.utils.traitlets import Int, Float, Str, Bool
240 from IPython.utils.traitlets import Int, Float, Str, Bool
209
241
210 class Foo(Configurable):
242 class Foo(Configurable):
211 name = Str('fooname', config=True)
243 name = Str('fooname', config=True)
212 value = Float(100.0, config=True)
244 value = Float(100.0, config=True)
213
245
214 class Bar(Foo):
246 class Bar(Foo):
215 name = Str('barname', config=True)
247 name = Str('barname', config=True)
216 othervalue = Int(0, config=True)
248 othervalue = Int(0, config=True)
217
249
218 Now, we can create a configuration file to configure instances of :class:`Foo`
250 Now, we can create a configuration file to configure instances of :class:`Foo`
219 and :class:`Bar`::
251 and :class:`Bar`::
220
252
221 # config file
253 # config file
222 c = get_config()
254 c = get_config()
223
255
224 c.Foo.name = 'bestname'
256 c.Foo.name = 'bestname'
225 c.Bar.othervalue = 10
257 c.Bar.othervalue = 10
226
258
227 This class hierarchy and configuration file accomplishes the following:
259 This class hierarchy and configuration file accomplishes the following:
228
260
229 * The default value for :attr:`Foo.name` and :attr:`Bar.name` will be
261 * The default value for :attr:`Foo.name` and :attr:`Bar.name` will be
230 'bestname'. Because :class:`Bar` is a :class:`Foo` subclass it also
262 'bestname'. Because :class:`Bar` is a :class:`Foo` subclass it also
231 picks up the configuration information for :class:`Foo`.
263 picks up the configuration information for :class:`Foo`.
232 * The default value for :attr:`Foo.value` and :attr:`Bar.value` will be
264 * The default value for :attr:`Foo.value` and :attr:`Bar.value` will be
233 ``100.0``, which is the value specified as the class default.
265 ``100.0``, which is the value specified as the class default.
234 * The default value for :attr:`Bar.othervalue` will be 10 as set in the
266 * The default value for :attr:`Bar.othervalue` will be 10 as set in the
235 configuration file. Because :class:`Foo` is the parent of :class:`Bar`
267 configuration file. Because :class:`Foo` is the parent of :class:`Bar`
236 it doesn't know anything about the :attr:`othervalue` attribute.
268 it doesn't know anything about the :attr:`othervalue` attribute.
237
269
238
270
239 .. _ipython_dir:
271 .. _ipython_dir:
240
272
241 Configuration file location
273 Configuration file location
242 ===========================
274 ===========================
243
275
244 So where should you put your configuration files? By default, all IPython
276 So where should you put your configuration files? IPython uses "profiles" for
245 applications look in the so called "IPython directory". The location of
277 configuration, and by default, all profiles will be stored in the so called
246 this directory is determined by the following algorithm:
278 "IPython directory". The location of this directory is determined by the
279 following algorithm:
247
280
248 * If the ``ipython_dir`` command line flag is given, its value is used.
281 * If the ``ipython_dir`` command line flag is given, its value is used.
249
282
250 * If not, the value returned by :func:`IPython.utils.path.get_ipython_dir`
283 * If not, the value returned by :func:`IPython.utils.path.get_ipython_dir`
251 is used. This function will first look at the :envvar:`IPYTHON_DIR`
284 is used. This function will first look at the :envvar:`IPYTHON_DIR`
252 environment variable and then default to a platform-specific default.
285 environment variable and then default to a platform-specific default.
253
286
254 On posix systems (Linux, Unix, etc.), IPython respects the ``$XDG_CONFIG_HOME``
287 On posix systems (Linux, Unix, etc.), IPython respects the ``$XDG_CONFIG_HOME``
255 part of the `XDG Base Directory`_ specification. If ``$XDG_CONFIG_HOME`` is
288 part of the `XDG Base Directory`_ specification. If ``$XDG_CONFIG_HOME`` is
256 defined and exists ( ``XDG_CONFIG_HOME`` has a default interpretation of
289 defined and exists ( ``XDG_CONFIG_HOME`` has a default interpretation of
257 :file:`$HOME/.config`), then IPython's config directory will be located in
290 :file:`$HOME/.config`), then IPython's config directory will be located in
258 :file:`$XDG_CONFIG_HOME/ipython`. If users still have an IPython directory
291 :file:`$XDG_CONFIG_HOME/ipython`. If users still have an IPython directory
259 in :file:`$HOME/.ipython`, then that will be used. in preference to the
292 in :file:`$HOME/.ipython`, then that will be used. in preference to the
260 system default.
293 system default.
261
294
262 For most users, the default value will simply be something like
295 For most users, the default value will simply be something like
263 :file:`$HOME/.config/ipython` on Linux, or :file:`$HOME/.ipython`
296 :file:`$HOME/.config/ipython` on Linux, or :file:`$HOME/.ipython`
264 elsewhere.
297 elsewhere.
265
298
266 Once the location of the IPython directory has been determined, you need to
299 Once the location of the IPython directory has been determined, you need to know
267 know what filename to use for the configuration file. The basic idea is that
300 which profile you are using. For users with a single configuration, this will
268 each application has its own default configuration filename. The default named
301 simply be 'default', and will be located in
269 used by the :command:`ipython` command line program is
302 :file:`<IPYTHON_DIR>/profile_default`.
270 :file:`ipython_config.py`. This value can be overriden by the ``config_file``
303
271 command line flag. A sample :file:`ipython_config.py` file can be found
304 The next thing you need to know is what to call your configuration file. The
272 in :mod:`IPython.config.default.ipython_config.py`. Simple copy it to your
305 basic idea is that each application has its own default configuration filename.
273 IPython directory to begin using it.
306 The default named used by the :command:`ipython` command line program is
307 :file:`ipython_config.py`, and *all* IPython applications will use this file.
308 Other applications, such as the parallel :command:`ipcluster` scripts or the
309 QtConsole will load their own config files *after* :file:`ipython_config.py`. To
310 load a particular configuration file instead of the default, the name can be
311 overridden by the ``config_file`` command line flag.
312
313 To generate the default configuration files, do::
314
315 $> ipython profile create
316
317 and you will have a default :file:`ipython_config.py` in your IPython directory
318 under :file:`profile_default`. If you want the default config files for the
319 :mod:`IPython.parallel` applications, add ``--parallel`` to the end of the
320 command-line args.
274
321
275 .. _Profiles:
322 .. _Profiles:
276
323
277 Profiles
324 Profiles
278 ========
325 ========
279
326
280 A profile is simply a configuration file that follows a simple naming
327 A profile is a directory containing configuration and runtime files, such as
281 convention and can be loaded using a simplified syntax. The idea is
328 logs, connection info for the parallel apps, and your IPython command history.
282 that users often want to maintain a set of configuration files for different
329
283 purposes: one for doing numerical computing with NumPy and SciPy and
330 The idea is that users often want to maintain a set of configuration files for
284 another for doing symbolic computing with SymPy. Profiles make it easy
331 different purposes: one for doing numerical computing with NumPy and SciPy and
285 to keep a separate configuration file for each of these purposes.
332 another for doing symbolic computing with SymPy. Profiles make it easy to keep a
333 separate configuration files, logs, and histories for each of these purposes.
286
334
287 Let's start by showing how a profile is used:
335 Let's start by showing how a profile is used:
288
336
289 .. code-block:: bash
337 .. code-block:: bash
290
338
291 $ ipython profile=sympy
339 $ ipython profile=sympy
292
340
293 This tells the :command:`ipython` command line program to get its
341 This tells the :command:`ipython` command line program to get its configuration
294 configuration from the "sympy" profile. The search path for profiles is the
342 from the "sympy" profile. The file names for various profiles do not change. The
295 same as that of regular configuration files. The only difference is that
343 only difference is that profiles are named in a special way. In the case above,
296 profiles are named in a special way. In the case above, the "sympy" profile
344 the "sympy" profile means looking for :file:`ipython_config.py` in :file:`<IPYTHON_DIR>/profile_sympy`.
297 would need to have the name :file:`ipython_config_sympy.py`.
345
346 The general pattern is this: simply create a new profile with:
347
348 .. code-block:: bash
349
350 ipython profile create <name>
351
352 which adds a directory called ``profile_<name>`` to your IPython directory. Then
353 you can load this profile by adding ``profile=<name>`` to your command line
354 options. Profiles are supported by all IPython applications.
355
356 IPython ships with some sample profiles in :file:`IPython/config/profile`. If
357 you create profiles with the name of one of our shipped profiles, these config
358 files will be copied over instead of starting with the automatically generated
359 config files.
360
361 .. _commandline:
362
363 Command-line arguments
364 ======================
365
366 IPython exposes *all* configurable options on the command-line. The command-line
367 arguments are generated from the Configurable traits of the classes associated
368 with a given Application. Configuring IPython from the command-line may look
369 very similar to an IPython config file
370
371 IPython applications use a parser called
372 :class:`~IPython.config.loader.KeyValueLoader` to load values into a Config
373 object. Values are assigned in much the same way as in a config file:
374
375 .. code-block:: bash
376
377 $> ipython InteractiveShell.use_readline=False BaseIPythonApplication.profile='myprofile'
378
379 Is the same as adding:
380
381 .. sourcecode:: python
382
383 c.InteractiveShell.use_readline=False
384 c.BaseIPythonApplication.profile='myprofile'
385
386 to your config file. Key/Value arguments *always* take a value, separated by '='
387 and no spaces.
388
389 Aliases
390 -------
391
392 For convenience, applications have a mapping of commonly
393 used traits, so you don't have to specify the whole class name. For these **aliases**, the class need not be specified:
394
395 .. code-block:: bash
396
397 $> ipython profile='myprofile'
398 # is equivalent to
399 $> ipython BaseIPythonApplication.profile='myprofile'
400
401 Flags
402 -----
403
404 Applications can also be passed **flags**. Flags are options that take no
405 arguments, and are always prefixed with ``--``. They are simply wrappers for
406 setting one or more configurables with predefined values, often True/False.
407
408 For instance:
409
410 .. code-block:: bash
411
412 $> ipcontroller --debug
413 # is equivalent to
414 $> ipcontroller Application.log_level=DEBUG
415 # and
416 $> ipython --pylab
417 # is equivalent to
418 $> ipython pylab=auto
419
420 Subcommands
421 -----------
422
423
424 Some IPython applications have **subcommands**. Subcommands are modeled after
425 :command:`git`, and are called with the form :command:`command subcommand
426 [...args]`. Currently, the QtConsole is a subcommand of terminal IPython:
427
428 .. code-block:: bash
429
430 $> ipython qtconsole profile=myprofile
431
432 and :command:`ipcluster` is simply a wrapper for its various subcommands (start,
433 stop, engines).
434
435 .. code-block:: bash
436
437 $> ipcluster start profile=myprofile n=4
438
298
439
299 The general pattern is this: simply add ``<profilename>`` to the end of the
440 To see a list of the available aliases, flags, and subcommands for an IPython application, simply pass ``-h`` or ``--help``. And to see the full list of configurable options (*very* long), pass ``--help-all``.
300 normal configuration file name. Then load the profile by adding
301 ``profile=<profilename>`` to your command line options.
302
441
303 IPython ships with some sample profiles in :mod:`IPython.config.profile`.
304 Simply copy these to your IPython directory to begin using them.
305
442
306 Design requirements
443 Design requirements
307 ===================
444 ===================
308
445
309 Here are the main requirements we wanted our configuration system to have:
446 Here are the main requirements we wanted our configuration system to have:
310
447
311 * Support for hierarchical configuration information.
448 * Support for hierarchical configuration information.
312
449
313 * Full integration with command line option parsers. Often, you want to read
450 * Full integration with command line option parsers. Often, you want to read
314 a configuration file, but then override some of the values with command line
451 a configuration file, but then override some of the values with command line
315 options. Our configuration system automates this process and allows each
452 options. Our configuration system automates this process and allows each
316 command line option to be linked to a particular attribute in the
453 command line option to be linked to a particular attribute in the
317 configuration hierarchy that it will override.
454 configuration hierarchy that it will override.
318
455
319 * Configuration files that are themselves valid Python code. This accomplishes
456 * Configuration files that are themselves valid Python code. This accomplishes
320 many things. First, it becomes possible to put logic in your configuration
457 many things. First, it becomes possible to put logic in your configuration
321 files that sets attributes based on your operating system, network setup,
458 files that sets attributes based on your operating system, network setup,
322 Python version, etc. Second, Python has a super simple syntax for accessing
459 Python version, etc. Second, Python has a super simple syntax for accessing
323 hierarchical data structures, namely regular attribute access
460 hierarchical data structures, namely regular attribute access
324 (``Foo.Bar.Bam.name``). Third, using Python makes it easy for users to
461 (``Foo.Bar.Bam.name``). Third, using Python makes it easy for users to
325 import configuration attributes from one configuration file to another.
462 import configuration attributes from one configuration file to another.
326 Forth, even though Python is dynamically typed, it does have types that can
463 Forth, even though Python is dynamically typed, it does have types that can
327 be checked at runtime. Thus, a ``1`` in a config file is the integer '1',
464 be checked at runtime. Thus, a ``1`` in a config file is the integer '1',
328 while a ``'1'`` is a string.
465 while a ``'1'`` is a string.
329
466
330 * A fully automated method for getting the configuration information to the
467 * A fully automated method for getting the configuration information to the
331 classes that need it at runtime. Writing code that walks a configuration
468 classes that need it at runtime. Writing code that walks a configuration
332 hierarchy to extract a particular attribute is painful. When you have
469 hierarchy to extract a particular attribute is painful. When you have
333 complex configuration information with hundreds of attributes, this makes
470 complex configuration information with hundreds of attributes, this makes
334 you want to cry.
471 you want to cry.
335
472
336 * Type checking and validation that doesn't require the entire configuration
473 * Type checking and validation that doesn't require the entire configuration
337 hierarchy to be specified statically before runtime. Python is a very
474 hierarchy to be specified statically before runtime. Python is a very
338 dynamic language and you don't always know everything that needs to be
475 dynamic language and you don't always know everything that needs to be
339 configured when a program starts.
476 configured when a program starts.
340
477
341
478
342 .. _`XDG Base Directory`: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
479 .. _`XDG Base Directory`: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
@@ -1,26 +1,25 b''
1 .. _developer_guide:
1 .. _developer_guide:
2
2
3 =========================
3 =========================
4 IPython developer's guide
4 IPython developer's guide
5 =========================
5 =========================
6
6
7 .. toctree::
7 .. toctree::
8 :maxdepth: 1
8 :maxdepth: 1
9
9
10 contributing.txt
10 contributing.txt
11 gitwash/index.txt
11 gitwash/index.txt
12 coding_guide.txt
12 coding_guide.txt
13 doc_guide.txt
13 doc_guide.txt
14 testing.txt
14 testing.txt
15 release.txt
15 release.txt
16 roadmap.txt
16 roadmap.txt
17 reorg.txt
17 reorg.txt
18 messaging.txt
18 messaging.txt
19 parallel_messages.txt
19 parallel_messages.txt
20 parallel_connections.txt
20 parallel_connections.txt
21 magic_blueprint.txt
21 magic_blueprint.txt
22 notification_blueprint.txt
22 notification_blueprint.txt
23 ipgraph.txt
23 ipgraph.txt
24 ipython_qt.txt
24 ipython_qt.txt
25 ipythonzmq.txt
25 ipythonzmq.txt
26 parallelzmq.txt
General Comments 0
You need to be logged in to leave comments. Login now