File: ipy_exportdb.py

package info (click to toggle)
ipython 0.13.1-2%2Bdeb7u1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 15,752 kB
  • sloc: python: 69,537; makefile: 355; lisp: 272; sh: 80; objc: 37
file content (77 lines) | stat: -rw-r--r-- 2,037 bytes parent folder | download
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
from IPython.core import ipapi
from IPython.core import macro
ip = ipapi.get()

import os,pprint

def export(filename = None):

    lines = ['import IPython.core.ipapi', 'ip = IPython.core.ipapi.get()','']

    vars = ip.db.keys('autorestore/*')
    vars.sort()
    varstomove = []
    get = ip.db.get
    
    macros = []
    variables = []
    
    for var in vars:
        k = os.path.basename(var)
        v = get(var)

        if k.startswith('_'):
            continue
        if isinstance(v, macro.Macro):
            macros.append((k,v))
        if type(v) in [int, str, float]:
            variables.append((k,v))
            
            

    if macros:
        lines.extend(['# === Macros ===' ,''])
    for k,v in macros:
        lines.append("ip.defmacro('%s'," % k)
        for line in v.value.splitlines():
            lines.append(' ' + repr(line+'\n'))
        lines.extend([')', ''])
        
    if variables:
        lines.extend(['','# === Variables ===',''])
        for k,v in variables:
            varstomove.append(k)
            lines.append('%s = %s' % (k,repr(v)))
                
        lines.append('ip.push("%s")' % (' '.join(varstomove)))
    
    bkms = ip.db.get('bookmarks',{})
    
    if bkms:
        lines.extend(['','# === Bookmarks ===',''])
        lines.append("ip.db['bookmarks'] = %s " % pprint.pformat(bkms, indent = 2) )
        
    aliases = ip.db.get('stored_aliases', {} )
    
    if aliases:
        lines.extend(['','# === Alias definitions ===',''])
        for k,v in aliases.items():
            try:
                lines.append("ip.define_alias('%s', %s)" % (k, repr(v[1])))
            except (AttributeError, TypeError):
                pass

    env = ip.db.get('stored_env')
    if env:
        lines.extend(['','# === Stored env vars ===',''])
        lines.append("ip.db['stored_env'] = %s " % pprint.pformat(env, indent = 2) )
        
    
    
    out = '\n'.join(lines)
    
    if filename:
        open(filename,'w').write(out)
    else:
        print out