##// END OF EJS Templates
Add notes in the what's new and config sections.
Bradley M. Froehle -
Show More
@@ -1,531 +1,533 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. You may want to read the section on
19 to the new system. You may want to read the section on
20 :ref:`configuring IPython <configuring_ipython>`. There are also some ideas
20 :ref:`configuring IPython <configuring_ipython>`. There are also some ideas
21 `on the IPython wiki <http://wiki.ipython.org/Cookbook/Moving_config_to_IPython_0.11>`_
21 `on the IPython wiki <http://wiki.ipython.org/Cookbook/Moving_config_to_IPython_0.11>`_
22 about this.
22 about this.
23
23
24 The discussion that follows is focused on teaching users how to configure
24 The discussion that follows is focused on teaching users how to configure
25 IPython to their liking. Developers who want to know more about how they
25 IPython to their liking. Developers who want to know more about how they
26 can enable their objects to take advantage of the configuration system
26 can enable their objects to take advantage of the configuration system
27 should consult our :ref:`developer guide <developer_guide>`
27 should consult our :ref:`developer guide <developer_guide>`
28
28
29 The main concepts
29 The main concepts
30 =================
30 =================
31
31
32 There are a number of abstractions that the IPython configuration system uses.
32 There are a number of abstractions that the IPython configuration system uses.
33 Each of these abstractions is represented by a Python class.
33 Each of these abstractions is represented by a Python class.
34
34
35 Configuration object: :class:`~IPython.config.loader.Config`
35 Configuration object: :class:`~IPython.config.loader.Config`
36 A configuration object is a simple dictionary-like class that holds
36 A configuration object is a simple dictionary-like class that holds
37 configuration attributes and sub-configuration objects. These classes
37 configuration attributes and sub-configuration objects. These classes
38 support dotted attribute style access (``Foo.bar``) in addition to the
38 support dotted attribute style access (``Foo.bar``) in addition to the
39 regular dictionary style access (``Foo['bar']``). Configuration objects
39 regular dictionary style access (``Foo['bar']``). Configuration objects
40 are smart. They know how to merge themselves with other configuration
40 are smart. They know how to merge themselves with other configuration
41 objects and they automatically create sub-configuration objects.
41 objects and they automatically create sub-configuration objects.
42
42
43 Application: :class:`~IPython.config.application.Application`
43 Application: :class:`~IPython.config.application.Application`
44 An application is a process that does a specific job. The most obvious
44 An application is a process that does a specific job. The most obvious
45 application is the :command:`ipython` command line program. Each
45 application is the :command:`ipython` command line program. Each
46 application reads *one or more* configuration files and a single set of
46 application reads *one or more* configuration files and a single set of
47 command line options
47 command line options
48 and then produces a master configuration object for the application. This
48 and then produces a master configuration object for the application. This
49 configuration object is then passed to the configurable objects that the
49 configuration object is then passed to the configurable objects that the
50 application creates. These configurable objects implement the actual logic
50 application creates. These configurable objects implement the actual logic
51 of the application and know how to configure themselves given the
51 of the application and know how to configure themselves given the
52 configuration object.
52 configuration object.
53
53
54 Applications always have a `log` attribute that is a configured Logger.
54 Applications always have a `log` attribute that is a configured Logger.
55 This allows centralized logging configuration per-application.
55 This allows centralized logging configuration per-application.
56
56
57 Configurable: :class:`~IPython.config.configurable.Configurable`
57 Configurable: :class:`~IPython.config.configurable.Configurable`
58 A configurable is a regular Python class that serves as a base class for
58 A configurable is a regular Python class that serves as a base class for
59 all main classes in an application. The
59 all main classes in an application. The
60 :class:`~IPython.config.configurable.Configurable` base class is
60 :class:`~IPython.config.configurable.Configurable` base class is
61 lightweight and only does one things.
61 lightweight and only does one things.
62
62
63 This :class:`~IPython.config.configurable.Configurable` is a subclass
63 This :class:`~IPython.config.configurable.Configurable` is a subclass
64 of :class:`~IPython.utils.traitlets.HasTraits` that knows how to configure
64 of :class:`~IPython.utils.traitlets.HasTraits` that knows how to configure
65 itself. Class level traits with the metadata ``config=True`` become
65 itself. Class level traits with the metadata ``config=True`` become
66 values that can be configured from the command line and configuration
66 values that can be configured from the command line and configuration
67 files.
67 files.
68
68
69 Developers create :class:`~IPython.config.configurable.Configurable`
69 Developers create :class:`~IPython.config.configurable.Configurable`
70 subclasses that implement all of the logic in the application. Each of
70 subclasses that implement all of the logic in the application. Each of
71 these subclasses has its own configuration information that controls how
71 these subclasses has its own configuration information that controls how
72 instances are created.
72 instances are created.
73
73
74 Singletons: :class:`~IPython.config.configurable.SingletonConfigurable`
74 Singletons: :class:`~IPython.config.configurable.SingletonConfigurable`
75 Any object for which there is a single canonical instance. These are
75 Any object for which there is a single canonical instance. These are
76 just like Configurables, except they have a class method
76 just like Configurables, except they have a class method
77 :meth:`~IPython.config.configurable.SingletonConfigurable.instance`,
77 :meth:`~IPython.config.configurable.SingletonConfigurable.instance`,
78 that returns the current active instance (or creates one if it
78 that returns the current active instance (or creates one if it
79 does not exist). Examples of singletons include
79 does not exist). Examples of singletons include
80 :class:`~IPython.config.application.Application`s and
80 :class:`~IPython.config.application.Application`s and
81 :class:`~IPython.core.interactiveshell.InteractiveShell`. This lets
81 :class:`~IPython.core.interactiveshell.InteractiveShell`. This lets
82 objects easily connect to the current running Application without passing
82 objects easily connect to the current running Application without passing
83 objects around everywhere. For instance, to get the current running
83 objects around everywhere. For instance, to get the current running
84 Application instance, simply do: ``app = Application.instance()``.
84 Application instance, simply do: ``app = Application.instance()``.
85
85
86
86
87 .. note::
87 .. note::
88
88
89 Singletons are not strictly enforced - you can have many instances
89 Singletons are not strictly enforced - you can have many instances
90 of a given singleton class, but the :meth:`instance` method will always
90 of a given singleton class, but the :meth:`instance` method will always
91 return the same one.
91 return the same one.
92
92
93 Having described these main concepts, we can now state the main idea in our
93 Having described these main concepts, we can now state the main idea in our
94 configuration system: *"configuration" allows the default values of class
94 configuration system: *"configuration" allows the default values of class
95 attributes to be controlled on a class by class basis*. Thus all instances of
95 attributes to be controlled on a class by class basis*. Thus all instances of
96 a given class are configured in the same way. Furthermore, if two instances
96 a given class are configured in the same way. Furthermore, if two instances
97 need to be configured differently, they need to be instances of two different
97 need to be configured differently, they need to be instances of two different
98 classes. While this model may seem a bit restrictive, we have found that it
98 classes. While this model may seem a bit restrictive, we have found that it
99 expresses most things that need to be configured extremely well. However, it
99 expresses most things that need to be configured extremely well. However, it
100 is possible to create two instances of the same class that have different
100 is possible to create two instances of the same class that have different
101 trait values. This is done by overriding the configuration.
101 trait values. This is done by overriding the configuration.
102
102
103 Now, we show what our configuration objects and files look like.
103 Now, we show what our configuration objects and files look like.
104
104
105 Configuration objects and files
105 Configuration objects and files
106 ===============================
106 ===============================
107
107
108 A configuration file is simply a pure Python file that sets the attributes
108 A configuration file is simply a pure Python file that sets the attributes
109 of a global, pre-created configuration object. This configuration object is a
109 of a global, pre-created configuration object. This configuration object is a
110 :class:`~IPython.config.loader.Config` instance. While in a configuration
110 :class:`~IPython.config.loader.Config` instance. While in a configuration
111 file, to get a reference to this object, simply call the :func:`get_config`
111 file, to get a reference to this object, simply call the :func:`get_config`
112 function. We inject this function into the global namespace that the
112 function. We inject this function into the global namespace that the
113 configuration file is executed in.
113 configuration file is executed in.
114
114
115 Here is an example of a super simple configuration file that does nothing::
115 Here is an example of a super simple configuration file that does nothing::
116
116
117 c = get_config()
117 c = get_config()
118
118
119 Once you get a reference to the configuration object, you simply set
119 Once you get a reference to the configuration object, you simply set
120 attributes on it. All you have to know is:
120 attributes on it. All you have to know is:
121
121
122 * The name of each attribute.
122 * The name of each attribute.
123 * The type of each attribute.
123 * The type of each attribute.
124
124
125 The answers to these two questions are provided by the various
125 The answers to these two questions are provided by the various
126 :class:`~IPython.config.configurable.Configurable` subclasses that an
126 :class:`~IPython.config.configurable.Configurable` subclasses that an
127 application uses. Let's look at how this would work for a simple configurable
127 application uses. Let's look at how this would work for a simple configurable
128 subclass::
128 subclass::
129
129
130 # Sample configurable:
130 # Sample configurable:
131 from IPython.config.configurable import Configurable
131 from IPython.config.configurable import Configurable
132 from IPython.utils.traitlets import Int, Float, Unicode, Bool
132 from IPython.utils.traitlets import Int, Float, Unicode, Bool
133
133
134 class MyClass(Configurable):
134 class MyClass(Configurable):
135 name = Unicode(u'defaultname', config=True)
135 name = Unicode(u'defaultname', config=True)
136 ranking = Int(0, config=True)
136 ranking = Int(0, config=True)
137 value = Float(99.0)
137 value = Float(99.0)
138 # The rest of the class implementation would go here..
138 # The rest of the class implementation would go here..
139
139
140 In this example, we see that :class:`MyClass` has three attributes, two
140 In this example, we see that :class:`MyClass` has three attributes, two
141 of whom (``name``, ``ranking``) can be configured. All of the attributes
141 of whom (``name``, ``ranking``) can be configured. All of the attributes
142 are given types and default values. If a :class:`MyClass` is instantiated,
142 are given types and default values. If a :class:`MyClass` is instantiated,
143 but not configured, these default values will be used. But let's see how
143 but not configured, these default values will be used. But let's see how
144 to configure this class in a configuration file::
144 to configure this class in a configuration file::
145
145
146 # Sample config file
146 # Sample config file
147 c = get_config()
147 c = get_config()
148
148
149 c.MyClass.name = 'coolname'
149 c.MyClass.name = 'coolname'
150 c.MyClass.ranking = 10
150 c.MyClass.ranking = 10
151
151
152 After this configuration file is loaded, the values set in it will override
152 After this configuration file is loaded, the values set in it will override
153 the class defaults anytime a :class:`MyClass` is created. Furthermore,
153 the class defaults anytime a :class:`MyClass` is created. Furthermore,
154 these attributes will be type checked and validated anytime they are set.
154 these attributes will be type checked and validated anytime they are set.
155 This type checking is handled by the :mod:`IPython.utils.traitlets` module,
155 This type checking is handled by the :mod:`IPython.utils.traitlets` module,
156 which provides the :class:`Unicode`, :class:`Int` and :class:`Float` types.
156 which provides the :class:`Unicode`, :class:`Int` and :class:`Float` types.
157 In addition to these traitlets, the :mod:`IPython.utils.traitlets` provides
157 In addition to these traitlets, the :mod:`IPython.utils.traitlets` provides
158 traitlets for a number of other types.
158 traitlets for a number of other types.
159
159
160 .. note::
160 .. note::
161
161
162 Underneath the hood, the :class:`Configurable` base class is a subclass of
162 Underneath the hood, the :class:`Configurable` base class is a subclass of
163 :class:`IPython.utils.traitlets.HasTraits`. The
163 :class:`IPython.utils.traitlets.HasTraits`. The
164 :mod:`IPython.utils.traitlets` module is a lightweight version of
164 :mod:`IPython.utils.traitlets` module is a lightweight version of
165 :mod:`enthought.traits`. Our implementation is a pure Python subset
165 :mod:`enthought.traits`. Our implementation is a pure Python subset
166 (mostly API compatible) of :mod:`enthought.traits` that does not have any
166 (mostly API compatible) of :mod:`enthought.traits` that does not have any
167 of the automatic GUI generation capabilities. Our plan is to achieve 100%
167 of the automatic GUI generation capabilities. Our plan is to achieve 100%
168 API compatibility to enable the actual :mod:`enthought.traits` to
168 API compatibility to enable the actual :mod:`enthought.traits` to
169 eventually be used instead. Currently, we cannot use
169 eventually be used instead. Currently, we cannot use
170 :mod:`enthought.traits` as we are committed to the core of IPython being
170 :mod:`enthought.traits` as we are committed to the core of IPython being
171 pure Python.
171 pure Python.
172
172
173 It should be very clear at this point what the naming convention is for
173 It should be very clear at this point what the naming convention is for
174 configuration attributes::
174 configuration attributes::
175
175
176 c.ClassName.attribute_name = attribute_value
176 c.ClassName.attribute_name = attribute_value
177
177
178 Here, ``ClassName`` is the name of the class whose configuration attribute you
178 Here, ``ClassName`` is the name of the class whose configuration attribute you
179 want to set, ``attribute_name`` is the name of the attribute you want to set
179 want to set, ``attribute_name`` is the name of the attribute you want to set
180 and ``attribute_value`` the the value you want it to have. The ``ClassName``
180 and ``attribute_value`` the the value you want it to have. The ``ClassName``
181 attribute of ``c`` is not the actual class, but instead is another
181 attribute of ``c`` is not the actual class, but instead is another
182 :class:`~IPython.config.loader.Config` instance.
182 :class:`~IPython.config.loader.Config` instance.
183
183
184 .. note::
184 .. note::
185
185
186 The careful reader may wonder how the ``ClassName`` (``MyClass`` in
186 The careful reader may wonder how the ``ClassName`` (``MyClass`` in
187 the above example) attribute of the configuration object ``c`` gets
187 the above example) attribute of the configuration object ``c`` gets
188 created. These attributes are created on the fly by the
188 created. These attributes are created on the fly by the
189 :class:`~IPython.config.loader.Config` instance, using a simple naming
189 :class:`~IPython.config.loader.Config` instance, using a simple naming
190 convention. Any attribute of a :class:`~IPython.config.loader.Config`
190 convention. Any attribute of a :class:`~IPython.config.loader.Config`
191 instance whose name begins with an uppercase character is assumed to be a
191 instance whose name begins with an uppercase character is assumed to be a
192 sub-configuration and a new empty :class:`~IPython.config.loader.Config`
192 sub-configuration and a new empty :class:`~IPython.config.loader.Config`
193 instance is dynamically created for that attribute. This allows deeply
193 instance is dynamically created for that attribute. This allows deeply
194 hierarchical information created easily (``c.Foo.Bar.value``) on the fly.
194 hierarchical information created easily (``c.Foo.Bar.value``) on the fly.
195
195
196 Configuration files inheritance
196 Configuration files inheritance
197 ===============================
197 ===============================
198
198
199 Let's say you want to have different configuration files for various purposes.
199 Let's say you want to have different configuration files for various purposes.
200 Our configuration system makes it easy for one configuration file to inherit
200 Our configuration system makes it easy for one configuration file to inherit
201 the information in another configuration file. The :func:`load_subconfig`
201 the information in another configuration file. The :func:`load_subconfig`
202 command can be used in a configuration file for this purpose. Here is a simple
202 command can be used in a configuration file for this purpose. Here is a simple
203 example that loads all of the values from the file :file:`base_config.py`::
203 example that loads all of the values from the file :file:`base_config.py`::
204
204
205 # base_config.py
205 # base_config.py
206 c = get_config()
206 c = get_config()
207 c.MyClass.name = 'coolname'
207 c.MyClass.name = 'coolname'
208 c.MyClass.ranking = 100
208 c.MyClass.ranking = 100
209
209
210 into the configuration file :file:`main_config.py`::
210 into the configuration file :file:`main_config.py`::
211
211
212 # main_config.py
212 # main_config.py
213 c = get_config()
213 c = get_config()
214
214
215 # Load everything from base_config.py
215 # Load everything from base_config.py
216 load_subconfig('base_config.py')
216 load_subconfig('base_config.py')
217
217
218 # Now override one of the values
218 # Now override one of the values
219 c.MyClass.name = 'bettername'
219 c.MyClass.name = 'bettername'
220
220
221 In a situation like this the :func:`load_subconfig` makes sure that the
221 In a situation like this the :func:`load_subconfig` makes sure that the
222 search path for sub-configuration files is inherited from that of the parent.
222 search path for sub-configuration files is inherited from that of the parent.
223 Thus, you can typically put the two in the same directory and everything will
223 Thus, you can typically put the two in the same directory and everything will
224 just work.
224 just work.
225
225
226 You can also load configuration files by profile, for instance:
226 You can also load configuration files by profile, for instance:
227
227
228 .. sourcecode:: python
228 .. sourcecode:: python
229
229
230 load_subconfig('ipython_config.py', profile='default')
230 load_subconfig('ipython_config.py', profile='default')
231
231
232 to inherit your default configuration as a starting point.
232 to inherit your default configuration as a starting point.
233
233
234
234
235 Class based configuration inheritance
235 Class based configuration inheritance
236 =====================================
236 =====================================
237
237
238 There is another aspect of configuration where inheritance comes into play.
238 There is another aspect of configuration where inheritance comes into play.
239 Sometimes, your classes will have an inheritance hierarchy that you want
239 Sometimes, your classes will have an inheritance hierarchy that you want
240 to be reflected in the configuration system. Here is a simple example::
240 to be reflected in the configuration system. Here is a simple example::
241
241
242 from IPython.config.configurable import Configurable
242 from IPython.config.configurable import Configurable
243 from IPython.utils.traitlets import Int, Float, Unicode, Bool
243 from IPython.utils.traitlets import Int, Float, Unicode, Bool
244
244
245 class Foo(Configurable):
245 class Foo(Configurable):
246 name = Unicode(u'fooname', config=True)
246 name = Unicode(u'fooname', config=True)
247 value = Float(100.0, config=True)
247 value = Float(100.0, config=True)
248
248
249 class Bar(Foo):
249 class Bar(Foo):
250 name = Unicode(u'barname', config=True)
250 name = Unicode(u'barname', config=True)
251 othervalue = Int(0, config=True)
251 othervalue = Int(0, config=True)
252
252
253 Now, we can create a configuration file to configure instances of :class:`Foo`
253 Now, we can create a configuration file to configure instances of :class:`Foo`
254 and :class:`Bar`::
254 and :class:`Bar`::
255
255
256 # config file
256 # config file
257 c = get_config()
257 c = get_config()
258
258
259 c.Foo.name = u'bestname'
259 c.Foo.name = u'bestname'
260 c.Bar.othervalue = 10
260 c.Bar.othervalue = 10
261
261
262 This class hierarchy and configuration file accomplishes the following:
262 This class hierarchy and configuration file accomplishes the following:
263
263
264 * The default value for :attr:`Foo.name` and :attr:`Bar.name` will be
264 * The default value for :attr:`Foo.name` and :attr:`Bar.name` will be
265 'bestname'. Because :class:`Bar` is a :class:`Foo` subclass it also
265 'bestname'. Because :class:`Bar` is a :class:`Foo` subclass it also
266 picks up the configuration information for :class:`Foo`.
266 picks up the configuration information for :class:`Foo`.
267 * The default value for :attr:`Foo.value` and :attr:`Bar.value` will be
267 * The default value for :attr:`Foo.value` and :attr:`Bar.value` will be
268 ``100.0``, which is the value specified as the class default.
268 ``100.0``, which is the value specified as the class default.
269 * The default value for :attr:`Bar.othervalue` will be 10 as set in the
269 * The default value for :attr:`Bar.othervalue` will be 10 as set in the
270 configuration file. Because :class:`Foo` is the parent of :class:`Bar`
270 configuration file. Because :class:`Foo` is the parent of :class:`Bar`
271 it doesn't know anything about the :attr:`othervalue` attribute.
271 it doesn't know anything about the :attr:`othervalue` attribute.
272
272
273
273
274 .. _ipython_dir:
274 .. _ipython_dir:
275
275
276 Configuration file location
276 Configuration file location
277 ===========================
277 ===========================
278
278
279 So where should you put your configuration files? IPython uses "profiles" for
279 So where should you put your configuration files? IPython uses "profiles" for
280 configuration, and by default, all profiles will be stored in the so called
280 configuration, and by default, all profiles will be stored in the so called
281 "IPython directory". The location of this directory is determined by the
281 "IPython directory". The location of this directory is determined by the
282 following algorithm:
282 following algorithm:
283
283
284 * If the ``ipython_dir`` command line flag is given, its value is used.
284 * If the ``ipython_dir`` command line flag is given, its value is used.
285
285
286 * If not, the value returned by :func:`IPython.utils.path.get_ipython_dir`
286 * If not, the value returned by :func:`IPython.utils.path.get_ipython_dir`
287 is used. This function will first look at the :envvar:`IPYTHONDIR`
287 is used. This function will first look at the :envvar:`IPYTHONDIR`
288 environment variable and then default to a platform-specific default.
288 environment variable and then default to a platform-specific default.
289 Historical support for the :envvar:`IPYTHON_DIR` environment variable will
290 be removed in a future release.
289
291
290 On posix systems (Linux, Unix, etc.), IPython respects the ``$XDG_CONFIG_HOME``
292 On posix systems (Linux, Unix, etc.), IPython respects the ``$XDG_CONFIG_HOME``
291 part of the `XDG Base Directory`_ specification. If ``$XDG_CONFIG_HOME`` is
293 part of the `XDG Base Directory`_ specification. If ``$XDG_CONFIG_HOME`` is
292 defined and exists ( ``XDG_CONFIG_HOME`` has a default interpretation of
294 defined and exists ( ``XDG_CONFIG_HOME`` has a default interpretation of
293 :file:`$HOME/.config`), then IPython's config directory will be located in
295 :file:`$HOME/.config`), then IPython's config directory will be located in
294 :file:`$XDG_CONFIG_HOME/ipython`. If users still have an IPython directory
296 :file:`$XDG_CONFIG_HOME/ipython`. If users still have an IPython directory
295 in :file:`$HOME/.ipython`, then that will be used. in preference to the
297 in :file:`$HOME/.ipython`, then that will be used. in preference to the
296 system default.
298 system default.
297
299
298 For most users, the default value will simply be something like
300 For most users, the default value will simply be something like
299 :file:`$HOME/.config/ipython` on Linux, or :file:`$HOME/.ipython`
301 :file:`$HOME/.config/ipython` on Linux, or :file:`$HOME/.ipython`
300 elsewhere.
302 elsewhere.
301
303
302 Once the location of the IPython directory has been determined, you need to know
304 Once the location of the IPython directory has been determined, you need to know
303 which profile you are using. For users with a single configuration, this will
305 which profile you are using. For users with a single configuration, this will
304 simply be 'default', and will be located in
306 simply be 'default', and will be located in
305 :file:`<IPYTHONDIR>/profile_default`.
307 :file:`<IPYTHONDIR>/profile_default`.
306
308
307 The next thing you need to know is what to call your configuration file. The
309 The next thing you need to know is what to call your configuration file. The
308 basic idea is that each application has its own default configuration filename.
310 basic idea is that each application has its own default configuration filename.
309 The default named used by the :command:`ipython` command line program is
311 The default named used by the :command:`ipython` command line program is
310 :file:`ipython_config.py`, and *all* IPython applications will use this file.
312 :file:`ipython_config.py`, and *all* IPython applications will use this file.
311 Other applications, such as the parallel :command:`ipcluster` scripts or the
313 Other applications, such as the parallel :command:`ipcluster` scripts or the
312 QtConsole will load their own config files *after* :file:`ipython_config.py`. To
314 QtConsole will load their own config files *after* :file:`ipython_config.py`. To
313 load a particular configuration file instead of the default, the name can be
315 load a particular configuration file instead of the default, the name can be
314 overridden by the ``config_file`` command line flag.
316 overridden by the ``config_file`` command line flag.
315
317
316 To generate the default configuration files, do::
318 To generate the default configuration files, do::
317
319
318 $> ipython profile create
320 $> ipython profile create
319
321
320 and you will have a default :file:`ipython_config.py` in your IPython directory
322 and you will have a default :file:`ipython_config.py` in your IPython directory
321 under :file:`profile_default`. If you want the default config files for the
323 under :file:`profile_default`. If you want the default config files for the
322 :mod:`IPython.parallel` applications, add ``--parallel`` to the end of the
324 :mod:`IPython.parallel` applications, add ``--parallel`` to the end of the
323 command-line args.
325 command-line args.
324
326
325 .. _Profiles:
327 .. _Profiles:
326
328
327 Profiles
329 Profiles
328 ========
330 ========
329
331
330 A profile is a directory containing configuration and runtime files, such as
332 A profile is a directory containing configuration and runtime files, such as
331 logs, connection info for the parallel apps, and your IPython command history.
333 logs, connection info for the parallel apps, and your IPython command history.
332
334
333 The idea is that users often want to maintain a set of configuration files for
335 The idea is that users often want to maintain a set of configuration files for
334 different purposes: one for doing numerical computing with NumPy and SciPy and
336 different purposes: one for doing numerical computing with NumPy and SciPy and
335 another for doing symbolic computing with SymPy. Profiles make it easy to keep a
337 another for doing symbolic computing with SymPy. Profiles make it easy to keep a
336 separate configuration files, logs, and histories for each of these purposes.
338 separate configuration files, logs, and histories for each of these purposes.
337
339
338 Let's start by showing how a profile is used:
340 Let's start by showing how a profile is used:
339
341
340 .. code-block:: bash
342 .. code-block:: bash
341
343
342 $ ipython --profile=sympy
344 $ ipython --profile=sympy
343
345
344 This tells the :command:`ipython` command line program to get its configuration
346 This tells the :command:`ipython` command line program to get its configuration
345 from the "sympy" profile. The file names for various profiles do not change. The
347 from the "sympy" profile. The file names for various profiles do not change. The
346 only difference is that profiles are named in a special way. In the case above,
348 only difference is that profiles are named in a special way. In the case above,
347 the "sympy" profile means looking for :file:`ipython_config.py` in :file:`<IPYTHONDIR>/profile_sympy`.
349 the "sympy" profile means looking for :file:`ipython_config.py` in :file:`<IPYTHONDIR>/profile_sympy`.
348
350
349 The general pattern is this: simply create a new profile with:
351 The general pattern is this: simply create a new profile with:
350
352
351 .. code-block:: bash
353 .. code-block:: bash
352
354
353 ipython profile create <name>
355 ipython profile create <name>
354
356
355 which adds a directory called ``profile_<name>`` to your IPython directory. Then
357 which adds a directory called ``profile_<name>`` to your IPython directory. Then
356 you can load this profile by adding ``--profile=<name>`` to your command line
358 you can load this profile by adding ``--profile=<name>`` to your command line
357 options. Profiles are supported by all IPython applications.
359 options. Profiles are supported by all IPython applications.
358
360
359 IPython ships with some sample profiles in :file:`IPython/config/profile`. If
361 IPython ships with some sample profiles in :file:`IPython/config/profile`. If
360 you create profiles with the name of one of our shipped profiles, these config
362 you create profiles with the name of one of our shipped profiles, these config
361 files will be copied over instead of starting with the automatically generated
363 files will be copied over instead of starting with the automatically generated
362 config files.
364 config files.
363
365
364 Security Files
366 Security Files
365 --------------
367 --------------
366
368
367 If you are using the notebook, qtconsole, or parallel code, IPython stores
369 If you are using the notebook, qtconsole, or parallel code, IPython stores
368 connection information in small JSON files in the active profile's security
370 connection information in small JSON files in the active profile's security
369 directory. This directory is made private, so only you can see the files inside. If
371 directory. This directory is made private, so only you can see the files inside. If
370 you need to move connection files around to other computers, this is where they will
372 you need to move connection files around to other computers, this is where they will
371 be. If you want your code to be able to open security files by name, we have a
373 be. If you want your code to be able to open security files by name, we have a
372 convenience function :func:`IPython.utils.path.get_security_file`, which will return
374 convenience function :func:`IPython.utils.path.get_security_file`, which will return
373 the absolute path to a security file from its filename and [optionally] profile
375 the absolute path to a security file from its filename and [optionally] profile
374 name.
376 name.
375
377
376 Startup Files
378 Startup Files
377 -------------
379 -------------
378
380
379 If you want some code to be run at the beginning of every IPython session with a
381 If you want some code to be run at the beginning of every IPython session with a
380 particular profile, the easiest way is to add Python (.py) or IPython (.ipy) scripts
382 particular profile, the easiest way is to add Python (.py) or IPython (.ipy) scripts
381 to your :file:`<profile>/startup` directory. Files in this directory will always be
383 to your :file:`<profile>/startup` directory. Files in this directory will always be
382 executed as soon as the IPython shell is constructed, and before any other code or
384 executed as soon as the IPython shell is constructed, and before any other code or
383 scripts you have specified. If you have multiple files in the startup directory,
385 scripts you have specified. If you have multiple files in the startup directory,
384 they will be run in lexicographical order, so you can control the ordering by adding
386 they will be run in lexicographical order, so you can control the ordering by adding
385 a '00-' prefix.
387 a '00-' prefix.
386
388
387 .. note::
389 .. note::
388
390
389 Automatic startup files are new in IPython 0.12. Use the
391 Automatic startup files are new in IPython 0.12. Use the
390 InteractiveShellApp.exec_files configurable for similar behavior in 0.11.
392 InteractiveShellApp.exec_files configurable for similar behavior in 0.11.
391
393
392
394
393 .. _commandline:
395 .. _commandline:
394
396
395 Command-line arguments
397 Command-line arguments
396 ======================
398 ======================
397
399
398 IPython exposes *all* configurable options on the command-line. The command-line
400 IPython exposes *all* configurable options on the command-line. The command-line
399 arguments are generated from the Configurable traits of the classes associated
401 arguments are generated from the Configurable traits of the classes associated
400 with a given Application. Configuring IPython from the command-line may look
402 with a given Application. Configuring IPython from the command-line may look
401 very similar to an IPython config file
403 very similar to an IPython config file
402
404
403 IPython applications use a parser called
405 IPython applications use a parser called
404 :class:`~IPython.config.loader.KeyValueLoader` to load values into a Config
406 :class:`~IPython.config.loader.KeyValueLoader` to load values into a Config
405 object. Values are assigned in much the same way as in a config file:
407 object. Values are assigned in much the same way as in a config file:
406
408
407 .. code-block:: bash
409 .. code-block:: bash
408
410
409 $> ipython --InteractiveShell.use_readline=False --BaseIPythonApplication.profile='myprofile'
411 $> ipython --InteractiveShell.use_readline=False --BaseIPythonApplication.profile='myprofile'
410
412
411 Is the same as adding:
413 Is the same as adding:
412
414
413 .. sourcecode:: python
415 .. sourcecode:: python
414
416
415 c.InteractiveShell.use_readline=False
417 c.InteractiveShell.use_readline=False
416 c.BaseIPythonApplication.profile='myprofile'
418 c.BaseIPythonApplication.profile='myprofile'
417
419
418 to your config file. Key/Value arguments *always* take a value, separated by '='
420 to your config file. Key/Value arguments *always* take a value, separated by '='
419 and no spaces.
421 and no spaces.
420
422
421 Common Arguments
423 Common Arguments
422 ****************
424 ****************
423
425
424 Since the strictness and verbosity of the KVLoader above are not ideal for everyday
426 Since the strictness and verbosity of the KVLoader above are not ideal for everyday
425 use, common arguments can be specified as flags_ or aliases_.
427 use, common arguments can be specified as flags_ or aliases_.
426
428
427 Flags and Aliases are handled by :mod:`argparse` instead, allowing for more flexible
429 Flags and Aliases are handled by :mod:`argparse` instead, allowing for more flexible
428 parsing. In general, flags and aliases are prefixed by ``--``, except for those
430 parsing. In general, flags and aliases are prefixed by ``--``, except for those
429 that are single characters, in which case they can be specified with a single ``-``, e.g.:
431 that are single characters, in which case they can be specified with a single ``-``, e.g.:
430
432
431 .. code-block:: bash
433 .. code-block:: bash
432
434
433 $> ipython -i -c "import numpy; x=numpy.linspace(0,1)" --profile testing --colors=lightbg
435 $> ipython -i -c "import numpy; x=numpy.linspace(0,1)" --profile testing --colors=lightbg
434
436
435 Aliases
437 Aliases
436 -------
438 -------
437
439
438 For convenience, applications have a mapping of commonly used traits, so you don't have
440 For convenience, applications have a mapping of commonly used traits, so you don't have
439 to specify the whole class name:
441 to specify the whole class name:
440
442
441 .. code-block:: bash
443 .. code-block:: bash
442
444
443 $> ipython --profile myprofile
445 $> ipython --profile myprofile
444 # and
446 # and
445 $> ipython --profile='myprofile'
447 $> ipython --profile='myprofile'
446 # are equivalent to
448 # are equivalent to
447 $> ipython --BaseIPythonApplication.profile='myprofile'
449 $> ipython --BaseIPythonApplication.profile='myprofile'
448
450
449 Flags
451 Flags
450 -----
452 -----
451
453
452 Applications can also be passed **flags**. Flags are options that take no
454 Applications can also be passed **flags**. Flags are options that take no
453 arguments. They are simply wrappers for
455 arguments. They are simply wrappers for
454 setting one or more configurables with predefined values, often True/False.
456 setting one or more configurables with predefined values, often True/False.
455
457
456 For instance:
458 For instance:
457
459
458 .. code-block:: bash
460 .. code-block:: bash
459
461
460 $> ipcontroller --debug
462 $> ipcontroller --debug
461 # is equivalent to
463 # is equivalent to
462 $> ipcontroller --Application.log_level=DEBUG
464 $> ipcontroller --Application.log_level=DEBUG
463 # and
465 # and
464 $> ipython --pylab
466 $> ipython --pylab
465 # is equivalent to
467 # is equivalent to
466 $> ipython --pylab=auto
468 $> ipython --pylab=auto
467 # or
469 # or
468 $> ipython --no-banner
470 $> ipython --no-banner
469 # is equivalent to
471 # is equivalent to
470 $> ipython --TerminalIPythonApp.display_banner=False
472 $> ipython --TerminalIPythonApp.display_banner=False
471
473
472 Subcommands
474 Subcommands
473 ***********
475 ***********
474
476
475
477
476 Some IPython applications have **subcommands**. Subcommands are modeled after
478 Some IPython applications have **subcommands**. Subcommands are modeled after
477 :command:`git`, and are called with the form :command:`command subcommand
479 :command:`git`, and are called with the form :command:`command subcommand
478 [...args]`. Currently, the QtConsole is a subcommand of terminal IPython:
480 [...args]`. Currently, the QtConsole is a subcommand of terminal IPython:
479
481
480 .. code-block:: bash
482 .. code-block:: bash
481
483
482 $> ipython qtconsole --profile=myprofile
484 $> ipython qtconsole --profile=myprofile
483
485
484 and :command:`ipcluster` is simply a wrapper for its various subcommands (start,
486 and :command:`ipcluster` is simply a wrapper for its various subcommands (start,
485 stop, engines).
487 stop, engines).
486
488
487 .. code-block:: bash
489 .. code-block:: bash
488
490
489 $> ipcluster start --profile=myprofile --n=4
491 $> ipcluster start --profile=myprofile --n=4
490
492
491
493
492 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``.
494 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``.
493
495
494
496
495 Design requirements
497 Design requirements
496 ===================
498 ===================
497
499
498 Here are the main requirements we wanted our configuration system to have:
500 Here are the main requirements we wanted our configuration system to have:
499
501
500 * Support for hierarchical configuration information.
502 * Support for hierarchical configuration information.
501
503
502 * Full integration with command line option parsers. Often, you want to read
504 * Full integration with command line option parsers. Often, you want to read
503 a configuration file, but then override some of the values with command line
505 a configuration file, but then override some of the values with command line
504 options. Our configuration system automates this process and allows each
506 options. Our configuration system automates this process and allows each
505 command line option to be linked to a particular attribute in the
507 command line option to be linked to a particular attribute in the
506 configuration hierarchy that it will override.
508 configuration hierarchy that it will override.
507
509
508 * Configuration files that are themselves valid Python code. This accomplishes
510 * Configuration files that are themselves valid Python code. This accomplishes
509 many things. First, it becomes possible to put logic in your configuration
511 many things. First, it becomes possible to put logic in your configuration
510 files that sets attributes based on your operating system, network setup,
512 files that sets attributes based on your operating system, network setup,
511 Python version, etc. Second, Python has a super simple syntax for accessing
513 Python version, etc. Second, Python has a super simple syntax for accessing
512 hierarchical data structures, namely regular attribute access
514 hierarchical data structures, namely regular attribute access
513 (``Foo.Bar.Bam.name``). Third, using Python makes it easy for users to
515 (``Foo.Bar.Bam.name``). Third, using Python makes it easy for users to
514 import configuration attributes from one configuration file to another.
516 import configuration attributes from one configuration file to another.
515 Fourth, even though Python is dynamically typed, it does have types that can
517 Fourth, even though Python is dynamically typed, it does have types that can
516 be checked at runtime. Thus, a ``1`` in a config file is the integer '1',
518 be checked at runtime. Thus, a ``1`` in a config file is the integer '1',
517 while a ``'1'`` is a string.
519 while a ``'1'`` is a string.
518
520
519 * A fully automated method for getting the configuration information to the
521 * A fully automated method for getting the configuration information to the
520 classes that need it at runtime. Writing code that walks a configuration
522 classes that need it at runtime. Writing code that walks a configuration
521 hierarchy to extract a particular attribute is painful. When you have
523 hierarchy to extract a particular attribute is painful. When you have
522 complex configuration information with hundreds of attributes, this makes
524 complex configuration information with hundreds of attributes, this makes
523 you want to cry.
525 you want to cry.
524
526
525 * Type checking and validation that doesn't require the entire configuration
527 * Type checking and validation that doesn't require the entire configuration
526 hierarchy to be specified statically before runtime. Python is a very
528 hierarchy to be specified statically before runtime. Python is a very
527 dynamic language and you don't always know everything that needs to be
529 dynamic language and you don't always know everything that needs to be
528 configured when a program starts.
530 configured when a program starts.
529
531
530
532
531 .. _`XDG Base Directory`: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
533 .. _`XDG Base Directory`: http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
@@ -1,18 +1,21 b''
1 =====================
1 =====================
2 Development version
2 Development version
3 =====================
3 =====================
4
4
5 This document describes in-flight development work.
5 This document describes in-flight development work.
6
6
7 Redesigned IPython notebook user interface
7 Redesigned IPython notebook user interface
8 ------------------------------------------
8 ------------------------------------------
9
9
10 .. add details
10 .. add details
11
11
12 Other new features
12 Other new features
13 ------------------
13 ------------------
14
14
15 * **%install_ext**: A new magic function to install an IPython extension from
15 * **%install_ext**: A new magic function to install an IPython extension from
16 a URL. E.g. ``%install_ext https://bitbucket.org/birkenfeld/ipython-physics/raw/d1310a2ab15d/physics.py``.
16 a URL. E.g. ``%install_ext https://bitbucket.org/birkenfeld/ipython-physics/raw/d1310a2ab15d/physics.py``.
17
17
18 * The :envvar:`IPYTHON_DIR` environment variable has been deprecated and
19 support for it will be removed in a future release. Please use the
20 :envvar:`IPYTHONDIR` environment variable instead.
18
21
General Comments 0
You need to be logged in to leave comments. Login now