1 # This is startup file for interactive python.
2 # It is not automatically loaded by python interpreter.
3 # To instruct the interpreter to load it insert the following commands
4 # into your .profile (use whatever syntax and initialization file
5 # is appropriate for your shell):
7 # PYTHONSTARTUP=$HOME/init.py # or where you really put it
18 pyreadlinew32_startup = os.path.join(
19 sys.prefix, 'lib', 'site-packages',
20 'pyreadline', 'configuration', 'startup.py')
22 if os.path.exists(pyreadlinew32_startup):
23 execfile(pyreadlinew32_startup)
27 # https://mail.python.org/pipermail/python-list/2001-March/062888.html
30 import rlcompleter # noqa: need for completion
32 initfile = os.environ.get('INPUTRC') \
33 or os.path.expanduser('~/.inputrc')
34 readline.read_init_file(initfile)
36 histfile = os.path.expanduser('~/.python-history')
38 readline.read_history_file(histfile)
43 histfilesize = os.environ.get('HISTFILESIZE') \
44 or os.environ.get('HISTSIZE')
47 histfilesize = int(histfilesize)
51 readline.set_history_length(histfilesize)
52 readline.write_history_file(histfile)
55 atexit.register(savehist)
57 except (ImportError, AttributeError):
58 # no readline or atexit, or readline doesn't have
59 # {read,write}_history_file - ignore the error
64 term = os.environ.get('TERM', '')
68 background = os.environ.get('BACKGROUND', 'light').lower()
70 # From Randall Hopper:
71 # https://mail.python.org/pipermail/python-list/2001-March/112696.html
73 for _term in ['linux', 'rxvt', 'screen', 'term', 'vt100']:
77 if background == 'dark':
78 ps1_color = '3' # yellow
79 stdout_color = '7' # bold white
81 ps1_color = '4' # blue
82 stdout_color = '0' # bold black
84 sys.ps1 = '\001\033[3%sm\002>>>\001\033[0m\002 ' % ps1_color
85 sys.ps2 = '\001\033[1;32m\002...\001\033[0m\002 ' # bold green
90 def __init__(self, fp, begin,
91 end='\033[0m'): # reset all attributes
97 self.__fp.write(self.__begin+s+self.__end)
99 def writelines(self, lines):
100 map(self.write, lines)
102 def __getattr__(self, attr):
103 return getattr(self.__fp, attr)
105 sys.stdout = ColoredFile(sys.stdout, '\033[1;3%sm' % stdout_color)
106 sys.stderr = ColoredFile(sys.stderr, '\033[31m') # red
113 pass # locale was not compiled
116 locale.setlocale(locale.LC_ALL, '')
117 except (ImportError, locale.Error):
118 pass # no locale support or unsupported locale
122 from pprint import pprint
123 pager = os.environ.get("PAGER") or 'more'
126 def write(self, value):
127 self.stdin.write(value)
129 def pprint(self, value):
130 pprint(value, stream=self.stdin)
136 from subprocess import Popen, PIPE
138 class Pager(BasePager):
140 self.pipe = Popen(pager, shell=True, stdin=PIPE)
141 self.stdin = self.pipe.stdin
144 BasePager.close(self)
147 class Pager(BasePager):
149 self.stdin = os.popen(pager, 'w')
151 def displayhook(value):
152 if value is not None:
153 __builtin__._ = value
158 sys.displayhook = displayhook
160 from traceback import format_exception
162 def excepthook(etype, evalue, etraceback):
163 lines = format_exception(etype, evalue, etraceback)
167 '\033[31m' + line.rstrip('\n') + '\033[0m\n') # red, reset
170 sys.excepthook = excepthook
172 # From Thomas Heller:
173 # https://mail.python.org/pipermail/python-list/2001-April/099020.html
179 # sys.excepthook = info
183 # From: Paul Magwene:
184 # https://mail.python.org/pipermail/python-list/2001-March/086191.html
185 # With a lot of my fixes:
188 def __getitem__(self, key):
189 s = os.listdir(os.curdir)
192 def __getslice__(self, i, j):
193 s = os.listdir(os.curdir)
197 return str(os.listdir(os.curdir))
199 def __call__(self, path=None):
201 path = os.path.expanduser(os.path.expandvars(path))
204 return os.listdir(path)
211 def __call__(self, path=None):
212 path = os.path.expanduser(os.path.expandvars(path or '~'))
215 __builtin__.ls = DirLister()
216 __builtin__.cd = DirChanger()
218 # print working directory
227 __builtin__.pwd = Pwd()
229 # exit REPL with 'exit', 'quit' or simple 'x'
235 def __call__(self, msg=None):
238 __builtin__.x = _Exit()
240 # In Python 2.5+ exit and quit are objects
241 if isinstance(__builtin__.exit, str):
242 __builtin__.exit = __builtin__.quit = x # noqa: x is defined as _Exit
244 # print conten of a file
248 return "Usage: cat('filename')"
250 def __call__(self, filename):
251 fp = open(filename, 'rU')
256 __builtin__.cat = _Cat()
262 os.system(os.environ["SHELL"])
265 def __call__(self, cmdline):
268 __builtin__.sh = _Sh()
274 return "Usage: pager('filename')"
276 def __call__(self, filename):
277 os.system("%s '%s'" % (pager, filename.replace("'", '"\'"')))
279 __builtin__.pager = _Pager()
285 return "Usage: edit('filename')"
287 def __call__(self, filename):
288 editor = os.environ.get("VISUAL") \
289 or os.environ.get("EDITOR") or 'vi'
290 os.system("%s '%s'" % (editor, filename.replace("'", '"\'"')))
292 __builtin__.edit = __builtin__.editor = _Editor()