-
Notifications
You must be signed in to change notification settings - Fork 0
/
ipythonrc
631 lines (460 loc) · 23.6 KB
/
ipythonrc
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
# -*- Mode: Shell-Script -*- Not really, but shows comments correctly
#***************************************************************************
#
# Configuration file for IPython -- ipythonrc format
#
# ===========================================================
# Deprecation note: you should look into modifying ipy_user_conf.py (located
# in ~/.ipython or ~/_ipython, depending on your platform) instead, it's a
# more flexible and robust (and better supported!) configuration
# method.
# ===========================================================
#
# The format of this file is simply one of 'key value' lines.
# Lines containing only whitespace at the beginning and then a # are ignored
# as comments. But comments can NOT be put on lines with data.
# The meaning and use of each key are explained below.
#---------------------------------------------------------------------------
# Section: included files
# Put one or more *config* files (with the syntax of this file) you want to
# include. For keys with a unique value the outermost file has precedence. For
# keys with multiple values, they all get assembled into a list which then
# gets loaded by IPython.
# In this file, all lists of things should simply be space-separated.
# This allows you to build hierarchies of files which recursively load
# lower-level services. If this is your main ~/.ipython/ipythonrc file, you
# should only keep here basic things you always want available. Then you can
# include it in every other special-purpose config file you create.
include
#---------------------------------------------------------------------------
# Section: startup setup
# These are mostly things which parallel a command line option of the same
# name.
# Keys in this section should only appear once. If any key from this section
# is encountered more than once, the last value remains, all earlier ones get
# discarded.
# Automatic calling of callable objects. If set to 1 or 2, callable objects
# are automatically called when invoked at the command line, even if you don't
# type parentheses. IPython adds the parentheses for you. For example:
#In [1]: str 45
#------> str(45)
#Out[1]: '45'
# IPython reprints your line with '---->' indicating that it added
# parentheses. While this option is very convenient for interactive use, it
# may occasionally cause problems with objects which have side-effects if
# called unexpectedly.
# The valid values for autocall are:
# autocall 0 -> disabled (you can toggle it at runtime with the %autocall magic)
# autocall 1 -> active, but do not apply if there are no arguments on the line.
# In this mode, you get:
#In [1]: callable
#Out[1]: <built-in function callable>
#In [2]: callable 'hello'
#------> callable('hello')
#Out[2]: False
# 2 -> Active always. Even if no arguments are present, the callable object
# is called:
#In [4]: callable
#------> callable()
# Note that even with autocall off, you can still use '/' at the start of a
# line to treat the first argument on the command line as a function and add
# parentheses to it:
#In [8]: /str 43
#------> str(43)
#Out[8]: '43'
autocall 1
# Auto-edit syntax errors. When you use the %edit magic in ipython to edit
# source code (see the 'editor' variable below), it is possible that you save
# a file with syntax errors in it. If this variable is true, IPython will ask
# you whether to re-open the editor immediately to correct such an error.
autoedit_syntax 0
# Auto-indent. IPython can recognize lines ending in ':' and indent the next
# line, while also un-indenting automatically after 'raise' or 'return'.
# This feature uses the readline library, so it will honor your ~/.inputrc
# configuration (or whatever file your INPUTRC variable points to). Adding
# the following lines to your .inputrc file can make indent/unindenting more
# convenient (M-i indents, M-u unindents):
# $if Python
# "\M-i": " "
# "\M-u": "\d\d\d\d"
# $endif
# The feature is potentially a bit dangerous, because it can cause problems
# with pasting of indented code (the pasted code gets re-indented on each
# line). But it's a huge time-saver when working interactively. The magic
# function %autoindent allows you to toggle it on/off at runtime.
autoindent 1
# Auto-magic. This gives you access to all the magic functions without having
# to prepend them with an % sign. If you define a variable with the same name
# as a magic function (say who=1), you will need to access the magic function
# with % (%who in this example). However, if later you delete your variable
# (del who), you'll recover the automagic calling form.
# Considering that many magic functions provide a lot of shell-like
# functionality, automagic gives you something close to a full Python+system
# shell environment (and you can extend it further if you want).
automagic 1
# Size of the output cache. After this many entries are stored, the cache will
# get flushed. Depending on the size of your intermediate calculations, you
# may have memory problems if you make it too big, since keeping things in the
# cache prevents Python from reclaiming the memory for old results. Experiment
# with a value that works well for you.
# If you choose cache_size 0 IPython will revert to python's regular >>>
# unnumbered prompt. You will still have _, __ and ___ for your last three
# results, but that will be it. No dynamic _1, _2, etc. will be created. If
# you are running on a slow machine or with very limited memory, this may
# help.
cache_size 1000
# Classic mode: Setting 'classic 1' you lose many of IPython niceties,
# but that's your choice! Classic 1 -> same as IPython -classic.
# Note that this is _not_ the normal python interpreter, it's simply
# IPython emulating most of the classic interpreter's behavior.
classic 0
# colors - Coloring option for prompts and traceback printouts.
# Currently available schemes: NoColor, Linux, LightBG.
# This option allows coloring the prompts and traceback printouts. This
# requires a terminal which can properly handle color escape sequences. If you
# are having problems with this, use the NoColor scheme (uses no color escapes
# at all).
# The Linux option works well in linux console type environments: dark
# background with light fonts.
# LightBG is similar to Linux but swaps dark/light colors to be more readable
# in light background terminals.
# keep uncommented only the one you want:
colors Linux
#colors LightBG
#colors NoColor
########################
# Note to Windows users
#
# Color and readline support is avaialble to Windows users via Gary Bishop's
# readline library. You can find Gary's tools at
# http://sourceforge.net/projects/uncpythontools.
# Note that his readline module requires in turn the ctypes library, available
# at http://starship.python.net/crew/theller/ctypes.
########################
# color_info: IPython can display information about objects via a set of
# functions, and optionally can use colors for this, syntax highlighting
# source code and various other elements. This information is passed through a
# pager (it defaults to 'less' if $PAGER is not set).
# If your pager has problems, try to setting it to properly handle escapes
# (see the less manpage for detail), or disable this option. The magic
# function %color_info allows you to toggle this interactively for testing.
color_info 1
# confirm_exit: set to 1 if you want IPython to confirm when you try to exit
# with an EOF (Control-d in Unix, Control-Z/Enter in Windows). Note that using
# the magic functions %Exit or %Quit you can force a direct exit, bypassing
# any confirmation.
confirm_exit 1
# Use deep_reload() as a substitute for reload() by default. deep_reload() is
# still available as dreload() and appears as a builtin.
deep_reload 0
# Which editor to use with the %edit command. If you leave this at 0, IPython
# will honor your EDITOR environment variable. Since this editor is invoked on
# the fly by ipython and is meant for editing small code snippets, you may
# want to use a small, lightweight editor here.
# For Emacs users, setting up your Emacs server properly as described in the
# manual is a good idea. An alternative is to use jed, a very light editor
# with much of the feel of Emacs (though not as powerful for heavy-duty work).
editor 0
# log 1 -> same as ipython -log. This automatically logs to ./ipython.log
log 0
# Same as ipython -Logfile YourLogfileName.
# Don't use with log 1 (use one or the other)
logfile ''
# banner 0 -> same as ipython -nobanner
banner 1
# messages 0 -> same as ipython -nomessages
messages 1
# Automatically call the pdb debugger after every uncaught exception. If you
# are used to debugging using pdb, this puts you automatically inside of it
# after any call (either in IPython or in code called by it) which triggers an
# exception which goes uncaught.
pdb 0
# Enable the pprint module for printing. pprint tends to give a more readable
# display (than print) for complex nested data structures.
pprint 1
# Prompt strings
# Most bash-like escapes can be used to customize IPython's prompts, as well as
# a few additional ones which are IPython-specific. All valid prompt escapes
# are described in detail in the Customization section of the IPython HTML/PDF
# manual.
# Use \# to represent the current prompt number, and quote them to protect
# spaces.
prompt_in1 'In [\#]: '
# \D is replaced by as many dots as there are digits in the
# current value of \#.
prompt_in2 ' .\D.: '
prompt_out 'Out[\#]: '
# Select whether to left-pad the output prompts to match the length of the
# input ones. This allows you for example to use a simple '>' as an output
# prompt, and yet have the output line up with the input. If set to false,
# the output prompts will be unpadded (flush left).
prompts_pad_left 1
# Pylab support: when ipython is started with the -pylab switch, by default it
# executes 'from matplotlib.pylab import *'. Set this variable to false if you
# want to disable this behavior.
# For details on pylab, see the matplotlib website:
# http://matplotlib.sf.net
pylab_import_all 1
# quick 1 -> same as ipython -quick
quick 0
# Use the readline library (1) or not (0). Most users will want this on, but
# if you experience strange problems with line management (mainly when using
# IPython inside Emacs buffers) you may try disabling it. Not having it on
# prevents you from getting command history with the arrow keys, searching and
# name completion using TAB.
readline 1
# Screen Length: number of lines of your screen. This is used to control
# printing of very long strings. Strings longer than this number of lines will
# be paged with the less command instead of directly printed.
# The default value for this is 0, which means IPython will auto-detect your
# screen size every time it needs to print. If for some reason this isn't
# working well (it needs curses support), specify it yourself. Otherwise don't
# change the default.
screen_length 0
# Prompt separators for input and output.
# Use \n for newline explicitly, without quotes.
# Use 0 (like at the cmd line) to turn off a given separator.
# The structure of prompt printing is:
# (SeparateIn)Input....
# (SeparateOut)Output...
# (SeparateOut2), # that is, no newline is printed after Out2
# By choosing these you can organize your output any way you want.
separate_in \n
separate_out 0
separate_out2 0
# 'nosep 1' is a shorthand for '-SeparateIn 0 -SeparateOut 0 -SeparateOut2 0'.
# Simply removes all input/output separators, overriding the choices above.
nosep 0
# Wildcard searches - IPython has a system for searching names using
# shell-like wildcards; type %psearch? for details. This variables sets
# whether by default such searches should be case sensitive or not. You can
# always override the default at the system command line or the IPython
# prompt.
wildcards_case_sensitive 1
# Object information: at what level of detail to display the string form of an
# object. If set to 0, ipython will compute the string form of any object X,
# by calling str(X), when X? is typed. If set to 1, str(X) will only be
# computed when X?? is given, and if set to 2 or higher, it will never be
# computed (there is no X??? level of detail). This is mostly of use to
# people who frequently manipulate objects whose string representation is
# extremely expensive to compute.
object_info_string_level 0
# xmode - Exception reporting mode.
# Valid modes: Plain, Context and Verbose.
# Plain: similar to python's normal traceback printing.
# Context: prints 5 lines of context source code around each line in the
# traceback.
# Verbose: similar to Context, but additionally prints the variables currently
# visible where the exception happened (shortening their strings if too
# long). This can potentially be very slow, if you happen to have a huge data
# structure whose string representation is complex to compute. Your computer
# may appear to freeze for a while with cpu usage at 100%. If this occurs, you
# can cancel the traceback with Ctrl-C (maybe hitting it more than once).
#xmode Plain
xmode Context
#xmode Verbose
# multi_line_specials: if true, allow magics, aliases and shell escapes (via
# !cmd) to be used in multi-line input (like for loops). For example, if you
# have this active, the following is valid in IPython:
#
#In [17]: for i in range(3):
# ....: mkdir $i
# ....: !touch $i/hello
# ....: ls -l $i
multi_line_specials 1
# System calls: When IPython makes system calls (e.g. via special syntax like
# !cmd or !!cmd, or magics like %sc or %sx), it can print the command it is
# executing to standard output, prefixed by a header string.
system_header "IPython system call: "
system_verbose 1
# wxversion: request a specific wxPython version (used for -wthread)
# Set this to the value of wxPython you want to use, but note that this
# feature requires you to have the wxversion Python module to work. If you
# don't have the wxversion module (try 'import wxversion' at the prompt to
# check) or simply want to leave the system to pick up the default, leave this
# variable at 0.
wxversion 0
#---------------------------------------------------------------------------
# Section: Readline configuration (readline is not available for MS-Windows)
# This is done via the following options:
# (i) readline_parse_and_bind: this option can appear as many times as you
# want, each time defining a string to be executed via a
# readline.parse_and_bind() command. The syntax for valid commands of this
# kind can be found by reading the documentation for the GNU readline library,
# as these commands are of the kind which readline accepts in its
# configuration file.
# The TAB key can be used to complete names at the command line in one of two
# ways: 'complete' and 'menu-complete'. The difference is that 'complete' only
# completes as much as possible while 'menu-complete' cycles through all
# possible completions. Leave the one you prefer uncommented.
readline_parse_and_bind tab: complete
#readline_parse_and_bind tab: menu-complete
# This binds Control-l to printing the list of all possible completions when
# there is more than one (what 'complete' does when hitting TAB twice, or at
# the first TAB if show-all-if-ambiguous is on)
readline_parse_and_bind "\C-l": possible-completions
# This forces readline to automatically print the above list when tab
# completion is set to 'complete'. You can still get this list manually by
# using the key bound to 'possible-completions' (Control-l by default) or by
# hitting TAB twice. Turning this on makes the printing happen at the first
# TAB.
readline_parse_and_bind set show-all-if-ambiguous on
# If you have TAB set to complete names, you can rebind any key (Control-o by
# default) to insert a true TAB character.
readline_parse_and_bind "\C-o": tab-insert
# These commands allow you to indent/unindent easily, with the 4-space
# convention of the Python coding standards. Since IPython's internal
# auto-indent system also uses 4 spaces, you should not change the number of
# spaces in the code below.
readline_parse_and_bind "\M-i": " "
readline_parse_and_bind "\M-o": "\d\d\d\d"
readline_parse_and_bind "\M-I": "\d\d\d\d"
# Bindings for incremental searches in the history. These searches use the
# string typed so far on the command line and search anything in the previous
# input history containing them.
readline_parse_and_bind "\C-r": reverse-search-history
readline_parse_and_bind "\C-s": forward-search-history
# Bindings for completing the current line in the history of previous
# commands. This allows you to recall any previous command by typing its first
# few letters and hitting Control-p, bypassing all intermediate commands which
# may be in the history (much faster than hitting up-arrow 50 times!)
readline_parse_and_bind "\C-p": history-search-backward
readline_parse_and_bind "\C-n": history-search-forward
# I also like to have the same functionality on the plain arrow keys. If you'd
# rather have the arrows use all the history (and not just match what you've
# typed so far), comment out or delete the next two lines.
readline_parse_and_bind "\e[A": history-search-backward
readline_parse_and_bind "\e[B": history-search-forward
# These are typically on by default under *nix, but not win32.
readline_parse_and_bind "\C-k": kill-line
readline_parse_and_bind "\C-u": unix-line-discard
# (ii) readline_remove_delims: a string of characters to be removed from the
# default word-delimiters list used by readline, so that completions may be
# performed on strings which contain them.
readline_remove_delims -/~
# (iii) readline_merge_completions: whether to merge the result of all
# possible completions or not. If true, IPython will complete filenames,
# python names and aliases and return all possible completions. If you set it
# to false, each completer is used at a time, and only if it doesn't return
# any completions is the next one used.
# The default order is: [python_matches, file_matches, alias_matches]
readline_merge_completions 1
# (iv) readline_omit__names: normally hitting <tab> after a '.' in a name
# will complete all attributes of an object, including all the special methods
# whose names start with single or double underscores (like __getitem__ or
# __class__).
# This variable allows you to control this completion behavior:
# readline_omit__names 1 -> completion will omit showing any names starting
# with two __, but it will still show names starting with one _.
# readline_omit__names 2 -> completion will omit all names beginning with one
# _ (which obviously means filtering out the double __ ones).
# Even when this option is set, you can still see those names by explicitly
# typing a _ after the period and hitting <tab>: 'name._<tab>' will always
# complete attribute names starting with '_'.
# This option is off by default so that new users see all attributes of any
# objects they are dealing with.
readline_omit__names 0
#---------------------------------------------------------------------------
# Section: modules to be loaded with 'import ...'
# List, separated by spaces, the names of the modules you want to import
# Example:
# import_mod sys os
# will produce internally the statements
# import sys
# import os
# Each import is executed in its own try/except block, so if one module
# fails to load the others will still be ok.
import_mod
#---------------------------------------------------------------------------
# Section: modules to import some functions from: 'from ... import ...'
# List, one per line, the modules for which you want only to import some
# functions. Give the module name first and then the name of functions to be
# imported from that module.
# Example:
# import_some IPython.genutils timing timings
# will produce internally the statement
# from IPython.genutils import timing, timings
# timing() and timings() are two IPython utilities for timing the execution of
# your own functions, which you may find useful. Just commment out the above
# line if you want to test them.
# If you have more than one modules_some line, each gets its own try/except
# block (like modules, see above).
import_some
#---------------------------------------------------------------------------
# Section: modules to import all from : 'from ... import *'
# List (same syntax as import_mod above) those modules for which you want to
# import all functions. Remember, this is a potentially dangerous thing to do,
# since it is very easy to overwrite names of things you need. Use with
# caution.
# Example:
# import_all sys os
# will produce internally the statements
# from sys import *
# from os import *
# As before, each will be called in a separate try/except block.
import_all
#---------------------------------------------------------------------------
# Section: Python code to execute.
# Put here code to be explicitly executed (keep it simple!)
# Put one line of python code per line. All whitespace is removed (this is a
# feature, not a bug), so don't get fancy building loops here.
# This is just for quick convenient creation of things you want available.
# Example:
# execute x = 1
# execute print 'hello world'; y = z = 'a'
# will produce internally
# x = 1
# print 'hello world'; y = z = 'a'
# and each *line* (not each statement, we don't do python syntax parsing) is
# executed in its own try/except block.
execute
# Note for the adventurous: you can use this to define your own names for the
# magic functions, by playing some namespace tricks:
# execute __IPYTHON__.magic_pf = __IPYTHON__.magic_profile
# defines %pf as a new name for %profile.
#---------------------------------------------------------------------------
# Section: Pyhton files to load and execute.
# Put here the full names of files you want executed with execfile(file). If
# you want complicated initialization, just write whatever you want in a
# regular python file and load it from here.
# Filenames defined here (which *must* include the extension) are searched for
# through all of sys.path. Since IPython adds your .ipython directory to
# sys.path, they can also be placed in your .ipython dir and will be
# found. Otherwise (if you want to execute things not in .ipyton nor in
# sys.path) give a full path (you can use ~, it gets expanded)
# Example:
# execfile file1.py ~/file2.py
# will generate
# execfile('file1.py')
# execfile('_path_to_your_home/file2.py')
# As before, each file gets its own try/except block.
execfile
# If you are feeling adventurous, you can even add functionality to IPython
# through here. IPython works through a global variable called __ip which
# exists at the time when these files are read. If you know what you are doing
# (read the source) you can add functions to __ip in files loaded here.
# The file example-magic.py contains a simple but correct example. Try it:
# execfile example-magic.py
# Look at the examples in IPython/iplib.py for more details on how these magic
# functions need to process their arguments.
#---------------------------------------------------------------------------
# Section: aliases for system shell commands
# Here you can define your own names for system commands. The syntax is
# similar to that of the builtin %alias function:
# alias alias_name command_string
# The resulting aliases are auto-generated magic functions (hence usable as
# %alias_name)
# For example:
# alias myls ls -la
# will define 'myls' as an alias for executing the system command 'ls -la'.
# This allows you to customize IPython's environment to have the same aliases
# you are accustomed to from your own shell.
# You can also define aliases with parameters using %s specifiers (one per
# parameter):
# alias parts echo first %s second %s
# will give you in IPython:
# >>> %parts A B
# first A second B
# Use one 'alias' statement per alias you wish to define.
# alias
#************************* end of file <ipythonrc> ************************