Show More
This diff has been collapsed as it changes many lines, (784 lines changed) Show them Hide them | |||||
@@ -52,96 +52,97 b' which tries to:' | |||||
52 | shell can only do this for Tkinter applications. |
|
52 | shell can only do this for Tkinter applications. | |
53 |
|
53 | |||
54 |
|
54 | |||
55 |
|
|
55 | Main features | |
56 |
|
56 | ------------- | ||
57 | * Dynamic object introspection. One can access docstrings, function |
|
57 | ||
58 | definition prototypes, source code, source files and other details |
|
58 | * Dynamic object introspection. One can access docstrings, function | |
59 | of any object accessible to the interpreter with a single |
|
59 | definition prototypes, source code, source files and other details | |
60 | keystroke ('?', and using '??' provides additional detail). |
|
60 | of any object accessible to the interpreter with a single | |
61 | * Searching through modules and namespaces with '*' wildcards, both |
|
61 | keystroke ('?', and using '??' provides additional detail). | |
62 | when using the '?' system and via the %psearch command. |
|
62 | * Searching through modules and namespaces with '*' wildcards, both | |
63 | * Completion in the local namespace, by typing TAB at the prompt. |
|
63 | when using the '?' system and via the %psearch command. | |
64 | This works for keywords, methods, variables and files in the |
|
64 | * Completion in the local namespace, by typing TAB at the prompt. | |
65 | current directory. This is supported via the readline library, and |
|
65 | This works for keywords, methods, variables and files in the | |
66 | full access to configuring readline's behavior is provided. |
|
66 | current directory. This is supported via the readline library, and | |
67 | * Numbered input/output prompts with command history (persistent |
|
67 | full access to configuring readline's behavior is provided. | |
68 | across sessions and tied to each profile), full searching in this |
|
68 | * Numbered input/output prompts with command history (persistent | |
69 | history and caching of all input and output. |
|
69 | across sessions and tied to each profile), full searching in this | |
70 | * User-extensible 'magic' commands. A set of commands prefixed with |
|
70 | history and caching of all input and output. | |
71 | % is available for controlling IPython itself and provides |
|
71 | * User-extensible 'magic' commands. A set of commands prefixed with | |
72 | directory control, namespace information and many aliases to |
|
72 | % is available for controlling IPython itself and provides | |
73 | common system shell commands. |
|
73 | directory control, namespace information and many aliases to | |
74 | * Alias facility for defining your own system aliases. |
|
74 | common system shell commands. | |
75 | * Complete system shell access. Lines starting with ! are passed |
|
75 | * Alias facility for defining your own system aliases. | |
76 | directly to the system shell, and using !! captures shell output |
|
76 | * Complete system shell access. Lines starting with ! are passed | |
77 | into python variables for further use. |
|
77 | directly to the system shell, and using !! captures shell output | |
78 | * Background execution of Python commands in a separate thread. |
|
78 | into python variables for further use. | |
79 | IPython has an internal job manager called jobs, and a |
|
79 | * Background execution of Python commands in a separate thread. | |
80 | conveninence backgrounding magic function called %bg. |
|
80 | IPython has an internal job manager called jobs, and a | |
81 | * The ability to expand python variables when calling the system |
|
81 | conveninence backgrounding magic function called %bg. | |
82 | shell. In a shell command, any python variable prefixed with $ is |
|
82 | * The ability to expand python variables when calling the system | |
83 | expanded. A double $$ allows passing a literal $ to the shell (for |
|
83 | shell. In a shell command, any python variable prefixed with $ is | |
84 | access to shell and environment variables like $PATH). |
|
84 | expanded. A double $$ allows passing a literal $ to the shell (for | |
85 | * Filesystem navigation, via a magic %cd command, along with a |
|
85 | access to shell and environment variables like $PATH). | |
86 | persistent bookmark system (using %bookmark) for fast access to |
|
86 | * Filesystem navigation, via a magic %cd command, along with a | |
87 | frequently visited directories. |
|
87 | persistent bookmark system (using %bookmark) for fast access to | |
88 | * A lightweight persistence framework via the %store command, which |
|
88 | frequently visited directories. | |
89 | allows you to save arbitrary Python variables. These get restored |
|
89 | * A lightweight persistence framework via the %store command, which | |
90 | automatically when your session restarts. |
|
90 | allows you to save arbitrary Python variables. These get restored | |
91 | * Automatic indentation (optional) of code as you type (through the |
|
91 | automatically when your session restarts. | |
92 | readline library). |
|
92 | * Automatic indentation (optional) of code as you type (through the | |
93 | * Macro system for quickly re-executing multiple lines of previous |
|
93 | readline library). | |
94 | input with a single name. Macros can be stored persistently via |
|
94 | * Macro system for quickly re-executing multiple lines of previous | |
95 | %store and edited via %edit. |
|
95 | input with a single name. Macros can be stored persistently via | |
96 | * Session logging (you can then later use these logs as code in your |
|
96 | %store and edited via %edit. | |
97 | programs). Logs can optionally timestamp all input, and also store |
|
97 | * Session logging (you can then later use these logs as code in your | |
98 | session output (marked as comments, so the log remains valid |
|
98 | programs). Logs can optionally timestamp all input, and also store | |
99 | Python source code). |
|
99 | session output (marked as comments, so the log remains valid | |
100 | * Session restoring: logs can be replayed to restore a previous |
|
100 | Python source code). | |
101 | session to the state where you left it. |
|
101 | * Session restoring: logs can be replayed to restore a previous | |
102 | * Verbose and colored exception traceback printouts. Easier to parse |
|
102 | session to the state where you left it. | |
103 | visually, and in verbose mode they produce a lot of useful |
|
103 | * Verbose and colored exception traceback printouts. Easier to parse | |
104 | debugging information (basically a terminal version of the cgitb |
|
104 | visually, and in verbose mode they produce a lot of useful | |
105 | module). |
|
105 | debugging information (basically a terminal version of the cgitb | |
106 | * Auto-parentheses: callable objects can be executed without |
|
106 | module). | |
107 | parentheses: 'sin 3' is automatically converted to 'sin(3)'. |
|
107 | * Auto-parentheses: callable objects can be executed without | |
108 | * Auto-quoting: using ',' or ';' as the first character forces |
|
108 | parentheses: 'sin 3' is automatically converted to 'sin(3)'. | |
109 | auto-quoting of the rest of the line: ',my_function a b' becomes |
|
109 | * Auto-quoting: using ',' or ';' as the first character forces | |
110 | automatically 'my_function("a","b")', while ';my_function a b' |
|
110 | auto-quoting of the rest of the line: ',my_function a b' becomes | |
111 | becomes 'my_function("a b")'. |
|
111 | automatically 'my_function("a","b")', while ';my_function a b' | |
112 | * Extensible input syntax. You can define filters that pre-process |
|
112 | becomes 'my_function("a b")'. | |
113 | user input to simplify input in special situations. This allows |
|
113 | * Extensible input syntax. You can define filters that pre-process | |
114 | for example pasting multi-line code fragments which start with |
|
114 | user input to simplify input in special situations. This allows | |
115 | '>>>' or '...' such as those from other python sessions or the |
|
115 | for example pasting multi-line code fragments which start with | |
116 | standard Python documentation. |
|
116 | '>>>' or '...' such as those from other python sessions or the | |
117 | * Flexible configuration system. It uses a configuration file which |
|
117 | standard Python documentation. | |
118 | allows permanent setting of all command-line options, module |
|
118 | * Flexible configuration system. It uses a configuration file which | |
119 | loading, code and file execution. The system allows recursive file |
|
119 | allows permanent setting of all command-line options, module | |
120 | inclusion, so you can have a base file with defaults and layers |
|
120 | loading, code and file execution. The system allows recursive file | |
121 | which load other customizations for particular projects. |
|
121 | inclusion, so you can have a base file with defaults and layers | |
122 | * Embeddable. You can call IPython as a python shell inside your own |
|
122 | which load other customizations for particular projects. | |
123 | python programs. This can be used both for debugging code or for |
|
123 | * Embeddable. You can call IPython as a python shell inside your own | |
124 | providing interactive abilities to your programs with knowledge |
|
124 | python programs. This can be used both for debugging code or for | |
125 | about the local namespaces (very useful in debugging and data |
|
125 | providing interactive abilities to your programs with knowledge | |
126 | analysis situations). |
|
126 | about the local namespaces (very useful in debugging and data | |
127 | * Easy debugger access. You can set IPython to call up an enhanced |
|
127 | analysis situations). | |
128 | version of the Python debugger (pdb) every time there is an |
|
128 | * Easy debugger access. You can set IPython to call up an enhanced | |
129 | uncaught exception. This drops you inside the code which triggered |
|
129 | version of the Python debugger (pdb) every time there is an | |
130 | the exception with all the data live and it is possible to |
|
130 | uncaught exception. This drops you inside the code which triggered | |
131 | navigate the stack to rapidly isolate the source of a bug. The |
|
131 | the exception with all the data live and it is possible to | |
132 | %run magic command -with the -d option- can run any script under |
|
132 | navigate the stack to rapidly isolate the source of a bug. The | |
133 | pdb's control, automatically setting initial breakpoints for you. |
|
133 | %run magic command -with the -d option- can run any script under | |
134 | This version of pdb has IPython-specific improvements, including |
|
134 | pdb's control, automatically setting initial breakpoints for you. | |
135 | tab-completion and traceback coloring support. |
|
135 | This version of pdb has IPython-specific improvements, including | |
136 | * Profiler support. You can run single statements (similar to |
|
136 | tab-completion and traceback coloring support. | |
137 | profile.run()) or complete programs under the profiler's control. |
|
137 | * Profiler support. You can run single statements (similar to | |
138 | While this is possible with standard cProfile or profile modules, |
|
138 | profile.run()) or complete programs under the profiler's control. | |
139 | IPython wraps this functionality with magic commands (see '%prun' |
|
139 | While this is possible with standard cProfile or profile modules, | |
140 | and '%run -p') convenient for rapid interactive work. |
|
140 | IPython wraps this functionality with magic commands (see '%prun' | |
141 | * Doctest support. The special %doctest_mode command toggles a mode |
|
141 | and '%run -p') convenient for rapid interactive work. | |
142 | that allows you to paste existing doctests (with leading '>>>' |
|
142 | * Doctest support. The special %doctest_mode command toggles a mode | |
143 | prompts and whitespace) and uses doctest-compatible prompts and |
|
143 | that allows you to paste existing doctests (with leading '>>>' | |
144 | output, so you can use IPython sessions as doctest code. |
|
144 | prompts and whitespace) and uses doctest-compatible prompts and | |
|
145 | output, so you can use IPython sessions as doctest code. | |||
145 |
|
146 | |||
146 |
|
147 | |||
147 | Portability and Python requirements |
|
148 | Portability and Python requirements | |
@@ -602,10 +603,14 b' Input/Output prompts and exception tracebacks' | |||||
602 | You can test whether the colored prompts and tracebacks work on your |
|
603 | You can test whether the colored prompts and tracebacks work on your | |
603 | system interactively by typing '%colors Linux' at the prompt (use |
|
604 | system interactively by typing '%colors Linux' at the prompt (use | |
604 | '%colors LightBG' if your terminal has a light background). If the input |
|
605 | '%colors LightBG' if your terminal has a light background). If the input | |
605 | prompt shows garbage like: |
|
606 | prompt shows garbage like:: | |
606 | [0;32mIn [[1;32m1[0;32m]: [0;00m |
|
607 | ||
607 | instead of (in color) something like: |
|
608 | [0;32mIn [[1;32m1[0;32m]: [0;00m | |
608 | In [1]: |
|
609 | ||
|
610 | instead of (in color) something like:: | |||
|
611 | ||||
|
612 | In [1]: | |||
|
613 | ||||
609 | this means that your terminal doesn't properly handle color escape |
|
614 | this means that your terminal doesn't properly handle color escape | |
610 | sequences. You can go to a 'no color' mode by typing '%colors NoColor'. |
|
615 | sequences. You can go to a 'no color' mode by typing '%colors NoColor'. | |
611 |
|
616 | |||
@@ -3092,6 +3097,23 b" won't work::" | |||||
3092 | Customization |
|
3097 | Customization | |
3093 | ============= |
|
3098 | ============= | |
3094 |
|
3099 | |||
|
3100 | There are 2 ways to configure IPython - the old way of using ipythonrc | |||
|
3101 | files (an INI-file like format), and the new way that involves editing | |||
|
3102 | your ipy_user_conf.py. Both configuration systems work at the same | |||
|
3103 | time, so you can set your options in both, but if you are hesitating | |||
|
3104 | about which alternative to choose, we recommend the ipy_user_conf.py | |||
|
3105 | approach, as it will give you more power and control in the long | |||
|
3106 | run. However, there are few options such as pylab_import_all that can | |||
|
3107 | only be specified in ipythonrc file or command line - the reason for | |||
|
3108 | this is that they are needed before IPython has been started up, and | |||
|
3109 | the IPApi object used in ipy_user_conf.py is not yet available at that | |||
|
3110 | time. A hybrid approach of specifying a few options in ipythonrc and | |||
|
3111 | doing the more advanced configuration in ipy_user_conf.py is also | |||
|
3112 | possible. | |||
|
3113 | ||||
|
3114 | The ipythonrc approach | |||
|
3115 | ---------------------- | |||
|
3116 | ||||
3095 | As we've already mentioned, IPython reads a configuration file which can |
|
3117 | As we've already mentioned, IPython reads a configuration file which can | |
3096 | be specified at the command line (-rcfile) or which by default is |
|
3118 | be specified at the command line (-rcfile) or which by default is | |
3097 | assumed to be called ipythonrc. Such a file is looked for in the current |
|
3119 | assumed to be called ipythonrc. Such a file is looked for in the current | |
@@ -3150,7 +3172,6 b' Each of these options may appear as many times as you need it in the file.' | |||||
3150 | normal system shell. |
|
3172 | normal system shell. | |
3151 |
|
3173 | |||
3152 |
|
3174 | |||
3153 |
|
||||
3154 | Sample ipythonrc file |
|
3175 | Sample ipythonrc file | |
3155 | --------------------- |
|
3176 | --------------------- | |
3156 |
|
3177 | |||
@@ -3791,7 +3812,95 b' reproduce it here for reference::' | |||||
3791 | # alias |
|
3812 | # alias | |
3792 |
|
3813 | |||
3793 | #************************* end of file <ipythonrc> ************************ |
|
3814 | #************************* end of file <ipythonrc> ************************ | |
3794 |
|
3815 | |||
|
3816 | ||||
|
3817 | ipy_user_conf.py | |||
|
3818 | ---------------- | |||
|
3819 | ||||
|
3820 | There should be a simple template ipy_user_conf.py file in your | |||
|
3821 | ~/.ipython directory. It is a plain python module that is imported | |||
|
3822 | during IPython startup, so you can do pretty much what you want there | |||
|
3823 | - import modules, configure extensions, change options, define magic | |||
|
3824 | commands, put variables and functions in the IPython namespace, | |||
|
3825 | etc. You use the IPython extension api object, acquired by | |||
|
3826 | IPython.ipapi.get() and documented in the "IPython extension API" | |||
|
3827 | chapter, to interact with IPython. A sample ipy_user_conf.py is listed | |||
|
3828 | below for reference:: | |||
|
3829 | ||||
|
3830 | # Most of your config files and extensions will probably start | |||
|
3831 | # with this import | |||
|
3832 | ||||
|
3833 | import IPython.ipapi | |||
|
3834 | ip = IPython.ipapi.get() | |||
|
3835 | ||||
|
3836 | # You probably want to uncomment this if you did %upgrade -nolegacy | |||
|
3837 | # import ipy_defaults | |||
|
3838 | ||||
|
3839 | import os | |||
|
3840 | ||||
|
3841 | def main(): | |||
|
3842 | ||||
|
3843 | #ip.dbg.debugmode = True | |||
|
3844 | ip.dbg.debug_stack() | |||
|
3845 | ||||
|
3846 | # uncomment if you want to get ipython -p sh behaviour | |||
|
3847 | # without having to use command line switches | |||
|
3848 | import ipy_profile_sh | |||
|
3849 | import jobctrl | |||
|
3850 | ||||
|
3851 | # Configure your favourite editor? | |||
|
3852 | # Good idea e.g. for %edit os.path.isfile | |||
|
3853 | ||||
|
3854 | #import ipy_editors | |||
|
3855 | ||||
|
3856 | # Choose one of these: | |||
|
3857 | ||||
|
3858 | #ipy_editors.scite() | |||
|
3859 | #ipy_editors.scite('c:/opt/scite/scite.exe') | |||
|
3860 | #ipy_editors.komodo() | |||
|
3861 | #ipy_editors.idle() | |||
|
3862 | # ... or many others, try 'ipy_editors??' after import to see them | |||
|
3863 | ||||
|
3864 | # Or roll your own: | |||
|
3865 | #ipy_editors.install_editor("c:/opt/jed +$line $file") | |||
|
3866 | ||||
|
3867 | ||||
|
3868 | o = ip.options | |||
|
3869 | # An example on how to set options | |||
|
3870 | #o.autocall = 1 | |||
|
3871 | o.system_verbose = 0 | |||
|
3872 | ||||
|
3873 | #import_all("os sys") | |||
|
3874 | #execf('~/_ipython/ns.py') | |||
|
3875 | ||||
|
3876 | ||||
|
3877 | # -- prompt | |||
|
3878 | # A different, more compact set of prompts from the default ones, that | |||
|
3879 | # always show your current location in the filesystem: | |||
|
3880 | ||||
|
3881 | #o.prompt_in1 = r'\C_LightBlue[\C_LightCyan\Y2\C_LightBlue]\C_Normal\n\C_Green|\#>' | |||
|
3882 | #o.prompt_in2 = r'.\D: ' | |||
|
3883 | #o.prompt_out = r'[\#] ' | |||
|
3884 | ||||
|
3885 | # Try one of these color settings if you can't read the text easily | |||
|
3886 | # autoexec is a list of IPython commands to execute on startup | |||
|
3887 | #o.autoexec.append('%colors LightBG') | |||
|
3888 | #o.autoexec.append('%colors NoColor') | |||
|
3889 | o.autoexec.append('%colors Linux') | |||
|
3890 | ||||
|
3891 | ||||
|
3892 | # some config helper functions you can use | |||
|
3893 | def import_all(modules): | |||
|
3894 | """ Usage: import_all("os sys") """ | |||
|
3895 | for m in modules.split(): | |||
|
3896 | ip.ex("from %s import *" % m) | |||
|
3897 | ||||
|
3898 | def execf(fname): | |||
|
3899 | """ Execute a file in user namespace """ | |||
|
3900 | ip.ex('execfile("%s")' % os.path.expanduser(fname)) | |||
|
3901 | ||||
|
3902 | main() | |||
|
3903 | ||||
3795 |
|
3904 | |||
3796 |
|
3905 | |||
3797 | Fine-tuning your prompt |
|
3906 | Fine-tuning your prompt | |
@@ -3799,42 +3908,42 b' Fine-tuning your prompt' | |||||
3799 |
|
3908 | |||
3800 | IPython's prompts can be customized using a syntax similar to that of |
|
3909 | IPython's prompts can be customized using a syntax similar to that of | |
3801 | the bash shell. Many of bash's escapes are supported, as well as a few |
|
3910 | the bash shell. Many of bash's escapes are supported, as well as a few | |
3802 | additional ones. We list them below: |
|
3911 | additional ones. We list them below:: | |
3803 |
|
3912 | |||
3804 | *\#* |
|
3913 | \# | |
3805 | the prompt/history count number. This escape is automatically |
|
3914 | the prompt/history count number. This escape is automatically | |
3806 | wrapped in the coloring codes for the currently active color scheme. |
|
3915 | wrapped in the coloring codes for the currently active color scheme. | |
3807 | *\N* |
|
3916 | \N | |
3808 | the 'naked' prompt/history count number: this is just the number |
|
3917 | the 'naked' prompt/history count number: this is just the number | |
3809 | itself, without any coloring applied to it. This lets you produce |
|
3918 | itself, without any coloring applied to it. This lets you produce | |
3810 | numbered prompts with your own colors. |
|
3919 | numbered prompts with your own colors. | |
3811 | *\D* |
|
3920 | \D | |
3812 | the prompt/history count, with the actual digits replaced by dots. |
|
3921 | the prompt/history count, with the actual digits replaced by dots. | |
3813 | Used mainly in continuation prompts (prompt_in2) |
|
3922 | Used mainly in continuation prompts (prompt_in2) | |
3814 | *\w* |
|
3923 | \w | |
3815 | the current working directory |
|
3924 | the current working directory | |
3816 | *\W* |
|
3925 | \W | |
3817 | the basename of current working directory |
|
3926 | the basename of current working directory | |
3818 | *\Xn* |
|
3927 | \Xn | |
3819 | where $n=0\ldots5.$ The current working directory, with $HOME |
|
3928 | where $n=0\ldots5.$ The current working directory, with $HOME | |
3820 | replaced by ~, and filtered out to contain only $n$ path elements |
|
3929 | replaced by ~, and filtered out to contain only $n$ path elements | |
3821 | *\Yn* |
|
3930 | \Yn | |
3822 | Similar to \Xn, but with the $n+1$ element included if it is ~ (this |
|
3931 | Similar to \Xn, but with the $n+1$ element included if it is ~ (this | |
3823 | is similar to the behavior of the %cn escapes in tcsh) |
|
3932 | is similar to the behavior of the %cn escapes in tcsh) | |
3824 | *\u* |
|
3933 | \u | |
3825 | the username of the current user |
|
3934 | the username of the current user | |
3826 | *\$* |
|
3935 | \$ | |
3827 | if the effective UID is 0, a #, otherwise a $ |
|
3936 | if the effective UID is 0, a #, otherwise a $ | |
3828 | *\h* |
|
3937 | \h | |
3829 | the hostname up to the first '.' |
|
3938 | the hostname up to the first '.' | |
3830 | *\H* |
|
3939 | \H | |
3831 | the hostname |
|
3940 | the hostname | |
3832 | *\n* |
|
3941 | \n | |
3833 | a newline |
|
3942 | a newline | |
3834 | *\r* |
|
3943 | \r | |
3835 | a carriage return |
|
3944 | a carriage return | |
3836 | *\v* |
|
3945 | \v | |
3837 | IPython version string |
|
3946 | IPython version string | |
3838 |
|
3947 | |||
3839 | In addition to these, ANSI color escapes can be insterted into the |
|
3948 | In addition to these, ANSI color escapes can be insterted into the | |
3840 | prompts, as \C_ColorName. The list of valid color names is: Black, Blue, |
|
3949 | prompts, as \C_ColorName. The list of valid color names is: Black, Blue, | |
@@ -4225,11 +4334,11 b' uncaught exception is triggered by your code.' | |||||
4225 |
|
4334 | |||
4226 | For stand-alone use of the feature in your programs which do not use |
|
4335 | For stand-alone use of the feature in your programs which do not use | |
4227 | IPython at all, put the following lines toward the top of your 'main' |
|
4336 | IPython at all, put the following lines toward the top of your 'main' | |
4228 | routine: |
|
4337 | routine:: | |
4229 |
|
4338 | |||
4230 | import sys,IPython.ultraTB |
|
4339 | import sys,IPython.ultraTB | |
4231 | sys.excepthook = IPython.ultraTB.FormattedTB(mode='Verbose', |
|
4340 | sys.excepthook = IPython.ultraTB.FormattedTB(mode='Verbose', | |
4232 | color_scheme='Linux', call_pdb=1) |
|
4341 | color_scheme='Linux', call_pdb=1) | |
4233 |
|
4342 | |||
4234 | The mode keyword can be either 'Verbose' or 'Plain', giving either very |
|
4343 | The mode keyword can be either 'Verbose' or 'Plain', giving either very | |
4235 | detailed or normal tracebacks respectively. The color_scheme keyword can |
|
4344 | detailed or normal tracebacks respectively. The color_scheme keyword can | |
@@ -4255,7 +4364,7 b" supplied, which we will briefly describe now. These can be used 'as is'" | |||||
4255 | starting point for writing your own extensions. |
|
4364 | starting point for writing your own extensions. | |
4256 |
|
4365 | |||
4257 |
|
4366 | |||
4258 |
Pasting of code starting with ' |
|
4367 | Pasting of code starting with '>>> ' or '... ' | |
4259 | ---------------------------------------------- |
|
4368 | ---------------------------------------------- | |
4260 |
|
4369 | |||
4261 | In the python tutorial it is common to find code examples which have |
|
4370 | In the python tutorial it is common to find code examples which have | |
@@ -4345,7 +4454,7 b' the "pysh" shortcut in start menu.' | |||||
4345 |
|
4454 | |||
4346 | If you want to use the features of sh profile as your defaults (which |
|
4455 | If you want to use the features of sh profile as your defaults (which | |
4347 | might be a good idea if you use other profiles a lot of the time but |
|
4456 | might be a good idea if you use other profiles a lot of the time but | |
4348 |
still want the convenience of sh profile), add |
|
4457 | still want the convenience of sh profile), add ``import ipy_profile_sh`` | |
4349 | to your ~/.ipython/ipy_user_conf.py. |
|
4458 | to your ~/.ipython/ipy_user_conf.py. | |
4350 |
|
4459 | |||
4351 | The 'sh' profile is different from the default profile in that: |
|
4460 | The 'sh' profile is different from the default profile in that: | |
@@ -4473,73 +4582,145 b" Provide the magic function %mglob, which makes it easier (than the 'find' comman" | |||||
4473 | Note that the first 2 calls will put the file list in result history (_, _9, _10), and the last one will assign it to 'workfiles'. |
|
4582 | Note that the first 2 calls will put the file list in result history (_, _9, _10), and the last one will assign it to 'workfiles'. | |
4474 |
|
4583 | |||
4475 |
|
4584 | |||
|
4585 | Prompt customization | |||
|
4586 | -------------------- | |||
|
4587 | ||||
|
4588 | The sh profile uses the following prompt configurations:: | |||
4476 |
|
4589 | |||
|
4590 | o.prompt_in1= r'\C_LightBlue[\C_LightCyan\Y2\C_LightBlue]\C_Green|\#>' | |||
|
4591 | o.prompt_in2= r'\C_Green|\C_LightGreen\D\C_Green>' | |||
4477 |
|
4592 | |||
|
4593 | You can change the prompt configuration to your liking by editing | |||
|
4594 | ipy_user_conf.py. | |||
4478 |
|
4595 | |||
4479 | Prompt customization |
|
4596 | String lists | |
4480 | -------------------- |
|
4597 | ============ | |
|
4598 | ||||
|
4599 | String lists (IPython.genutils.SList) are handy way to process output | |||
|
4600 | from system commands. They are produced by ``var = !cmd`` syntax. | |||
|
4601 | ||||
|
4602 | First, we acquire the output of 'ls -l':: | |||
|
4603 | ||||
|
4604 | [Q:doc/examples]|2> lines = !ls -l | |||
|
4605 | == | |||
|
4606 | ['total 23', | |||
|
4607 | '-rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py', | |||
|
4608 | '-rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py', | |||
|
4609 | '-rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py', | |||
|
4610 | '-rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py', | |||
|
4611 | '-rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py', | |||
|
4612 | '-rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py', | |||
|
4613 | '-rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc'] | |||
|
4614 | ||||
|
4615 | Now, let's take a look at the contents of 'lines' (the first number is | |||
|
4616 | the list element number):: | |||
|
4617 | ||||
|
4618 | [Q:doc/examples]|3> lines | |||
|
4619 | <3> SList (.p, .n, .l, .s, .grep(), .fields() available). Value: | |||
|
4620 | ||||
|
4621 | 0: total 23 | |||
|
4622 | 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py | |||
|
4623 | 2: -rw-rw-rw- 1 ville None 1927 Sep 30 2006 example-embed-short.py | |||
|
4624 | 3: -rwxrwxrwx 1 ville None 4606 Sep 1 17:15 example-embed.py | |||
|
4625 | 4: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py | |||
|
4626 | 5: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py | |||
|
4627 | 6: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py | |||
|
4628 | 7: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc | |||
|
4629 | ||||
|
4630 | Now, let's filter out the 'embed' lines:: | |||
|
4631 | ||||
|
4632 | [Q:doc/examples]|4> l2 = lines.grep('embed',prune=1) | |||
|
4633 | [Q:doc/examples]|5> l2 | |||
|
4634 | <5> SList (.p, .n, .l, .s, .grep(), .fields() available). Value: | |||
|
4635 | ||||
|
4636 | 0: total 23 | |||
|
4637 | 1: -rw-rw-rw- 1 ville None 1163 Sep 30 2006 example-demo.py | |||
|
4638 | 2: -rwxrwxrwx 1 ville None 1017 Sep 30 2006 example-gnuplot.py | |||
|
4639 | 3: -rwxrwxrwx 1 ville None 339 Jun 11 18:01 extension.py | |||
|
4640 | 4: -rwxrwxrwx 1 ville None 113 Dec 20 2006 seteditor.py | |||
|
4641 | 5: -rwxrwxrwx 1 ville None 245 Dec 12 2006 seteditor.pyc | |||
|
4642 | ||||
|
4643 | Now, we want strings having just file names and permissions:: | |||
|
4644 | ||||
|
4645 | [Q:doc/examples]|6> l2.fields(8,0) | |||
|
4646 | <6> SList (.p, .n, .l, .s, .grep(), .fields() available). Value: | |||
|
4647 | ||||
|
4648 | 0: total | |||
|
4649 | 1: example-demo.py -rw-rw-rw- | |||
|
4650 | 2: example-gnuplot.py -rwxrwxrwx | |||
|
4651 | 3: extension.py -rwxrwxrwx | |||
|
4652 | 4: seteditor.py -rwxrwxrwx | |||
|
4653 | 5: seteditor.pyc -rwxrwxrwx | |||
|
4654 | ||||
|
4655 | Note how the line with 'total' does not raise IndexError. | |||
|
4656 | ||||
|
4657 | If you want to split these (yielding lists), call fields() without | |||
|
4658 | arguments:: | |||
|
4659 | ||||
|
4660 | [Q:doc/examples]|7> _.fields() | |||
|
4661 | <7> | |||
|
4662 | [['total'], | |||
|
4663 | ['example-demo.py', '-rw-rw-rw-'], | |||
|
4664 | ['example-gnuplot.py', '-rwxrwxrwx'], | |||
|
4665 | ['extension.py', '-rwxrwxrwx'], | |||
|
4666 | ['seteditor.py', '-rwxrwxrwx'], | |||
|
4667 | ['seteditor.pyc', '-rwxrwxrwx']] | |||
|
4668 | ||||
|
4669 | If you want to pass these separated with spaces to a command (typical | |||
|
4670 | for lists if files), use the .s property:: | |||
|
4671 | ||||
|
4672 | ||||
|
4673 | [Q:doc/examples]|13> files = l2.fields(8).s | |||
|
4674 | [Q:doc/examples]|14> files | |||
|
4675 | <14> 'example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc' | |||
|
4676 | [Q:doc/examples]|15> ls $files | |||
|
4677 | example-demo.py example-gnuplot.py extension.py seteditor.py seteditor.pyc | |||
|
4678 | ||||
|
4679 | SLists are inherited from normal python lists, so every list method is | |||
|
4680 | available:: | |||
|
4681 | ||||
|
4682 | [Q:doc/examples]|21> lines.append('hey') | |||
|
4683 | ||||
|
4684 | ||||
|
4685 | Real world example: remove all files outside version control | |||
|
4686 | ------------------------------------------------------------ | |||
|
4687 | ||||
|
4688 | First, capture output of "hg status":: | |||
|
4689 | ||||
|
4690 | [Q:/ipython]|28> out = !hg status | |||
|
4691 | == | |||
|
4692 | ['M IPython\\Extensions\\ipy_kitcfg.py', | |||
|
4693 | 'M IPython\\Extensions\\ipy_rehashdir.py', | |||
|
4694 | ... | |||
|
4695 | '? build\\lib\\IPython\\Debugger.py', | |||
|
4696 | '? build\\lib\\IPython\\Extensions\\InterpreterExec.py', | |||
|
4697 | '? build\\lib\\IPython\\Extensions\\InterpreterPasteInput.py', | |||
|
4698 | ... | |||
|
4699 | ||||
|
4700 | (lines starting with ? are not under version control). | |||
|
4701 | ||||
|
4702 | :: | |||
|
4703 | ||||
|
4704 | [Q:/ipython]|35> junk = out.grep(r'^\?').fields(1) | |||
|
4705 | [Q:/ipython]|36> junk | |||
|
4706 | <36> SList (.p, .n, .l, .s, .grep(), .fields() availab | |||
|
4707 | ... | |||
|
4708 | 10: build\bdist.win32\winexe\temp\_ctypes.py | |||
|
4709 | 11: build\bdist.win32\winexe\temp\_hashlib.py | |||
|
4710 | 12: build\bdist.win32\winexe\temp\_socket.py | |||
|
4711 | ||||
|
4712 | Now we can just remove these files by doing 'rm $junk.s'. | |||
|
4713 | ||||
|
4714 | The .s, .n, .p properties | |||
|
4715 | ------------------------- | |||
|
4716 | ||||
|
4717 | The '.s' property returns one string where lines are separated by | |||
|
4718 | single space (for convenient passing to system commands). The '.n' | |||
|
4719 | property return one string where the lines are separated by '\n' | |||
|
4720 | (i.e. the original output of the function). If the items in string | |||
|
4721 | list are file names, '.p' can be used to get a list of "path" objects | |||
|
4722 | for convenient file manipulation. | |||
4481 |
|
4723 | |||
4482 | The supplied ipy_profile_sh.py profile comes with an example of a very |
|
|||
4483 | colored and detailed prompt, mainly to serve as an illustration. The |
|
|||
4484 | valid escape sequences, besides color names, are:: |
|
|||
4485 |
|
||||
4486 | \# |
|
|||
4487 | - Prompt number, wrapped in the color escapes for the input prompt |
|
|||
4488 | (determined by the current color scheme). |
|
|||
4489 | \N |
|
|||
4490 | - Just the prompt counter number, without any coloring wrappers. You |
|
|||
4491 | can thus customize the actual prompt colors manually. |
|
|||
4492 | \D |
|
|||
4493 | - Dots, as many as there are digits in \# (so they align). |
|
|||
4494 | \w |
|
|||
4495 | - Current working directory (cwd). |
|
|||
4496 | \W |
|
|||
4497 | - Basename of current working directory. |
|
|||
4498 | \XN |
|
|||
4499 | - Where N=0..5. N terms of the cwd, with $HOME written as ~. |
|
|||
4500 | \YN |
|
|||
4501 | - Where N=0..5. Like XN, but if ~ is term N+1 it's also shown. |
|
|||
4502 | \u |
|
|||
4503 | - Username. |
|
|||
4504 | \H |
|
|||
4505 | - Full hostname. |
|
|||
4506 | \h |
|
|||
4507 | - Hostname up to first '.' |
|
|||
4508 | \$ |
|
|||
4509 | - Root symbol ($ or #). |
|
|||
4510 | \t |
|
|||
4511 | - Current time, in H:M:S format. |
|
|||
4512 | \v |
|
|||
4513 | - IPython release version. |
|
|||
4514 | \n |
|
|||
4515 | - Newline. |
|
|||
4516 | \r |
|
|||
4517 | - Carriage return. |
|
|||
4518 | \\ |
|
|||
4519 | - An explicitly escaped '\'. |
|
|||
4520 |
|
||||
4521 | You can configure your prompt colors using any ANSI color escape. Each |
|
|||
4522 | color escape sets the color for any subsequent text, until another |
|
|||
4523 | escape comes in and changes things. The valid color escapes are:: |
|
|||
4524 |
|
||||
4525 | \C_Black |
|
|||
4526 | \C_Blue |
|
|||
4527 | \C_Brown |
|
|||
4528 | \C_Cyan |
|
|||
4529 | \C_DarkGray |
|
|||
4530 | \C_Green |
|
|||
4531 | \C_LightBlue |
|
|||
4532 | \C_LightCyan |
|
|||
4533 | \C_LightGray |
|
|||
4534 | \C_LightGreen |
|
|||
4535 | \C_LightPurple |
|
|||
4536 | \C_LightRed |
|
|||
4537 | \C_Purple |
|
|||
4538 | \C_Red |
|
|||
4539 | \C_White |
|
|||
4540 | \C_Yellow |
|
|||
4541 | \C_Normal |
|
|||
4542 | Stop coloring, defaults to your terminal settings. |
|
|||
4543 |
|
4724 | |||
4544 | Threading support |
|
4725 | Threading support | |
4545 | ================= |
|
4726 | ================= | |
@@ -4734,6 +4915,204 b" mechanism (Sec. 7.3 <node7.html#sec:profiles>): ''ipython -pylab -p" | |||||
4734 | myprofile'' will load the profile defined in ipythonrc-myprofile after |
|
4915 | myprofile'' will load the profile defined in ipythonrc-myprofile after | |
4735 | configuring matplotlib. |
|
4916 | configuring matplotlib. | |
4736 |
|
4917 | |||
|
4918 | IPython Extension Api | |||
|
4919 | ===================== | |||
|
4920 | ||||
|
4921 | IPython api (defined in IPython/ipapi.py) is the public api that | |||
|
4922 | should be used for | |||
|
4923 | ||||
|
4924 | * Configuration of user preferences (.ipython/ipy_user_conf.py) | |||
|
4925 | * Creating new profiles (.ipython/ipy_profile_PROFILENAME.py) | |||
|
4926 | * Writing extensions | |||
|
4927 | ||||
|
4928 | Note that by using the extension api for configuration (editing | |||
|
4929 | ipy_user_conf.py instead of ipythonrc), you get better validity checks | |||
|
4930 | and get richer functionality - for example, you can import an | |||
|
4931 | extension and call functions in it to configure it for your purposes. | |||
|
4932 | ||||
|
4933 | For an example extension (the 'sh' profile), see | |||
|
4934 | IPython/Extensions/ipy_profile_sh.py. | |||
|
4935 | ||||
|
4936 | For the last word on what's available, see the source code of | |||
|
4937 | IPython/ipapi.py. | |||
|
4938 | ||||
|
4939 | ||||
|
4940 | Getting started | |||
|
4941 | --------------- | |||
|
4942 | ||||
|
4943 | If you want to define an extension, create a normal python module that | |||
|
4944 | can be imported. The module will access IPython functionality through | |||
|
4945 | the 'ip' object defined below. | |||
|
4946 | ||||
|
4947 | If you are creating a new profile (e.g. foobar), name the module as | |||
|
4948 | 'ipy_profile_foobar.py' and put it in your ~/.ipython directory. Then, | |||
|
4949 | when you start ipython with the '-p foobar' argument, the module is | |||
|
4950 | automatically imported on ipython startup. | |||
|
4951 | ||||
|
4952 | If you are just doing some per-user configuration, you can either | |||
|
4953 | ||||
|
4954 | * Put the commands directly into ipy_user_conf.py. | |||
|
4955 | ||||
|
4956 | * Create a new module with your customization code and import *that* | |||
|
4957 | module in ipy_user_conf.py. This is preferable to the first approach, | |||
|
4958 | because now you can reuse and distribute your customization code. | |||
|
4959 | ||||
|
4960 | Getting a handle to the api | |||
|
4961 | --------------------------- | |||
|
4962 | ||||
|
4963 | Put this in the start of your module:: | |||
|
4964 | ||||
|
4965 | #!python | |||
|
4966 | import IPython.ipapi | |||
|
4967 | ip = IPython.ipapi.get() | |||
|
4968 | ||||
|
4969 | The 'ip' object will then be used for accessing IPython | |||
|
4970 | functionality. 'ip' will mean this api object in all the following | |||
|
4971 | code snippets. The same 'ip' that we just acquired is always | |||
|
4972 | accessible in interactive IPython sessions by the name _ip - play with | |||
|
4973 | it like this:: | |||
|
4974 | ||||
|
4975 | [~\_ipython]|81> a = 10 | |||
|
4976 | [~\_ipython]|82> _ip.e | |||
|
4977 | _ip.ev _ip.ex _ip.expose_magic | |||
|
4978 | [~\_ipython]|82> _ip.ev('a+13') | |||
|
4979 | <82> 23 | |||
|
4980 | ||||
|
4981 | The _ip object is also used in some examples in this document - it can | |||
|
4982 | be substituted by 'ip' in non-interactive use. | |||
|
4983 | ||||
|
4984 | Changing options | |||
|
4985 | ---------------- | |||
|
4986 | ||||
|
4987 | The ip object has 'options' attribute that can be used te get/set | |||
|
4988 | configuration options (just as in the ipythonrc file):: | |||
|
4989 | ||||
|
4990 | o = ip.options | |||
|
4991 | o.autocall = 2 | |||
|
4992 | o.automagic = 1 | |||
|
4993 | ||||
|
4994 | Executing statements in IPython namespace with 'ex' and 'ev' | |||
|
4995 | ------------------------------------------------------------ | |||
|
4996 | ||||
|
4997 | Often, you want to e.g. import some module or define something that | |||
|
4998 | should be visible in IPython namespace. Use ``ip.ev`` to | |||
|
4999 | *evaluate* (calculate the value of) expression and ``ip.ex`` to | |||
|
5000 | '''execute''' a statement:: | |||
|
5001 | ||||
|
5002 | # path module will be visible to the interactive session | |||
|
5003 | ip.ex("from path import path" ) | |||
|
5004 | ||||
|
5005 | # define a handy function 'up' that changes the working directory | |||
|
5006 | ||||
|
5007 | ip.ex('import os') | |||
|
5008 | ip.ex("def up(): os.chdir('..')") | |||
|
5009 | ||||
|
5010 | ||||
|
5011 | # _i2 has the input history entry #2, print its value in uppercase. | |||
|
5012 | print ip.ev('_i2.upper()') | |||
|
5013 | ||||
|
5014 | Accessing the IPython namespace | |||
|
5015 | ------------------------------- | |||
|
5016 | ||||
|
5017 | ip.user_ns attribute has a dictionary containing the IPython global | |||
|
5018 | namespace (the namespace visible in the interactive session). | |||
|
5019 | ||||
|
5020 | :: | |||
|
5021 | ||||
|
5022 | [~\_ipython]|84> tauno = 555 | |||
|
5023 | [~\_ipython]|85> _ip.user_ns['tauno'] | |||
|
5024 | <85> 555 | |||
|
5025 | ||||
|
5026 | Defining new magic commands | |||
|
5027 | --------------------------- | |||
|
5028 | ||||
|
5029 | The following example defines a new magic command, %impall. What the | |||
|
5030 | command does should be obvious:: | |||
|
5031 | ||||
|
5032 | def doimp(self, arg): | |||
|
5033 | ip = self.api | |||
|
5034 | ip.ex("import %s; reload(%s); from %s import *" % ( | |||
|
5035 | arg,arg,arg) | |||
|
5036 | ) | |||
|
5037 | ||||
|
5038 | ip.expose_magic('impall', doimp) | |||
|
5039 | ||||
|
5040 | Things to observe in this example: | |||
|
5041 | ||||
|
5042 | * Define a function that implements the magic command using the | |||
|
5043 | ipapi methods defined in this document | |||
|
5044 | * The first argument of the function is 'self', i.e. the | |||
|
5045 | interpreter object. It shouldn't be used directly. however. | |||
|
5046 | The interpreter object is probably *not* going to remain stable | |||
|
5047 | through IPython versions. | |||
|
5048 | * Access the ipapi through 'self.api' instead of the global 'ip' object. | |||
|
5049 | * All the text following the magic command on the command line is | |||
|
5050 | contained in the second argument | |||
|
5051 | * Expose the magic by ip.expose_magic() | |||
|
5052 | ||||
|
5053 | ||||
|
5054 | Calling magic functions and system commands | |||
|
5055 | ------------------------------------------- | |||
|
5056 | ||||
|
5057 | Use ip.magic() to execute a magic function, and ip.system() to execute | |||
|
5058 | a system command:: | |||
|
5059 | ||||
|
5060 | # go to a bookmark | |||
|
5061 | ip.magic('%cd -b relfiles') | |||
|
5062 | ||||
|
5063 | # execute 'ls -F' system command. Interchangeable with os.system('ls'), really. | |||
|
5064 | ip.system('ls -F') | |||
|
5065 | ||||
|
5066 | Launching IPython instance from normal python code | |||
|
5067 | -------------------------------------------------- | |||
|
5068 | ||||
|
5069 | Use ipapi.launch_new_instance() with an argument that specifies the | |||
|
5070 | namespace to use. This can be useful for trivially embedding IPython | |||
|
5071 | into your program. Here's an example of normal python program test.py | |||
|
5072 | ('''without''' an existing IPython session) that launches an IPython | |||
|
5073 | interpreter and regains control when the interpreter is exited:: | |||
|
5074 | ||||
|
5075 | [ipython]|1> cat test.py | |||
|
5076 | my_ns = dict( | |||
|
5077 | kissa = 15, | |||
|
5078 | koira = 16) | |||
|
5079 | import IPython.ipapi | |||
|
5080 | print "launching IPython instance" | |||
|
5081 | IPython.ipapi.launch_new_instance(my_ns) | |||
|
5082 | print "Exited IPython instance!" | |||
|
5083 | print "New vals:",my_ns['kissa'], my_ns['koira'] | |||
|
5084 | ||||
|
5085 | And here's what it looks like when run (note how we don't start it | |||
|
5086 | from an ipython session):: | |||
|
5087 | ||||
|
5088 | Q:\ipython>python test.py | |||
|
5089 | launching IPython instance | |||
|
5090 | Py 2.5 (r25:51908, Sep 19 2006, 09:52:17) [MSC v.1310 32 bit (Intel)] IPy 0.7.3b3.r1975 | |||
|
5091 | [ipython]|1> kissa = 444 | |||
|
5092 | [ipython]|2> koira = 555 | |||
|
5093 | [ipython]|3> Exit | |||
|
5094 | Exited IPython instance! | |||
|
5095 | New vals: 444 555 | |||
|
5096 | ||||
|
5097 | Accessing unexposed functionality | |||
|
5098 | --------------------------------- | |||
|
5099 | ||||
|
5100 | There are still many features that are not exposed via the ipapi. If | |||
|
5101 | you can't avoid using them, you can use the functionality in | |||
|
5102 | InteractiveShell object (central IPython session class, defined in | |||
|
5103 | iplib.py) through ip.IP. | |||
|
5104 | ||||
|
5105 | For example:: | |||
|
5106 | ||||
|
5107 | [~]|7> _ip.IP.expand_aliases('np','myfile.py') | |||
|
5108 | <7> 'c:/opt/Notepad++/notepad++.exe myfile.py' | |||
|
5109 | [~]|8> | |||
|
5110 | ||||
|
5111 | Still, it's preferable that if you encounter such a feature, contact | |||
|
5112 | the IPython team and request that the functionality be exposed in a | |||
|
5113 | future version of IPython. Things not in ipapi are more likely to | |||
|
5114 | change over time. | |||
|
5115 | ||||
4737 | Reporting bugs |
|
5116 | Reporting bugs | |
4738 | ============== |
|
5117 | ============== | |
4739 |
|
5118 | |||
@@ -4768,7 +5147,8 b' Brief history' | |||||
4768 | ============= |
|
5147 | ============= | |
4769 |
|
5148 | |||
4770 |
|
5149 | |||
4771 |
|
|
5150 | Origins | |
|
5151 | ------- | |||
4772 |
|
5152 | |||
4773 | The current IPython system grew out of the following three projects: |
|
5153 | The current IPython system grew out of the following three projects: | |
4774 |
|
5154 |
General Comments 0
You need to be logged in to leave comments.
Login now