##// END OF EJS Templates
Merge.
Gael Varoquaux -
r1627:930c84ae merge
parent child Browse files
Show More
@@ -0,0 +1,22 b''
1 # If you want ipython to appear in a linux app launcher ("start menu"), install this by doing:
2 # sudo desktop-file-install ipython-sh.desktop
3
4 [Desktop Entry]
5 Comment=Perform shell-like tasks in interactive ipython session
6 Exec=ipython -p sh
7 GenericName[en_US]=IPython shell mode
8 GenericName=IPython shell mode
9 Icon=gnome-netstatus-idle
10 MimeType=
11 Name[en_US]=ipython-sh
12 Name=ipython-sh
13 Path=
14 Categories=Development;Utility;
15 StartupNotify=false
16 Terminal=true
17 TerminalOptions=
18 Type=Application
19 X-DBUS-ServiceName=
20 X-DBUS-StartupType=none
21 X-KDE-SubstituteUID=false
22 X-KDE-Username=
@@ -0,0 +1,22 b''
1 # If you want ipython to appear in a linux app launcher ("start menu"), install this by doing:
2 # sudo desktop-file-install ipython.desktop
3
4 [Desktop Entry]
5 Comment=Enhanced interactive Python shell
6 Exec=ipython
7 GenericName[en_US]=IPython
8 GenericName=IPython
9 Icon=gnome-netstatus-idle
10 MimeType=
11 Name[en_US]=ipython
12 Name=ipython
13 Path=
14 Categories=Development;Utility;
15 StartupNotify=false
16 Terminal=true
17 TerminalOptions=
18 Type=Application
19 X-DBUS-ServiceName=
20 X-DBUS-StartupType=none
21 X-KDE-SubstituteUID=false
22 X-KDE-Username=
@@ -0,0 +1,11 b''
1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 """wxIPython -- An enhanced Interactive Python GUI fonrtend
4 This script starts the Wx graphical frontend.
5 This is experimental so far.
6 Currently it support only ipython0 instance. Will be upgraded to ipython1 one.
7 """
8
9 from IPython.gui.wx import wxIPython
10
11 wxIPython.main()
@@ -26,6 +26,7 b' def make_color_table(in_class):'
26 Helper function for building the *TermColors classes."""
26 Helper function for building the *TermColors classes."""
27
27
28 color_templates = (
28 color_templates = (
29 # Dark colors
29 ("Black" , "0;30"),
30 ("Black" , "0;30"),
30 ("Red" , "0;31"),
31 ("Red" , "0;31"),
31 ("Green" , "0;32"),
32 ("Green" , "0;32"),
@@ -34,6 +35,7 b' def make_color_table(in_class):'
34 ("Purple" , "0;35"),
35 ("Purple" , "0;35"),
35 ("Cyan" , "0;36"),
36 ("Cyan" , "0;36"),
36 ("LightGray" , "0;37"),
37 ("LightGray" , "0;37"),
38 # Light colors
37 ("DarkGray" , "1;30"),
39 ("DarkGray" , "1;30"),
38 ("LightRed" , "1;31"),
40 ("LightRed" , "1;31"),
39 ("LightGreen" , "1;32"),
41 ("LightGreen" , "1;32"),
@@ -41,7 +43,17 b' def make_color_table(in_class):'
41 ("LightBlue" , "1;34"),
43 ("LightBlue" , "1;34"),
42 ("LightPurple" , "1;35"),
44 ("LightPurple" , "1;35"),
43 ("LightCyan" , "1;36"),
45 ("LightCyan" , "1;36"),
44 ("White" , "1;37"), )
46 ("White" , "1;37"),
47 # Blinking colors. Probably should not be used in anything serious.
48 ("BlinkBlack" , "5;30"),
49 ("BlinkRed" , "5;31"),
50 ("BlinkGreen" , "5;32"),
51 ("BlinkYellow" , "5;33"),
52 ("BlinkBlue" , "5;34"),
53 ("BlinkPurple" , "5;35"),
54 ("BlinkCyan" , "5;36"),
55 ("BlinkLightGray", "5;37"),
56 )
45
57
46 for name,value in color_templates:
58 for name,value in color_templates:
47 setattr(in_class,name,in_class._base % value)
59 setattr(in_class,name,in_class._base % value)
@@ -23,9 +23,9 b" name = 'ipython'"
23 # bdist_deb does not accept underscores (a Debian convention).
23 # bdist_deb does not accept underscores (a Debian convention).
24
24
25 development = False # change this to False to do a release
25 development = False # change this to False to do a release
26 version_base = '0.9.beta3'
26 version_base = '0.9.rc1'
27 branch = 'ipython'
27 branch = 'ipython'
28 revision = '1106'
28 revision = '1124'
29
29
30 if development:
30 if development:
31 if branch == 'ipython':
31 if branch == 'ipython':
@@ -38,6 +38,8 b' ececute rad = pi/180.'
38 execute print '*** q is an alias for PhysicalQuantityInteractive'
38 execute print '*** q is an alias for PhysicalQuantityInteractive'
39 execute print '*** g = 9.8 m/s^2 has been defined'
39 execute print '*** g = 9.8 m/s^2 has been defined'
40 execute print '*** rad = pi/180 has been defined'
40 execute print '*** rad = pi/180 has been defined'
41 execute import ipy_constants as C
42 execute print '*** C is the physical constants module'
41
43
42 # Files to execute
44 # Files to execute
43 execfile
45 execfile
@@ -154,13 +154,18 b' class NonBlockingIPShell(object):'
154 self._term = IPython.genutils.IOTerm(cin=cin, cout=cout, cerr=cerr)
154 self._term = IPython.genutils.IOTerm(cin=cin, cout=cout, cerr=cerr)
155
155
156 excepthook = sys.excepthook
156 excepthook = sys.excepthook
157
157 #Hack to save sys.displayhook, because ipython seems to overwrite it...
158 self.sys_displayhook_ori = sys.displayhook
159
158 self._IP = IPython.Shell.make_IPython(
160 self._IP = IPython.Shell.make_IPython(
159 argv,user_ns=user_ns,
161 argv,user_ns=user_ns,
160 user_global_ns=user_global_ns,
162 user_global_ns=user_global_ns,
161 embedded=True,
163 embedded=True,
162 shell_class=IPython.Shell.InteractiveShell)
164 shell_class=IPython.Shell.InteractiveShell)
163
165
166 #we restore sys.displayhook
167 sys.displayhook = self.sys_displayhook_ori
168
164 #we replace IPython default encoding by wx locale encoding
169 #we replace IPython default encoding by wx locale encoding
165 loc = locale.getpreferredencoding()
170 loc = locale.getpreferredencoding()
166 if loc:
171 if loc:
@@ -195,8 +200,9 b' class NonBlockingIPShell(object):'
195
200
196 self._line_to_execute = line
201 self._line_to_execute = line
197 #we launch the ipython line execution in a thread to make it interruptible
202 #we launch the ipython line execution in a thread to make it interruptible
198 ce = _CodeExecutor(self, self._afterExecute)
203 #with include it in self namespace to be able to call ce.raise_exc(KeyboardInterrupt)
199 ce.start()
204 self.ce = _CodeExecutor(self, self._afterExecute)
205 self.ce.start()
200
206
201 #----------------------- IPython management section ----------------------
207 #----------------------- IPython management section ----------------------
202 def getDocText(self):
208 def getDocText(self):
@@ -30,6 +30,21 b' import wx.stc as stc'
30 import re
30 import re
31 from StringIO import StringIO
31 from StringIO import StringIO
32
32
33 import sys
34 import codecs
35 import locale
36 for enc in (locale.getpreferredencoding(),
37 sys.getfilesystemencoding(),
38 sys.getdefaultencoding()):
39 try:
40 codecs.lookup(enc)
41 ENCODING = enc
42 break
43 except LookupError:
44 pass
45 else:
46 ENCODING = 'utf-8'
47
33 from ipshell_nonblocking import NonBlockingIPShell
48 from ipshell_nonblocking import NonBlockingIPShell
34
49
35 class WxNonBlockingIPShell(NonBlockingIPShell):
50 class WxNonBlockingIPShell(NonBlockingIPShell):
@@ -604,7 +619,7 b' class IPShellWidget(wx.Panel):'
604 self.text_ctrl.write('\n')
619 self.text_ctrl.write('\n')
605 lines_to_execute = lines.replace('\t',' '*4)
620 lines_to_execute = lines.replace('\t',' '*4)
606 lines_to_execute = lines_to_execute.replace('\r','')
621 lines_to_execute = lines_to_execute.replace('\r','')
607 self.IP.doExecute(lines_to_execute.encode('cp1252'))
622 self.IP.doExecute(lines_to_execute.encode(ENCODING))
608 self.updateHistoryTracker(lines)
623 self.updateHistoryTracker(lines)
609 self.setCurrentState('WAIT_END_OF_EXECUTION')
624 self.setCurrentState('WAIT_END_OF_EXECUTION')
610
625
@@ -2,7 +2,7 b''
2 # -*- coding: iso-8859-15 -*-
2 # -*- coding: iso-8859-15 -*-
3
3
4 import wx.aui
4 import wx.aui
5
5 import sys
6 #used for about dialog
6 #used for about dialog
7 from wx.lib.wordwrap import wordwrap
7 from wx.lib.wordwrap import wordwrap
8
8
@@ -10,6 +10,9 b' from wx.lib.wordwrap import wordwrap'
10 from IPython.gui.wx.ipython_view import IPShellWidget
10 from IPython.gui.wx.ipython_view import IPShellWidget
11 from IPython.gui.wx.ipython_history import IPythonHistoryPanel
11 from IPython.gui.wx.ipython_history import IPythonHistoryPanel
12
12
13 #used to create options.conf file in user directory
14 from IPython.ipapi import get
15
13 __version__ = 0.8
16 __version__ = 0.8
14 __author__ = "Laurent Dufrechou"
17 __author__ = "Laurent Dufrechou"
15 __email__ = "laurent.dufrechou _at_ gmail.com"
18 __email__ = "laurent.dufrechou _at_ gmail.com"
@@ -84,7 +87,9 b' class MyFrame(wx.Frame):'
84 dlg.Destroy()
87 dlg.Destroy()
85
88
86 def optionSave(self, name, value):
89 def optionSave(self, name, value):
87 opt = open('options.conf','w')
90 ip = get()
91 path = ip.IP.rc.ipythondir
92 opt = open(path + '/options.conf','w')
88
93
89 try:
94 try:
90 options_ipython_panel = self.ipython_panel.getOptions()
95 options_ipython_panel = self.ipython_panel.getOptions()
@@ -98,24 +103,31 b' class MyFrame(wx.Frame):'
98 opt.close()
103 opt.close()
99
104
100 def optionLoad(self):
105 def optionLoad(self):
101 opt = open('options.conf','r')
106 try:
102 lines = opt.readlines()
107 ip = get()
103 opt.close()
108 path = ip.IP.rc.ipythondir
109 opt = open(path + '/options.conf','r')
110 lines = opt.readlines()
111 opt.close()
104
112
105 options_ipython_panel = self.ipython_panel.getOptions()
113 options_ipython_panel = self.ipython_panel.getOptions()
106 options_history_panel = self.history_panel.getOptions()
114 options_history_panel = self.history_panel.getOptions()
107
115
108 for line in lines:
116 for line in lines:
109 key = line.split('=')[0]
117 key = line.split('=')[0]
110 value = line.split('=')[1].replace('\n','').replace('\r','')
118 value = line.split('=')[1].replace('\n','').replace('\r','')
111 if key in options_ipython_panel.keys():
119 if key in options_ipython_panel.keys():
112 options_ipython_panel[key]['value'] = value
120 options_ipython_panel[key]['value'] = value
113 elif key in options_history_panel.keys():
121 elif key in options_history_panel.keys():
114 options_history_panel[key]['value'] = value
122 options_history_panel[key]['value'] = value
115 else:
123 else:
116 print >>sys.__stdout__,"Warning: key ",key,"not found in widget options. Check Options.conf"
124 print >>sys.__stdout__,"Warning: key ",key,"not found in widget options. Check Options.conf"
117 self.ipython_panel.reloadOptions(options_ipython_panel)
125 self.ipython_panel.reloadOptions(options_ipython_panel)
118 self.history_panel.reloadOptions(options_history_panel)
126 self.history_panel.reloadOptions(options_history_panel)
127
128 except IOError:
129 print >>sys.__stdout__,"Could not open Options.conf, defaulting to default values."
130
119
131
120 def createMenu(self):
132 def createMenu(self):
121 """local method used to create one menu bar"""
133 """local method used to create one menu bar"""
@@ -30,3 +30,4 b' global-exclude *.pyc'
30 global-exclude .dircopy.log
30 global-exclude .dircopy.log
31 global-exclude .svn
31 global-exclude .svn
32 global-exclude .bzr
32 global-exclude .bzr
33 global-exclude .hgignore
@@ -28,17 +28,16 b' help:'
28 @echo "dist all, and then puts the results in dist/"
28 @echo "dist all, and then puts the results in dist/"
29
29
30 clean:
30 clean:
31 -rm -rf build/*
31 -rm -rf build/* dist/*
32
32
33 pdf: latex
33 pdf: latex
34 cd build/latex && make all-pdf
34 cd build/latex && make all-pdf
35
35
36 all: html pdf
36 all: html pdf
37
37
38 dist: all
38 dist: clean all
39 mkdir -p dist
39 mkdir -p dist
40 -rm -rf dist/*
40 ln build/latex/ipython.pdf dist/
41 ln build/latex/IPython.pdf dist/
42 cp -al build/html dist/
41 cp -al build/html dist/
43 @echo "Build finished. Final docs are in dist/"
42 @echo "Build finished. Final docs are in dist/"
44
43
@@ -27,6 +27,11 b' Release 0.9'
27 New features
27 New features
28 ------------
28 ------------
29
29
30 * Laurent's WX application has been given a top-level script called ipython-wx,
31 and it has received numerous fixes. We expect this code to be
32 architecturally better integrated with Gael's WX 'ipython widget' over the
33 next few releases.
34
30 * The Editor synchronization work by Vivian De Smedt has been merged in. This
35 * The Editor synchronization work by Vivian De Smedt has been merged in. This
31 code adds a number of new editor hooks to synchronize with editors under
36 code adds a number of new editor hooks to synchronize with editors under
32 Windows.
37 Windows.
@@ -150,11 +150,11 b" latex_font_size = '11pt'"
150 # Grouping the document tree into LaTeX files. List of tuples
150 # Grouping the document tree into LaTeX files. List of tuples
151 # (source start file, target name, title, author, document class [howto/manual]).
151 # (source start file, target name, title, author, document class [howto/manual]).
152
152
153 latex_documents = [ ('index', 'IPython.tex', 'IPython Documentation',
153 latex_documents = [ ('index', 'ipython.tex', 'IPython Documentation',
154 ur"""Brian Granger, Fernando Pérez and Ville Vainio\\
154 ur"""Brian Granger, Fernando Pérez and Ville Vainio\\
155 \ \\
155 \ \\
156 With contributions from:\\
156 With contributions from:\\
157 Benjamin Ragan-Kelley.""",
157 Benjamin Ragan-Kelley and Barry Wark.""",
158 'manual'),
158 'manual'),
159 ]
159 ]
160
160
@@ -38,9 +38,9 b' def install():'
38 import readline
38 import readline
39 except ImportError:
39 except ImportError:
40 print ('To take full advantage of IPython, you need readline from:\n'
40 print ('To take full advantage of IPython, you need readline from:\n'
41 'http://sourceforge.net/projects/uncpythontools')
41 'https://launchpad.net/pyreadline')
42
42
43 ipybase = '"'+prefix+r'\scripts\ipython"'
43 ipybase = '"' + prefix + r'\scripts\ipython"'
44 # Create IPython entry ...
44 # Create IPython entry ...
45 if not os.path.isdir(ip_dir):
45 if not os.path.isdir(ip_dir):
46 os.mkdir(ip_dir)
46 os.mkdir(ip_dir)
@@ -53,18 +53,22 b' def install():'
53
53
54 f = ip_dir + r'\pysh.lnk'
54 f = ip_dir + r'\pysh.lnk'
55 a = ipybase+' -p sh'
55 a = ipybase+' -p sh'
56 mkshortcut(python,'IPython command prompt mode',f,a)
56 mkshortcut(python,'IPython (command prompt mode)',f,a)
57
58 f = ip_dir + r'\pylab.lnk'
59 a = ipybase+' -pylab'
60 mkshortcut(python,'IPython (PyLab mode)',f,a)
57
61
58 f = ip_dir + r'\scipy.lnk'
62 f = ip_dir + r'\scipy.lnk'
59 a = ipybase+' -pylab -p scipy'
63 a = ipybase+' -pylab -p scipy'
60 mkshortcut(python,'IPython scipy profile',f,a)
64 mkshortcut(python,'IPython (scipy profile)',f,a)
61
65
62 # Create documentation shortcuts ...
66 # Create documentation shortcuts ...
63 t = prefix + r'\share\doc\ipython\manual\ipython.pdf'
67 t = prefix + r'\share\doc\ipython\manual\ipython.pdf'
64 f = ip_dir + r'\Manual in PDF.lnk'
68 f = ip_dir + r'\Manual in PDF.lnk'
65 mkshortcut(t,r'IPython Manual - PDF-Format',f)
69 mkshortcut(t,r'IPython Manual - PDF-Format',f)
66
70
67 t = prefix + r'\share\doc\ipython\manual\ipython.html'
71 t = prefix + r'\share\doc\ipython\manual\html\index.html'
68 f = ip_dir + r'\Manual in HTML.lnk'
72 f = ip_dir + r'\Manual in HTML.lnk'
69 mkshortcut(t,'IPython Manual - HTML-Format',f)
73 mkshortcut(t,'IPython Manual - HTML-Format',f)
70
74
@@ -88,28 +88,39 b" if len(sys.argv) >= 2 and sys.argv[1] in ('sdist','bdist_rpm'):"
88 "cd docs/man && gzip -9c pycolor.1 > pycolor.1.gz"),
88 "cd docs/man && gzip -9c pycolor.1 > pycolor.1.gz"),
89 ]
89 ]
90
90
91 # Only build the docs is sphinx is present
91 # Only build the docs if sphinx is present
92 try:
92 try:
93 import sphinx
93 import sphinx
94 except ImportError:
94 except ImportError:
95 pass
95 pass
96 else:
96 else:
97 pass
97 # The Makefile calls the do_sphinx scripts to build html and pdf, so
98 # BEG: This is disabled as I am not sure what to depend on.
98 # just one target is enough to cover all manual generation
99 # I actually don't think we should be automatically building
99
100 # the docs for people.
100 # First, compute all the dependencies that can force us to rebuild the
101 # The do_sphinx scripts builds html and pdf, so just one
101 # docs. Start with the main release file that contains metadata
102 # target is enough to cover all manual generation
102 docdeps = ['IPython/Release.py']
103 # to_update.append(
103 # Inculde all the reST sources
104 # ('docs/manual/ipython.pdf',
104 pjoin = os.path.join
105 # ['IPython/Release.py','docs/source/ipython.rst'],
105 for dirpath,dirnames,filenames in os.walk('docs/source'):
106 # "cd docs && python do_sphinx.py")
106 if dirpath in ['_static','_templates']:
107 # )
107 continue
108 docdeps += [ pjoin(dirpath,f) for f in filenames
109 if f.endswith('.txt') ]
110 # and the examples
111 for dirpath,dirnames,filenames in os.walk('docs/example'):
112 docdeps += [ pjoin(dirpath,f) for f in filenames
113 if not f.endswith('~') ]
114 # then, make them all dependencies for the main PDF (the html will get
115 # auto-generated as well).
116 to_update.append(
117 ('docs/dist/ipython.pdf',
118 docdeps,
119 "cd docs && make dist")
120 )
108
121
109 [ target_update(*t) for t in to_update ]
122 [ target_update(*t) for t in to_update ]
110
123
111 # Build the docs
112 os.system('cd docs && make dist')
113
124
114 #---------------------------------------------------------------------------
125 #---------------------------------------------------------------------------
115 # Find all the packages, package data, scripts and data_files
126 # Find all the packages, package data, scripts and data_files
@@ -224,6 +224,7 b' def find_scripts():'
224 'IPython/kernel/scripts/ipcluster',
224 'IPython/kernel/scripts/ipcluster',
225 'scripts/ipython',
225 'scripts/ipython',
226 'scripts/ipythonx',
226 'scripts/ipythonx',
227 'scripts/ipython-wx',
227 'scripts/pycolor',
228 'scripts/pycolor',
228 'scripts/irunner',
229 'scripts/irunner',
229 'scripts/iptest',
230 'scripts/iptest',
@@ -12,26 +12,6 b' echo "=================================="'
12
12
13 echo "Marking ChangeLog with release information and making NEWS file..."
13 echo "Marking ChangeLog with release information and making NEWS file..."
14
14
15 # Stamp changelog and save a copy of the status at each version, in case later
16 # we want the NEWS file to start from a point before the very last release (if
17 # very small interim releases have no significant changes).
18
19 cd $ipdir/doc
20 cp ChangeLog ChangeLog.old
21 cp ChangeLog ChangeLog.$version
22 daystamp=`date +%Y-%m-%d`
23 echo $daystamp " ***" Released version $version > ChangeLog
24 echo >> ChangeLog
25 cat ChangeLog.old >> ChangeLog
26 rm ChangeLog.old
27
28 # Build NEWS file
29 echo "Changes between the last two releases (major or minor)" > NEWS
30 echo "Note that this is an auto-generated diff of the ChangeLogs" >> NEWS
31 echo >> NEWS
32 diff ChangeLog.previous ChangeLog | grep -v '^0a' | sed 's/^> //g' >> NEWS
33 cp ChangeLog ChangeLog.previous
34
35 # Clean up build/dist directories
15 # Clean up build/dist directories
36 rm -rf $ipdir/build/*
16 rm -rf $ipdir/build/*
37 rm -rf $ipdir/dist/*
17 rm -rf $ipdir/dist/*
@@ -77,25 +57,4 b' echo "Uploading backup files..."'
77 cd $ipbackupdir
57 cd $ipbackupdir
78 scp `ls -1tr *tgz | tail -1` ipython@ipython.scipy.org:www/backup/
58 scp `ls -1tr *tgz | tail -1` ipython@ipython.scipy.org:www/backup/
79
59
80 echo "Updating webpage..."
81 cd $ipdir/doc
82 www=~/ipython/homepage
83 cp ChangeLog NEWS $www
84 rm -rf $www/doc/*
85 cp -r manual/ $www/doc
86 cd $www
87 ./update
88
89 # Alert package maintainers
90 #echo "Alerting package maintainers..."
91 #maintainers='fernando.perez@berkeley.edu ariciputi@users.sourceforge.net jack@xiph.org tretkowski@inittab.de dryice@hotpop.com willmaier@ml1.net'
92 # maintainers='fernando.perez@berkeley.edu'
93
94 # for email in $maintainers
95 # do
96 # echo "Emailing $email..."
97 # mail -s "[Package maintainer notice] A new IPython is out. Version: $version" \
98 # $email < NEWS
99 # done
100
101 echo "Done!"
60 echo "Done!"
@@ -72,7 +72,7 b' def run(wait=0):'
72 # File and directory names
72 # File and directory names
73 ip_dir = program_files_dir + r'\IPython'
73 ip_dir = program_files_dir + r'\IPython'
74 ip_prog_dir = programs_dir + r'\IPython'
74 ip_prog_dir = programs_dir + r'\IPython'
75 doc_dir = ip_dir+r'\doc'
75 doc_dir = ip_dir+r'\docs'
76 ip_filename = ip_dir+r'\IPython_shell.py'
76 ip_filename = ip_dir+r'\IPython_shell.py'
77 pycon_icon = doc_dir+r'\pycon.ico'
77 pycon_icon = doc_dir+r'\pycon.ico'
78
78
@@ -83,7 +83,7 b' def run(wait=0):'
83 shutil.copy(sys.prefix+r'\Scripts\ipython',ip_filename)
83 shutil.copy(sys.prefix+r'\Scripts\ipython',ip_filename)
84 if os.path.isdir(doc_dir):
84 if os.path.isdir(doc_dir):
85 shutil.rmtree(doc_dir)
85 shutil.rmtree(doc_dir)
86 shutil.copytree('doc',doc_dir)
86 shutil.copytree('docs',doc_dir)
87
87
88 # make shortcuts for IPython, html and pdf docs.
88 # make shortcuts for IPython, html and pdf docs.
89 print 'Making entries for IPython in Start Menu...',
89 print 'Making entries for IPython in Start Menu...',
@@ -104,8 +104,8 b' def run(wait=0):'
104 os.mkdir(ip_prog_dir)
104 os.mkdir(ip_prog_dir)
105 os.chdir(ip_prog_dir)
105 os.chdir(ip_prog_dir)
106
106
107 man_pdf = doc_dir + r'\manual\ipython.pdf'
107 man_pdf = doc_dir + r'\dist\ipython.pdf'
108 man_htm = doc_dir + r'\manual\ipython.html'
108 man_htm = doc_dir + r'\dist\index.html'
109
109
110 make_shortcut('IPython.lnk',sys.executable, '"%s"' % ip_filename,
110 make_shortcut('IPython.lnk',sys.executable, '"%s"' % ip_filename,
111 my_documents_dir,
111 my_documents_dir,
1 NO CONTENT: file was removed
NO CONTENT: file was removed
General Comments 0
You need to be logged in to leave comments. Login now