Show More
@@ -0,0 +1,78 b'' | |||||
|
1 | # -*- coding: utf-8 -*- | |||
|
2 | """ | |||
|
3 | %store magic for lightweight persistence. | |||
|
4 | ||||
|
5 | Stores variables, aliases etc. in PickleShare database. | |||
|
6 | ||||
|
7 | $Id: iplib.py 1107 2006-01-30 19:02:20Z vivainio $ | |||
|
8 | """ | |||
|
9 | ||||
|
10 | import IPython.ipapi | |||
|
11 | ip = IPython.ipapi.get() | |||
|
12 | ||||
|
13 | import os,sys | |||
|
14 | ||||
|
15 | def restore_env(self): | |||
|
16 | ip = self.getapi() | |||
|
17 | env = ip.db.get('stored_env', {'set' : {}, 'add' : []}) | |||
|
18 | for k,v in env['set'].items(): | |||
|
19 | #print "restore alias",k,v # dbg | |||
|
20 | os.environ[k] = v | |||
|
21 | self.alias_table[k] = v | |||
|
22 | for k,v in env['add']: | |||
|
23 | os.environ[k] = os.environ.get(k,"") + v | |||
|
24 | ||||
|
25 | ||||
|
26 | ip.set_hook('late_startup_hook', restore_env) | |||
|
27 | ||||
|
28 | def persist_env(self, parameter_s=''): | |||
|
29 | """ Store environment variables persistently | |||
|
30 | ||||
|
31 | IPython remembers the values across sessions, which is handy to avoid | |||
|
32 | editing startup files. | |||
|
33 | ||||
|
34 | %env - Show all environment variables | |||
|
35 | %env VISUAL=jed - set VISUAL to jed | |||
|
36 | %env PATH+=;/foo - append ;foo to PATH | |||
|
37 | %env PATH+=;/foo - also append ;bar to PATH | |||
|
38 | %env VISUAL=del - forget VISUAL persistent val | |||
|
39 | ||||
|
40 | """ | |||
|
41 | ||||
|
42 | ||||
|
43 | ||||
|
44 | if not parameter_s.strip(): | |||
|
45 | return os.environ.data | |||
|
46 | ||||
|
47 | parts = parameter_s.strip().split('=') | |||
|
48 | ||||
|
49 | ip = self.getapi() | |||
|
50 | db = ip.db | |||
|
51 | env = ip.db.get('stored_env', {'set' : {}, 'add' : []}) | |||
|
52 | ||||
|
53 | if len(parts) == 2: | |||
|
54 | k,v = parts | |||
|
55 | ||||
|
56 | ||||
|
57 | if v == 'del': | |||
|
58 | if k in env['set']: | |||
|
59 | del env['set'][k] | |||
|
60 | env['add'] = [el for el in env['add'] if el[0] == k] | |||
|
61 | #del os.environ[k] | |||
|
62 | print "Forgot",k,"(for next session)" | |||
|
63 | ||||
|
64 | elif k.endswith('+'): | |||
|
65 | k = k[:-1] | |||
|
66 | env['add'].append((k,v)) | |||
|
67 | os.environ[k] += v | |||
|
68 | else: | |||
|
69 | env['set'][k] = v | |||
|
70 | print "Setting",k,"to",v | |||
|
71 | os.environ[k] = os.environ.get(k,"") + v | |||
|
72 | ||||
|
73 | db['stored_env'] = env | |||
|
74 | ||||
|
75 | ||||
|
76 | ||||
|
77 | ||||
|
78 | ip.expose_magic('env', persist_env) |
@@ -1,3 +1,9 b'' | |||||
|
1 | 2007-01-10 Ville Vainio <vivainio@gmail.com> | |||
|
2 | ||||
|
3 | * Extensions/envpersist.py: Turbocharged %env that remembers | |||
|
4 | env vars across sessions; e.g. "%env PATH+=;/opt/scripts" or | |||
|
5 | "%env VISUAL=jed". | |||
|
6 | ||||
1 | 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu> |
|
7 | 2007-01-05 Fernando Perez <Fernando.Perez@colorado.edu> | |
2 |
|
8 | |||
3 | * IPython/iplib.py (showtraceback): ensure that we correctly call |
|
9 | * IPython/iplib.py (showtraceback): ensure that we correctly call |
General Comments 0
You need to be logged in to leave comments.
Login now