##// END OF EJS Templates
Added diagnostics printout at the end of the test suite....
Added diagnostics printout at the end of the test suite. This will make it easier for us to understand problem reports from users.

File last commit:

r2267:928c921b
r2496:f440a2cd
Show More
envpersist.py
92 lines | 2.5 KiB | text/x-python | PythonLexer
# -*- coding: utf-8 -*-
""" %env magic command for storing environment variables persistently
"""
from IPython.core import ipapi
from IPython.core.error import TryNext
ip = ipapi.get()
import os,sys
def restore_env(self):
ip = self.getapi()
env = ip.db.get('stored_env', {'set' : {}, 'add' : [], 'pre' : []})
for k,v in env['set'].items():
os.environ[k] = v
for k,v in env['add']:
os.environ[k] = os.environ.get(k,"") + v
for k,v in env['pre']:
os.environ[k] = v + os.environ.get(k,"")
raise TryNext
ip.set_hook('late_startup_hook', restore_env)
def persist_env(self, parameter_s=''):
""" Store environment variables persistently
IPython remembers the values across sessions, which is handy to avoid
editing startup files.
%env - Show all environment variables
%env VISUAL=jed - set VISUAL to jed
%env PATH+=;/foo - append ;foo to PATH
%env PATH+=;/bar - also append ;bar to PATH
%env PATH-=/wbin; - prepend /wbin; to PATH
%env -d VISUAL - forget VISUAL persistent val
%env -p - print all persistent env modifications
"""
if not parameter_s.strip():
return os.environ.data
ip = self.getapi()
db = ip.db
env = ip.db.get('stored_env', {'set' : {}, 'add' : [], 'pre' : []})
if parameter_s.startswith('-p'):
return env
elif parameter_s.startswith('-d'):
parts = (parameter_s.split()[1], '<del>')
else:
parts = parameter_s.strip().split('=')
if len(parts) == 2:
k,v = [p.strip() for p in parts]
if v == '<del>':
if k in env['set']:
del env['set'][k]
env['add'] = [el for el in env['add'] if el[0] != k]
env['pre'] = [el for el in env['pre'] if el[0] != k]
print "Forgot '%s' (for next session)" % k
elif k.endswith('+'):
k = k[:-1]
env['add'].append((k,v))
os.environ[k] += v
print k,"after append =",os.environ[k]
elif k.endswith('-'):
k = k[:-1]
env['pre'].append((k,v))
os.environ[k] = v + os.environ.get(k,"")
print k,"after prepend =",os.environ[k]
else:
env['set'][k] = v
print "Setting",k,"to",v
os.environ[k] = v
db['stored_env'] = env
def env_completer(self,event):
""" Custom completer that lists all env vars """
return os.environ.keys()
ip.define_magic('env', persist_env)
ip.set_hook('complete_command',env_completer, str_key = '%env')