##// END OF EJS Templates
DOC: extensions/autoreload: better extension module docstring
Pauli Virtanen -
Show More
@@ -1,11 +1,92 b''
1 1 """
2 IPython extension: autoreload modules before executing the next line
2 ``autoreload`` is an IPython extension that reloads modules
3 automatically before executing the line of code typed.
3 4
4 Try::
5 This makes for example the following workflow possible:
5 6
6 %autoreload?
7 .. sourcecode:: ipython
8
9 In [1]: %load_ext autoreload
10
11 In [2]: %autoreload 2
12
13 In [3]: from foo import some_function
14
15 In [4]: some_function()
16 Out[4]: 42
17
18 In [5]: # open foo.py in an editor and change some_function to return 43
19
20 In [6]: some_function()
21 Out[6]: 43
22
23 The module was reloaded without reloading it explicitly, and the
24 object imported with ``from foo import ...`` was also updated.
25
26 Usage
27 =====
28
29 The following magic commands are provided:
30
31 ``%autoreload``
32
33 Reload all modules (except those excluded by ``%aimport``)
34 automatically now.
35
36 ``%autoreload 0``
37
38 Disable automatic reloading.
39
40 ``%autoreload 1``
41
42 Reload all modules imported with ``%aimport`` every time before
43 executing the Python code typed.
44
45 ``%autoreload 2``
46
47 Reload all modules (except those excluded by ``%aimport``) every
48 time before executing the Python code typed.
49
50 ``%aimport``
51
52 List modules which are to be automatically imported or not to be imported.
53
54 ``%aimport foo``
55
56 Import module 'foo' and mark it to be autoreloaded for ``%autoreload 1``
57
58 ``%aimport -foo``
59
60 Mark module 'foo' to not be autoreloaded.
61
62 Caveats
63 =======
64
65 Reloading Python modules in a reliable way is in general difficult,
66 and unexpected things may occur. ``%autoreload`` tries to work around
67 common pitfalls by replacing function code objects and parts of
68 classes previously in the module with new versions. This makes the
69 following things to work:
70
71 - Functions and classes imported via 'from xxx import foo' are upgraded
72 to new versions when 'xxx' is reloaded.
73
74 - Methods and properties of classes are upgraded on reload, so that
75 calling 'c.foo()' on an object 'c' created before the reload causes
76 the new code for 'foo' to be executed.
77
78 Some of the known remaining caveats are:
79
80 - Replacing code objects does not always succeed: changing a @property
81 in a class to an ordinary method or a method to a member variable
82 can cause problems (but in old objects only).
83
84 - Functions that are removed (eg. via monkey-patching) from a module
85 before it is reloaded are not upgraded.
86
87 - C extension modules cannot be reloaded, and so cannot be
88 autoreloaded.
7 89
8 for documentation.
9 90 """
10 91
11 92 # Pauli Virtanen <pav@iki.fi>, 2008.
General Comments 0
You need to be logged in to leave comments. Login now