Merge lp:~happyhouse19/ubuntu/oneiric/spyder/fix-for-890243 into lp:ubuntu/oneiric/spyder

Proposed by Matthew Goode
Status: Rejected
Rejected by: Martin Pitt
Proposed branch: lp:~happyhouse19/ubuntu/oneiric/spyder/fix-for-890243
Merge into: lp:ubuntu/oneiric/spyder
Diff against target: 37516 lines (+18302/-8042)
138 files modified
.pc/0001-fix-documentation-installation.patch/setup.py (+106/-0)
.pc/0001-fix-documentation-installation.patch/spyderlib/__init__.py (+48/-0)
.pc/0001-fix-documentation-installation.patch/spyderlib/config.py (+0/-506)
MANIFEST.in (+2/-2)
PKG-INFO (+13/-14)
README (+107/-72)
app_example/create_exe.py (+31/-0)
app_example/run_py2exe.bat (+0/-2)
app_example/setup.py (+0/-52)
bootstrap.py (+93/-0)
debian/changelog (+66/-0)
debian/control (+25/-11)
debian/copyright (+210/-8)
debian/patches/0001-fix-documentation-installation.patch (+33/-17)
debian/python-spyderlib.bug-control (+1/-0)
debian/python-spyderlib.docs (+1/-0)
debian/python-spyderlib.links (+0/-2)
debian/python-spyderlib.preinst (+11/-0)
debian/rules (+8/-7)
debian/spyder.bug-control (+1/-0)
debian/spyder.desktop (+0/-9)
debian/spyder.install (+1/-1)
debian/spyder.links (+1/-1)
debian/todo (+9/-0)
debian/watch (+2/-2)
doc/conf.py (+2/-2)
doc/debugging.rst (+31/-31)
doc/index.rst (+1/-1)
doc/installation.rst (+77/-34)
doc/options.rst (+3/-2)
doc/overview.rst (+3/-3)
scripts/spyder (+3/-0)
scripts/spyder.bat (+2/-0)
scripts/spyder.desktop (+11/-0)
setup.py (+106/-101)
spyder (+0/-3)
spyder.bat (+0/-2)
spyderlib/__init__.py (+20/-4)
spyderlib/baseconfig.py (+175/-0)
spyderlib/config.py (+133/-126)
spyderlib/images/options.svg (+23/-3)
spyderlib/images/spyder.svg (+22/-5)
spyderlib/images/spyder_light.svg (+18/-3)
spyderlib/interpreter.py (+10/-5)
spyderlib/locale/fr/LC_MESSAGES/spyderlib.po (+1682/-1169)
spyderlib/locale/spyderlib.pot (+3463/-0)
spyderlib/mpl_patch.py (+26/-7)
spyderlib/otherplugins.py (+59/-0)
spyderlib/pil_patch.py (+54/-0)
spyderlib/plugins/__init__.py (+27/-16)
spyderlib/plugins/configdialog.py (+75/-54)
spyderlib/plugins/console.py (+23/-15)
spyderlib/plugins/editor.py (+320/-287)
spyderlib/plugins/explorer.py (+22/-53)
spyderlib/plugins/externalconsole.py (+390/-129)
spyderlib/plugins/findinfiles.py (+11/-7)
spyderlib/plugins/history.py (+12/-8)
spyderlib/plugins/inspector.py (+22/-14)
spyderlib/plugins/ipython.py (+65/-0)
spyderlib/plugins/onlinehelp.py (+9/-4)
spyderlib/plugins/outlineexplorer.py (+109/-0)
spyderlib/plugins/projectexplorer.py (+18/-46)
spyderlib/plugins/runconfig.py (+66/-23)
spyderlib/plugins/shortcuts.py (+54/-35)
spyderlib/plugins/variableexplorer.py (+11/-18)
spyderlib/plugins/workingdirectory.py (+18/-16)
spyderlib/qt/QtCore.py (+7/-8)
spyderlib/qt/QtGui.py (+1/-1)
spyderlib/qt/QtWebKit.py (+1/-1)
spyderlib/qt/__init__.py (+32/-10)
spyderlib/qt/compat.py (+198/-0)
spyderlib/requirements.py (+8/-9)
spyderlib/rope_patch.py (+81/-8)
spyderlib/scientific_startup.py (+82/-0)
spyderlib/spyder.py (+552/-184)
spyderlib/userconfig.py (+21/-17)
spyderlib/utils/__init__.py (+1/-174)
spyderlib/utils/bsdsocket.py (+101/-0)
spyderlib/utils/classparser.py (+5/-0)
spyderlib/utils/codeanalysis.py (+136/-0)
spyderlib/utils/css/default.css (+1/-1)
spyderlib/utils/debug.py (+45/-0)
spyderlib/utils/dochelpers.py (+24/-6)
spyderlib/utils/environ.py (+2/-2)
spyderlib/utils/external/__init__.py (+17/-0)
spyderlib/utils/external/path.py (+979/-0)
spyderlib/utils/external/pickleshare.py (+357/-0)
spyderlib/utils/iofuncs.py (+21/-19)
spyderlib/utils/misc.py (+148/-0)
spyderlib/utils/module_completion.py (+193/-0)
spyderlib/utils/programs.py (+111/-57)
spyderlib/utils/qthelpers.py (+53/-28)
spyderlib/utils/scm.py (+79/-0)
spyderlib/utils/sourcecode.py (+12/-1)
spyderlib/utils/sphinxify.py (+33/-43)
spyderlib/utils/translations.py (+0/-51)
spyderlib/widgets/arrayeditor.py (+103/-64)
spyderlib/widgets/browser.py (+3/-5)
spyderlib/widgets/colors.py (+7/-7)
spyderlib/widgets/comboboxes.py (+15/-10)
spyderlib/widgets/dicteditor.py (+186/-275)
spyderlib/widgets/dicteditorutils.py (+239/-0)
spyderlib/widgets/editor.py (+468/-372)
spyderlib/widgets/editortools.py (+10/-57)
spyderlib/widgets/explorer.py (+767/-332)
spyderlib/widgets/externalshell/baseshell.py (+20/-14)
spyderlib/widgets/externalshell/introspection.py (+187/-0)
spyderlib/widgets/externalshell/monitor.py (+272/-352)
spyderlib/widgets/externalshell/namespacebrowser.py (+138/-110)
spyderlib/widgets/externalshell/pythonshell.py (+161/-117)
spyderlib/widgets/externalshell/sitecustomize.py (+356/-29)
spyderlib/widgets/externalshell/startup.py (+91/-175)
spyderlib/widgets/externalshell/systemshell.py (+15/-17)
spyderlib/widgets/findinfiles.py (+55/-40)
spyderlib/widgets/findreplace.py (+102/-39)
spyderlib/widgets/formlayout.py (+553/-553)
spyderlib/widgets/importwizard.py (+23/-13)
spyderlib/widgets/internalshell.py (+46/-31)
spyderlib/widgets/ipython.py (+44/-0)
spyderlib/widgets/objecteditor.py (+20/-12)
spyderlib/widgets/onecolumntree.py (+4/-1)
spyderlib/widgets/outlineexplorer.py (+117/-117)
spyderlib/widgets/pathmanager.py (+20/-13)
spyderlib/widgets/projectexplorer.py (+858/-1189)
spyderlib/widgets/pydocgui.py (+4/-7)
spyderlib/widgets/shell.py (+74/-48)
spyderlib/widgets/sourcecode/__init__.py (+1/-1)
spyderlib/widgets/sourcecode/base.py (+224/-47)
spyderlib/widgets/sourcecode/codeeditor.py (+764/-301)
spyderlib/widgets/sourcecode/syntaxhighlighters.py (+210/-65)
spyderlib/widgets/sourcecode/terminal.py (+8/-0)
spyderlib/widgets/tabs.py (+43/-13)
spyderlib/widgets/texteditor.py (+20/-5)
spyderplugins/io_hdf5.py (+83/-0)
spyderplugins/p_profiler.py (+142/-0)
spyderplugins/p_pylint.py (+46/-21)
spyderplugins/widgets/profilergui.py (+522/-0)
spyderplugins/widgets/pylintgui.py (+35/-38)
To merge this branch: bzr merge lp:~happyhouse19/ubuntu/oneiric/spyder/fix-for-890243
Reviewer Review Type Date Requested Status
Didier Roche-Tolomelli Approve
Review via email: mp+99579@code.launchpad.net

Description of the change

Added a line to the spyder.desktop file so that the icon will display in the Unity launcher. This fix was done in Oneiric, but also works in Precise.

To post a comment you must log in.
Revision history for this message
Didier Roche-Tolomelli (didrocks) wrote :

Hey Matthew.

Thanks for the patch! I have some notes though:
- you didn't target the right branch (you targeted the oneiric branch, not precise one)
- debian/changelog target "oneiric" and not "precise" :)
- also, you made an inline patch. We tend to avoid doing that and using a patch system (this one is using quilt). For more information please look at https://wiki.ubuntu.com/PackagingGuide.
- finally, this patch should definitively be sent to upstream (eventually debian). Can you please take care of that?

Anyway, I've fixed the 3 first bullet and sponsored to precise. Thanks! Marking the branch as merged.

review: Approve
Revision history for this message
Matthew Goode (happyhouse19) wrote :

Apologies for not quite doing it right. I was trying to follow https://wiki.ubuntu.com/Bugs/HowToFix, as I have not submitted a fix before, but thanks for tidying this up for me. I am happy to send this patch upstream. Is there a useful page showing me how to do this so I make sure I do it correct?

Unmerged revisions

12. By Matthew Goode

Added icon entry to spyder.desktop (LP: #890243)

11. By Picca Frederic-Emmanuel

* Imported Upstream version 2.1.8
* prepare for backport

10. By Picca Frederic-Emmanuel

Imported Upstream version 2.1.7

9. By Matthias Klose

Rebuild to drop python2.6 dependencies.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== added file '.pc/0001-fix-documentation-installation.patch/setup.py'
2--- .pc/0001-fix-documentation-installation.patch/setup.py 1970-01-01 00:00:00 +0000
3+++ .pc/0001-fix-documentation-installation.patch/setup.py 2012-03-27 18:05:23 +0000
4@@ -0,0 +1,106 @@
5+# -*- coding: utf-8 -*-
6+#
7+# Copyright © 2009-2010 Pierre Raybaut
8+# Licensed under the terms of the MIT License
9+# (see spyderlib/__init__.py for details)
10+
11+"""
12+Spyder
13+======
14+
15+The Scientific PYthon Development EnviRonment
16+"""
17+
18+from distutils.core import setup
19+from distutils.command.build import build
20+from sphinx import setup_command
21+import os
22+import os.path as osp
23+import sys
24+
25+
26+def get_package_data(name, extlist):
27+ """Return data files for package *name* with extensions in *extlist*"""
28+ flist = []
29+ # Workaround to replace os.path.relpath (not available until Python 2.6):
30+ offset = len(name)+len(os.pathsep)
31+ for dirpath, _dirnames, filenames in os.walk(name):
32+ for fname in filenames:
33+ if not fname.startswith('.') and osp.splitext(fname)[1] in extlist:
34+ flist.append(osp.join(dirpath, fname)[offset:])
35+ return flist
36+
37+
38+def get_subpackages(name):
39+ """Return subpackages of package *name*"""
40+ splist = []
41+ for dirpath, _dirnames, _filenames in os.walk(name):
42+ if osp.isfile(osp.join(dirpath, '__init__.py')):
43+ splist.append(".".join(dirpath.split(os.sep)))
44+ return splist
45+
46+
47+# Sphinx build (documentation)
48+class MyBuild(build):
49+ def has_doc(self):
50+ setup_dir = os.path.dirname(os.path.abspath(__file__))
51+ return os.path.isdir(os.path.join(setup_dir, 'doc'))
52+ sub_commands = build.sub_commands + [('build_doc', has_doc)]
53+
54+
55+class MyBuildDoc(setup_command.BuildDoc):
56+ def run(self):
57+ build = self.get_finalized_command('build')
58+ sys.path.insert(0, os.path.abspath(build.build_lib))
59+ dirname = self.distribution.get_command_obj('build').build_purelib
60+ self.builder_target_dir = osp.join(dirname, 'spyderlib', 'doc')
61+ try:
62+ setup_command.BuildDoc.run(self)
63+ except UnicodeDecodeError:
64+ print >>sys.stderr, "ERROR: unable to build documentation because Sphinx do not handle source path with non-ASCII characters. Please try to move the source package to another location (path with *only* ASCII characters)."
65+ sys.path.pop(0)
66+
67+
68+cmdclass = {'build': MyBuild, 'build_doc': MyBuildDoc}
69+
70+
71+NAME = 'spyder'
72+LIBNAME = 'spyderlib'
73+from spyderlib import __version__, __project_url__
74+
75+setup(name=NAME,
76+ version=__version__,
77+ description='Scientific PYthon Development EnviRonment',
78+ long_description="""The spyderlib library provides powerful console and
79+editor related widgets to your Qt application (PyQt4 or PySide). It also
80+includes a Scientific Python development environment named 'Spyder', an
81+alternative to IDLE with powerful interactive features such as variable
82+explorer (with GUI-based editors for dictionaries, lists, NumPy arrays, etc.),
83+object inspector, online help, and a lot more.""",
84+ download_url='%s/files/%s-%s.zip' % (__project_url__, NAME, __version__),
85+ author="Pierre Raybaut",
86+ url=__project_url__,
87+ license='MIT',
88+ keywords='PyQt4 PySide editor shell console widgets IDE',
89+ platforms=['any'],
90+ packages=get_subpackages(LIBNAME)+get_subpackages('spyderplugins'),
91+ package_data={LIBNAME:
92+ get_package_data(LIBNAME, ('.mo', '.svg', '.png', '.css')),
93+ 'spyderplugins':
94+ get_package_data('spyderplugins', ('.mo', '.svg', '.png'))},
95+ requires=["rope (>=0.9.2)", "sphinx (>=0.6.0)", "PyQt4 (>=4.4)"],
96+ scripts=[osp.join('scripts', fname) for fname in
97+ (['spyder', 'spyder.bat'] if os.name == 'nt' else ['spyder'])],
98+ classifiers=['License :: OSI Approved :: MIT License',
99+ 'Operating System :: MacOS',
100+ 'Operating System :: Microsoft :: Windows',
101+ 'Operating System :: OS Independent',
102+ 'Operating System :: POSIX',
103+ 'Operating System :: Unix',
104+ 'Programming Language :: Python :: 2.5',
105+ 'Programming Language :: Python :: 2.6',
106+ 'Programming Language :: Python :: 2.7',
107+ 'Development Status :: 5 - Production/Stable',
108+ 'Topic :: Scientific/Engineering',
109+ 'Topic :: Software Development :: Widget Sets'],
110+ cmdclass=cmdclass)
111
112=== added file '.pc/0001-fix-documentation-installation.patch/spyderlib/__init__.py'
113--- .pc/0001-fix-documentation-installation.patch/spyderlib/__init__.py 1970-01-01 00:00:00 +0000
114+++ .pc/0001-fix-documentation-installation.patch/spyderlib/__init__.py 2012-03-27 18:05:23 +0000
115@@ -0,0 +1,48 @@
116+# -*- coding: utf-8 -*-
117+"""
118+Spyder License Agreement (MIT License)
119+--------------------------------------
120+
121+Copyright (c) 2009-2011 Pierre Raybaut
122+
123+Permission is hereby granted, free of charge, to any person
124+obtaining a copy of this software and associated documentation
125+files (the "Software"), to deal in the Software without
126+restriction, including without limitation the rights to use,
127+copy, modify, merge, publish, distribute, sublicense, and/or sell
128+copies of the Software, and to permit persons to whom the
129+Software is furnished to do so, subject to the following
130+conditions:
131+
132+The above copyright notice and this permission notice shall be
133+included in all copies or substantial portions of the Software.
134+
135+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
136+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
137+OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
138+NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
139+HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
140+WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
141+FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
142+OTHER DEALINGS IN THE SOFTWARE.
143+"""
144+
145+__version__ = '2.1.8'
146+__license__ = __doc__
147+__project_url__ = 'http://code.google.com/p/spyderlib'
148+__forum_url__ = 'http://groups.google.com/group/spyderlib'
149+
150+# Dear (Debian, RPM, ...) package makers, please feel free to customize the
151+# following path to module's data (images) and translations:
152+DATAPATH = LOCALEPATH = DOCPATH = ''
153+
154+def add_to_distribution(dist):
155+ """Add package to py2exe/cx_Freeze distribution object
156+ Extension to guidata.disthelpers"""
157+ dist.add_modules('PyQt4')
158+ for _modname in ('spyderlib', 'spyderplugins'):
159+ dist.add_module_data_files(_modname, ("", ),
160+ ('.png', '.svg', '.html', '.png', '.txt',
161+ '.js', '.inv', '.ico', '.css', '.doctree',
162+ '.qm', '.py',),
163+ copy_to_root=False)
164
165=== removed file '.pc/0001-fix-documentation-installation.patch/spyderlib/config.py'
166--- .pc/0001-fix-documentation-installation.patch/spyderlib/config.py 2011-04-29 21:19:10 +0000
167+++ .pc/0001-fix-documentation-installation.patch/spyderlib/config.py 1970-01-01 00:00:00 +0000
168@@ -1,506 +0,0 @@
169-# -*- coding: utf-8 -*-
170-#
171-# Copyright © 2009-2010 Pierre Raybaut
172-# Licensed under the terms of the MIT License
173-# (see spyderlib/__init__.py for details)
174-
175-"""
176-Spyder configuration management
177-
178-Important note regarding shortcuts:
179- For compatibility with QWERTZ keyboards, one must avoid using the following
180- shortcuts:
181- Ctrl + Alt + Q, W, F, G, Y, X, C, V, B, N
182-"""
183-
184-import os, sys, os.path as osp
185-from datetime import date
186-from PyQt4.QtGui import QLabel, QIcon, QPixmap, QFont, QFontDatabase
187-
188-# Local import
189-from userconfig import UserConfig, get_home_dir, NoDefault
190-
191-DATA_DEV_PATH = osp.dirname(__file__)
192-if not osp.isdir(DATA_DEV_PATH):
193- # Assuming py2exe distribution
194- DATA_DEV_PATH = osp.join(sys.prefix, "spyderlib")
195-DOC_DEV_PATH = osp.join(DATA_DEV_PATH, 'doc')
196-
197-# The two following lines are patched when making the debian package:
198-DATA_PATH = DATA_DEV_PATH # @@@DATA_PATH@@@
199-DOC_PATH = DOC_DEV_PATH # @@@DOC_PATH@@@
200-
201-EDITABLE_TYPES = [int, long, float, list, dict, tuple, str, unicode, date]
202-try:
203- from numpy import ndarray, matrix
204- EDITABLE_TYPES += [ndarray, matrix]
205-except ImportError:
206- pass
207-PICKLABLE_TYPES = EDITABLE_TYPES[:]
208-try:
209- from PIL.Image import Image
210- EDITABLE_TYPES.append(Image)
211-except ImportError:
212- pass
213-
214-# Max number of filter iterations for worskpace display:
215-# (for workspace saving, itermax == -1, see Workspace.save)
216-ITERMAX = -1 #XXX: To be adjusted if it takes too much to compute... 2, 3?
217-
218-EXCLUDED = ['nan', 'inf', 'infty', 'little_endian', 'colorbar_doc', 'typecodes',
219- '__builtins__', '__main__', '__doc__']
220-
221-def type2str(types):
222- """Convert types to strings"""
223- return [typ.__name__ for typ in types]
224-
225-def str2type(strings):
226- """Convert strings to types"""
227- return tuple( [eval(string) for string in strings] )
228-
229-SANS_SERIF = ['Sans Serif', 'DejaVu Sans', 'Bitstream Vera Sans',
230- 'Bitstream Charter', 'Lucida Grande', 'Verdana', 'Geneva',
231- 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']
232-SANS_SERIF.insert(0, unicode(QFont().family()))
233-
234-MONOSPACE = ['Monospace', 'DejaVu Sans Mono', 'Consolas', 'Courier New',
235- 'Bitstream Vera Sans Mono', 'Andale Mono', 'Liberation Mono',
236- 'Monaco', 'Courier', 'monospace', 'Fixed', 'Terminal']
237-MEDIUM = 10
238-SMALL = 9
239-
240-DEFAULTS = [
241- ('main',
242- {
243- 'translation': True,
244- 'vertical_dockwidget_titlebars': False,
245- 'vertical_tabs': False,
246- 'animated_docks': True,
247- 'window/size': (1260, 740),
248- 'window/position': (10, 10),
249- 'window/is_maximized': False,
250- 'window/is_fullscreen': False,
251- 'lightwindow/size': (650, 400),
252- 'lightwindow/position': (30, 30),
253- 'lightwindow/is_maximized': False,
254- 'lightwindow/is_fullscreen': False,
255- }),
256- ('editor_appearance',
257- {
258- 'cursor/width': 2,
259- 'calltips/font/family': MONOSPACE,
260- 'calltips/font/size': SMALL,
261- 'calltips/font/italic': False,
262- 'calltips/font/bold': False,
263- 'calltips/size': 600,
264- 'completion/font/family': MONOSPACE,
265- 'completion/font/size': SMALL,
266- 'completion/font/italic': False,
267- 'completion/font/bold': False,
268- 'completion/size': (300, 180),
269- }),
270- ('shell_appearance',
271- {
272- 'cursor/width': 2,
273- 'calltips/font/family': MONOSPACE,
274- 'calltips/font/size': SMALL,
275- 'calltips/font/italic': False,
276- 'calltips/font/bold': False,
277- 'calltips/size': 600,
278- 'completion/font/family': MONOSPACE,
279- 'completion/font/size': SMALL,
280- 'completion/font/italic': False,
281- 'completion/font/bold': False,
282- 'completion/size': (300, 180),
283- }),
284- ('internal_console',
285- {
286- 'max_line_count': 300,
287- 'working_dir_history': 30,
288- 'working_dir_adjusttocontents': False,
289- 'font/family': MONOSPACE,
290- 'font/size': MEDIUM,
291- 'font/italic': False,
292- 'font/bold': False,
293- 'wrap': True,
294- 'calltips': True,
295- 'codecompletion/auto': False,
296- 'codecompletion/enter_key': True,
297- 'codecompletion/case_sensitive': True,
298- 'codecompletion/show_single': False,
299- 'external_editor/path': 'SciTE',
300- 'external_editor/gotoline': '-goto:',
301- 'light_background': True,
302- }),
303- ('console',
304- {
305- 'shortcut': "Ctrl+Shift+C",
306- 'max_line_count': 10000,
307- 'font/family': MONOSPACE,
308- 'font/size': MEDIUM,
309- 'font/italic': False,
310- 'font/bold': False,
311- 'wrap': True,
312- 'single_tab': True,
313- 'calltips': True,
314- 'object_inspector': True,
315- 'codecompletion/auto': True,
316- 'codecompletion/enter_key': True,
317- 'codecompletion/case_sensitive': True,
318- 'codecompletion/show_single': False,
319- 'show_elapsed_time': True,
320- 'show_icontext': False,
321- 'monitor/enabled': True,
322- 'mpl_patch/enabled': True,
323- 'mpl_patch/backend': 'Qt4Agg',
324- 'umd/enabled': True,
325- 'umd/verbose': True,
326- 'umd/namelist': ['guidata', 'guiqwt'],
327- 'light_background': True,
328- 'ipython_set_color': True,
329- 'remove_pyqt_inputhook': os.name == 'nt',
330- 'ignore_sip_setapi_errors': True,
331- }),
332- ('variable_explorer',
333- {
334- 'shortcut': "Ctrl+Shift+V",
335- 'autorefresh': True,
336- 'autorefresh/timeout': 2000,
337- 'editable_types': type2str(EDITABLE_TYPES),
338- 'picklable_types': type2str(PICKLABLE_TYPES),
339- 'itermax': ITERMAX,
340- 'excluded_names': EXCLUDED,
341- 'exclude_private': True,
342- 'exclude_upper': True,
343- 'exclude_unsupported': True,
344- 'inplace': False,
345- 'truncate': True,
346- 'minmax': False,
347- 'collvalue': False,
348- 'remote_editing': True,
349- }),
350- ('editor',
351- {
352- 'shortcut': "Ctrl+Shift+E",
353- 'printer_header/font/family': SANS_SERIF,
354- 'printer_header/font/size': MEDIUM,
355- 'printer_header/font/italic': False,
356- 'printer_header/font/bold': False,
357- 'font/family': MONOSPACE,
358- 'font/size': MEDIUM,
359- 'font/italic': False,
360- 'font/bold': False,
361- 'wrap': False,
362- 'wrapflag': True,
363- 'code_analysis': True,
364- 'todo_list': True,
365- 'realtime_analysis': True,
366- 'realtime_analysis/timeout': 2500,
367- 'outline_explorer': True,
368- 'line_numbers': True,
369- 'edge_line': True,
370- 'edge_line_column': 80,
371- 'toolbox_panel': True,
372- 'calltips': True,
373- 'go_to_definition': True,
374- 'close_parentheses': True,
375- 'auto_unindent': True,
376- 'object_inspector': True,
377- 'codecompletion/auto': True,
378- 'codecompletion/enter_key': True,
379- 'codecompletion/case_sensitive': True,
380- 'codecompletion/show_single': False,
381- 'check_eol_chars': True,
382- 'tab_always_indent': False,
383- 'intelligent_backspace': True,
384- 'highlight_current_line': True,
385- 'occurence_highlighting': True,
386- 'fullpath_sorting': True,
387- 'show_tab_bar': True,
388- 'max_recent_files': 20,
389- }),
390- ('historylog',
391- {
392- 'shortcut': "Ctrl+Shift+H",
393- 'enable': True,
394- 'max_entries': 100,
395- 'font/family': MONOSPACE,
396- 'font/size': MEDIUM,
397- 'font/italic': False,
398- 'font/bold': False,
399- 'wrap': True,
400- }),
401- ('inspector',
402- {
403- 'shortcut': "Ctrl+Shift+I",
404- 'enable': True,
405- 'max_history_entries': 20,
406- 'font/family': MONOSPACE,
407- 'font/size': SMALL,
408- 'font/italic': False,
409- 'font/bold': False,
410- 'rich_text/font/family': SANS_SERIF,
411- 'rich_text/font/size': 11,
412- 'rich_text/font/italic': False,
413- 'rich_text/font/bold': False,
414- 'wrap': True,
415- 'automatic_import': True,
416- }),
417- ('onlinehelp',
418- {
419- 'shortcut': "Ctrl+Shift+D",
420- 'enable': True,
421- 'zoom_factor': .8,
422- 'max_history_entries': 20,
423- }),
424- ('project_explorer',
425- {
426- 'shortcut': "Ctrl+Shift+P",
427- 'enable': True,
428- }),
429- ('arrayeditor',
430- {
431- 'font/family': MONOSPACE,
432- 'font/size': SMALL,
433- 'font/italic': False,
434- 'font/bold': False,
435- }),
436- ('texteditor',
437- {
438- 'font/family': MONOSPACE,
439- 'font/size': MEDIUM,
440- 'font/italic': False,
441- 'font/bold': False,
442- }),
443- ('dicteditor',
444- {
445- 'font/family': MONOSPACE,
446- 'font/size': SMALL,
447- 'font/italic': False,
448- 'font/bold': False,
449- }),
450- ('explorer',
451- {
452- 'enable': True,
453- 'wrap': True,
454- 'name_filters': ['*.py', '*.pyw', '*.ipy', '*.pth',
455- '*.npy', '*.mat', '*.spydata',
456- '*.txt', '*.csv', '*.dat'],
457- 'valid_filetypes': ['', '.py', '.pyw', '.ipy', '.spydata', '.npy',
458- '.pth', '.txt', '.csv', '.mat', '.h5'],
459- 'show_hidden': True,
460- 'show_all': False,
461- 'show_toolbar': True,
462- 'show_icontext': True,
463- }),
464- ('find_in_files',
465- {
466- 'enable': True,
467- 'supported_encodings': ["utf-8", "iso-8859-1", "cp1252"],
468- 'include': [r'\.pyw?$|\.ipy$|\.txt$|\.c$|\.cpp$|\.h$|\.hpp$|\.f$|\.ini$', '.'],
469- 'include_regexp': True,
470- 'exclude': [r'\.pyc$|\.pyo$|\.orig$|\.hg|\.svn'],
471- 'exclude_regexp': True,
472- 'search_text_regexp': True,
473- 'search_text': [''],
474- 'search_text_samples': [r'# ?TODO|# ?FIXME|# ?XXX|# ?HINT|# ?TIP'],
475- 'in_python_path': False,
476- 'more_options': True,
477- }),
478- ]
479-
480-DEV = not __file__.startswith(sys.prefix)
481-DEV = False
482-from spyderlib import __version__
483-_subfolder = '.spyder%s' % __version__.split('.')[0]
484-CONF = UserConfig('spyder', defaults=DEFAULTS, load=(not DEV), version='2.0.6',
485- subfolder=_subfolder, backup=True, raw_mode=True)
486-# Removing old .spyder.ini location:
487-old_location = osp.join(get_home_dir(), '.spyder.ini')
488-if osp.isfile(old_location):
489- os.remove(old_location)
490-
491-
492-# Translation support
493-if CONF.get('main', 'translation'):
494- from spyderlib.utils.translations import get_translation
495- _ = get_translation("spyderlib")
496-else:
497- _ = lambda x: x
498-
499-
500-def get_conf_path(filename=None):
501- """Return absolute path for configuration file with specified filename"""
502- conf_dir = osp.join(get_home_dir(), _subfolder)
503- if not osp.isdir(conf_dir):
504- os.mkdir(conf_dir)
505- if filename is None:
506- return conf_dir
507- else:
508- return osp.join(conf_dir, filename)
509-
510-IMG_PATH = []
511-def add_image_path(path):
512- if not osp.isdir(path):
513- return
514- global IMG_PATH
515- IMG_PATH.append(path)
516- for _root, dirs, _files in os.walk(path):
517- for dir in dirs:
518- IMG_PATH.append(osp.join(path, dir))
519-
520-add_image_path(osp.join(DATA_PATH, 'images'))
521-
522-def get_image_path( name, default="not_found.png" ):
523- """Return image absolute path"""
524- for img_path in IMG_PATH:
525- full_path = osp.join(img_path, name)
526- if osp.isfile(full_path):
527- return osp.abspath(full_path)
528- if default is not None:
529- return osp.abspath(osp.join(img_path, default))
530-
531-def get_icon( name, default=None ):
532- """Return image inside a QIcon object"""
533- if default is None:
534- return QIcon(get_image_path(name))
535- elif isinstance(default, QIcon):
536- icon_path = get_image_path(name, default=None)
537- return default if icon_path is None else QIcon(icon_path)
538- else:
539- return QIcon(get_image_path(name, default))
540-
541-def get_image_label( name, default="not_found.png" ):
542- """Return image inside a QLabel object"""
543- label = QLabel()
544- label.setPixmap(QPixmap(get_image_path(name, default)))
545- return label
546-
547-def font_is_installed(font):
548- """Check if font is installed"""
549- return [fam for fam in QFontDatabase().families() if unicode(fam)==font]
550-
551-def get_family(families):
552- """Return the first installed font family in family list"""
553- if not isinstance(families, list):
554- families = [ families ]
555- for family in families:
556- if font_is_installed(family):
557- return family
558- else:
559- print "Warning: None of the following fonts is installed: %r" % families
560- return QFont().family()
561-
562-FONT_CACHE = {}
563-def get_font(section, option=None):
564- """Get console font properties depending on OS and user options"""
565- font = FONT_CACHE.get((section, option))
566- if font is None:
567- if option is None:
568- option = 'font'
569- else:
570- option += '/font'
571- families = CONF.get(section, option+"/family", None)
572- if families is None:
573- return QFont()
574- family = get_family(families)
575- weight = QFont.Normal
576- italic = CONF.get(section, option+'/italic', False)
577- if CONF.get(section, option+'/bold', False):
578- weight = QFont.Bold
579- size = CONF.get(section, option+'/size', 9)
580- font = QFont(family, size, weight)
581- font.setItalic(italic)
582- FONT_CACHE[(section, option)] = font
583- return font
584-
585-def set_font(font, section, option=None):
586- """Set font"""
587- if option is None:
588- option = 'font'
589- else:
590- option += '/font'
591- CONF.set(section, option+'/family', unicode(font.family()))
592- CONF.set(section, option+'/size', float(font.pointSize()))
593- CONF.set(section, option+'/italic', int(font.italic()))
594- CONF.set(section, option+'/bold', int(font.bold()))
595- FONT_CACHE[(section, option)] = font
596-
597-
598-def get_shortcut(context, name, default=NoDefault):
599- """Get keyboard shortcut (key sequence string)"""
600- return CONF.get('shortcuts', '%s/%s' % (context, name), default=default)
601-
602-def set_shortcut(context, name, keystr):
603- """Set keyboard shortcut (key sequence string)"""
604- CONF.set('shortcuts', '%s/%s' % (context, name), keystr)
605-
606-def iter_shortcuts():
607- """Iterate over keyboard shortcuts"""
608- for option in CONF.options('shortcuts'):
609- context, name = option.split("/", 1)
610- yield context, name, get_shortcut(context, name)
611-
612-def reset_shortcuts():
613- """Reset keyboard shortcuts to default values"""
614- CONF.remove_section('shortcuts')
615-
616-
617-from spyderlib.widgets.sourcecode.syntaxhighlighters import (
618- COLOR_SCHEME_KEYS, COLOR_SCHEME_NAMES, COLORS)
619-def get_color_scheme(name):
620- """Get syntax color scheme"""
621- color_scheme = {}
622- for key in COLOR_SCHEME_KEYS:
623- color_scheme[key] = CONF.get("color_schemes", "%s/%s" % (name, key))
624- return color_scheme
625-
626-def set_color_scheme(name, color_scheme, replace=True):
627- """Set syntax color scheme"""
628- section = "color_schemes"
629- names = CONF.get("color_schemes", "names", [])
630- for key in COLOR_SCHEME_KEYS:
631- option = "%s/%s" % (name, key)
632- value = CONF.get(section, option, default=None)
633- if value is None or replace or name not in names:
634- CONF.set(section, option, color_scheme[key])
635- names.append(unicode(name))
636- CONF.set(section, "names", sorted(list(set(names))))
637-
638-def set_default_color_scheme(name, replace=True):
639- """Reset color scheme to default values"""
640- assert name in COLOR_SCHEME_NAMES
641- set_color_scheme(name, COLORS[name], replace=replace)
642-
643-for _name in COLOR_SCHEME_NAMES:
644- set_default_color_scheme(_name, replace=False)
645-CUSTOM_COLOR_SCHEME_NAME = "Custom"
646-set_color_scheme(CUSTOM_COLOR_SCHEME_NAME, COLORS["Spyder"], replace=False)
647-
648-
649-PLUGIN_PATH = None
650-from spyderlib.utils import programs
651-if programs.is_module_installed("spyderplugins"):
652- import spyderplugins
653- PLUGIN_PATH = osp.abspath(spyderplugins.__path__[0])
654- add_image_path(osp.join(PLUGIN_PATH, 'images'))
655-
656-def get_spyderplugins(prefix, extension):
657- """Scan spyderplugins module and
658- return the list of module names matching *prefix* and *extension*"""
659- plist = []
660- if PLUGIN_PATH is not None:
661- for name in os.listdir(PLUGIN_PATH):
662- modname, ext = osp.splitext(name)
663- if prefix is not None and not name.startswith(prefix):
664- continue
665- if extension is not None and ext != extension:
666- continue
667- plist.append(modname)
668- return plist
669-
670-def get_spyderplugins_mods(prefix, extension):
671- """Scan spyderplugins module and
672- return the list of modules matching *prefix* and *extension*"""
673- return [getattr(__import__('spyderplugins.%s' % modname), modname)
674- for modname in get_spyderplugins(prefix, extension)]
675
676=== modified file 'MANIFEST.in'
677--- MANIFEST.in 2011-04-29 21:19:10 +0000
678+++ MANIFEST.in 2012-03-27 18:05:23 +0000
679@@ -2,7 +2,7 @@
680 recursive-include spyderlibplugins *.pot *.po *.svg *.png
681 recursive-include doc *.py *.rst *.png *.ico *.
682 recursive-include app_example *.py *.pyw *.bat *.qm *.svg *.png
683-include bin/*
684-include spyder
685+include scripts/*
686 include MANIFEST.in
687 include README
688+include bootstrap.py
689
690=== modified file 'PKG-INFO'
691--- PKG-INFO 2011-06-13 12:17:14 +0000
692+++ PKG-INFO 2012-03-27 18:05:23 +0000
693@@ -1,19 +1,19 @@
694 Metadata-Version: 1.1
695 Name: spyder
696-Version: 2.0.12
697+Version: 2.1.8
698 Summary: Scientific PYthon Development EnviRonment
699-Home-page: http://spyder.googlecode.com
700+Home-page: http://code.google.com/p/spyderlib
701 Author: Pierre Raybaut
702 Author-email: UNKNOWN
703 License: MIT
704-Download-URL: http://spyder.googlecode.com/files/spyder-2.0.12.zip
705-Description: The spyderlib module provides powerful console and
706- editor related widgets to your PyQt4 application. It also includes a
707- Scientific Python development environment named 'Spyder', an alternative to
708- IDLE with powerful interactive features such as variable explorer (with
709- GUI-based editors for dictionaries, lists, NumPy arrays, etc.), object
710- inspector, online help, and a lot more.
711-Keywords: PyQt4 editor shell console widgets IDE
712+Download-URL: http://code.google.com/p/spyderlib/files/spyder-2.1.8.zip
713+Description: The spyderlib library provides powerful console and
714+ editor related widgets to your Qt application (PyQt4 or PySide). It also
715+ includes a Scientific Python development environment named 'Spyder', an
716+ alternative to IDLE with powerful interactive features such as variable
717+ explorer (with GUI-based editors for dictionaries, lists, NumPy arrays, etc.),
718+ object inspector, online help, and a lot more.
719+Keywords: PyQt4 PySide editor shell console widgets IDE
720 Platform: any
721 Classifier: License :: OSI Approved :: MIT License
722 Classifier: Operating System :: MacOS
723@@ -27,7 +27,6 @@
724 Classifier: Development Status :: 5 - Production/Stable
725 Classifier: Topic :: Scientific/Engineering
726 Classifier: Topic :: Software Development :: Widget Sets
727-Requires: pyflakes (>0.3.0)
728-Requires: rope (>0.9.0)
729-Requires: sphinx (>0.6.0)
730-Requires: PyQt4 (>4.3)
731+Requires: rope (>=0.9.2)
732+Requires: sphinx (>=0.6.0)
733+Requires: PyQt4 (>=4.4)
734
735=== modified file 'README'
736--- README 2011-04-29 21:19:10 +0000
737+++ README 2012-03-27 18:05:23 +0000
738@@ -1,72 +1,107 @@
739-Spyder - Scientific PYthon Development EnviRonment
740-==================================================
741-
742-Copyright © 2009-2010 Pierre Raybaut
743-Licensed under the terms of the MIT License
744-(see spyderlib/__init__.py for details)
745-
746-
747- Overview
748-
749- Spyder is a Python development environment with tons of features:
750- Editor
751- Multi-language editor with function/class browser, code analysis
752- (pyflakes and pylint are currently supported), horizontal/verti-
753- cal splitting, etc.
754- Documentation viewer
755- Automatically show documentation (if available, or source code
756- otherwise) for any class instantiation or function call made
757- in a Python shell (interactive/external console, see below)
758- Interactive console
759- Python shell with workspace support (variable explorer with GUI
760- based editors: dictionary editor, array editor, ...) and
761- matplotlib figures integration
762- External console (separate process)
763- Run Python scripts (interactive, debugging or normal mode) or
764- open a Python interpreter with variable explorer and documenta-
765- tion viewer support (a basic terminal window may also be opened
766- with the external console)
767- File/directories explorer
768- Find in files feature
769- Supporting regular expressions and mercurial repositories
770- History log
771-
772- Spyder may also be used as a PyQt4 extension library (module 'spyderlib').
773- For example, the Python interactive shell widget used in Spyder may be
774- embedded in your own PyQt4 application.
775-
776- Building dependencies
777-
778- When installing Spyder from the .zip source package (using the
779- command `python setup.py install`), the requirements are:
780- Python 2.x (x>=5)
781- sphinx >= v0.6 (documentation generation)
782-
783- Runtime dependencies
784-
785- Python 2.x (x>=5)
786- PyQt4 4.x (x>=4)
787-
788- Recommended modules
789- pyflakes >v0.3.0 (real-time code analysis)
790- rope >=v0.9.2 (editor code completion, calltips and go-to-definition)
791- sphinx >= v0.6 (object inspector's rich text mode)
792- numpy (N-dimensional arrays)
793- scipy (signal/image processing)
794- matplotlib (2D/3D plotting)
795- IPython (enhanced Python interpreter)
796-
797- Optional modules
798- pylint (powerful code analysis)
799-
800- Installation
801-
802- From the source package (see section 'Building dependencies'):
803- `python setup.py install`
804-
805- More informations
806-
807- Downloads, bug reports and feature requests:
808- http://code.google.com/s/spyder/
809- Discussions:
810- http://groups.google.com/group/spyder
811\ No newline at end of file
812+Spyder - Scientific PYthon Development EnviRonment
813+==================================================
814+
815+Copyright © 2009-2011 Pierre Raybaut
816+Licensed under the terms of the MIT License
817+(see spyderlib/__init__.py for details)
818+
819+
820+ Overview
821+
822+ Spyder is a Python development environment with tons of features:
823+ Editor
824+ Multi-language editor with function/class browser, code analysis
825+ (pyflakes and pylint are currently supported), horizontal/verti-
826+ cal splitting, etc.
827+ Documentation viewer
828+ Automatically show documentation (if available, or source code
829+ otherwise) for any class instantiation or function call made
830+ in a Python shell (interactive/external console, see below)
831+ Interactive console
832+ Python shell with workspace support (variable explorer with GUI
833+ based editors: dictionary editor, array editor, ...) and
834+ matplotlib figures integration
835+ External console (separate process)
836+ Run Python scripts (interactive, debugging or normal mode) or
837+ open a Python interpreter with variable explorer and documenta-
838+ tion viewer support (a basic terminal window may also be opened
839+ with the external console)
840+ File/directories explorer
841+ Find in files feature
842+ Supporting regular expressions and mercurial repositories
843+ History log
844+
845+ Spyder may also be used as a PyQt4 extension library (module 'spyderlib').
846+ For example, the Python interactive shell widget used in Spyder may be
847+ embedded in your own PyQt4 application.
848+
849+ Build dependencies
850+
851+ When installing Spyder from the .zip source package (using the
852+ command `python setup.py install`), the requirements are:
853+ Python 2.5+
854+ sphinx 0.6+ (documentation generation)
855+
856+ Runtime dependencies
857+
858+ Python 2.5+
859+ PyQt4 4.4+ or PySide 1.0.8+
860+
861+ Recommended modules
862+ pyflakes v0.5.0+ (real-time code analysis)
863+ rope v0.9.2+ (editor code completion, calltips and go-to-definition)
864+ sphinx v0.6+ (object inspector's rich text mode)
865+ numpy (N-dimensional arrays)
866+ scipy (signal/image processing)
867+ matplotlib (2D/3D plotting)
868+
869+ Optional modules
870+ IPython (enhanced Python interpreter)
871+ pylint (powerful code analysis)
872+ pep8 (style analysis)
873+
874+ Running from source
875+
876+ It is possible to run Spyder directly from unpacked source folder
877+ using Spyder's bootstrap script:
878+ `python bootstrap.py`
879+
880+ This is especially useful for beta-testing, troubleshooting
881+ and development of Spyder itself.
882+
883+ Installation
884+
885+ This section explains how to install the latest *stable* release of
886+ Spyder. If you prefer testing the development version, please use
887+ the bootstrap script (see previous section).
888+
889+ From the source package (see section 'Building dependencies'), you may
890+ install Spyder using the integrated setup.py script based on Python
891+ standard library `distutils` with the following command:
892+ `python setup.py install`
893+
894+ Note that `distutils` does *not* uninstall previous versions of Python
895+ packages: it simply copies files on top of an existing installation.
896+ When using this command, it is thus highly recommended to uninstall
897+ manually any previous version of Spyder by removing the associated
898+ directories ('spyderlib' and 'spyderplugins' in your site-packages
899+ directory).
900+
901+ From the Python package index, you may simply install Spyder *and*
902+ upgrade an existing installation using `pip`:
903+ http://pypi.python.org/pypi
904+
905+ But the easiest way to install the last stable release of Spyder is:
906+ * on Windows:
907+ * using an executable installer: http://spyderlib.googlecode.com
908+ * or through Python(x,y): http://www.pythonxy.com
909+ * on Mac OSX, through MacPorts
910+ * on GNU/Linux, through your package manager
911+ For more details on supported platforms, please go to http://spyderlib.googlecode.com.
912+
913+ More informations
914+
915+ Downloads, bug reports and feature requests:
916+ http://code.google.com/p/spyderlib/
917+ Discussions:
918+ http://groups.google.com/group/spyderlib
919\ No newline at end of file
920
921=== added file 'app_example/create_exe.py'
922--- app_example/create_exe.py 1970-01-01 00:00:00 +0000
923+++ app_example/create_exe.py 2012-03-27 18:05:23 +0000
924@@ -0,0 +1,31 @@
925+# -*- coding: utf-8 -*-
926+#
927+# Copyright © 2011 Pierre Raybaut
928+# Licensed under the terms of the MIT License
929+# (see spyderlib/__init__.py for details)
930+
931+"""Create a stand-alone executable"""
932+
933+try:
934+ from guidata.disthelpers import Distribution
935+except ImportError:
936+ raise ImportError, "This script requires guidata 1.4+"
937+
938+import spyderlib
939+
940+
941+def create_executable():
942+ """Build executable using ``guidata.disthelpers``"""
943+ dist = Distribution()
944+ dist.setup(name="Example", version="1.1",
945+ description=u"Embedding Spyder Qt shell",
946+ script="example.pyw", target_name="example.exe")
947+ spyderlib.add_to_distribution(dist)
948+ #dist.add_modules('matplotlib') # Uncomment if you need matplotlib
949+ dist.excludes += ['IPython']
950+ # Building executable
951+ dist.build('cx_Freeze')
952+
953+
954+if __name__ == '__main__':
955+ create_executable()
956
957=== removed file 'app_example/run_py2exe.bat'
958--- app_example/run_py2exe.bat 2011-03-05 18:03:43 +0000
959+++ app_example/run_py2exe.bat 1970-01-01 00:00:00 +0000
960@@ -1,2 +0,0 @@
961-python setup.py py2exe
962-pause
963\ No newline at end of file
964
965=== removed file 'app_example/setup.py'
966--- app_example/setup.py 2011-04-11 12:46:23 +0000
967+++ app_example/setup.py 1970-01-01 00:00:00 +0000
968@@ -1,52 +0,0 @@
969-#!/usr/bin/env python
970-# -*- coding: utf-8 -*-
971-#
972-# Buiding instructions:
973-# python setup.py py2exe
974-
975-from distutils.core import setup
976-import py2exe # Patching distutils setup
977-from guidata.disthelpers import (remove_build_dist, get_default_excludes,
978- get_default_dll_excludes, create_vs2008_data_files,
979- add_module_data_files, add_modules)
980-
981-# Removing old build/dist folders
982-remove_build_dist()
983-
984-# Including/excluding DLLs and Python modules
985-EXCLUDES = get_default_excludes()
986-INCLUDES = []
987-DLL_EXCLUDES = get_default_dll_excludes()
988-DATA_FILES = create_vs2008_data_files()
989-
990-# Distributing application-specific data files
991-for _modname in ('spyderlib', 'spyderplugins'):
992- add_module_data_files(_modname, ("", ),
993- ('.mo', '.svg', '.png', '.css', '.py'),
994- DATA_FILES, copy_to_root=False)
995-
996-# Configuring/including Python modules
997-add_modules(('PyQt4', ), # add 'matplotlib' after 'PyQt4' if you need it
998- DATA_FILES, INCLUDES, EXCLUDES)
999-
1000-EXCLUDES += ['IPython']
1001-
1002-setup(
1003- options={
1004- "py2exe": {"compressed": 2, "optimize": 2, 'bundle_files': 1,
1005- "includes": INCLUDES, "excludes": EXCLUDES,
1006- "dll_excludes": DLL_EXCLUDES,
1007- "dist_dir": "dist",},
1008- },
1009- data_files=DATA_FILES,
1010- windows=[{
1011- "script": "example.pyw",
1012- "dest_base": "example",
1013- "version": "1.0",
1014- "company_name": "Pierre Raybaut",
1015- "copyright": u"Copyright © 2009-2010 Pierre Raybaut",
1016- "name": u"AppWithSpyder",
1017- "description": u"Application using Spyder console",
1018- },],
1019- zipfile = None,
1020- )
1021
1022=== added file 'bootstrap.py'
1023--- bootstrap.py 1970-01-01 00:00:00 +0000
1024+++ bootstrap.py 2012-03-27 18:05:23 +0000
1025@@ -0,0 +1,93 @@
1026+#!/usr/bin/env python
1027+# -*- coding: utf-8 -*-
1028+#
1029+# Licensed under the terms of the MIT License
1030+# (see spyderlib/__init__.py for details)
1031+
1032+"""
1033+Bootstrapping Spyder
1034+(Executing Spyder from source checkout)
1035+
1036+This script is a contribution from techtonik:
1037+http://code.google.com/p/spyderlib/issues/detail?id=741
1038+"""
1039+
1040+# pylint: disable=C0103
1041+
1042+import os
1043+import subprocess
1044+import sys
1045+import optparse
1046+
1047+# Parsing command line options
1048+parser = optparse.OptionParser(
1049+ usage="python bootstrap.py [options] [-- spyder_options]",
1050+ epilog="Arguments for Spyder's main script are specified after the "\
1051+ "-- symbol\n(example: `python bootstrap.py -- --debug --light`). "\
1052+ "Type `python bootstrap.py -- --help` to read more about Spyder "\
1053+ "options.\n")
1054+parser.add_option('--gui', dest="gui", default=None,
1055+ help="GUI toolkit: pyqt (for PyQt4) or pyside (for PySide)")
1056+options, args = parser.parse_args()
1057+assert options.gui in (None, 'pyqt', 'pyside'), \
1058+ "Invalid GUI toolkit option '%s'" % options.gui
1059+# Prepare arguments for Spyder's main script
1060+sys.argv = [sys.argv[0]] + args
1061+
1062+
1063+print("Executing Spyder from source checkout")
1064+DEVPATH = os.path.dirname(os.path.abspath(__file__))
1065+
1066+# Warn if Spyder is located on non-ASCII path
1067+# http://code.google.com/p/spyderlib/issues/detail?id=812
1068+try:
1069+ os.path.join(DEVPATH, u'test')
1070+except UnicodeDecodeError:
1071+ print("STOP: Spyder is located in the path with non-ASCII characters,")
1072+ print(" which is known to cause problems (see issue #812).")
1073+ raw_input("Press Enter to continue or Ctrl-C to abort...")
1074+
1075+# Retrieving Mercurial revision number
1076+try:
1077+ output = subprocess.Popen('hg id -nib "%s"' % DEVPATH, shell=True,
1078+ stdout=subprocess.PIPE).communicate()
1079+ hgid, hgnum, hgbranch = output[0].strip().split()
1080+ print("Revision %s:%s, Branch: %s" % (hgnum, hgid, hgbranch))
1081+except Exception as exc:
1082+ print("Error: Failed to get revision number from Mercurial - %s" % exc)
1083+
1084+sys.path.insert(0, DEVPATH)
1085+print("01. Patched sys.path with %s" % DEVPATH)
1086+
1087+# Selecting the GUI toolkit: PySide if installed, otherwise PyQt4
1088+# (Note: PyQt4 is still the officially supported GUI toolkit for Spyder)
1089+if options.gui is None:
1090+ try:
1091+ import PySide
1092+ print("02. PySide is detected, selecting (experimental)")
1093+ os.environ['QT_API'] = 'pyside'
1094+ except:
1095+ print("02. No PySide detected, using PyQt4 if available")
1096+else:
1097+ print ("02. Skipping GUI toolkit detection")
1098+ os.environ["QT_API"] = options.gui
1099+
1100+# Importing Spyder
1101+from spyderlib import spyder
1102+QT_API = spyder.qt._modname
1103+QT_LIB = {'pyqt': 'PyQt4', 'pyside': 'PySide'}[QT_API]
1104+if QT_API == 'pyqt':
1105+ import sip
1106+ try:
1107+ QT_LIB += (" (API v%d)" % sip.getapi('QString'))
1108+ except AttributeError:
1109+ pass
1110+print("03. Imported Spyder %s (Qt %s via %s %s)" % \
1111+ (spyder.__version__, spyder.qt.QtCore.__version__,
1112+ QT_LIB, spyder.qt.__version__))
1113+
1114+# Executing Spyder
1115+print("0x. Enforcing parent console (Windows only)")
1116+sys.argv.append("--showconsole") # Windows only: show parent console
1117+print("04. Executing spyder.main()")
1118+spyder.main()
1119
1120=== modified file 'debian/changelog'
1121--- debian/changelog 2011-06-13 12:17:14 +0000
1122+++ debian/changelog 2012-03-27 18:05:23 +0000
1123@@ -1,3 +1,69 @@
1124+spyder (2.1.8-1ubuntu1) oneiric; urgency=low
1125+
1126+ * Added icon entry to spyder.desktop (LP: #890243)
1127+
1128+ -- Matthew Goode <a4024921@ce-gl079> Tue, 27 Mar 2012 19:51:02 +0200
1129+
1130+spyder (2.1.8-1) unstable; urgency=low
1131+
1132+ * Imported Upstream version 2.1.8
1133+ * prepare for backport
1134+
1135+ -- Picca Frédéric-Emmanuel <picca@debian.org> Mon, 20 Feb 2012 23:02:50 +0100
1136+
1137+spyder (2.1.7-1) unstable; urgency=low
1138+
1139+ * Imported Upstream version 2.1.7
1140+
1141+ -- Picca Frédéric-Emmanuel <picca@debian.org> Mon, 16 Jan 2012 18:03:01 +0100
1142+
1143+spyder (2.1.6-1) unstable; urgency=low
1144+
1145+ * Imported Upstream version 2.1.6
1146+
1147+ -- Picca Frédéric-Emmanuel <picca@debian.org> Sun, 01 Jan 2012 17:53:28 +0100
1148+
1149+spyder (2.1.4-1) unstable; urgency=low
1150+
1151+ * Imported Upstream version 2.1.4
1152+
1153+ -- Picca Frédéric-Emmanuel <picca@debian.org> Wed, 30 Nov 2011 17:59:32 +0100
1154+
1155+spyder (2.1.3-1) unstable; urgency=low
1156+
1157+ * Imported Upstream version 2.1.3
1158+ * update the copyright file with the new upstream policy
1159+
1160+ -- Picca Frédéric-Emmanuel <picca@debian.org> Mon, 28 Nov 2011 17:39:39 +0100
1161+
1162+spyder (2.1.2-1) unstable; urgency=low
1163+
1164+ * Import Upstream version 2.1.2
1165+ * debian/spyder.bug-control
1166+ - report also python-spyderlib (Closes: #647696)
1167+
1168+ -- Picca Frédéric-Emmanuel <picca@debian.org> Thu, 17 Nov 2011 21:11:14 +0100
1169+
1170+spyder (2.1.1-1) unstable; urgency=low
1171+
1172+ * Import Upstream version 2.1.1 (Closes: #636726)
1173+ * use the old upstream url http://code.google.com/p/spyder/
1174+ until the transition is done.
1175+ * debian/control
1176+ - fix Breaks and Replace
1177+ - Depends: python-sphinx (>= 1.0.7+dfsg), pyflakes (>= 0.5.0),
1178+ pep8, python-rope (>= 0.9.2)
1179+ * debian/copyright fixed using config-edit
1180+ * debian/rules
1181+ - use the new dh_sphinxdoc helper
1182+ * debian/patches
1183+ - 0001-fix-documentation-installation.patch (updated)
1184+ build the sphinx documentation only once.
1185+ * debian/spyder.desktop (deleted)
1186+ - use the one provided by the upstream
1187+
1188+ -- Picca Frédéric-Emmanuel <picca@debian.org> Mon, 31 Oct 2011 12:43:34 +0200
1189+
1190 spyder (2.0.12-1) unstable; urgency=low
1191
1192 * Imported Upstream version 2.0.12
1193
1194=== modified file 'debian/control'
1195--- debian/control 2011-06-13 12:17:14 +0000
1196+++ debian/control 2012-03-27 18:05:23 +0000
1197@@ -6,13 +6,15 @@
1198 Alexandre Fayolle <afayolle@debian.org>,
1199 Picca Frédéric-Emmanuel <picca@debian.org>
1200 DM-Upload-Allowed: yes
1201-Build-Depends: debhelper (>= 8.1.1), python-all (>= 2.6.6-3~)
1202-Build-Depends-Indep: python-sphinx, xsltproc
1203+Build-Depends: debhelper (>= 8),
1204+ python-all (>= 2.6.6-3~)
1205+Build-Depends-Indep: python-sphinx,
1206+ xsltproc
1207 Standards-Version: 3.9.2
1208 X-Python-Version: >= 2.6
1209 Vcs-Git: git://anonscm.debian.org/debian-science/packages/spyder.git
1210 Vcs-Browser: http://anonscm.debian.org/gitweb/?p=debian-science/packages/spyder.git
1211-Homepage: http://code.google.com/p/spyder/
1212+Homepage: http://code.google.com/p/spyderlib/
1213
1214 Package: spyder
1215 Architecture: all
1216@@ -30,13 +32,25 @@
1217 Section: python
1218 Depends: ${misc:Depends},
1219 ${python:Depends},
1220- python-qt4,
1221- libjs-jquery
1222-Recommends: python-scipy, python-numpy, python-matplotlib, ipython, pyflakes, pylint, python-rope, python-sphinx
1223+ ${sphinxdoc:Depends},
1224+ python-qt4
1225+Recommends: ipython,
1226+ pep8,
1227+ pyflakes (>= 0.5.0),
1228+ pylint,
1229+ python-matplotlib,
1230+ python-rope (>= 0.9.2),
1231+ python-numpy,
1232+ python-scipy,
1233+ python-sphinx (>= 0.6.0)
1234 Provides: ${python:Provides}
1235-Breaks: ${python:Breaks}, spyder (<< 2.0.11-1),
1236-Replaces: spyder (<< 2.0.11-1)
1237+Breaks: ${python:Breaks}, spyder (<< 2.0.12-1),
1238+Replaces: spyder (<< 2.0.12-1)
1239 Description: Python IDE for scientists
1240- Spyder (previously known as Pydee) is a free open-source Python
1241- development environment providing MATLAB-like features in a simple
1242- and light-weighted software.
1243+ Originally written to design Spyder (the Scientific PYthon
1244+ Development EnviRonment), the spyderlib Python library provides
1245+ ready-to-use pure-Python widgets: source code editor with syntax
1246+ highlighting and code introspection/analysis features, NumPy array
1247+ editor, dictionary editor, Python console, etc. It's based on the Qt
1248+ Python binding module PyQt4 (and is compatible with PySide since
1249+ v2.2).
1250
1251=== modified file 'debian/copyright'
1252--- debian/copyright 2011-06-13 12:17:14 +0000
1253+++ debian/copyright 2012-03-27 18:05:23 +0000
1254@@ -1,18 +1,207 @@
1255 Format: http://dep.debian.net/deps/dep5
1256 Upstream-Name: Pierre Raybaut <pierre.raybaut@gmail.com>
1257 Upstream-Contact: pierre.raybaut@gmail.com
1258-Source: http://code.google.com/p/spyder
1259+Source: http://code.google.com/p/spyderlib
1260
1261 Files: debian/*
1262 Copyright: © 2009-2010 Ludovic Aubry <laubrycomm@free.fr>
1263- © 2010-2011, Picca Frédéric-Emmanuel <picca@debian.org>
1264-Licence: MIT
1265+ © 2010-2011, Picca Frédéric-Emmanuel <picca@debian.org>
1266+License: Expat
1267
1268 Files: *
1269 Copyright: © 2009-2011 Pierre Raybaut <pierre.raybaut@gmail.com>
1270-Licence: MIT
1271-
1272-Licence: MIT
1273+License: Expat
1274+
1275+Files: spyderlib/utils/external/pickleshare.py
1276+Copyright: © Ville Vainio <vivainio@gmail.com>
1277+License: Expat
1278+
1279+Files: spyderlib/utils/module_completion.py
1280+Copyright: 2005,2008,2009,2010,2011 The IPython Development Team
1281+ 2001-2007, Fernando Perez <fperez@colorado.edu>
1282+ 2001, Janko Hauser <jhauser@zscout.de>
1283+ 2001, Nathaniel Gray <n8gray@caltech.edu>
1284+ 2002-2005, Alexander Schmolck
1285+ 2004, W.J. van der Laan <gnufnork@hetdigitalegat.nl>
1286+ 2001, Python Software Foundation, www.python.org
1287+ 2009, Gael Varoquaux (gael.varoquaux@normalesup.org)
1288+ 2005, Jörgen Stenarson <jorgen.stenarson@bostream.nu>
1289+License: BSD-3-clause
1290+
1291+Files: spyderlib/utils/sphinxify.py
1292+Copyright: © 2009 Tim Dumol <tim@timdumol.com>
1293+ © 2010 Carlos Cordoba <ccordoba12@gmail.com>
1294+License: BSD-3-clause
1295+
1296+Files: spyderplugins/p_profiler.py spyderplugins/widgets/profilergui.py
1297+Copyright: © 2011 Pierre Raybaut <pierre.raybaut@gmail.com>
1298+ © 2011 Santiago Jaramillo <jara@cshl.edu>
1299+License: Expat
1300+
1301+Files: spyderlib/images/options.svg spyderlib/images/sift.svg
1302+Copyright: © 2011 Pierre Raybaut <pierre.raybaut@gmail.com>
1303+License: CC-BY-SA
1304+
1305+Files: spyderlib/images/spyder.svg spyderlib/images/spyder_light.svg
1306+Copyright: © 2011 Pierre Raybaut <pierre.raybaut@gmail.com>
1307+License: CC-BY
1308+
1309+Files: spyderlib/utils/external/path.py
1310+Copyright: © 2007 Jason Orendorff <jason.orendorff@gmail.com>
1311+License: public-domain
1312+
1313+License: BSD-3-clause
1314+ All rights reserved.
1315+ .
1316+ Redistribution and use in source and binary forms, with or without
1317+ modification, are permitted provided that the following conditions are
1318+ met:
1319+ .
1320+ Redistributions of source code must retain the above copyright notice,
1321+ this list of conditions and the following disclaimer.
1322+ .
1323+ Redistributions in binary form must reproduce the above copyright notice,
1324+ this list of conditions and the following disclaimer in the documentation
1325+ and/or other materials provided with the distribution.
1326+ .
1327+ Neither the name of the IPython Development Team nor the names of its
1328+ contributors may be used to endorse or promote products derived from this
1329+ software without specific prior written permission.
1330+ .
1331+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
1332+ IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
1333+ THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
1334+ PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
1335+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
1336+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
1337+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
1338+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
1339+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
1340+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
1341+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
1342+
1343+License: CC-BY
1344+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
1345+ .
1346+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
1347+ .
1348+ 1. Definitions
1349+ .
1350+ "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
1351+ "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License.
1352+ "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
1353+ "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
1354+ "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
1355+ "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
1356+ "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
1357+ "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
1358+ "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
1359+ .
1360+ 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
1361+ .
1362+ 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
1363+ .
1364+ to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
1365+ to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
1366+ to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
1367+ to Distribute and Publicly Perform Adaptations.
1368+ .
1369+ For the avoidance of doubt:
1370+ Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
1371+ Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
1372+ Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
1373+ .
1374+ The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
1375+ .
1376+ 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
1377+ .
1378+ You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(b), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(b), as requested.
1379+ If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Section 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4 (b) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
1380+ Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
1381+ .
1382+ 5. Representations, Warranties and Disclaimer
1383+ .
1384+ UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
1385+ .
1386+ 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
1387+ .
1388+ 7. Termination
1389+ .
1390+ This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
1391+ Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
1392+ .
1393+ 8. Miscellaneous
1394+ .
1395+ Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
1396+ Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
1397+ If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
1398+ No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
1399+ This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
1400+ The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
1401+
1402+License: CC-BY-SA
1403+ THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.
1404+ .
1405+ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE BOUND BY THE TERMS OF THIS LICENSE. TO THE EXTENT THIS LICENSE MAY BE CONSIDERED TO BE A CONTRACT, THE LICENSOR GRANTS YOU THE RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS AND CONDITIONS.
1406+ .
1407+ 1. Definitions
1408+ .
1409+ "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
1410+ "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined below) for the purposes of this License.
1411+ "Creative Commons Compatible License" means a license that is listed at http://creativecommons.org/compatiblelicenses that has been approved by Creative Commons as being essentially equivalent to this License, including, at a minimum, because that license: (i) contains terms that have the same purpose, meaning and effect as the License Elements of this License; and, (ii) explicitly permits the relicensing of adaptations of works made available under that license under this License or a Creative Commons jurisdiction license with the same License Elements as this License.
1412+ "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
1413+ "License Elements" means the following high-level license attributes as selected by Licensor and indicated in the title of this License: Attribution, ShareAlike.
1414+ "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
1415+ "Original Author" means, in the case of a literary or artistic work, the individual, individuals, entity or entities who created the Work or if no individual or entity can be identified, the publisher; and in addition (i) in the case of a performance the actors, singers, musicians, dancers, and other persons who act, sing, deliver, declaim, play in, interpret or otherwise perform literary or artistic works or expressions of folklore; (ii) in the case of a phonogram the producer being the person or legal entity who first fixes the sounds of a performance or other sounds; and, (iii) in the case of broadcasts, the organization that transmits the broadcast.
1416+ "Work" means the literary and/or artistic work offered under the terms of this License including without limitation any production in the literary, scientific and artistic domain, whatever may be the mode or form of its expression including digital form, such as a book, pamphlet and other writing; a lecture, address, sermon or other work of the same nature; a dramatic or dramatico-musical work; a choreographic work or entertainment in dumb show; a musical composition with or without words; a cinematographic work to which are assimilated works expressed by a process analogous to cinematography; a work of drawing, painting, architecture, sculpture, engraving or lithography; a photographic work to which are assimilated works expressed by a process analogous to photography; a work of applied art; an illustration, map, plan, sketch or three-dimensional work relative to geography, topography, architecture or science; a performance; a broadcast; a phonogram; a compilation of data to the extent it is protected as a copyrightable work; or a work performed by a variety or circus performer to the extent it is not otherwise considered a literary or artistic work.
1417+ "You" means an individual or entity exercising rights under this License who has not previously violated the terms of this License with respect to the Work, or who has received express permission from the Licensor to exercise rights under this License despite a previous violation.
1418+ "Publicly Perform" means to perform public recitations of the Work and to communicate to the public those public recitations, by any means or process, including by wire or wireless means or public digital performances; to make available to the public Works in such a way that members of the public may access these Works from a place and at a place individually chosen by them; to perform the Work to the public by any means or process and the communication to the public of the performances of the Work, including by public digital performance; to broadcast and rebroadcast the Work by any means including signs, sounds or images.
1419+ "Reproduce" means to make copies of the Work by any means including without limitation by sound or visual recordings and the right of fixation and reproducing fixations of the Work, including storage of a protected performance or phonogram in digital form or other electronic medium.
1420+ .
1421+ 2. Fair Dealing Rights. Nothing in this License is intended to reduce, limit, or restrict any uses free from copyright or rights arising from limitations or exceptions that are provided for in connection with the copyright protection under copyright law or other applicable laws.
1422+ .
1423+ 3. License Grant. Subject to the terms and conditions of this License, Licensor hereby grants You a worldwide, royalty-free, non-exclusive, perpetual (for the duration of the applicable copyright) license to exercise the rights in the Work as stated below:
1424+ .
1425+ to Reproduce the Work, to incorporate the Work into one or more Collections, and to Reproduce the Work as incorporated in the Collections;
1426+ to create and Reproduce Adaptations provided that any such Adaptation, including any translation in any medium, takes reasonable steps to clearly label, demarcate or otherwise identify that changes were made to the original Work. For example, a translation could be marked "The original work was translated from English to Spanish," or a modification could indicate "The original work has been modified.";
1427+ to Distribute and Publicly Perform the Work including as incorporated in Collections; and,
1428+ to Distribute and Publicly Perform Adaptations.
1429+ .
1430+ For the avoidance of doubt:
1431+ Non-waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme cannot be waived, the Licensor reserves the exclusive right to collect such royalties for any exercise by You of the rights granted under this License;
1432+ Waivable Compulsory License Schemes. In those jurisdictions in which the right to collect royalties through any statutory or compulsory licensing scheme can be waived, the Licensor waives the exclusive right to collect such royalties for any exercise by You of the rights granted under this License; and,
1433+ Voluntary License Schemes. The Licensor waives the right to collect royalties, whether individually or, in the event that the Licensor is a member of a collecting society that administers voluntary licensing schemes, via that society, from any exercise by You of the rights granted under this License.
1434+ .
1435+ The above rights may be exercised in all media and formats whether now known or hereafter devised. The above rights include the right to make such modifications as are technically necessary to exercise the rights in other media and formats. Subject to Section 8(f), all rights not expressly granted by Licensor are hereby reserved.
1436+ .
1437+ 4. Restrictions. The license granted in Section 3 above is expressly made subject to and limited by the following restrictions:
1438+ .
1439+ You may Distribute or Publicly Perform the Work only under the terms of this License. You must include a copy of, or the Uniform Resource Identifier (URI) for, this License with every copy of the Work You Distribute or Publicly Perform. You may not offer or impose any terms on the Work that restrict the terms of this License or the ability of the recipient of the Work to exercise the rights granted to that recipient under the terms of the License. You may not sublicense the Work. You must keep intact all notices that refer to this License and to the disclaimer of warranties with every copy of the Work You Distribute or Publicly Perform. When You Distribute or Publicly Perform the Work, You may not impose any effective technological measures on the Work that restrict the ability of a recipient of the Work from You to exercise the rights granted to that recipient under the terms of the License. This Section 4(a) applies to the Work as incorporated in a Collection, but this does not require the Collection apart from the Work itself to be made subject to the terms of this License. If You create a Collection, upon notice from any Licensor You must, to the extent practicable, remove from the Collection any credit as required by Section 4(c), as requested. If You create an Adaptation, upon notice from any Licensor You must, to the extent practicable, remove from the Adaptation any credit as required by Section 4(c), as requested.
1440+ You may Distribute or Publicly Perform an Adaptation only under the terms of: (i) this License; (ii) a later version of this License with the same License Elements as this License; (iii) a Creative Commons jurisdiction license (either this or a later license version) that contains the same License Elements as this License (e.g., Attribution-ShareAlike 3.0 US)); (iv) a Creative Commons Compatible License. If you license the Adaptation under one of the licenses mentioned in (iv), you must comply with the terms of that license. If you license the Adaptation under the terms of any of the licenses mentioned in (i), (ii) or (iii) (the "Applicable License"), you must comply with the terms of the Applicable License generally and the following provisions: (I) You must include a copy of, or the URI for, the Applicable License with every copy of each Adaptation You Distribute or Publicly Perform; (II) You may not offer or impose any terms on the Adaptation that restrict the terms of the Applicable License or the ability of the recipient of the Adaptation to exercise the rights granted to that recipient under the terms of the Applicable License; (III) You must keep intact all notices that refer to the Applicable License and to the disclaimer of warranties with every copy of the Work as included in the Adaptation You Distribute or Publicly Perform; (IV) when You Distribute or Publicly Perform the Adaptation, You may not impose any effective technological measures on the Adaptation that restrict the ability of a recipient of the Adaptation from You to exercise the rights granted to that recipient under the terms of the Applicable License. This Section 4(b) applies to the Adaptation as incorporated in a Collection, but this does not require the Collection apart from the Adaptation itself to be made subject to the terms of the Applicable License.
1441+ If You Distribute, or Publicly Perform the Work or any Adaptations or Collections, You must, unless a request has been made pursuant to Section 4(a), keep intact all copyright notices for the Work and provide, reasonable to the medium or means You are utilizing: (i) the name of the Original Author (or pseudonym, if applicable) if supplied, and/or if the Original Author and/or Licensor designate another party or parties (e.g., a sponsor institute, publishing entity, journal) for attribution ("Attribution Parties") in Licensor's copyright notice, terms of service or by other reasonable means, the name of such party or parties; (ii) the title of the Work if supplied; (iii) to the extent reasonably practicable, the URI, if any, that Licensor specifies to be associated with the Work, unless such URI does not refer to the copyright notice or licensing information for the Work; and (iv) , consistent with Ssection 3(b), in the case of an Adaptation, a credit identifying the use of the Work in the Adaptation (e.g., "French translation of the Work by Original Author," or "Screenplay based on original Work by Original Author"). The credit required by this Section 4(c) may be implemented in any reasonable manner; provided, however, that in the case of a Adaptation or Collection, at a minimum such credit will appear, if a credit for all contributing authors of the Adaptation or Collection appears, then as part of these credits and in a manner at least as prominent as the credits for the other contributing authors. For the avoidance of doubt, You may only use the credit required by this Section for the purpose of attribution in the manner set out above and, by exercising Your rights under this License, You may not implicitly or explicitly assert or imply any connection with, sponsorship or endorsement by the Original Author, Licensor and/or Attribution Parties, as appropriate, of You or Your use of the Work, without the separate, express prior written permission of the Original Author, Licensor and/or Attribution Parties.
1442+ Except as otherwise agreed in writing by the Licensor or as may be otherwise permitted by applicable law, if You Reproduce, Distribute or Publicly Perform the Work either by itself or as part of any Adaptations or Collections, You must not distort, mutilate, modify or take other derogatory action in relation to the Work which would be prejudicial to the Original Author's honor or reputation. Licensor agrees that in those jurisdictions (e.g. Japan), in which any exercise of the right granted in Section 3(b) of this License (the right to make Adaptations) would be deemed to be a distortion, mutilation, modification or other derogatory action prejudicial to the Original Author's honor and reputation, the Licensor will waive or not assert, as appropriate, this Section, to the fullest extent permitted by the applicable national law, to enable You to reasonably exercise Your right under Section 3(b) of this License (right to make Adaptations) but not otherwise.
1443+ .
1444+ 5. Representations, Warranties and Disclaimer
1445+ .
1446+ UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
1447+ .
1448+ 6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
1449+ .
1450+ 7. Termination
1451+ .
1452+ This License and the rights granted hereunder will terminate automatically upon any breach by You of the terms of this License. Individuals or entities who have received Adaptations or Collections from You under this License, however, will not have their licenses terminated provided such individuals or entities remain in full compliance with those licenses. Sections 1, 2, 5, 6, 7, and 8 will survive any termination of this License.
1453+ Subject to the above terms and conditions, the license granted here is perpetual (for the duration of the applicable copyright in the Work). Notwithstanding the above, Licensor reserves the right to release the Work under different license terms or to stop distributing the Work at any time; provided, however that any such election will not serve to withdraw this License (or any other license that has been, or is required to be, granted under the terms of this License), and this License will continue in full force and effect unless terminated as stated above.
1454+ .
1455+ 8. Miscellaneous
1456+ .
1457+ Each time You Distribute or Publicly Perform the Work or a Collection, the Licensor offers to the recipient a license to the Work on the same terms and conditions as the license granted to You under this License.
1458+ Each time You Distribute or Publicly Perform an Adaptation, Licensor offers to the recipient a license to the original Work on the same terms and conditions as the license granted to You under this License.
1459+ If any provision of this License is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this License, and without further action by the parties to this agreement, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
1460+ No term or provision of this License shall be deemed waived and no breach consented to unless such waiver or consent shall be in writing and signed by the party to be charged with such waiver or consent.
1461+ This License constitutes the entire agreement between the parties with respect to the Work licensed here. There are no understandings, agreements or representations with respect to the Work not specified here. Licensor shall not be bound by any additional provisions that may appear in any communication from You. This License may not be modified without the mutual written agreement of the Licensor and You.
1462+ The rights granted under, and the subject matter referenced, in this License were drafted utilizing the terminology of the Berne Convention for the Protection of Literary and Artistic Works (as amended on September 28, 1979), the Rome Convention of 1961, the WIPO Copyright Treaty of 1996, the WIPO Performances and Phonograms Treaty of 1996 and the Universal Copyright Convention (as revised on July 24, 1971). These rights and subject matter take effect in the relevant jurisdiction in which the License terms are sought to be enforced according to the corresponding provisions of the implementation of those treaty provisions in the applicable national law. If the standard suite of rights granted under applicable copyright law includes additional rights not granted under this License, such additional rights are deemed to be included in the License; this License is not intended to restrict the license of any rights under applicable law.
1463+
1464+License: Expat
1465 Permission is hereby granted, free of charge, to any person
1466 obtaining a copy of this software and associated documentation
1467 files (the "Software"), to deal in the Software without
1468@@ -21,10 +210,10 @@
1469 copies of the Software, and to permit persons to whom the
1470 Software is furnished to do so, subject to the following
1471 conditions:
1472-
1473+ .
1474 The above copyright notice and this permission notice shall be
1475 included in all copies or substantial portions of the Software.
1476-
1477+ .
1478 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
1479 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
1480 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
1481@@ -33,3 +222,16 @@
1482 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
1483 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
1484 OTHER DEALINGS IN THE SOFTWARE.
1485+
1486+License: public-domain
1487+ This was created by unknown people across unknown aeons, and
1488+ changed and updated by lots of more people. It was sung by
1489+ medieval bards, and touched by that Shakespeare dude, and
1490+ possibly even Mary Queen of Scots. Who knows? Nobody knows,
1491+ not even the Shadow knows! There is no evil lurking in the
1492+ minds of anyone here.
1493+ .
1494+ This work is therefore not copyrighted by anyone, and is as
1495+ much in the public domain as anything can be. Truly, utterly,
1496+ totally. Be happy.
1497+
1498
1499=== modified file 'debian/patches/0001-fix-documentation-installation.patch'
1500--- debian/patches/0001-fix-documentation-installation.patch 2011-04-11 12:46:23 +0000
1501+++ debian/patches/0001-fix-documentation-installation.patch 2012-03-27 18:05:23 +0000
1502@@ -1,22 +1,38 @@
1503-From: =?UTF-8?q?Picca=20Fr=C3=A9d=C3=A9ric-Emmanuel?= <picca@synchrotron-soleil.fr>
1504-Date: Thu, 3 Mar 2011 22:39:45 +0100
1505+From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric-Emmanuel=20PICCA?=
1506+ <picca@synchrotron-soleil.fr>
1507+Date: Thu, 3 Nov 2011 15:31:46 +0100
1508 Subject: fix-documentation-installation
1509
1510 ---
1511- spyderlib/config.py | 2 +-
1512- 1 files changed, 1 insertions(+), 1 deletions(-)
1513+ setup.py | 4 ++--
1514+ spyderlib/__init__.py | 1 +
1515+ 2 files changed, 3 insertions(+), 2 deletions(-)
1516
1517-diff --git a/spyderlib/config.py b/spyderlib/config.py
1518-index 3709e3c..8354978 100644
1519---- a/spyderlib/config.py
1520-+++ b/spyderlib/config.py
1521-@@ -28,7 +28,7 @@ DOC_DEV_PATH = osp.join(DATA_DEV_PATH, 'doc')
1522-
1523- # The two following lines are patched when making the debian package:
1524- DATA_PATH = DATA_DEV_PATH # @@@DATA_PATH@@@
1525--DOC_PATH = DOC_DEV_PATH # @@@DOC_PATH@@@
1526-+DOC_PATH = "/usr/share/doc/spyder/html" # @@@DOC_PATH@@@
1527-
1528- EDITABLE_TYPES = [int, long, float, list, dict, tuple, str, unicode, date]
1529- try:
1530+diff --git a/setup.py b/setup.py
1531+index a74961f..b9892f6 100644
1532+--- a/setup.py
1533++++ b/setup.py
1534+@@ -52,8 +52,8 @@ class MyBuildDoc(setup_command.BuildDoc):
1535+ def run(self):
1536+ build = self.get_finalized_command('build')
1537+ sys.path.insert(0, os.path.abspath(build.build_lib))
1538+- dirname = self.distribution.get_command_obj('build').build_purelib
1539+- self.builder_target_dir = osp.join(dirname, 'spyderlib', 'doc')
1540++ #dirname = self.distribution.get_command_obj('build').build_purelib
1541++ #self.builder_target_dir = osp.join(dirname, 'spyderlib', 'doc')
1542+ try:
1543+ setup_command.BuildDoc.run(self)
1544+ except UnicodeDecodeError:
1545+diff --git a/spyderlib/__init__.py b/spyderlib/__init__.py
1546+index 3e72303..717bf75 100644
1547+--- a/spyderlib/__init__.py
1548++++ b/spyderlib/__init__.py
1549+@@ -35,6 +35,7 @@ __forum_url__ = 'http://groups.google.com/group/spyderlib'
1550+ # Dear (Debian, RPM, ...) package makers, please feel free to customize the
1551+ # following path to module's data (images) and translations:
1552+ DATAPATH = LOCALEPATH = DOCPATH = ''
1553++DOCPATH = '/usr/share/doc/python-spyderlib/html'
1554+
1555+ def add_to_distribution(dist):
1556+ """Add package to py2exe/cx_Freeze distribution object
1557 --
1558
1559=== added file 'debian/python-spyderlib.bug-control'
1560--- debian/python-spyderlib.bug-control 1970-01-01 00:00:00 +0000
1561+++ debian/python-spyderlib.bug-control 2012-03-27 18:05:23 +0000
1562@@ -0,0 +1,1 @@
1563+Report-with: python-qt4
1564
1565=== added file 'debian/python-spyderlib.docs'
1566--- debian/python-spyderlib.docs 1970-01-01 00:00:00 +0000
1567+++ debian/python-spyderlib.docs 2012-03-27 18:05:23 +0000
1568@@ -0,0 +1,1 @@
1569+build/sphinx/html
1570\ No newline at end of file
1571
1572=== removed file 'debian/python-spyderlib.links'
1573--- debian/python-spyderlib.links 2011-06-13 12:17:14 +0000
1574+++ debian/python-spyderlib.links 1970-01-01 00:00:00 +0000
1575@@ -1,2 +0,0 @@
1576-/usr/share/javascript/jquery/jquery.js /usr/share/pyshared/spyderlib/doc/_static/jquery.js
1577-/usr/share/pyshared/spyderlib/doc /usr/share/doc/python-spyderlib/html
1578
1579=== added file 'debian/python-spyderlib.preinst'
1580--- debian/python-spyderlib.preinst 1970-01-01 00:00:00 +0000
1581+++ debian/python-spyderlib.preinst 2012-03-27 18:05:23 +0000
1582@@ -0,0 +1,11 @@
1583+#!/bin/sh
1584+
1585+set -e
1586+
1587+if [ "$1" = "upgrade" ] && dpkg --compare-versions "$2" lt-nl 2.1.0-1; then
1588+ if [ -L /usr/share/doc/python-spyderlib/html ]; then
1589+ rm -f /usr/share/doc/python-spyderlib/html
1590+ fi
1591+fi
1592+
1593+#DEBHELPER#
1594\ No newline at end of file
1595
1596=== modified file 'debian/rules'
1597--- debian/rules 2011-04-29 21:19:10 +0000
1598+++ debian/rules 2012-03-27 18:05:23 +0000
1599@@ -1,23 +1,24 @@
1600 #!/usr/bin/make -f
1601 # -*- makefile -*-
1602-# Sample debian/rules that uses debhelper.
1603-# This file was originally written by Joey Hess and Craig Small.
1604-# As a special exception, when this file is copied by dh-make into a
1605-# dh-make output file, you may use that output file without restriction.
1606-# This special exception was added by Craig Small in version 0.37 of dh-make.
1607
1608 # Uncomment this to turn on verbose mode.
1609 #export DH_VERBOSE=1
1610
1611-
1612 DB2MAN = /usr/share/sgml/docbook/stylesheet/xsl/nwalsh/manpages/docbook.xsl
1613 XP = xsltproc -''-nonet -''-param man.charmap.use.subset "0"
1614
1615+# for backport on stable without bpo
1616+WITH_SPHINXDOC = $(shell if [ -x /usr/bin/dh_sphinxdoc ]; then echo "--with sphinxdoc"; fi)
1617+
1618 debian/spyder.1: debian/manpage.xml
1619 $(XP) $(DB2MAN) $<
1620
1621 installman: spyder.1
1622 dh installman
1623
1624+override_dh_clean:
1625+ rm -rf build/sphinx
1626+ dh_clean
1627+
1628 %:
1629- dh $@ --with python2
1630+ dh $@ --with python2 $(WITH_SPHINXDOC)
1631
1632=== added file 'debian/spyder.bug-control'
1633--- debian/spyder.bug-control 1970-01-01 00:00:00 +0000
1634+++ debian/spyder.bug-control 2012-03-27 18:05:23 +0000
1635@@ -0,0 +1,1 @@
1636+Report-with: python-spyderlib python-qt4
1637
1638=== removed file 'debian/spyder.desktop'
1639--- debian/spyder.desktop 2011-06-13 12:17:14 +0000
1640+++ debian/spyder.desktop 1970-01-01 00:00:00 +0000
1641@@ -1,9 +0,0 @@
1642-[Desktop Entry]
1643-Version=1.0
1644-Type=Application
1645-Name=spyder
1646-GenericName=spyder
1647-Comment=Python IDE for scientists
1648-TryExec=spyder
1649-Exec=spyder
1650-Categories=Education;Science;Physics;
1651
1652=== modified file 'debian/spyder.install'
1653--- debian/spyder.install 2011-06-13 12:17:14 +0000
1654+++ debian/spyder.install 2012-03-27 18:05:23 +0000
1655@@ -1,2 +1,2 @@
1656 usr/bin
1657-debian/spyder.desktop /usr/share/applications
1658+scripts/spyder.desktop /usr/share/applications
1659
1660=== modified file 'debian/spyder.links'
1661--- debian/spyder.links 2011-06-13 12:17:14 +0000
1662+++ debian/spyder.links 2012-03-27 18:05:23 +0000
1663@@ -1,1 +1,1 @@
1664-/usr/share/pyshared/spyderlib/doc /usr/share/doc/spyder/html
1665+/usr/share/doc/python-spyderlib/html /usr/share/doc/spyder/html
1666
1667=== added file 'debian/todo'
1668--- debian/todo 1970-01-01 00:00:00 +0000
1669+++ debian/todo 2012-03-27 18:05:23 +0000
1670@@ -0,0 +1,9 @@
1671+upstream:
1672+ - missing license header in
1673+ - spyderlib/scientific_startup.py
1674+ - spyderlib/utils/external/__init__.py
1675+ - spyderlib/widgets/externalshell/introspection.py
1676+ - spyderlib/widgets/ipython.py
1677+ - spyderplugins/io_hdf5.py
1678+ - spyderlib/utils/module_completion.py
1679+ modifié donc il manque ton copyright ?
1680\ No newline at end of file
1681
1682=== modified file 'debian/watch'
1683--- debian/watch 2011-06-13 12:17:14 +0000
1684+++ debian/watch 2012-03-27 18:05:23 +0000
1685@@ -1,6 +1,6 @@
1686 version=3
1687 opts=\
1688-downloadurlmangle=s|.*[?]name=(.*?)&.*|http://spyder.googlecode.com/files/$1|,\
1689+downloadurlmangle=s|.*[?]name=(.*?)&.*|http://spyderlib.googlecode.com/files/$1|,\
1690 filenamemangle=s|[^/]+[?]name=(.*?)&.*|$1| \
1691-http://code.google.com/p/spyder/downloads/detail[?]name=spyder-([0-9.]+).zip&.*
1692+http://code.google.com/p/spyderlib/downloads/detail[?]name=spyder-([\d\.]+(?:rc|beta)*?\d*?).zip&.*
1693
1694
1695=== modified file 'doc/conf.py'
1696--- doc/conf.py 2011-04-29 21:19:10 +0000
1697+++ doc/conf.py 2012-03-27 18:05:23 +0000
1698@@ -45,9 +45,9 @@
1699 # built documents.
1700 #
1701 # The short X.Y version.
1702-version = '2.0'
1703+version = '2.1'
1704 # The full version, including alpha/beta/rc tags.
1705-release = '2.0'
1706+release = '2.1'
1707
1708 # The language for content autogenerated by Sphinx. Refer to documentation
1709 # for a list of supported languages.
1710
1711=== modified file 'doc/debugging.rst'
1712--- doc/debugging.rst 2011-04-11 12:46:23 +0000
1713+++ doc/debugging.rst 2012-03-27 18:05:23 +0000
1714@@ -1,31 +1,31 @@
1715-Debugging
1716-=========
1717-
1718-Debugging in Spyder is supported thanks to the following Python modules:
1719-
1720- * `pdb`: the Python debugger, which is included in Python standard library
1721-
1722- * `winpdb`: a graphical frontend to `pdb`, which is an external package
1723- (in the :doc:`editor`, press F7 to run `winpdb` on the currently edited
1724- script)
1725-
1726-Debugging with pdb
1727-------------------
1728-
1729-The Python debugger is partly integrated in Spyder:
1730-
1731- * simple breakpoints and conditonal breakpoints may be defined in the
1732- :doc:`editor`
1733-
1734- * the current frame (debugging step) is highlighted in the :doc:`editor`
1735-
1736- * at each breakpoint, globals may be accessed through
1737- the :doc:`variableexplorer`
1738-
1739-For a simple, yet quite complete introduction to `pdb`, you may read this:
1740-http://pythonconquerstheuniverse.wordpress.com/category/the-python-debugger/
1741-
1742-
1743-Related plugins:
1744- * :doc:`editor`
1745- * :doc:`console`
1746+Debugging
1747+=========
1748+
1749+Debugging in Spyder is supported thanks to the following Python modules:
1750+
1751+ * `pdb`: the Python debugger, which is included in Python standard library
1752+
1753+ * `winpdb`: a graphical frontend to `pdb`, which is an external package
1754+ (in the :doc:`editor`, press F7 to run `winpdb` on the currently edited
1755+ script)
1756+
1757+Debugging with pdb
1758+------------------
1759+
1760+The Python debugger is partly integrated in Spyder:
1761+
1762+ * simple breakpoints and conditonal breakpoints may be defined in the
1763+ :doc:`editor`
1764+
1765+ * the current frame (debugging step) is highlighted in the :doc:`editor`
1766+
1767+ * at each breakpoint, globals may be accessed through
1768+ the :doc:`variableexplorer`
1769+
1770+For a simple, yet quite complete introduction to `pdb`, you may read this:
1771+http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/
1772+
1773+
1774+Related plugins:
1775+ * :doc:`editor`
1776+ * :doc:`console`
1777
1778=== modified file 'doc/index.rst'
1779--- doc/index.rst 2011-06-13 12:17:14 +0000
1780+++ doc/index.rst 2012-03-27 18:05:23 +0000
1781@@ -16,7 +16,7 @@
1782 debugging console directly in the layout of your graphical user interface.
1783
1784 Spyder websites:
1785- * Downloads, bug reports and feature requests: http://spyder.googlecode.com
1786+ * Downloads, bug reports and feature requests: http://spyderlib.googlecode.com
1787 * Discussions: http://groups.google.com/group/spyderlib
1788
1789
1790
1791=== modified file 'doc/installation.rst'
1792--- doc/installation.rst 2011-06-13 12:17:14 +0000
1793+++ doc/installation.rst 2012-03-27 18:05:23 +0000
1794@@ -1,34 +1,77 @@
1795-Installation
1796-============
1797-
1798-Dependencies
1799-------------
1800-
1801-Requirements:
1802- * Python 2.x (x>=5)
1803- * PyQt4 4.x (x>=4)
1804-
1805-Recommended modules:
1806- * pyflakes >v0.3.0 (real-time code analysis)
1807- * rope >=v0.9.2 (editor code completion, calltips and go-to-definition)
1808- * sphinx >=v0.6 (object inspector's rich text mode)
1809- * numpy (N-dimensional arrays)
1810- * scipy (signal/image processing)
1811- * matplotlib (2D/3D plotting)
1812- * IPython (enhanced Python interpreter)
1813-
1814-Optional modules:
1815- * pylint (code analysis)
1816-
1817-Installation
1818-------------
1819-
1820-From the source package:
1821- `python setup.py install`
1822-
1823-Help and support
1824-----------------
1825-
1826-Spyder websites:
1827- * Downloads, bug reports and feature requests: http://spyder.googlecode.com
1828- * Discussions: http://groups.google.com/group/spyderlib
1829+Installation
1830+============
1831+
1832+Dependencies
1833+------------
1834+
1835+Requirements:
1836+ * Python 2.5+
1837+ * PyQt4 4.4+ or PySide 1.0.8+
1838+
1839+Recommended modules:
1840+ * pyflakes v0.5.0+ (real-time code analysis)
1841+ * rope 0.9.2+ (editor code completion, calltips and go-to-definition)
1842+ * sphinx 0.6+ (object inspector's rich text mode)
1843+ * numpy (N-dimensional arrays)
1844+ * scipy (signal/image processing)
1845+ * matplotlib (2D/3D plotting)
1846+
1847+Optional modules:
1848+ * IPython (enhanced Python interpreter)
1849+ * pylint (code analysis)
1850+ * pep8 (style analysis)
1851+
1852+.. note::
1853+
1854+ Since v2.0, the `QScintilla` library (source code editor widgets for
1855+ `PyQt4`) is no longer needed as Spyder is relying on pure Python/Qt
1856+ features (provided by `PyQt4` or `PySide`).
1857+
1858+
1859+Running from source
1860+-------------------
1861+
1862+It is possible to run Spyder directly from unpacked source folder
1863+using Spyder's bootstrap script:
1864+ `python bootstrap.py`
1865+
1866+This is especially useful for beta-testing, troubleshooting and development
1867+of Spyder itself.
1868+
1869+
1870+Installation
1871+------------
1872+
1873+This section explains how to install the latest *stable* release of Spyder.
1874+If you prefer testing the development version, please use the bootstrap script
1875+(see previous section).
1876+
1877+From the source package (see section 'Building dependencies'), you may
1878+install Spyder using the integrated setup.py script based on Python
1879+standard library `distutils` with the following command:
1880+ `python setup.py install`
1881+
1882+Note that `distutils` does *not* uninstall previous versions of Python
1883+packages: it simply copies files on top of an existing installation.
1884+When using this command, it is thus highly recommended to uninstall
1885+manually any previous version of Spyder by removing the associated
1886+directories ('spyderlib' and 'spyderplugins' in your site-packages
1887+directory).
1888+
1889+From the Python package index, you may simply install Spyder *and*
1890+upgrade an existing installation using `pip`:
1891+http://pypi.python.org/pypi
1892+
1893+But the easiest way to install the last stable release of Spyder is:
1894+ * on Windows, using an executable installer (http://spyderlib.googlecode.com) or through Python(x,y) (http://www.pythonxy.com)
1895+ * on Mac OSX, through MacPorts
1896+ * on GNU/Linux, through your package manager
1897+For more details on supported platforms, please go to http://spyderlib.googlecode.com.
1898+
1899+
1900+Help and support
1901+----------------
1902+
1903+Spyder websites:
1904+ * Downloads, bug reports and feature requests: http://spyderlib.googlecode.com
1905+ * Discussions: http://groups.google.com/group/spyderlib
1906
1907=== modified file 'doc/options.rst'
1908--- doc/options.rst 2011-04-29 21:19:10 +0000
1909+++ doc/options.rst 2012-03-27 18:05:23 +0000
1910@@ -9,7 +9,8 @@
1911 -l, --light Light version (all add-ons are disabled)
1912 --session=STARTUP_SESSION
1913 Startup session
1914- --reset Reset to default session
1915+ --defaults Reset to configuration settings to defaults
1916+ --reset Remove all configuration files!
1917 --optimize Optimize Spyder bytecode (this may require
1918 administrative privileges)
1919 -w WORKING_DIRECTORY, --workdir=WORKING_DIRECTORY
1920@@ -18,4 +19,4 @@
1921 --multithread Internal console is executed in another thread
1922 (separate from main application thread)
1923 --profile Profile mode (internal test, not related with Python
1924- profiling)
1925+ profiling)
1926\ No newline at end of file
1927
1928=== modified file 'doc/overview.rst'
1929--- doc/overview.rst 2011-04-29 21:19:10 +0000
1930+++ doc/overview.rst 2012-03-27 18:05:23 +0000
1931@@ -75,6 +75,6 @@
1932 * :doc:`projectexplorer` (support Pydev project import)
1933
1934
1935-Spyder may also be used as a PyQt4 extension library (module 'spyderlib').
1936-For example, the Python interactive shell widget used in Spyder may be
1937-embedded in your own PyQt4 application.
1938+Spyder may also be used as a PyQt4 or PySide extension library
1939+(module 'spyderlib'). For example, the Python interactive shell widget
1940+used in Spyder may be embedded in your own PyQt4 or PySide application.
1941
1942=== added directory 'scripts'
1943=== added file 'scripts/spyder'
1944--- scripts/spyder 1970-01-01 00:00:00 +0000
1945+++ scripts/spyder 2012-03-27 18:05:23 +0000
1946@@ -0,0 +1,3 @@
1947+#!/usr/bin/env python
1948+from spyderlib import spyder
1949+spyder.main()
1950
1951=== added file 'scripts/spyder.bat'
1952--- scripts/spyder.bat 1970-01-01 00:00:00 +0000
1953+++ scripts/spyder.bat 2012-03-27 18:05:23 +0000
1954@@ -0,0 +1,2 @@
1955+@echo off
1956+python "%~dpn0" %*
1957\ No newline at end of file
1958
1959=== added file 'scripts/spyder.desktop'
1960--- scripts/spyder.desktop 1970-01-01 00:00:00 +0000
1961+++ scripts/spyder.desktop 2012-03-27 18:05:23 +0000
1962@@ -0,0 +1,11 @@
1963+[Desktop Entry]
1964+Version=1.0
1965+Type=Application
1966+Name=Spyder
1967+GenericName=Spyder
1968+Comment=Scientific PYthon Development EnviRonment
1969+TryExec=spyder
1970+Exec=spyder
1971+MimeType=application/x-foo;
1972+Icon=/usr/share/pyshared/spyderlib/images/spyder.svg
1973+Categories=Development;Science;IDE;Qt;
1974
1975=== modified file 'setup.py'
1976--- setup.py 2011-06-13 12:17:14 +0000
1977+++ setup.py 2012-03-27 18:05:23 +0000
1978@@ -1,101 +1,106 @@
1979-# -*- coding: utf-8 -*-
1980-#
1981-# Copyright © 2009-2010 Pierre Raybaut
1982-# Licensed under the terms of the MIT License
1983-# (see spyderlib/__init__.py for details)
1984-
1985-"""
1986-Spyder
1987-======
1988-
1989-The Scientific PYthon Development EnviRonment
1990-"""
1991-
1992-from distutils.core import setup
1993-from distutils.command.build import build
1994-from sphinx import setup_command
1995-import os, os.path as osp, sys
1996-
1997-
1998-def get_package_data(name, extlist):
1999- """Return data files for package *name* with extensions in *extlist*"""
2000- flist = []
2001- # Workaround to replace os.path.relpath (not available until Python 2.6):
2002- offset = len(name)+len(os.pathsep)
2003- for dirpath, _dirnames, filenames in os.walk(name):
2004- for fname in filenames:
2005- if not fname.startswith('.') and osp.splitext(fname)[1] in extlist:
2006- flist.append(osp.join(dirpath, fname)[offset:])
2007- return flist
2008-
2009-def get_subpackages(name):
2010- """Return subpackages of package *name*"""
2011- splist = []
2012- for dirpath, _dirnames, _filenames in os.walk(name):
2013- if osp.isfile(osp.join(dirpath, '__init__.py')):
2014- splist.append(".".join(dirpath.split(os.sep)))
2015- return splist
2016-
2017-# Sphinx build (documentation)
2018-class MyBuild(build):
2019- def has_doc(self):
2020- setup_dir = os.path.dirname(os.path.abspath(__file__))
2021- return os.path.isdir(os.path.join(setup_dir, 'doc'))
2022- sub_commands = build.sub_commands + [('build_doc', has_doc)]
2023-
2024-class MyBuildDoc(setup_command.BuildDoc):
2025- def run(self):
2026- build = self.get_finalized_command('build')
2027- sys.path.insert(0, os.path.abspath(build.build_lib))
2028- dirname = self.distribution.get_command_obj('build').build_purelib
2029- self.builder_target_dir = osp.join(dirname, 'spyderlib', 'doc')
2030- try:
2031- setup_command.BuildDoc.run(self)
2032- except UnicodeDecodeError:
2033- print >>sys.stderr, "ERROR: unable to build documentation because Sphinx do not handle source path with non-ASCII characters. Please try to move the source package to another location (path with *only* ASCII characters)."
2034- sys.path.pop(0)
2035-
2036-cmdclass = {'build': MyBuild, 'build_doc': MyBuildDoc}
2037-
2038-
2039-NAME = 'spyder'
2040-LIBNAME = 'spyderlib'
2041-from spyderlib import __version__
2042-GOOGLE_URL = 'http://%s.googlecode.com' % NAME
2043-
2044-setup(name=NAME,
2045- version=__version__,
2046- description='Scientific PYthon Development EnviRonment',
2047- long_description="""The spyderlib module provides powerful console and
2048-editor related widgets to your PyQt4 application. It also includes a
2049-Scientific Python development environment named 'Spyder', an alternative to
2050-IDLE with powerful interactive features such as variable explorer (with
2051-GUI-based editors for dictionaries, lists, NumPy arrays, etc.), object
2052-inspector, online help, and a lot more.""",
2053- download_url='%s/files/%s-%s.zip' % (GOOGLE_URL, NAME, __version__),
2054- author="Pierre Raybaut",
2055- url=GOOGLE_URL,
2056- license='MIT',
2057- keywords='PyQt4 editor shell console widgets IDE',
2058- platforms=['any'],
2059- packages=get_subpackages(LIBNAME)+get_subpackages('spyderplugins'),
2060- package_data={LIBNAME:
2061- get_package_data(LIBNAME, ('.mo', '.svg', '.png', '.css')),
2062- 'spyderplugins':
2063- get_package_data('spyderplugins', ('.mo', '.svg', '.png'))},
2064- requires=["pyflakes (>0.3.0)", "rope (>0.9.0)", "sphinx (>0.6.0)",
2065- "PyQt4 (>4.3)"],
2066- scripts=['spyder', 'spyder.bat'] if os.name == 'nt' else ['spyder'],
2067- classifiers=['License :: OSI Approved :: MIT License',
2068- 'Operating System :: MacOS',
2069- 'Operating System :: Microsoft :: Windows',
2070- 'Operating System :: OS Independent',
2071- 'Operating System :: POSIX',
2072- 'Operating System :: Unix',
2073- 'Programming Language :: Python :: 2.5',
2074- 'Programming Language :: Python :: 2.6',
2075- 'Programming Language :: Python :: 2.7',
2076- 'Development Status :: 5 - Production/Stable',
2077- 'Topic :: Scientific/Engineering',
2078- 'Topic :: Software Development :: Widget Sets'],
2079- cmdclass=cmdclass)
2080+# -*- coding: utf-8 -*-
2081+#
2082+# Copyright © 2009-2010 Pierre Raybaut
2083+# Licensed under the terms of the MIT License
2084+# (see spyderlib/__init__.py for details)
2085+
2086+"""
2087+Spyder
2088+======
2089+
2090+The Scientific PYthon Development EnviRonment
2091+"""
2092+
2093+from distutils.core import setup
2094+from distutils.command.build import build
2095+from sphinx import setup_command
2096+import os
2097+import os.path as osp
2098+import sys
2099+
2100+
2101+def get_package_data(name, extlist):
2102+ """Return data files for package *name* with extensions in *extlist*"""
2103+ flist = []
2104+ # Workaround to replace os.path.relpath (not available until Python 2.6):
2105+ offset = len(name)+len(os.pathsep)
2106+ for dirpath, _dirnames, filenames in os.walk(name):
2107+ for fname in filenames:
2108+ if not fname.startswith('.') and osp.splitext(fname)[1] in extlist:
2109+ flist.append(osp.join(dirpath, fname)[offset:])
2110+ return flist
2111+
2112+
2113+def get_subpackages(name):
2114+ """Return subpackages of package *name*"""
2115+ splist = []
2116+ for dirpath, _dirnames, _filenames in os.walk(name):
2117+ if osp.isfile(osp.join(dirpath, '__init__.py')):
2118+ splist.append(".".join(dirpath.split(os.sep)))
2119+ return splist
2120+
2121+
2122+# Sphinx build (documentation)
2123+class MyBuild(build):
2124+ def has_doc(self):
2125+ setup_dir = os.path.dirname(os.path.abspath(__file__))
2126+ return os.path.isdir(os.path.join(setup_dir, 'doc'))
2127+ sub_commands = build.sub_commands + [('build_doc', has_doc)]
2128+
2129+
2130+class MyBuildDoc(setup_command.BuildDoc):
2131+ def run(self):
2132+ build = self.get_finalized_command('build')
2133+ sys.path.insert(0, os.path.abspath(build.build_lib))
2134+ #dirname = self.distribution.get_command_obj('build').build_purelib
2135+ #self.builder_target_dir = osp.join(dirname, 'spyderlib', 'doc')
2136+ try:
2137+ setup_command.BuildDoc.run(self)
2138+ except UnicodeDecodeError:
2139+ print >>sys.stderr, "ERROR: unable to build documentation because Sphinx do not handle source path with non-ASCII characters. Please try to move the source package to another location (path with *only* ASCII characters)."
2140+ sys.path.pop(0)
2141+
2142+
2143+cmdclass = {'build': MyBuild, 'build_doc': MyBuildDoc}
2144+
2145+
2146+NAME = 'spyder'
2147+LIBNAME = 'spyderlib'
2148+from spyderlib import __version__, __project_url__
2149+
2150+setup(name=NAME,
2151+ version=__version__,
2152+ description='Scientific PYthon Development EnviRonment',
2153+ long_description="""The spyderlib library provides powerful console and
2154+editor related widgets to your Qt application (PyQt4 or PySide). It also
2155+includes a Scientific Python development environment named 'Spyder', an
2156+alternative to IDLE with powerful interactive features such as variable
2157+explorer (with GUI-based editors for dictionaries, lists, NumPy arrays, etc.),
2158+object inspector, online help, and a lot more.""",
2159+ download_url='%s/files/%s-%s.zip' % (__project_url__, NAME, __version__),
2160+ author="Pierre Raybaut",
2161+ url=__project_url__,
2162+ license='MIT',
2163+ keywords='PyQt4 PySide editor shell console widgets IDE',
2164+ platforms=['any'],
2165+ packages=get_subpackages(LIBNAME)+get_subpackages('spyderplugins'),
2166+ package_data={LIBNAME:
2167+ get_package_data(LIBNAME, ('.mo', '.svg', '.png', '.css')),
2168+ 'spyderplugins':
2169+ get_package_data('spyderplugins', ('.mo', '.svg', '.png'))},
2170+ requires=["rope (>=0.9.2)", "sphinx (>=0.6.0)", "PyQt4 (>=4.4)"],
2171+ scripts=[osp.join('scripts', fname) for fname in
2172+ (['spyder', 'spyder.bat'] if os.name == 'nt' else ['spyder'])],
2173+ classifiers=['License :: OSI Approved :: MIT License',
2174+ 'Operating System :: MacOS',
2175+ 'Operating System :: Microsoft :: Windows',
2176+ 'Operating System :: OS Independent',
2177+ 'Operating System :: POSIX',
2178+ 'Operating System :: Unix',
2179+ 'Programming Language :: Python :: 2.5',
2180+ 'Programming Language :: Python :: 2.6',
2181+ 'Programming Language :: Python :: 2.7',
2182+ 'Development Status :: 5 - Production/Stable',
2183+ 'Topic :: Scientific/Engineering',
2184+ 'Topic :: Software Development :: Widget Sets'],
2185+ cmdclass=cmdclass)
2186
2187=== removed file 'spyder'
2188--- spyder 2010-03-25 17:30:45 +0000
2189+++ spyder 1970-01-01 00:00:00 +0000
2190@@ -1,3 +0,0 @@
2191-#!/usr/bin/env python
2192-from spyderlib import spyder
2193-spyder.main()
2194
2195=== removed file 'spyder.bat'
2196--- spyder.bat 2011-04-29 21:19:10 +0000
2197+++ spyder.bat 1970-01-01 00:00:00 +0000
2198@@ -1,2 +0,0 @@
2199-@echo off
2200-python "%~dpn0" %*
2201\ No newline at end of file
2202
2203=== modified file 'spyderlib/__init__.py'
2204--- spyderlib/__init__.py 2011-06-13 12:17:14 +0000
2205+++ spyderlib/__init__.py 2012-03-27 18:05:23 +0000
2206@@ -3,7 +3,7 @@
2207 Spyder License Agreement (MIT License)
2208 --------------------------------------
2209
2210-Copyright (c) 2009-2010 Pierre Raybaut
2211+Copyright (c) 2009-2011 Pierre Raybaut
2212
2213 Permission is hereby granted, free of charge, to any person
2214 obtaining a copy of this software and associated documentation
2215@@ -27,7 +27,23 @@
2216 OTHER DEALINGS IN THE SOFTWARE.
2217 """
2218
2219-__version__ = '2.0.12'
2220+__version__ = '2.1.8'
2221 __license__ = __doc__
2222-
2223-#FIXME: Internal console MT: for i in range(100000): print i -> bug
2224+__project_url__ = 'http://code.google.com/p/spyderlib'
2225+__forum_url__ = 'http://groups.google.com/group/spyderlib'
2226+
2227+# Dear (Debian, RPM, ...) package makers, please feel free to customize the
2228+# following path to module's data (images) and translations:
2229+DATAPATH = LOCALEPATH = DOCPATH = ''
2230+DOCPATH = '/usr/share/doc/python-spyderlib/html'
2231+
2232+def add_to_distribution(dist):
2233+ """Add package to py2exe/cx_Freeze distribution object
2234+ Extension to guidata.disthelpers"""
2235+ dist.add_modules('PyQt4')
2236+ for _modname in ('spyderlib', 'spyderplugins'):
2237+ dist.add_module_data_files(_modname, ("", ),
2238+ ('.png', '.svg', '.html', '.png', '.txt',
2239+ '.js', '.inv', '.ico', '.css', '.doctree',
2240+ '.qm', '.py',),
2241+ copy_to_root=False)
2242
2243=== added file 'spyderlib/baseconfig.py'
2244--- spyderlib/baseconfig.py 1970-01-01 00:00:00 +0000
2245+++ spyderlib/baseconfig.py 2012-03-27 18:05:23 +0000
2246@@ -0,0 +1,175 @@
2247+# -*- coding: utf-8 -*-
2248+#
2249+# Copyright © 2011 Pierre Raybaut
2250+# Licensed under the terms of the MIT License
2251+# (see spyderlib/__init__.py for details)
2252+
2253+"""
2254+Spyder base configuration management
2255+
2256+As opposed to spyderlib/config.py, this configuration script deals
2257+exclusively with non-GUI features configuration only
2258+(in other words, we won't import any PyQt object here, avoiding any
2259+sip API incompatibility issue in spyderlib's non-gui modules)
2260+"""
2261+
2262+import os.path as osp
2263+import os
2264+import sys
2265+
2266+# Local imports
2267+from spyderlib import __version__
2268+
2269+
2270+#==============================================================================
2271+# Debug helpers
2272+#==============================================================================
2273+STDOUT = sys.stdout
2274+STDERR = sys.stderr
2275+DEBUG = bool(os.environ.get('SPYDER_DEBUG', ''))
2276+
2277+
2278+#==============================================================================
2279+# Configuration paths
2280+#==============================================================================
2281+SUBFOLDER = '.spyder%s' % __version__.split('.')[0]
2282+
2283+def get_conf_path(filename=None):
2284+ """Return absolute path for configuration file with specified filename"""
2285+ from spyderlib import userconfig
2286+ conf_dir = osp.join(userconfig.get_home_dir(), SUBFOLDER)
2287+ if not osp.isdir(conf_dir):
2288+ os.mkdir(conf_dir)
2289+ if filename is None:
2290+ return conf_dir
2291+ else:
2292+ return osp.join(conf_dir, filename)
2293+
2294+
2295+def get_module_path(modname):
2296+ """Return module *modname* base path"""
2297+ return osp.abspath(osp.dirname(sys.modules[modname].__file__))
2298+
2299+
2300+def get_module_data_path(modname, relpath=None, attr_name='DATAPATH'):
2301+ """Return module *modname* data path
2302+ Note: relpath is ignored if module has an attribute named *attr_name*
2303+
2304+ Handles py2exe/cx_Freeze distributions"""
2305+ datapath = getattr(sys.modules[modname], attr_name, '')
2306+ if datapath:
2307+ return datapath
2308+ else:
2309+ datapath = get_module_path(modname)
2310+ parentdir = osp.join(datapath, osp.pardir)
2311+ if osp.isfile(parentdir):
2312+ # Parent directory is not a directory but the 'library.zip' file:
2313+ # this is either a py2exe or a cx_Freeze distribution
2314+ datapath = osp.abspath(osp.join(osp.join(parentdir, osp.pardir),
2315+ modname))
2316+ if relpath is not None:
2317+ datapath = osp.abspath(osp.join(datapath, relpath))
2318+ return datapath
2319+
2320+
2321+def get_module_source_path(modname, basename=None):
2322+ """Return module *modname* source path
2323+ If *basename* is specified, return *modname.basename* path where
2324+ *modname* is a package containing the module *basename*
2325+
2326+ *basename* is a filename (not a module name), so it must include the
2327+ file extension: .py or .pyw
2328+
2329+ Handles py2exe/cx_Freeze distributions"""
2330+ srcpath = get_module_path(modname)
2331+ parentdir = osp.join(srcpath, osp.pardir)
2332+ if osp.isfile(parentdir):
2333+ # Parent directory is not a directory but the 'library.zip' file:
2334+ # this is either a py2exe or a cx_Freeze distribution
2335+ srcpath = osp.abspath(osp.join(osp.join(parentdir, osp.pardir),
2336+ modname))
2337+ if basename is not None:
2338+ srcpath = osp.abspath(osp.join(srcpath, basename))
2339+ return srcpath
2340+
2341+
2342+def is_py2exe_or_cx_Freeze():
2343+ """Return True if this is a py2exe/cx_Freeze distribution of Spyder"""
2344+ return osp.isfile(osp.join(get_module_path('spyderlib'), osp.pardir))
2345+
2346+
2347+SCIENTIFIC_STARTUP = get_module_source_path('spyderlib',
2348+ 'scientific_startup.py')
2349+
2350+
2351+#==============================================================================
2352+# Translations
2353+#==============================================================================
2354+def get_translation(modname, dirname=None):
2355+ """Return translation callback for module *modname*"""
2356+ if dirname is None:
2357+ dirname = modname
2358+ locale_path = get_module_data_path(dirname, relpath="locale",
2359+ attr_name='LOCALEPATH')
2360+ # fixup environment var LANG in case it's unknown
2361+ if "LANG" not in os.environ:
2362+ import locale
2363+ lang = locale.getdefaultlocale()[0]
2364+ if lang is not None:
2365+ os.environ["LANG"] = lang
2366+ import gettext
2367+ try:
2368+ _trans = gettext.translation(modname, locale_path, codeset="utf-8")
2369+ lgettext = _trans.lgettext
2370+ def translate_gettext(x):
2371+ if isinstance(x, unicode):
2372+ x = x.encode("utf-8")
2373+ return unicode(lgettext(x), "utf-8")
2374+ return translate_gettext
2375+ except IOError, _e: # analysis:ignore
2376+ #print "Not using translations (%s)" % _e
2377+ def translate_dumb(x):
2378+ if not isinstance(x, unicode):
2379+ return unicode(x, "utf-8")
2380+ return x
2381+ return translate_dumb
2382+
2383+# Translation callback
2384+_ = get_translation("spyderlib")
2385+
2386+
2387+#==============================================================================
2388+# Namespace Browser (Variable Explorer) configuration management
2389+#==============================================================================
2390+
2391+def get_supported_types():
2392+ """Return a dictionnary containing types lists supported by the
2393+ namespace browser:
2394+ dict(picklable=picklable_types, editable=editables_types)
2395+
2396+ See:
2397+ get_remote_data function in spyderlib/widgets/externalshell/monitor.py
2398+ get_internal_shell_filter method in namespacebrowser.py"""
2399+ from datetime import date
2400+ editable_types = [int, long, float, list, dict, tuple, str, unicode, date]
2401+ try:
2402+ from numpy import ndarray, matrix
2403+ editable_types += [ndarray, matrix]
2404+ except ImportError:
2405+ pass
2406+ picklable_types = editable_types[:]
2407+ try:
2408+ from spyderlib.pil_patch import Image
2409+ editable_types.append(Image.Image)
2410+ except ImportError:
2411+ pass
2412+ return dict(picklable=picklable_types, editable=editable_types)
2413+
2414+# Variable explorer display / check all elements data types for sequences:
2415+# (when saving the variable explorer contents, check_all is True,
2416+# see widgets/externalshell/namespacebrowser.py:NamespaceBrowser.save_data)
2417+CHECK_ALL = False #XXX: If True, this should take too much to compute...
2418+
2419+EXCLUDED_NAMES = ['nan', 'inf', 'infty', 'little_endian', 'colorbar_doc',
2420+ 'typecodes', '__builtins__', '__main__', '__doc__', 'NaN',
2421+ 'Inf', 'Infinity', 'sctypes']
2422\ No newline at end of file
2423
2424=== modified file 'spyderlib/config.py'
2425--- spyderlib/config.py 2011-04-29 21:19:10 +0000
2426+++ spyderlib/config.py 2012-03-27 18:05:23 +0000
2427@@ -1,11 +1,12 @@
2428 # -*- coding: utf-8 -*-
2429 #
2430-# Copyright © 2009-2010 Pierre Raybaut
2431+# Copyright © 2009-2011 Pierre Raybaut
2432 # Licensed under the terms of the MIT License
2433 # (see spyderlib/__init__.py for details)
2434
2435 """
2436-Spyder configuration management
2437+Spyder GUI-related configuration management
2438+(for non-GUI configuration, see spyderlib/baseconfig.py)
2439
2440 Important note regarding shortcuts:
2441 For compatibility with QWERTZ keyboards, one must avoid using the following
2442@@ -13,66 +14,97 @@
2443 Ctrl + Alt + Q, W, F, G, Y, X, C, V, B, N
2444 """
2445
2446-import os, sys, os.path as osp
2447-from datetime import date
2448-from PyQt4.QtGui import QLabel, QIcon, QPixmap, QFont, QFontDatabase
2449+import os
2450+import sys
2451+import os.path as osp
2452+
2453+from spyderlib.qt.QtGui import QLabel, QIcon, QPixmap, QFont, QFontDatabase
2454
2455 # Local import
2456-from userconfig import UserConfig, get_home_dir, NoDefault
2457-
2458-DATA_DEV_PATH = osp.dirname(__file__)
2459-if not osp.isdir(DATA_DEV_PATH):
2460- # Assuming py2exe distribution
2461- DATA_DEV_PATH = osp.join(sys.prefix, "spyderlib")
2462-DOC_DEV_PATH = osp.join(DATA_DEV_PATH, 'doc')
2463-
2464-# The two following lines are patched when making the debian package:
2465-DATA_PATH = DATA_DEV_PATH # @@@DATA_PATH@@@
2466-DOC_PATH = "/usr/share/doc/spyder/html" # @@@DOC_PATH@@@
2467-
2468-EDITABLE_TYPES = [int, long, float, list, dict, tuple, str, unicode, date]
2469-try:
2470- from numpy import ndarray, matrix
2471- EDITABLE_TYPES += [ndarray, matrix]
2472-except ImportError:
2473- pass
2474-PICKLABLE_TYPES = EDITABLE_TYPES[:]
2475-try:
2476- from PIL.Image import Image
2477- EDITABLE_TYPES.append(Image)
2478-except ImportError:
2479- pass
2480-
2481-# Max number of filter iterations for worskpace display:
2482-# (for workspace saving, itermax == -1, see Workspace.save)
2483-ITERMAX = -1 #XXX: To be adjusted if it takes too much to compute... 2, 3?
2484-
2485-EXCLUDED = ['nan', 'inf', 'infty', 'little_endian', 'colorbar_doc', 'typecodes',
2486- '__builtins__', '__main__', '__doc__']
2487-
2488-def type2str(types):
2489- """Convert types to strings"""
2490- return [typ.__name__ for typ in types]
2491-
2492-def str2type(strings):
2493- """Convert strings to types"""
2494- return tuple( [eval(string) for string in strings] )
2495+from spyderlib.userconfig import UserConfig, get_home_dir, NoDefault
2496+from spyderlib.baseconfig import (SUBFOLDER, CHECK_ALL, EXCLUDED_NAMES,
2497+ get_module_data_path, _)
2498+from spyderlib.utils import iofuncs, codeanalysis
2499+
2500
2501 SANS_SERIF = ['Sans Serif', 'DejaVu Sans', 'Bitstream Vera Sans',
2502- 'Bitstream Charter', 'Lucida Grande', 'Verdana', 'Geneva',
2503- 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'sans-serif']
2504-SANS_SERIF.insert(0, unicode(QFont().family()))
2505+ 'Bitstream Charter', 'Times', 'Lucida Grande', 'Calibri',
2506+ 'MS Shell Dlg 2', 'Verdana', 'Geneva', 'Lucid', 'Arial',
2507+ 'Helvetica', 'Avant Garde', 'sans-serif']
2508
2509-MONOSPACE = ['Monospace', 'DejaVu Sans Mono', 'Consolas', 'Courier New',
2510+MONOSPACE = ['Monospace', 'DejaVu Sans Mono', 'Consolas', 'Monaco',
2511 'Bitstream Vera Sans Mono', 'Andale Mono', 'Liberation Mono',
2512- 'Monaco', 'Courier', 'monospace', 'Fixed', 'Terminal']
2513-MEDIUM = 10
2514-SMALL = 9
2515+ 'Courier New', 'Courier', 'monospace', 'Fixed', 'Terminal']
2516+
2517+if sys.platform == 'darwin':
2518+ BIG = MEDIUM = SMALL = 12
2519+elif os.name == 'nt':
2520+ BIG = 12
2521+ MEDIUM = 10
2522+ SMALL = 9
2523+else:
2524+ BIG = 12
2525+ MEDIUM = 9
2526+ SMALL = 9
2527+
2528+# Extensions supported by Spyder's Editor
2529+EDIT_FILETYPES = (
2530+ (_("Python files"), ('.py', '.pyw', '.ipy')),
2531+ (_("Cython/Pyrex files"), ('.pyx', '.pxd', '.pxi')),
2532+ (_("C files"), ('.c', '.h')),
2533+ (_("C++ files"), ('.cc', '.cpp', '.cxx', '.h', '.hh', '.hpp', '.hxx')),
2534+ (_("OpenCL files"), ('.cl', )),
2535+ (_("Fortran files"), ('.f', '.for', '.f90', '.f95', '.f2k')),
2536+ (_("Patch and diff files"), ('.patch', '.diff', '.rej')),
2537+ (_("Batch files"), ('.bat', '.cmd')),
2538+ (_("Text files"), ('.txt',)),
2539+ (_("reStructured Text files"), ('.txt', '.rst')),
2540+ (_("gettext files"), ('.po', '.pot')),
2541+ (_("Web page files"), ('.css', '.htm', '.html',)),
2542+ (_("Configuration files"), ('.properties', '.session', '.ini', '.inf',
2543+ '.reg', '.cfg', '.desktop')),
2544+ )
2545+
2546+def _get_filters(filetypes):
2547+ filters = []
2548+ for title, ftypes in filetypes:
2549+ filters.append("%s (*%s)" % (title, " *".join(ftypes)))
2550+ filters.append("%s (*)" % _("All files"))
2551+ return "\n".join(filters)
2552+
2553+def _get_extensions(filetypes):
2554+ ftype_list = []
2555+ for _title, ftypes in filetypes:
2556+ ftype_list += list(ftypes)
2557+ return ftype_list
2558+
2559+EDIT_FILTERS = _get_filters(EDIT_FILETYPES)
2560+EDIT_EXT = _get_extensions(EDIT_FILETYPES)+['']
2561+
2562+# Extensions supported by Spyder's Variable explorer
2563+IMPORT_EXT = iofuncs.iofunctions.load_extensions.values()
2564+
2565+# Extensions that should be visible in Spyder's file/project explorers
2566+SHOW_EXT = ['.png', '.ico', '.svg']
2567+
2568+# Extensions supported by Spyder (Editor or Variable explorer)
2569+VALID_EXT = EDIT_EXT+IMPORT_EXT
2570+
2571+# Find in files include/exclude patterns
2572+INCLUDE_PATTERNS = [r'|'.join(['\\'+_ext+r'$' for _ext in EDIT_EXT if _ext])+\
2573+ r'|README|INSTALL',
2574+ r'\.pyw?$|\.ipy$|\.txt$|\.rst$',
2575+ '.']
2576+EXCLUDE_PATTERNS = [r'\.pyc$|\.pyo$|\.orig$|\.hg|\.svn|build',
2577+ r'\.pyc$|\.pyo$|\.orig$|\.hg|\.svn']
2578+
2579+# Name filters for file/project explorers (excluding files without extension)
2580+NAME_FILTERS = ['*' + _ext for _ext in VALID_EXT + SHOW_EXT if _ext]+\
2581+ ['README', 'INSTALL', 'LICENSE', 'CHANGELOG']
2582
2583 DEFAULTS = [
2584 ('main',
2585 {
2586- 'translation': True,
2587 'vertical_dockwidget_titlebars': False,
2588 'vertical_tabs': False,
2589 'animated_docks': True,
2590@@ -85,6 +117,10 @@
2591 'lightwindow/is_maximized': False,
2592 'lightwindow/is_fullscreen': False,
2593 }),
2594+ ('quick_layouts',
2595+ {
2596+ 'place_holder': '',
2597+ }),
2598 ('editor_appearance',
2599 {
2600 'cursor/width': 2,
2601@@ -151,33 +187,38 @@
2602 'show_elapsed_time': True,
2603 'show_icontext': False,
2604 'monitor/enabled': True,
2605- 'mpl_patch/enabled': True,
2606- 'mpl_patch/backend': 'Qt4Agg',
2607+ 'qt/install_inputhook': os.name == 'nt' \
2608+ or os.environ.get('QT_API') == 'pyside',
2609+ 'qt/api': 'default',
2610+ 'pyqt/api_version': 0,
2611+ 'pyqt/ignore_sip_setapi_errors': False,
2612+ 'matplotlib/patch': True,
2613+ 'matplotlib/backend/enabled': True,
2614+ 'matplotlib/backend/value': 'Qt4Agg',
2615 'umd/enabled': True,
2616 'umd/verbose': True,
2617 'umd/namelist': ['guidata', 'guiqwt'],
2618 'light_background': True,
2619 'ipython_set_color': True,
2620- 'remove_pyqt_inputhook': os.name == 'nt',
2621- 'ignore_sip_setapi_errors': True,
2622+ 'merge_output_channels': os.name != 'nt',
2623+ 'colorize_sys_stderr': os.name != 'nt',
2624 }),
2625 ('variable_explorer',
2626 {
2627 'shortcut': "Ctrl+Shift+V",
2628 'autorefresh': True,
2629 'autorefresh/timeout': 2000,
2630- 'editable_types': type2str(EDITABLE_TYPES),
2631- 'picklable_types': type2str(PICKLABLE_TYPES),
2632- 'itermax': ITERMAX,
2633- 'excluded_names': EXCLUDED,
2634+ 'check_all': CHECK_ALL,
2635+ 'excluded_names': EXCLUDED_NAMES,
2636 'exclude_private': True,
2637- 'exclude_upper': True,
2638+ 'exclude_uppercase': True,
2639+ 'exclude_capitalized': False,
2640 'exclude_unsupported': True,
2641 'inplace': False,
2642 'truncate': True,
2643 'minmax': False,
2644 'collvalue': False,
2645- 'remote_editing': True,
2646+ 'remote_editing': False,
2647 }),
2648 ('editor',
2649 {
2650@@ -192,19 +233,22 @@
2651 'font/bold': False,
2652 'wrap': False,
2653 'wrapflag': True,
2654- 'code_analysis': True,
2655+ 'code_analysis/pyflakes': True,
2656+ 'code_analysis/pep8': False,
2657 'todo_list': True,
2658 'realtime_analysis': True,
2659 'realtime_analysis/timeout': 2500,
2660 'outline_explorer': True,
2661 'line_numbers': True,
2662 'edge_line': True,
2663- 'edge_line_column': 80,
2664+ 'edge_line_column': 79,
2665 'toolbox_panel': True,
2666 'calltips': True,
2667 'go_to_definition': True,
2668 'close_parentheses': True,
2669 'auto_unindent': True,
2670+ 'indent_chars': '* *',
2671+ 'tab_stop_width': 40,
2672 'object_inspector': True,
2673 'codecompletion/auto': True,
2674 'codecompletion/enter_key': True,
2675@@ -215,6 +259,8 @@
2676 'intelligent_backspace': True,
2677 'highlight_current_line': True,
2678 'occurence_highlighting': True,
2679+ 'occurence_highlighting/timeout': 1500,
2680+ 'always_remove_trailing_spaces': False,
2681 'fullpath_sorting': True,
2682 'show_tab_bar': True,
2683 'max_recent_files': 20,
2684@@ -229,6 +275,7 @@
2685 'font/italic': False,
2686 'font/bold': False,
2687 'wrap': True,
2688+ 'go_to_eof': True,
2689 }),
2690 ('inspector',
2691 {
2692@@ -240,7 +287,7 @@
2693 'font/italic': False,
2694 'font/bold': False,
2695 'rich_text/font/family': SANS_SERIF,
2696- 'rich_text/font/size': 11,
2697+ 'rich_text/font/size': BIG,
2698 'rich_text/font/italic': False,
2699 'rich_text/font/bold': False,
2700 'wrap': True,
2701@@ -253,10 +300,17 @@
2702 'zoom_factor': .8,
2703 'max_history_entries': 20,
2704 }),
2705+ ('outline_explorer',
2706+ {
2707+ 'shortcut': "Ctrl+Shift+O",
2708+ 'enable': True,
2709+ }),
2710 ('project_explorer',
2711 {
2712 'shortcut': "Ctrl+Shift+P",
2713 'enable': True,
2714+ 'name_filters': NAME_FILTERS,
2715+ 'show_all': False,
2716 }),
2717 ('arrayeditor',
2718 {
2719@@ -283,11 +337,7 @@
2720 {
2721 'enable': True,
2722 'wrap': True,
2723- 'name_filters': ['*.py', '*.pyw', '*.ipy', '*.pth',
2724- '*.npy', '*.mat', '*.spydata',
2725- '*.txt', '*.csv', '*.dat'],
2726- 'valid_filetypes': ['', '.py', '.pyw', '.ipy', '.spydata', '.npy',
2727- '.pth', '.txt', '.csv', '.mat', '.h5'],
2728+ 'name_filters': NAME_FILTERS,
2729 'show_hidden': True,
2730 'show_all': False,
2731 'show_toolbar': True,
2732@@ -297,13 +347,13 @@
2733 {
2734 'enable': True,
2735 'supported_encodings': ["utf-8", "iso-8859-1", "cp1252"],
2736- 'include': [r'\.pyw?$|\.ipy$|\.txt$|\.c$|\.cpp$|\.h$|\.hpp$|\.f$|\.ini$', '.'],
2737+ 'include': INCLUDE_PATTERNS,
2738 'include_regexp': True,
2739- 'exclude': [r'\.pyc$|\.pyo$|\.orig$|\.hg|\.svn'],
2740+ 'exclude': EXCLUDE_PATTERNS,
2741 'exclude_regexp': True,
2742 'search_text_regexp': True,
2743 'search_text': [''],
2744- 'search_text_samples': [r'# ?TODO|# ?FIXME|# ?XXX|# ?HINT|# ?TIP'],
2745+ 'search_text_samples': [codeanalysis.TASKS_PATTERN],
2746 'in_python_path': False,
2747 'more_options': True,
2748 }),
2749@@ -311,34 +361,14 @@
2750
2751 DEV = not __file__.startswith(sys.prefix)
2752 DEV = False
2753-from spyderlib import __version__
2754-_subfolder = '.spyder%s' % __version__.split('.')[0]
2755-CONF = UserConfig('spyder', defaults=DEFAULTS, load=(not DEV), version='2.0.6',
2756- subfolder=_subfolder, backup=True, raw_mode=True)
2757+CONF = UserConfig('spyder', defaults=DEFAULTS, load=(not DEV), version='2.4.0',
2758+ subfolder=SUBFOLDER, backup=True, raw_mode=True)
2759 # Removing old .spyder.ini location:
2760 old_location = osp.join(get_home_dir(), '.spyder.ini')
2761 if osp.isfile(old_location):
2762 os.remove(old_location)
2763
2764
2765-# Translation support
2766-if CONF.get('main', 'translation'):
2767- from spyderlib.utils.translations import get_translation
2768- _ = get_translation("spyderlib")
2769-else:
2770- _ = lambda x: x
2771-
2772-
2773-def get_conf_path(filename=None):
2774- """Return absolute path for configuration file with specified filename"""
2775- conf_dir = osp.join(get_home_dir(), _subfolder)
2776- if not osp.isdir(conf_dir):
2777- os.mkdir(conf_dir)
2778- if filename is None:
2779- return conf_dir
2780- else:
2781- return osp.join(conf_dir, filename)
2782-
2783 IMG_PATH = []
2784 def add_image_path(path):
2785 if not osp.isdir(path):
2786@@ -349,9 +379,14 @@
2787 for dir in dirs:
2788 IMG_PATH.append(osp.join(path, dir))
2789
2790-add_image_path(osp.join(DATA_PATH, 'images'))
2791-
2792-def get_image_path( name, default="not_found.png" ):
2793+add_image_path(get_module_data_path('spyderlib', relpath='images'))
2794+
2795+from spyderlib.otherplugins import PLUGIN_PATH
2796+if PLUGIN_PATH is not None:
2797+ add_image_path(osp.join(PLUGIN_PATH, 'images'))
2798+
2799+
2800+def get_image_path(name, default="not_found.png"):
2801 """Return image absolute path"""
2802 for img_path in IMG_PATH:
2803 full_path = osp.join(img_path, name)
2804@@ -476,31 +511,3 @@
2805 set_default_color_scheme(_name, replace=False)
2806 CUSTOM_COLOR_SCHEME_NAME = "Custom"
2807 set_color_scheme(CUSTOM_COLOR_SCHEME_NAME, COLORS["Spyder"], replace=False)
2808-
2809-
2810-PLUGIN_PATH = None
2811-from spyderlib.utils import programs
2812-if programs.is_module_installed("spyderplugins"):
2813- import spyderplugins
2814- PLUGIN_PATH = osp.abspath(spyderplugins.__path__[0])
2815- add_image_path(osp.join(PLUGIN_PATH, 'images'))
2816-
2817-def get_spyderplugins(prefix, extension):
2818- """Scan spyderplugins module and
2819- return the list of module names matching *prefix* and *extension*"""
2820- plist = []
2821- if PLUGIN_PATH is not None:
2822- for name in os.listdir(PLUGIN_PATH):
2823- modname, ext = osp.splitext(name)
2824- if prefix is not None and not name.startswith(prefix):
2825- continue
2826- if extension is not None and ext != extension:
2827- continue
2828- plist.append(modname)
2829- return plist
2830-
2831-def get_spyderplugins_mods(prefix, extension):
2832- """Scan spyderplugins module and
2833- return the list of modules matching *prefix* and *extension*"""
2834- return [getattr(__import__('spyderplugins.%s' % modname), modname)
2835- for modname in get_spyderplugins(prefix, extension)]
2836
2837=== added file 'spyderlib/images/actions/hist.png'
2838Binary files spyderlib/images/actions/hist.png 1970-01-01 00:00:00 +0000 and spyderlib/images/actions/hist.png 2012-03-27 18:05:23 +0000 differ
2839=== added file 'spyderlib/images/editor/highlight.png'
2840Binary files spyderlib/images/editor/highlight.png 1970-01-01 00:00:00 +0000 and spyderlib/images/editor/highlight.png 2012-03-27 18:05:23 +0000 differ
2841=== added file 'spyderlib/images/filetypes/cc.png'
2842Binary files spyderlib/images/filetypes/cc.png 1970-01-01 00:00:00 +0000 and spyderlib/images/filetypes/cc.png 2012-03-27 18:05:23 +0000 differ
2843=== added file 'spyderlib/images/filetypes/cl.png'
2844Binary files spyderlib/images/filetypes/cl.png 1970-01-01 00:00:00 +0000 and spyderlib/images/filetypes/cl.png 2012-03-27 18:05:23 +0000 differ
2845=== added file 'spyderlib/images/filetypes/css.png'
2846Binary files spyderlib/images/filetypes/css.png 1970-01-01 00:00:00 +0000 and spyderlib/images/filetypes/css.png 2012-03-27 18:05:23 +0000 differ
2847=== added file 'spyderlib/images/filetypes/cxx.png'
2848Binary files spyderlib/images/filetypes/cxx.png 1970-01-01 00:00:00 +0000 and spyderlib/images/filetypes/cxx.png 2012-03-27 18:05:23 +0000 differ
2849=== added file 'spyderlib/images/filetypes/hh.png'
2850Binary files spyderlib/images/filetypes/hh.png 1970-01-01 00:00:00 +0000 and spyderlib/images/filetypes/hh.png 2012-03-27 18:05:23 +0000 differ
2851=== added file 'spyderlib/images/filetypes/hpp.png'
2852Binary files spyderlib/images/filetypes/hpp.png 1970-01-01 00:00:00 +0000 and spyderlib/images/filetypes/hpp.png 2012-03-27 18:05:23 +0000 differ
2853=== added file 'spyderlib/images/filetypes/hxx.png'
2854Binary files spyderlib/images/filetypes/hxx.png 1970-01-01 00:00:00 +0000 and spyderlib/images/filetypes/hxx.png 2012-03-27 18:05:23 +0000 differ
2855=== modified file 'spyderlib/images/options.svg'
2856--- spyderlib/images/options.svg 2010-03-25 17:30:45 +0000
2857+++ spyderlib/images/options.svg 2012-03-27 18:05:23 +0000
2858@@ -1,5 +1,6 @@
2859 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2860 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2861+
2862 <svg
2863 xmlns:dc="http://purl.org/dc/elements/1.1/"
2864 xmlns:cc="http://creativecommons.org/ns#"
2865@@ -13,7 +14,7 @@
2866 height="120"
2867 id="svg3279"
2868 sodipodi:version="0.32"
2869- inkscape:version="0.46"
2870+ inkscape:version="0.48.2 r9819"
2871 version="1.0"
2872 inkscape:export-filename="D:\options.png"
2873 inkscape:export-xdpi="24"
2874@@ -60,7 +61,7 @@
2875 inkscape:pageopacity="0.0"
2876 inkscape:pageshadow="2"
2877 inkscape:zoom="2.8"
2878- inkscape:cx="27.69923"
2879+ inkscape:cx="-71.05077"
2880 inkscape:cy="76.846835"
2881 inkscape:document-units="px"
2882 inkscape:current-layer="layer1"
2883@@ -68,7 +69,8 @@
2884 inkscape:window-width="1280"
2885 inkscape:window-height="744"
2886 inkscape:window-x="-4"
2887- inkscape:window-y="-4" />
2888+ inkscape:window-y="-4"
2889+ inkscape:window-maximized="0" />
2890 <metadata
2891 id="metadata3284">
2892 <rdf:RDF>
2893@@ -77,7 +79,25 @@
2894 <dc:format>image/svg+xml</dc:format>
2895 <dc:type
2896 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
2897+ <dc:title></dc:title>
2898+ <cc:license
2899+ rdf:resource="http://creativecommons.org/licenses/by-sa/3.0/" />
2900 </cc:Work>
2901+ <cc:License
2902+ rdf:about="http://creativecommons.org/licenses/by-sa/3.0/">
2903+ <cc:permits
2904+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
2905+ <cc:permits
2906+ rdf:resource="http://creativecommons.org/ns#Distribution" />
2907+ <cc:requires
2908+ rdf:resource="http://creativecommons.org/ns#Notice" />
2909+ <cc:requires
2910+ rdf:resource="http://creativecommons.org/ns#Attribution" />
2911+ <cc:permits
2912+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
2913+ <cc:requires
2914+ rdf:resource="http://creativecommons.org/ns#ShareAlike" />
2915+ </cc:License>
2916 </rdf:RDF>
2917 </metadata>
2918 <g
2919
2920=== added file 'spyderlib/images/projects/folder.png'
2921Binary files spyderlib/images/projects/folder.png 1970-01-01 00:00:00 +0000 and spyderlib/images/projects/folder.png 2012-03-27 18:05:23 +0000 differ
2922=== removed file 'spyderlib/images/projects/folder_collapsed.png'
2923Binary files spyderlib/images/projects/folder_collapsed.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/folder_collapsed.png 1970-01-01 00:00:00 +0000 differ
2924=== removed file 'spyderlib/images/projects/folder_expanded.png'
2925Binary files spyderlib/images/projects/folder_expanded.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/folder_expanded.png 1970-01-01 00:00:00 +0000 differ
2926=== added file 'spyderlib/images/projects/package.png'
2927Binary files spyderlib/images/projects/package.png 1970-01-01 00:00:00 +0000 and spyderlib/images/projects/package.png 2012-03-27 18:05:23 +0000 differ
2928=== removed file 'spyderlib/images/projects/package_collapsed.png'
2929Binary files spyderlib/images/projects/package_collapsed.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/package_collapsed.png 1970-01-01 00:00:00 +0000 differ
2930=== removed file 'spyderlib/images/projects/package_expanded.png'
2931Binary files spyderlib/images/projects/package_expanded.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/package_expanded.png 1970-01-01 00:00:00 +0000 differ
2932=== added file 'spyderlib/images/projects/pp_folder.png'
2933Binary files spyderlib/images/projects/pp_folder.png 1970-01-01 00:00:00 +0000 and spyderlib/images/projects/pp_folder.png 2012-03-27 18:05:23 +0000 differ
2934=== removed file 'spyderlib/images/projects/pp_folder_collapsed.png'
2935Binary files spyderlib/images/projects/pp_folder_collapsed.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/pp_folder_collapsed.png 1970-01-01 00:00:00 +0000 differ
2936=== removed file 'spyderlib/images/projects/pp_folder_expanded.png'
2937Binary files spyderlib/images/projects/pp_folder_expanded.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/pp_folder_expanded.png 1970-01-01 00:00:00 +0000 differ
2938=== added file 'spyderlib/images/projects/pp_package.png'
2939Binary files spyderlib/images/projects/pp_package.png 1970-01-01 00:00:00 +0000 and spyderlib/images/projects/pp_package.png 2012-03-27 18:05:23 +0000 differ
2940=== removed file 'spyderlib/images/projects/pp_package_collapsed.png'
2941Binary files spyderlib/images/projects/pp_package_collapsed.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/pp_package_collapsed.png 1970-01-01 00:00:00 +0000 differ
2942=== removed file 'spyderlib/images/projects/pp_package_expanded.png'
2943Binary files spyderlib/images/projects/pp_package_expanded.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/pp_package_expanded.png 1970-01-01 00:00:00 +0000 differ
2944=== added file 'spyderlib/images/projects/pp_project.png'
2945Binary files spyderlib/images/projects/pp_project.png 1970-01-01 00:00:00 +0000 and spyderlib/images/projects/pp_project.png 2012-03-27 18:05:23 +0000 differ
2946=== removed file 'spyderlib/images/projects/pp_project_collapsed.png'
2947Binary files spyderlib/images/projects/pp_project_collapsed.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/pp_project_collapsed.png 1970-01-01 00:00:00 +0000 differ
2948=== removed file 'spyderlib/images/projects/pp_project_expanded.png'
2949Binary files spyderlib/images/projects/pp_project_expanded.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/pp_project_expanded.png 1970-01-01 00:00:00 +0000 differ
2950=== added file 'spyderlib/images/projects/project.png'
2951Binary files spyderlib/images/projects/project.png 1970-01-01 00:00:00 +0000 and spyderlib/images/projects/project.png 2012-03-27 18:05:23 +0000 differ
2952=== removed file 'spyderlib/images/projects/project_collapsed.png'
2953Binary files spyderlib/images/projects/project_collapsed.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/project_collapsed.png 1970-01-01 00:00:00 +0000 differ
2954=== removed file 'spyderlib/images/projects/project_expanded.png'
2955Binary files spyderlib/images/projects/project_expanded.png 2010-06-28 23:43:02 +0000 and spyderlib/images/projects/project_expanded.png 1970-01-01 00:00:00 +0000 differ
2956=== added file 'spyderlib/images/scm_browse.png'
2957Binary files spyderlib/images/scm_browse.png 1970-01-01 00:00:00 +0000 and spyderlib/images/scm_browse.png 2012-03-27 18:05:23 +0000 differ
2958=== added file 'spyderlib/images/scm_commit.png'
2959Binary files spyderlib/images/scm_commit.png 1970-01-01 00:00:00 +0000 and spyderlib/images/scm_commit.png 2012-03-27 18:05:23 +0000 differ
2960=== modified file 'spyderlib/images/spyder.svg'
2961--- spyderlib/images/spyder.svg 2010-03-25 17:30:45 +0000
2962+++ spyderlib/images/spyder.svg 2012-03-27 18:05:23 +0000
2963@@ -1,5 +1,6 @@
2964 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2965 <!-- Created with Inkscape (http://www.inkscape.org/) -->
2966+
2967 <svg
2968 xmlns:dc="http://purl.org/dc/elements/1.1/"
2969 xmlns:cc="http://creativecommons.org/ns#"
2970@@ -14,9 +15,8 @@
2971 height="150.31233"
2972 id="svg2"
2973 sodipodi:version="0.32"
2974- inkscape:version="0.46"
2975+ inkscape:version="0.48.2 r9819"
2976 sodipodi:docname="spyder.svg"
2977- sodipodi:docbase="/home/sdeibel"
2978 inkscape:output_extension="org.inkscape.output.svg.inkscape"
2979 inkscape:export-filename="D:\Python\spyder\doc_src\_static\spyder.png"
2980 inkscape:export-xdpi="77.629997"
2981@@ -29,7 +29,23 @@
2982 <dc:format>image/svg+xml</dc:format>
2983 <dc:type
2984 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
2985+ <dc:title></dc:title>
2986+ <cc:license
2987+ rdf:resource="http://creativecommons.org/licenses/by/3.0/" />
2988 </cc:Work>
2989+ <cc:License
2990+ rdf:about="http://creativecommons.org/licenses/by/3.0/">
2991+ <cc:permits
2992+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
2993+ <cc:permits
2994+ rdf:resource="http://creativecommons.org/ns#Distribution" />
2995+ <cc:requires
2996+ rdf:resource="http://creativecommons.org/ns#Notice" />
2997+ <cc:requires
2998+ rdf:resource="http://creativecommons.org/ns#Attribution" />
2999+ <cc:permits
3000+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
3001+ </cc:License>
3002 </rdf:RDF>
3003 </metadata>
3004 <sodipodi:namedview
3005@@ -42,12 +58,13 @@
3006 pagecolor="#ffffff"
3007 id="base"
3008 inkscape:zoom="2.0279948"
3009- inkscape:cx="-53.646496"
3010+ inkscape:cx="-160.92069"
3011 inkscape:cy="56.434504"
3012 inkscape:window-x="0"
3013 inkscape:window-y="22"
3014 inkscape:current-layer="svg2"
3015- showgrid="false" />
3016+ showgrid="false"
3017+ inkscape:window-maximized="0" />
3018 <defs
3019 id="defs4">
3020 <linearGradient
3021@@ -361,7 +378,7 @@
3022 sodipodi:cy="45.035332"
3023 sodipodi:rx="5.9274387"
3024 sodipodi:ry="10.808859"
3025- d="M 102.50982,45.035332 A 5.9274387,10.808859 0 1 1 90.654943,45.035332 A 5.9274387,10.808859 0 1 1 102.50982,45.035332 z"
3026+ d="m 102.50982,45.035332 c 0,5.969568 -2.653804,10.808859 -5.927438,10.808859 -3.273634,0 -5.927439,-4.839291 -5.927439,-10.808859 0,-5.969568 2.653805,-10.808859 5.927439,-10.808859 3.273634,0 5.927438,4.839291 5.927438,10.808859 z"
3027 transform="matrix(0.6055665,0.6055665,-0.6286135,0.6286135,75.900286,-31.30135)" />
3028 </g>
3029 </svg>
3030
3031=== modified file 'spyderlib/images/spyder_light.svg'
3032--- spyderlib/images/spyder_light.svg 2011-03-05 18:03:43 +0000
3033+++ spyderlib/images/spyder_light.svg 2012-03-27 18:05:23 +0000
3034@@ -15,8 +15,8 @@
3035 height="150.31233"
3036 id="svg2"
3037 sodipodi:version="0.32"
3038- inkscape:version="0.48.0 r9654"
3039- sodipodi:docname="spyder-small.svg"
3040+ inkscape:version="0.48.2 r9819"
3041+ sodipodi:docname="spyder_light.svg"
3042 inkscape:output_extension="org.inkscape.output.svg.inkscape"
3043 inkscape:export-filename="D:\Python\spyder\img_src\ico24.png"
3044 inkscape:export-xdpi="14.35"
3045@@ -30,7 +30,22 @@
3046 <dc:type
3047 rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
3048 <dc:title></dc:title>
3049+ <cc:license
3050+ rdf:resource="http://creativecommons.org/licenses/by/3.0/" />
3051 </cc:Work>
3052+ <cc:License
3053+ rdf:about="http://creativecommons.org/licenses/by/3.0/">
3054+ <cc:permits
3055+ rdf:resource="http://creativecommons.org/ns#Reproduction" />
3056+ <cc:permits
3057+ rdf:resource="http://creativecommons.org/ns#Distribution" />
3058+ <cc:requires
3059+ rdf:resource="http://creativecommons.org/ns#Notice" />
3060+ <cc:requires
3061+ rdf:resource="http://creativecommons.org/ns#Attribution" />
3062+ <cc:permits
3063+ rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
3064+ </cc:License>
3065 </rdf:RDF>
3066 </metadata>
3067 <sodipodi:namedview
3068@@ -43,7 +58,7 @@
3069 pagecolor="#ffffff"
3070 id="base"
3071 inkscape:zoom="2.0279948"
3072- inkscape:cx="-92.102604"
3073+ inkscape:cx="-228.44418"
3074 inkscape:cy="56.434504"
3075 inkscape:window-x="0"
3076 inkscape:window-y="22"
3077
3078=== added file 'spyderlib/images/upper_lower.png'
3079Binary files spyderlib/images/upper_lower.png 1970-01-01 00:00:00 +0000 and spyderlib/images/upper_lower.png 2012-03-27 18:05:23 +0000 differ
3080=== added file 'spyderlib/images/whole_words.png'
3081Binary files spyderlib/images/whole_words.png 1970-01-01 00:00:00 +0000 and spyderlib/images/whole_words.png 2012-03-27 18:05:23 +0000 differ
3082=== modified file 'spyderlib/interpreter.py'
3083--- spyderlib/interpreter.py 2011-04-29 21:19:10 +0000
3084+++ spyderlib/interpreter.py 2012-03-27 18:05:23 +0000
3085@@ -6,8 +6,14 @@
3086
3087 """Shell Interpreter"""
3088
3089-import sys, atexit, threading, ctypes
3090-import os, re, os.path as osp, pydoc
3091+import sys
3092+import atexit
3093+import threading
3094+import ctypes
3095+import os
3096+import re
3097+import os.path as osp
3098+import pydoc
3099 from subprocess import Popen, PIPE
3100 from code import InteractiveConsole
3101
3102@@ -18,9 +24,6 @@
3103 # Force Python to search modules in the current directory first:
3104 sys.path.insert(0, '')
3105
3106-# For debugging purpose
3107-STDOUT, STDERR = sys.stdout, sys.stderr
3108-
3109
3110 def guess_filename(filename):
3111 """Guess filename"""
3112@@ -220,6 +223,8 @@
3113
3114 def run_line(self):
3115 line = self.stdin_read.readline()
3116+ if self.exit_flag:
3117+ return
3118 # Remove last character which is always '\n':
3119 self.run_command(line[:-1])
3120
3121
3122=== added file 'spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo'
3123Binary files spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo 1970-01-01 00:00:00 +0000 and spyderlib/locale/fr/LC_MESSAGES/spyderlib.mo 2012-03-27 18:05:23 +0000 differ
3124=== modified file 'spyderlib/locale/fr/LC_MESSAGES/spyderlib.po'
3125--- spyderlib/locale/fr/LC_MESSAGES/spyderlib.po 2011-04-29 21:19:10 +0000
3126+++ spyderlib/locale/fr/LC_MESSAGES/spyderlib.po 2012-03-27 18:05:23 +0000
3127@@ -4,8 +4,8 @@
3128 #
3129 msgid ""
3130 msgstr ""
3131-"Project-Id-Version: 2.0\n"
3132-"POT-Creation-Date: 2011-04-26 11:26+Paris, Madrid\n"
3133+"Project-Id-Version: 2.1\n"
3134+"POT-Creation-Date: 2012-02-20 15:44+Paris, Madrid\n"
3135 "PO-Revision-Date: 2011-04-11 21:41+2\n"
3136 "Last-Translator: Pierre Raybaut\n"
3137 "Language-Team: Python\n"
3138@@ -14,357 +14,418 @@
3139 "Content-Transfer-Encoding: utf-8\n"
3140 "Generated-By: pygettext.py 1.5\n"
3141
3142-#: spyderlib\plugins\configdialog.py:120
3143+#: spyderlib\config.py:52
3144+msgid "Python files"
3145+msgstr "Fichier Python"
3146+
3147+#: spyderlib\config.py:53
3148+msgid "Cython/Pyrex files"
3149+msgstr "Fichiers Cython/Pyrex"
3150+
3151+#: spyderlib\config.py:54
3152+msgid "C files"
3153+msgstr "Fichiers C"
3154+
3155+#: spyderlib\config.py:55
3156+msgid "C++ files"
3157+msgstr "Fichiers C++"
3158+
3159+#: spyderlib\config.py:56
3160+msgid "OpenCL files"
3161+msgstr "Fichiers OpenCL"
3162+
3163+#: spyderlib\config.py:57
3164+msgid "Fortran files"
3165+msgstr "Fichiers Fortran"
3166+
3167+#: spyderlib\config.py:58
3168+msgid "Patch and diff files"
3169+msgstr "Fichiers patch et diff"
3170+
3171+#: spyderlib\config.py:59
3172+msgid "Batch files"
3173+msgstr "Fichiers Batch"
3174+
3175+#: spyderlib\config.py:60 spyderlib\utils\iofuncs.py:337
3176+msgid "Text files"
3177+msgstr "Fichiers texte"
3178+
3179+#: spyderlib\config.py:61
3180+msgid "reStructured Text files"
3181+msgstr "Fichiers reST"
3182+
3183+#: spyderlib\config.py:62
3184+msgid "gettext files"
3185+msgstr "Fichiers gettext"
3186+
3187+#: spyderlib\config.py:63
3188+msgid "Web page files"
3189+msgstr "Fichiers web"
3190+
3191+#: spyderlib\config.py:64
3192+msgid "Configuration files"
3193+msgstr "Configurations"
3194+
3195+#: spyderlib\config.py:72 spyderlib\widgets\explorer.py:619
3196+msgid "All files"
3197+msgstr "Tous les fichiers"
3198+
3199+#: spyderlib\plugins\configdialog.py:130
3200 msgid "Preferences"
3201 msgstr "Préférences"
3202
3203-#: spyderlib\plugins\configdialog.py:385
3204+#: spyderlib\plugins\configdialog.py:401
3205 msgid "Invalid directory path"
3206 msgstr "Chemin d'accès de répertoire incorrect"
3207
3208-#: spyderlib\plugins\configdialog.py:388 spyderlib\plugins\configdialog.py:404
3209-#: spyderlib\plugins\runconfig.py:126 spyderlib\plugins\runconfig.py:175
3210-#: spyderlib\plugins\workingdirectory.py:293
3211-#: spyderlib\widgets\externalshell\pythonshell.py:540
3212-#: spyderlib\widgets\findinfiles.py:518 spyderlib\widgets\pathmanager.py:212
3213+#: spyderlib\plugins\configdialog.py:404 spyderlib\plugins\configdialog.py:420
3214+#: spyderlib\plugins\runconfig.py:134 spyderlib\plugins\runconfig.py:185
3215+#: spyderlib\plugins\workingdirectory.py:294 spyderlib\widgets\explorer.py:535
3216+#: spyderlib\widgets\externalshell\pythonshell.py:584
3217+#: spyderlib\widgets\findinfiles.py:513 spyderlib\widgets\pathmanager.py:218
3218+#: spyderlib\widgets\projectexplorer.py:812
3219 msgid "Select directory"
3220 msgstr "Sélectionner un répertoire"
3221
3222-#: spyderlib\plugins\configdialog.py:416
3223+#: spyderlib\plugins\configdialog.py:432
3224 msgid "Invalid file path"
3225 msgstr "Chemin d'accès de fichier incorrect"
3226
3227-#: spyderlib\plugins\configdialog.py:419 spyderlib\plugins\configdialog.py:437
3228+#: spyderlib\plugins\configdialog.py:435 spyderlib\plugins\configdialog.py:453
3229 msgid "Select file"
3230 msgstr "Sélectionner un fichier"
3231
3232-#: spyderlib\plugins\configdialog.py:436
3233+#: spyderlib\plugins\configdialog.py:452
3234 msgid "All files (*)"
3235 msgstr "Tous les fichiers (*)"
3236
3237-#: spyderlib\plugins\configdialog.py:500 spyderlib\widgets\formlayout.py:209
3238+#: spyderlib\plugins\configdialog.py:516 spyderlib\widgets\formlayout.py:205
3239 msgid "Bold"
3240 msgstr "Gras"
3241
3242-#: spyderlib\plugins\configdialog.py:503 spyderlib\widgets\formlayout.py:204
3243+#: spyderlib\plugins\configdialog.py:519 spyderlib\widgets\formlayout.py:200
3244 msgid "Italic"
3245 msgstr "Italique"
3246
3247-#: spyderlib\plugins\configdialog.py:541
3248+#: spyderlib\plugins\configdialog.py:557
3249 msgid "Font: "
3250 msgstr "Police : "
3251
3252-#: spyderlib\plugins\configdialog.py:545
3253+#: spyderlib\plugins\configdialog.py:561
3254 msgid "Size: "
3255 msgstr "Taille : "
3256
3257-#: spyderlib\plugins\configdialog.py:554 spyderlib\plugins\history.py:41
3258+#: spyderlib\plugins\configdialog.py:570 spyderlib\plugins\history.py:40
3259 msgid "Font style"
3260 msgstr "Police d'écriture"
3261
3262-#: spyderlib\plugins\configdialog.py:598
3263+#: spyderlib\plugins\configdialog.py:614
3264 msgid "General"
3265 msgstr "Général"
3266
3267-#: spyderlib\plugins\configdialog.py:604 spyderlib\plugins\editor.py:85
3268-#: spyderlib\plugins\externalconsole.py:39
3269+#: spyderlib\plugins\configdialog.py:620 spyderlib\plugins\editor.py:81
3270+#: spyderlib\plugins\externalconsole.py:45
3271 msgid "Interface"
3272 msgstr "Interface"
3273
3274-#: spyderlib\plugins\configdialog.py:606
3275+#: spyderlib\plugins\configdialog.py:623
3276+msgid "Qt windows style"
3277+msgstr "Style de fenêtres Qt"
3278+
3279+#: spyderlib\plugins\configdialog.py:627
3280 msgid "Vertical dockwidget title bars"
3281 msgstr "Barres de titre orientées verticalement"
3282
3283-#: spyderlib\plugins\configdialog.py:608
3284+#: spyderlib\plugins\configdialog.py:629
3285 msgid "Vertical dockwidget tabs"
3286 msgstr "Onglets distribués verticalement"
3287
3288-#: spyderlib\plugins\configdialog.py:610
3289+#: spyderlib\plugins\configdialog.py:631
3290 msgid "Animated toolbars and dockwidgets"
3291 msgstr "Panneaux et barres d'outils animés"
3292
3293-#: spyderlib\plugins\configdialog.py:612
3294+#: spyderlib\plugins\configdialog.py:633
3295 msgid "Custom dockwidget margin:"
3296 msgstr "Marges personnalisées :"
3297
3298-#: spyderlib\plugins\configdialog.py:642
3299+#: spyderlib\plugins\configdialog.py:664
3300 msgid "Syntax coloring"
3301 msgstr "Coloration syntaxique"
3302
3303-#: spyderlib\plugins\configdialog.py:653
3304+#: spyderlib\plugins\configdialog.py:675
3305 msgid "Background:"
3306 msgstr "Fond :"
3307
3308-#: spyderlib\plugins\configdialog.py:654 spyderlib\widgets\editor.py:58
3309+#: spyderlib\plugins\configdialog.py:676
3310+#: spyderlib\widgets\sourcecode\codeeditor.py:245
3311 msgid "Current line:"
3312 msgstr "Ligne actuelle :"
3313
3314-#: spyderlib\plugins\configdialog.py:655
3315+#: spyderlib\plugins\configdialog.py:677
3316 msgid "Occurence:"
3317 msgstr "Occurence :"
3318
3319-#: spyderlib\plugins\configdialog.py:656
3320+#: spyderlib\plugins\configdialog.py:678
3321 msgid "Link:"
3322 msgstr "Lien :"
3323
3324-#: spyderlib\plugins\configdialog.py:657
3325+#: spyderlib\plugins\configdialog.py:679
3326 msgid "Side areas:"
3327 msgstr "Zones latérales :"
3328
3329-#: spyderlib\plugins\configdialog.py:658
3330+#: spyderlib\plugins\configdialog.py:680
3331 msgid "Matched parentheses:"
3332 msgstr "Parenthèse fermée :"
3333
3334-#: spyderlib\plugins\configdialog.py:659
3335+#: spyderlib\plugins\configdialog.py:681
3336 msgid "Unmatched parentheses:"
3337 msgstr "Parenthèse non fermée :"
3338
3339-#: spyderlib\plugins\configdialog.py:660
3340+#: spyderlib\plugins\configdialog.py:682
3341 msgid "Normal text:"
3342 msgstr "Texte normal :"
3343
3344-#: spyderlib\plugins\configdialog.py:661
3345+#: spyderlib\plugins\configdialog.py:683
3346 msgid "Keyword:"
3347 msgstr "Mot-clé :"
3348
3349-#: spyderlib\plugins\configdialog.py:662
3350+#: spyderlib\plugins\configdialog.py:684
3351 msgid "Builtin:"
3352 msgstr "Objet intégré :"
3353
3354-#: spyderlib\plugins\configdialog.py:663
3355+#: spyderlib\plugins\configdialog.py:685
3356 msgid "Definition:"
3357 msgstr "Définition :"
3358
3359-#: spyderlib\plugins\configdialog.py:664
3360+#: spyderlib\plugins\configdialog.py:686
3361 msgid "Comment:"
3362 msgstr "Commentaire :"
3363
3364-#: spyderlib\plugins\configdialog.py:665
3365+#: spyderlib\plugins\configdialog.py:687
3366 msgid "String:"
3367 msgstr "Chaîne :"
3368
3369-#: spyderlib\plugins\configdialog.py:666
3370+#: spyderlib\plugins\configdialog.py:688
3371 msgid "Number:"
3372 msgstr "Nombre :"
3373
3374-#: spyderlib\plugins\configdialog.py:667
3375+#: spyderlib\plugins\configdialog.py:689
3376 msgid "Instance:"
3377 msgstr "Instance :"
3378
3379-#: spyderlib\plugins\configdialog.py:673
3380+#: spyderlib\plugins\configdialog.py:695
3381 msgid "Color scheme"
3382 msgstr "Paramètres de coloration syntaxique"
3383
3384-#: spyderlib\plugins\configdialog.py:695 spyderlib\plugins\shortcuts.py:324
3385+#: spyderlib\plugins\configdialog.py:717 spyderlib\plugins\shortcuts.py:343
3386 msgid "Reset to default values"
3387 msgstr "Rétablir les valeurs par défaut"
3388
3389-#: spyderlib\plugins\console.py:101
3390+#: spyderlib\plugins\console.py:104
3391 msgid "Internal console"
3392 msgstr "Console interne"
3393
3394-#: spyderlib\plugins\console.py:121 spyderlib\spyder.py:573
3395+#: spyderlib\plugins\console.py:124 spyderlib\spyder.py:641
3396 msgid "&Quit"
3397 msgstr "&Quitter"
3398
3399-#: spyderlib\plugins\console.py:122 spyderlib\spyder.py:574
3400+#: spyderlib\plugins\console.py:125 spyderlib\spyder.py:642
3401 msgid "Quit"
3402 msgstr "Quitter"
3403
3404-#: spyderlib\plugins\console.py:125 spyderlib\plugins\externalconsole.py:681
3405+#: spyderlib\plugins\console.py:128 spyderlib\plugins\externalconsole.py:899
3406 msgid "&Run..."
3407 msgstr "Exécute&r..."
3408
3409-#: spyderlib\plugins\console.py:126 spyderlib\plugins\externalconsole.py:682
3410+#: spyderlib\plugins\console.py:129 spyderlib\plugins\externalconsole.py:900
3411 msgid "Run a Python script"
3412 msgstr "Exécuter un script Python"
3413
3414-#: spyderlib\plugins\console.py:129
3415+#: spyderlib\plugins\console.py:132
3416 msgid "Environment variables..."
3417 msgstr "Variables d'environnement..."
3418
3419-#: spyderlib\plugins\console.py:131
3420+#: spyderlib\plugins\console.py:134
3421 msgid "Show and edit environment variables (for current session)"
3422 msgstr ""
3423 "Afficher et modifier les variables d'environnement (pour la session en cours)"
3424
3425-#: spyderlib\plugins\console.py:135
3426+#: spyderlib\plugins\console.py:138
3427 msgid "Show sys.path contents..."
3428 msgstr "Afficher le contenu de sys.path..."
3429
3430-#: spyderlib\plugins\console.py:137
3431+#: spyderlib\plugins\console.py:140
3432 msgid "Show (read-only) sys.path"
3433 msgstr "Afficher le contenu de sys.path (lecture seule)"
3434
3435-#: spyderlib\plugins\console.py:140
3436+#: spyderlib\plugins\console.py:143
3437 msgid "Buffer..."
3438 msgstr "Tampon..."
3439
3440-#: spyderlib\plugins\console.py:141 spyderlib\plugins\externalconsole.py:59
3441-#: spyderlib\plugins\history.py:36
3442+#: spyderlib\plugins\console.py:144 spyderlib\plugins\externalconsole.py:65
3443+#: spyderlib\plugins\history.py:33
3444 msgid "Set maximum line count"
3445 msgstr "Modifier le nombre maximum de lignes"
3446
3447-#: spyderlib\plugins\console.py:144 spyderlib\plugins\explorer.py:67
3448-#: spyderlib\plugins\history.py:146 spyderlib\plugins\inspector.py:217
3449-#: spyderlib\plugins\projectexplorer.py:65
3450+#: spyderlib\plugins\console.py:147 spyderlib\plugins\explorer.py:59
3451+#: spyderlib\plugins\history.py:149 spyderlib\plugins\inspector.py:220
3452+#: spyderlib\plugins\projectexplorer.py:56
3453 msgid "&Font..."
3454 msgstr "&Police..."
3455
3456-#: spyderlib\plugins\console.py:145 spyderlib\plugins\history.py:147
3457+#: spyderlib\plugins\console.py:148 spyderlib\plugins\history.py:150
3458 msgid "Set shell font style"
3459 msgstr "Changer la police d'écriture de la console"
3460
3461-#: spyderlib\plugins\console.py:148
3462+#: spyderlib\plugins\console.py:151
3463 msgid "External editor path..."
3464 msgstr "Éditeur externe..."
3465
3466-#: spyderlib\plugins\console.py:149
3467+#: spyderlib\plugins\console.py:152
3468 msgid "Set external editor executable path"
3469 msgstr "Modifier le chemin d'accès de l'éditeur externe"
3470
3471-#: spyderlib\plugins\console.py:152 spyderlib\plugins\editor.py:117
3472-#: spyderlib\plugins\externalconsole.py:60 spyderlib\plugins\history.py:39
3473-#: spyderlib\plugins\history.py:149 spyderlib\plugins\inspector.py:89
3474-#: spyderlib\plugins\inspector.py:220
3475+#: spyderlib\plugins\console.py:155 spyderlib\plugins\editor.py:118
3476+#: spyderlib\plugins\externalconsole.py:66 spyderlib\plugins\history.py:36
3477+#: spyderlib\plugins\history.py:152 spyderlib\plugins\inspector.py:89
3478+#: spyderlib\plugins\inspector.py:223
3479 msgid "Wrap lines"
3480 msgstr "Retour à la ligne automatique"
3481
3482-#: spyderlib\plugins\console.py:155 spyderlib\plugins\editor.py:145
3483-#: spyderlib\plugins\externalconsole.py:93
3484+#: spyderlib\plugins\console.py:158 spyderlib\plugins\editor.py:148
3485+#: spyderlib\plugins\externalconsole.py:121
3486 msgid "Balloon tips"
3487 msgstr "Info-bulles"
3488
3489-#: spyderlib\plugins\console.py:159 spyderlib\plugins\editor.py:137
3490-#: spyderlib\plugins\externalconsole.py:85
3491+#: spyderlib\plugins\console.py:162 spyderlib\plugins\editor.py:140
3492+#: spyderlib\plugins\externalconsole.py:113
3493 msgid "Automatic code completion"
3494 msgstr "Complétion de code automatique"
3495
3496-#: spyderlib\plugins\console.py:163 spyderlib\plugins\editor.py:143
3497-#: spyderlib\plugins\externalconsole.py:91
3498+#: spyderlib\plugins\console.py:166 spyderlib\plugins\editor.py:146
3499+#: spyderlib\plugins\externalconsole.py:119
3500 msgid "Enter key selects completion"
3501 msgstr "Entrée valide la complétion de code"
3502
3503-#: spyderlib\plugins\console.py:168
3504+#: spyderlib\plugins\console.py:171
3505 msgid "Internal console settings"
3506 msgstr "Options de la console interne"
3507
3508-#: spyderlib\plugins\console.py:210 spyderlib\plugins\externalconsole.py:861
3509+#: spyderlib\plugins\console.py:221 spyderlib\plugins\externalconsole.py:1122
3510 msgid "Run Python script"
3511 msgstr "Exécuter un script Python"
3512
3513-#: spyderlib\plugins\console.py:211 spyderlib\plugins\externalconsole.py:862
3514-#: spyderlib\widgets\explorer.py:498 spyderlib\widgets\projectexplorer.py:1167
3515+#: spyderlib\plugins\console.py:222 spyderlib\plugins\externalconsole.py:227
3516+#: spyderlib\plugins\externalconsole.py:1123 spyderlib\widgets\explorer.py:633
3517 msgid "Python scripts"
3518 msgstr "Scripts Python"
3519
3520-#: spyderlib\plugins\console.py:257 spyderlib\plugins\explorer.py:140
3521-#: spyderlib\plugins\history.py:257 spyderlib\plugins\inspector.py:459
3522-#: spyderlib\plugins\projectexplorer.py:117
3523+#: spyderlib\plugins\console.py:266 spyderlib\plugins\explorer.py:110
3524+#: spyderlib\plugins\history.py:261 spyderlib\plugins\inspector.py:465
3525+#: spyderlib\plugins\projectexplorer.py:109
3526 msgid "Select a new font"
3527 msgstr "Sélectionner une police d'écriture"
3528
3529-#: spyderlib\plugins\console.py:264
3530+#: spyderlib\plugins\console.py:273
3531 msgid "Buffer"
3532 msgstr "Tampon"
3533
3534-#: spyderlib\plugins\console.py:265
3535+#: spyderlib\plugins\console.py:274
3536 msgid "Maximum line count"
3537 msgstr "Nombre maximum de lignes"
3538
3539-#: spyderlib\plugins\console.py:274
3540+#: spyderlib\plugins\console.py:283
3541 msgid "External editor"
3542 msgstr "Éditeur externe"
3543
3544-#: spyderlib\plugins\console.py:275
3545+#: spyderlib\plugins\console.py:284
3546 msgid "External editor executable path:"
3547 msgstr "Chemin d'accès de l'exécutable :"
3548
3549-#: spyderlib\plugins\editor.py:79 spyderlib\plugins\editor.py:467
3550-#: spyderlib\plugins\editor.py:1412 spyderlib\plugins\inspector.py:244
3551-#: spyderlib\widgets\editor.py:50 spyderlib\widgets\editor.py:458
3552+#: spyderlib\plugins\editor.py:75 spyderlib\plugins\editor.py:481
3553+#: spyderlib\plugins\editor.py:1421 spyderlib\plugins\inspector.py:247
3554+#: spyderlib\widgets\editor.py:518
3555+#: spyderlib\widgets\sourcecode\codeeditor.py:235
3556+#: spyderlib\widgets\sourcecode\codeeditor.py:2273
3557 msgid "Editor"
3558 msgstr "Éditeur"
3559
3560-#: spyderlib\plugins\editor.py:82
3561+#: spyderlib\plugins\editor.py:78
3562 msgid "Edit template for new modules"
3563 msgstr "Modifier le modèle (nouveaux modules)"
3564
3565-#: spyderlib\plugins\editor.py:87
3566+#: spyderlib\plugins\editor.py:83
3567 msgid "Text and margin font style"
3568 msgstr "Police d'écriture du texte et de la marge"
3569
3570-#: spyderlib\plugins\editor.py:90
3571-msgid "Show outline explorer"
3572-msgstr "Afficher l'explorateur de structure"
3573-
3574-#: spyderlib\plugins\editor.py:92
3575+#: spyderlib\plugins\editor.py:86
3576 msgid "Sort files according to full path"
3577 msgstr "Classer les fichiers suivant leur chemin complet"
3578
3579-#: spyderlib\plugins\editor.py:94
3580+#: spyderlib\plugins\editor.py:88
3581 msgid "Show tab bar"
3582 msgstr "Afficher la barre d'onglets"
3583
3584-#: spyderlib\plugins\editor.py:102 spyderlib\plugins\editor.py:165
3585-#: spyderlib\plugins\externalconsole.py:55
3586-#: spyderlib\plugins\externalconsole.py:84 spyderlib\plugins\history.py:38
3587+#: spyderlib\plugins\editor.py:95 spyderlib\plugins\editor.py:169
3588+#: spyderlib\plugins\externalconsole.py:61
3589+#: spyderlib\plugins\externalconsole.py:112 spyderlib\plugins\history.py:35
3590 #: spyderlib\plugins\inspector.py:88
3591 msgid "Source code"
3592 msgstr "Code source"
3593
3594-#: spyderlib\plugins\editor.py:103
3595+#: spyderlib\plugins\editor.py:96
3596 msgid "Show line numbers"
3597 msgstr "Afficher les numéros de ligne"
3598
3599-#: spyderlib\plugins\editor.py:104
3600+#: spyderlib\plugins\editor.py:97
3601 msgid "Show vertical line after"
3602 msgstr "Afficher une ligne verticale après"
3603
3604-#: spyderlib\plugins\editor.py:105
3605+#: spyderlib\plugins\editor.py:98
3606 msgid "characters"
3607 msgstr "caractères"
3608
3609-#: spyderlib\plugins\editor.py:113
3610+#: spyderlib\plugins\editor.py:106
3611 msgid "Highlight current line"
3612 msgstr "Surligner la ligne en cours d'édition"
3613
3614-#: spyderlib\plugins\editor.py:115
3615-msgid "Highlight occurences"
3616-msgstr "Surligner les occurences"
3617+#: spyderlib\plugins\editor.py:108
3618+msgid "Highlight occurences after"
3619+msgstr "Surligner les occurences après"
3620
3621-#: spyderlib\plugins\editor.py:120 spyderlib\plugins\history.py:45
3622+#: spyderlib\plugins\editor.py:121 spyderlib\plugins\history.py:44
3623 #: spyderlib\plugins\inspector.py:97
3624 msgid "Syntax color scheme: "
3625 msgstr "Thème de coloration syntaxique : "
3626
3627-#: spyderlib\plugins\editor.py:132 spyderlib\plugins\runconfig.py:225
3628-#: spyderlib\plugins\runconfig.py:273 spyderlib\widgets\explorer.py:215
3629-#: spyderlib\widgets\externalshell\baseshell.py:131
3630+#: spyderlib\plugins\editor.py:133 spyderlib\plugins\runconfig.py:258
3631+#: spyderlib\plugins\runconfig.py:316 spyderlib\spyder.py:1497
3632+#: spyderlib\widgets\explorer.py:234
3633+#: spyderlib\widgets\externalshell\baseshell.py:136
3634 msgid "Run"
3635 msgstr "Exécuter"
3636
3637-#: spyderlib\plugins\editor.py:133
3638+#: spyderlib\plugins\editor.py:134
3639 msgid "Save all files before running script"
3640 msgstr "Enregistrer tous les fichiers avant l'exécution d'un script"
3641
3642-#: spyderlib\plugins\editor.py:136 spyderlib\plugins\externalconsole.py:270
3643+#: spyderlib\plugins\editor.py:137 spyderlib\plugins\externalconsole.py:411
3644 msgid "Introspection"
3645 msgstr "Introspection"
3646
3647-#: spyderlib\plugins\editor.py:139 spyderlib\plugins\externalconsole.py:87
3648+#: spyderlib\plugins\editor.py:142 spyderlib\plugins\externalconsole.py:115
3649 msgid "Case sensitive code completion"
3650 msgstr "Complétion de code sensible à la casse"
3651
3652-#: spyderlib\plugins\editor.py:141 spyderlib\plugins\externalconsole.py:89
3653+#: spyderlib\plugins\editor.py:144 spyderlib\plugins\externalconsole.py:117
3654 msgid "Show single completion"
3655 msgstr "Afficher les listes de complétion avec un choix unique"
3656
3657-#: spyderlib\plugins\editor.py:146
3658+#: spyderlib\plugins\editor.py:149
3659 msgid "Link to object definition"
3660 msgstr "Lien vers la définition d'un objet"
3661
3662-#: spyderlib\plugins\editor.py:148
3663+#: spyderlib\plugins\editor.py:151
3664 msgid ""
3665 "If this option is enabled, clicking on an object\n"
3666 "name (left-click + Ctrl key) will go this object\n"
3667@@ -374,11 +435,11 @@
3668 "d'un objet (click gauche + touche Ctrl) ira à la\n"
3669 "définition de cet objet (si celle-ci est trouvée)."
3670
3671-#: spyderlib\plugins\editor.py:152 spyderlib\plugins\externalconsole.py:95
3672+#: spyderlib\plugins\editor.py:155 spyderlib\plugins\externalconsole.py:123
3673 msgid "Automatic notification to object inspector"
3674 msgstr "Notification automatique à l'inspecteur d'objets"
3675
3676-#: spyderlib\plugins\editor.py:154
3677+#: spyderlib\plugins\editor.py:157
3678 msgid ""
3679 "If this option is enabled, object inspector\n"
3680 "will automatically show informations on functions\n"
3681@@ -391,7 +452,7 @@
3682 "(le mécanisme est déclenché par la saisie d'une\n"
3683 "parenthèse gauche après un nom valide de fonction)"
3684
3685-#: spyderlib\plugins\editor.py:158
3686+#: spyderlib\plugins\editor.py:162
3687 msgid ""
3688 "<b>Warning:</b><br>The Python module <i>rope</i> is not installed on this "
3689 "computer: calltips, code completion and go-to-definition features won't be "
3690@@ -401,19 +462,44 @@
3691 "sur cet ordinateur : les fonctionnalités telles que la complétion de code ou "
3692 "le lien vers la définition d'un objet ne sont donc pas accessibles."
3693
3694-#: spyderlib\plugins\editor.py:166
3695+#: spyderlib\plugins\editor.py:170
3696 msgid "Automatic parentheses, braces and brackets insertion"
3697-msgstr "Fermeture automatique des parenthèses, crochets et accolades"
3698+msgstr ""
3699+"Insertion automatique des parenthèses, crochets et accolades"
3700
3701-#: spyderlib\plugins\editor.py:169
3702+#: spyderlib\plugins\editor.py:173
3703 msgid "Automatic indentation after 'else', 'elif', etc."
3704 msgstr "Indentation automatique après 'else', 'elif', etc."
3705
3706-#: spyderlib\plugins\editor.py:171
3707+#: spyderlib\plugins\editor.py:175
3708+msgid "Indentation characters: "
3709+msgstr "Caractères d'indentation : "
3710+
3711+#: spyderlib\plugins\editor.py:176
3712+msgid "4 spaces"
3713+msgstr "4 espaces"
3714+
3715+#: spyderlib\plugins\editor.py:177
3716+msgid "2 spaces"
3717+msgstr "2 espaces"
3718+
3719+#: spyderlib\plugins\editor.py:178
3720+msgid "tab"
3721+msgstr "tabulation"
3722+
3723+#: spyderlib\plugins\editor.py:179
3724+msgid "Tab stop width:"
3725+msgstr "Largeur des tabulations :"
3726+
3727+#: spyderlib\plugins\editor.py:179
3728+msgid "pixels"
3729+msgstr "pixels"
3730+
3731+#: spyderlib\plugins\editor.py:181
3732 msgid "Tab always indent"
3733 msgstr "Toujours indenter avec la touche Tab"
3734
3735-#: spyderlib\plugins\editor.py:173
3736+#: spyderlib\plugins\editor.py:183
3737 msgid ""
3738 "If enabled, pressing Tab will always indent,\n"
3739 "even when the cursor is not at the beginning\n"
3740@@ -427,44 +513,81 @@
3741 "option est activée, la complétion de code reste \n"
3742 "accessible via le raccourci Ctrl+Espace)"
3743
3744-#: spyderlib\plugins\editor.py:178
3745+#: spyderlib\plugins\editor.py:188
3746 msgid "Intelligent backspace"
3747 msgstr "Retour arrière (\"backspace\") intelligent"
3748
3749-#: spyderlib\plugins\editor.py:181
3750+#: spyderlib\plugins\editor.py:190
3751+msgid "Automatically remove trailing spaces when saving files"
3752+msgstr ""
3753+"Supprimer automatiquement les espaces en fin de ligne lors de "
3754+"l'enregistrement"
3755+
3756+#: spyderlib\plugins\editor.py:194
3757 msgid "Analysis"
3758 msgstr "Analyse"
3759
3760-#: spyderlib\plugins\editor.py:182
3761-msgid "Code analysis (pyflakes)"
3762-msgstr "Analyse de code (pyflakes)"
3763-
3764-#: spyderlib\plugins\editor.py:184
3765+#: spyderlib\plugins\editor.py:196
3766+msgid ""
3767+"<u>Note</u>: add <b>analysis:ignore</b> in a comment to ignore code/style "
3768+"analysis warnings. For more informations on style guide for Python code, "
3769+"please refer to the %s page."
3770+msgstr ""
3771+"<u>Note</u>: ajouter <b>analysis:ignore</b> dans un commentaire pour ignorer "
3772+"les résultats de l'analyse de code ou de style. Pour plus d'informations sur "
3773+"les recommandations officielles de style d'écriture avec le langage Python, "
3774+"veuillez visiter la page de la %s."
3775+
3776+#: spyderlib\plugins\editor.py:205
3777+#: spyderlib\widgets\sourcecode\codeeditor.py:1526
3778+msgid "Code analysis"
3779+msgstr "Analyse de code"
3780+
3781+#: spyderlib\plugins\editor.py:207
3782 msgid ""
3783 "If enabled, Python source code will be analyzed\n"
3784 "using pyflakes, lines containing errors or \n"
3785 "warnings will be highlighted"
3786 msgstr ""
3787 "Si cette option est activée, le code source Python sera analysé\n"
3788-"avec pyflakes et les lignes contenant des erreurs seront indiquées"
3789-
3790-#: spyderlib\plugins\editor.py:188
3791+"avec des outils l'outil d'introspection de code pyflakes\n"
3792+"et les lignes contenant des erreurs seront indiquées"
3793+
3794+#: spyderlib\plugins\editor.py:212
3795+msgid "Code analysis requires pyflakes %s+"
3796+msgstr "L'analyse de code requiert pyflakes %s+"
3797+
3798+#: spyderlib\plugins\editor.py:214
3799+msgid "Style analysis"
3800+msgstr "Analyse de style"
3801+
3802+#: spyderlib\plugins\editor.py:216
3803+msgid ""
3804+"If enabled, Python source code will be analyzed\n"
3805+"using pep8, lines that are not following PEP8\n"
3806+"style guide will be highlighted"
3807+msgstr ""
3808+"Si cette option est activée, le style du code source Python sera analysé\n"
3809+"avec l'outil d'introspection de code pep8 et les lignes ne suivant pas\n"
3810+"les recommandations officielles seront indiquées"
3811+
3812+#: spyderlib\plugins\editor.py:223
3813 msgid "Tasks (TODO, FIXME, XXX, HINT, TIP)"
3814 msgstr "Tâches (TODO, FIXME, XXX, HINT, TIP)"
3815
3816-#: spyderlib\plugins\editor.py:194
3817+#: spyderlib\plugins\editor.py:226
3818 msgid "Perform analysis when saving file and every"
3819 msgstr "Analyser lors de l'enregistrement et toutes les"
3820
3821-#: spyderlib\plugins\editor.py:198
3822+#: spyderlib\plugins\editor.py:230
3823 msgid "Perform analysis only when saving file"
3824 msgstr "Analyser uniquement lors de l'enregistrement"
3825
3826-#: spyderlib\plugins\editor.py:237
3827+#: spyderlib\plugins\editor.py:274
3828 msgid "End-of-line characters"
3829 msgstr "Caractères de fin de ligne"
3830
3831-#: spyderlib\plugins\editor.py:238
3832+#: spyderlib\plugins\editor.py:275
3833 msgid ""
3834 "When opening a text file containing mixed end-of-line characters (this may "
3835 "raise syntax errors in Python interpreter on Windows platforms), Spyder may "
3836@@ -475,190 +598,137 @@
3837 "l'interpréteur Python sous Windows), Spyder peut réparer le fichier "
3838 "automatiquement."
3839
3840-#: spyderlib\plugins\editor.py:244
3841+#: spyderlib\plugins\editor.py:281
3842 msgid "Fix automatically and show warning message box"
3843 msgstr "Réparer automatiquement et afficher un message d'avertissement"
3844
3845-#: spyderlib\plugins\editor.py:255 spyderlib\plugins\externalconsole.py:268
3846-#: spyderlib\plugins\variableexplorer.py:43
3847+#: spyderlib\plugins\editor.py:292 spyderlib\plugins\externalconsole.py:409
3848+#: spyderlib\plugins\variableexplorer.py:40
3849 msgid "Display"
3850 msgstr "Affichage"
3851
3852-#: spyderlib\plugins\editor.py:257
3853+#: spyderlib\plugins\editor.py:294
3854 msgid "Code Introspection/Analysis"
3855 msgstr "Introspection et analyse de code"
3856
3857-#: spyderlib\plugins\editor.py:260 spyderlib\plugins\externalconsole.py:272
3858+#: spyderlib\plugins\editor.py:297 spyderlib\plugins\externalconsole.py:414
3859 msgid "Advanced settings"
3860 msgstr "Options avancées"
3861
3862-#: spyderlib\plugins\editor.py:303
3863-msgid "Python files"
3864-msgstr "Fichier Python"
3865-
3866-#: spyderlib\plugins\editor.py:304
3867-msgid "Cython/Pyrex files"
3868-msgstr "Fichiers Cython/Pyrex"
3869-
3870-#: spyderlib\plugins\editor.py:305
3871-msgid "C files"
3872-msgstr "Fichiers C"
3873-
3874-#: spyderlib\plugins\editor.py:306
3875-msgid "C++ files"
3876-msgstr "Fichiers C++"
3877-
3878-#: spyderlib\plugins\editor.py:308
3879-msgid "Fortran files"
3880-msgstr "Fichiers Fortran"
3881-
3882-#: spyderlib\plugins\editor.py:310
3883-msgid "Patch and diff files"
3884-msgstr "Fichiers patch et diff"
3885-
3886-#: spyderlib\plugins\editor.py:312
3887-msgid "Batch files"
3888-msgstr "Fichiers Batch"
3889-
3890-#: spyderlib\plugins\editor.py:314 spyderlib\utils\iofuncs.py:328
3891-msgid "Text files"
3892-msgstr "Fichiers texte"
3893-
3894-#: spyderlib\plugins\editor.py:315
3895-msgid "reStructured Text files"
3896-msgstr "Fichiers reST"
3897-
3898-#: spyderlib\plugins\editor.py:317
3899-msgid "gettext files"
3900-msgstr "Fichiers gettext"
3901-
3902-#: spyderlib\plugins\editor.py:318
3903-msgid "Web page files"
3904-msgstr "Fichiers web"
3905-
3906-#: spyderlib\plugins\editor.py:320
3907-msgid "Configuration files"
3908-msgstr "Configurations"
3909-
3910-#: spyderlib\plugins\editor.py:323 spyderlib\widgets\explorer.py:499
3911-#: spyderlib\widgets\projectexplorer.py:1127
3912-msgid "All files"
3913-msgstr "Tous les fichiers"
3914-
3915-#: spyderlib\plugins\editor.py:528 spyderlib\widgets\editortools.py:529
3916+#: spyderlib\plugins\editor.py:540 spyderlib\widgets\editortools.py:483
3917 msgid "Show/hide outline explorer"
3918 msgstr "Afficher/masquer l'explorateur de structure"
3919
3920-#: spyderlib\plugins\editor.py:535
3921+#: spyderlib\plugins\editor.py:546
3922 msgid "Show/hide project explorer"
3923 msgstr "Afficher/masquer l'explorateur de projets"
3924
3925-#: spyderlib\plugins\editor.py:543
3926+#: spyderlib\plugins\editor.py:554
3927 msgid "&New file..."
3928 msgstr "&Nouveau fichier..."
3929
3930-#: spyderlib\plugins\editor.py:544
3931+#: spyderlib\plugins\editor.py:555
3932 msgid "Create a new Python script"
3933 msgstr "Créer un nouveau script Python"
3934
3935-#: spyderlib\plugins\editor.py:548
3936+#: spyderlib\plugins\editor.py:559
3937 msgid "&Open..."
3938 msgstr "&Ouvrir..."
3939
3940-#: spyderlib\plugins\editor.py:549
3941+#: spyderlib\plugins\editor.py:560
3942 msgid "Open text file"
3943 msgstr "Ouvrir un fichier texte"
3944
3945-#: spyderlib\plugins\editor.py:551
3946+#: spyderlib\plugins\editor.py:562
3947 msgid "&Revert"
3948 msgstr "&Réinitialiser"
3949
3950-#: spyderlib\plugins\editor.py:552
3951+#: spyderlib\plugins\editor.py:563
3952 msgid "Revert file from disk"
3953 msgstr "Revenir à la version du fichier enregistrée sur le disque"
3954
3955-#: spyderlib\plugins\editor.py:556
3956+#: spyderlib\plugins\editor.py:567
3957 msgid "&Save"
3958 msgstr "&Enregistrer"
3959
3960-#: spyderlib\plugins\editor.py:557
3961+#: spyderlib\plugins\editor.py:568
3962 msgid "Save current file"
3963 msgstr "Enregistrer le fichier en cours d'édition"
3964
3965-#: spyderlib\plugins\editor.py:561
3966+#: spyderlib\plugins\editor.py:572
3967 msgid "Sav&e all"
3968 msgstr "Enregistrer &tout"
3969
3970-#: spyderlib\plugins\editor.py:562
3971+#: spyderlib\plugins\editor.py:573
3972 msgid "Save all opened files"
3973 msgstr "Enregistrer tous les fichiers ouverts"
3974
3975-#: spyderlib\plugins\editor.py:566
3976+#: spyderlib\plugins\editor.py:577
3977 msgid "Save &as..."
3978 msgstr "Enregistrer &sous..."
3979
3980-#: spyderlib\plugins\editor.py:567
3981+#: spyderlib\plugins\editor.py:578
3982 msgid "Save current file as..."
3983 msgstr "Enregistrer le fichier en cours d'édition sous un autre nom..."
3984
3985-#: spyderlib\plugins\editor.py:569 spyderlib\plugins\editor.py:570
3986+#: spyderlib\plugins\editor.py:580 spyderlib\plugins\editor.py:581
3987 msgid "Print preview..."
3988 msgstr "Aperçu avant impression..."
3989
3990-#: spyderlib\plugins\editor.py:571
3991+#: spyderlib\plugins\editor.py:582
3992 msgid "&Print..."
3993 msgstr "Im&primer..."
3994
3995-#: spyderlib\plugins\editor.py:572
3996+#: spyderlib\plugins\editor.py:583
3997 msgid "Print current file..."
3998 msgstr "Imprimer le fichier en cours d'édition..."
3999
4000-#: spyderlib\plugins\editor.py:574
4001+#: spyderlib\plugins\editor.py:587
4002 msgid "&Close"
4003 msgstr "&Fermer"
4004
4005-#: spyderlib\plugins\editor.py:575
4006+#: spyderlib\plugins\editor.py:588
4007 msgid "Close current file"
4008 msgstr "Fermer le fichier en cours d'édition"
4009
4010-#: spyderlib\plugins\editor.py:579
4011+#: spyderlib\plugins\editor.py:592
4012 msgid "C&lose all"
4013 msgstr "Fermer t&out"
4014
4015-#: spyderlib\plugins\editor.py:580
4016+#: spyderlib\plugins\editor.py:593
4017 msgid "Close all opened files"
4018 msgstr "Fermer tous les fichiers ouverts"
4019
4020-#: spyderlib\plugins\editor.py:586
4021+#: spyderlib\plugins\editor.py:599
4022 msgid "Set/Clear breakpoint"
4023 msgstr "Ajouter/supprimer un point d'arrêt"
4024
4025-#: spyderlib\plugins\editor.py:593
4026+#: spyderlib\plugins\editor.py:606
4027 msgid "Set/Edit conditional breakpoint"
4028 msgstr "Ajouter/modifier un point d'arrêt conditionnel"
4029
4030-#: spyderlib\plugins\editor.py:601
4031+#: spyderlib\plugins\editor.py:614
4032 msgid "Clear breakpoints in all files"
4033 msgstr "Supprimer les points d'arrêt dans tous les fichiers"
4034
4035-#: spyderlib\plugins\editor.py:603
4036+#: spyderlib\plugins\editor.py:616
4037 msgid "Breakpoints"
4038 msgstr "Points d'arrêt"
4039
4040-#: spyderlib\plugins\editor.py:608 spyderlib\plugins\editor.py:1074
4041-#: spyderlib\spyder.py:471
4042+#: spyderlib\plugins\editor.py:621 spyderlib\plugins\editor.py:1081
4043+#: spyderlib\spyder.py:503
4044 msgid "&Run"
4045 msgstr "E&xécution"
4046
4047-#: spyderlib\plugins\editor.py:609
4048+#: spyderlib\plugins\editor.py:622
4049 msgid "Run active script in a new Python interpreter"
4050 msgstr "Exécuter le script actuel dans un nouvel interpréteur Python"
4051
4052-#: spyderlib\plugins\editor.py:613
4053+#: spyderlib\plugins\editor.py:626
4054 msgid "&Debug"
4055 msgstr "&Déboguer"
4056
4057-#: spyderlib\plugins\editor.py:614
4058+#: spyderlib\plugins\editor.py:627
4059 msgid ""
4060 "Debug current script in external console\n"
4061 "(external console is executed in a separate process)"
4062@@ -666,27 +736,27 @@
4063 "Déboguer le script en cours d'édition dans la console externe\n"
4064 "(la console externe est exécutée dans un processus séparé)"
4065
4066-#: spyderlib\plugins\editor.py:621
4067+#: spyderlib\plugins\editor.py:634
4068 msgid "&Configure..."
4069 msgstr "&Configurer..."
4070
4071-#: spyderlib\plugins\editor.py:622
4072+#: spyderlib\plugins\editor.py:635
4073 msgid "Edit run configurations"
4074 msgstr "Modifier les configurations d'exécution des scripts récents"
4075
4076-#: spyderlib\plugins\editor.py:627
4077+#: spyderlib\plugins\editor.py:640
4078 msgid "Re-run &last script"
4079 msgstr "Exécuter de nouveau le &dernier script"
4080
4081-#: spyderlib\plugins\editor.py:628
4082+#: spyderlib\plugins\editor.py:641
4083 msgid "Run again last script in external console with the same options"
4084 msgstr "Exécuter de nouveau le dernier script avec les mêmes options"
4085
4086-#: spyderlib\plugins\editor.py:635
4087+#: spyderlib\plugins\editor.py:648
4088 msgid "Run &selection or current block"
4089 msgstr "Exécuter la &sélection ou le bloc de lignes"
4090
4091-#: spyderlib\plugins\editor.py:637
4092+#: spyderlib\plugins\editor.py:650
4093 msgid ""
4094 "Run selected text or current block of lines \n"
4095 "inside current external console's interpreter"
4096@@ -694,155 +764,153 @@
4097 "Exécuter le texte sélectionné ou le bloc de lignes \n"
4098 "dans l'interpréteur de la console externe active"
4099
4100-#: spyderlib\plugins\editor.py:644
4101+#: spyderlib\plugins\editor.py:657
4102 msgid "Show todo list"
4103 msgstr "Afficher la liste des tâches"
4104
4105-#: spyderlib\plugins\editor.py:645
4106+#: spyderlib\plugins\editor.py:658
4107 msgid "Show TODO/FIXME/XXX/HINT/TIP comments list"
4108 msgstr "Afficher la liste des commentaires du type TODO/FIXME/XXX/HINT/TIP"
4109
4110-#: spyderlib\plugins\editor.py:653
4111+#: spyderlib\plugins\editor.py:666
4112 msgid "Show warning/error list"
4113 msgstr "Afficher la liste des avertissements/erreurs"
4114
4115-#: spyderlib\plugins\editor.py:654
4116+#: spyderlib\plugins\editor.py:667
4117 msgid "Show code analysis warnings/errors"
4118 msgstr ""
4119 "Afficher la liste des avertissements/erreurs provenant de l'analyse de code"
4120
4121-#: spyderlib\plugins\editor.py:661
4122+#: spyderlib\plugins\editor.py:674
4123 msgid "Previous warning/error"
4124 msgstr "Avertissement suivant"
4125
4126-#: spyderlib\plugins\editor.py:662
4127+#: spyderlib\plugins\editor.py:675
4128 msgid "Go to previous code analysis warning/error"
4129 msgstr "Afficher le message d'avertissement ou d'erreur suivant"
4130
4131-#: spyderlib\plugins\editor.py:665
4132+#: spyderlib\plugins\editor.py:678
4133 msgid "Next warning/error"
4134 msgstr "Avertissement précédent"
4135
4136-#: spyderlib\plugins\editor.py:666
4137+#: spyderlib\plugins\editor.py:679
4138 msgid "Go to next code analysis warning/error"
4139 msgstr "Afficher le message d'avertissement ou d'erreur précédent"
4140
4141-#: spyderlib\plugins\editor.py:670
4142+#: spyderlib\plugins\editor.py:683
4143 msgid "Last edit location"
4144 msgstr "Dernière position d'édition"
4145
4146-#: spyderlib\plugins\editor.py:671
4147+#: spyderlib\plugins\editor.py:684
4148 msgid "Go to last edit location"
4149 msgstr "Aller à la dernière position d'édition"
4150
4151-#: spyderlib\plugins\editor.py:678
4152+#: spyderlib\plugins\editor.py:691
4153 msgid "Previous cursor position"
4154 msgstr "Position suivante du curseur"
4155
4156-#: spyderlib\plugins\editor.py:679
4157+#: spyderlib\plugins\editor.py:692
4158 msgid "Go to previous cursor position"
4159 msgstr "Aller à la position précédente du curseur"
4160
4161-#: spyderlib\plugins\editor.py:686
4162+#: spyderlib\plugins\editor.py:699
4163 msgid "Next cursor position"
4164 msgstr "Position suivante du curseur"
4165
4166-#: spyderlib\plugins\editor.py:687
4167+#: spyderlib\plugins\editor.py:700
4168 msgid "Go to next cursor position"
4169 msgstr "Aller à la position suivante du curseur"
4170
4171-#: spyderlib\plugins\editor.py:694
4172-msgid "Co&mment"
4173-msgstr "Co&mmenter"
4174-
4175-#: spyderlib\plugins\editor.py:695
4176+#: spyderlib\plugins\editor.py:707
4177+#: spyderlib\widgets\sourcecode\codeeditor.py:1967
4178+msgid "Comment"
4179+msgstr "Commenter"
4180+
4181+#: spyderlib\plugins\editor.py:707
4182+#: spyderlib\widgets\sourcecode\codeeditor.py:1967
4183+msgid "Uncomment"
4184+msgstr "Décommenter"
4185+
4186+#: spyderlib\plugins\editor.py:708
4187 msgid "Comment current line or selection"
4188 msgstr "Commenter la sélection ou la ligne en cours d'édition"
4189
4190-#: spyderlib\plugins\editor.py:700
4191-msgid "&Uncomment"
4192-msgstr "&Décommenter"
4193-
4194-#: spyderlib\plugins\editor.py:701
4195-msgid "Uncomment current line or selection"
4196-msgstr "Décommenter la sélection ou la ligne en cours d'édition"
4197-
4198-#: spyderlib\plugins\editor.py:705
4199+#: spyderlib\plugins\editor.py:712
4200 msgid "Add &block comment"
4201 msgstr "Ajouter un &bloc de commentaires"
4202
4203-#: spyderlib\plugins\editor.py:706
4204+#: spyderlib\plugins\editor.py:713
4205 msgid "Add block comment around current line or selection"
4206 msgstr ""
4207 "Ajouter un bloc de commentaires autour de la sélection ou de la ligne en "
4208 "cours d'édition"
4209
4210-#: spyderlib\plugins\editor.py:712
4211+#: spyderlib\plugins\editor.py:719
4212 msgid "R&emove block comment"
4213 msgstr "&Supprimer un bloc de commentaires"
4214
4215-#: spyderlib\plugins\editor.py:713
4216+#: spyderlib\plugins\editor.py:720
4217 msgid "Remove comment block around current line or selection"
4218 msgstr ""
4219 "Supprimer le bloc de commentaires autour de la ligne en cours d'édition"
4220
4221-#: spyderlib\plugins\editor.py:724
4222+#: spyderlib\plugins\editor.py:731
4223 msgid "Indent"
4224 msgstr "Indenter"
4225
4226-#: spyderlib\plugins\editor.py:725
4227+#: spyderlib\plugins\editor.py:732
4228 msgid "Indent current line or selection"
4229 msgstr "Indenter la sélection ou la ligne en cours d'édition"
4230
4231-#: spyderlib\plugins\editor.py:728
4232+#: spyderlib\plugins\editor.py:735
4233 msgid "Unindent"
4234 msgstr "Désindenter"
4235
4236-#: spyderlib\plugins\editor.py:729
4237+#: spyderlib\plugins\editor.py:736
4238 msgid "Unindent current line or selection"
4239 msgstr "Désindenter la sélection ou la ligne en cours d'édition"
4240
4241-#: spyderlib\plugins\editor.py:733
4242+#: spyderlib\plugins\editor.py:740
4243 msgid "Debug with winpdb"
4244 msgstr "Déboguer avec winpdb"
4245
4246-#: spyderlib\plugins\editor.py:740
4247+#: spyderlib\plugins\editor.py:747
4248 msgid "Carriage return and line feed (Windows)"
4249 msgstr "Retour chariot et retour à la ligne (Windows)"
4250
4251-#: spyderlib\plugins\editor.py:743
4252+#: spyderlib\plugins\editor.py:750
4253 msgid "Line feed (UNIX)"
4254 msgstr "Retour à la ligne (UNIX)"
4255
4256-#: spyderlib\plugins\editor.py:746
4257+#: spyderlib\plugins\editor.py:753
4258 msgid "Carriage return (Mac)"
4259 msgstr "Retour chariot (Mac)"
4260
4261-#: spyderlib\plugins\editor.py:752
4262+#: spyderlib\plugins\editor.py:759
4263 msgid "Convert end-of-line characters"
4264 msgstr "Convertir les caractères de fin de ligne"
4265
4266-#: spyderlib\plugins\editor.py:756
4267+#: spyderlib\plugins\editor.py:763
4268 msgid "Remove trailing spaces"
4269 msgstr "Supprimer les espaces en fin de ligne"
4270
4271-#: spyderlib\plugins\editor.py:758
4272+#: spyderlib\plugins\editor.py:765
4273 msgid "Fix indentation"
4274 msgstr "Corriger l'indentation"
4275
4276-#: spyderlib\plugins\editor.py:759
4277+#: spyderlib\plugins\editor.py:766
4278 msgid "Replace tab characters by space characters"
4279 msgstr "Remplacer les caractères de tabulation par des espaces"
4280
4281-#: spyderlib\plugins\editor.py:762
4282+#: spyderlib\plugins\editor.py:769
4283 msgid "Go to line..."
4284 msgstr "Aller à la ligne..."
4285
4286-#: spyderlib\plugins\editor.py:770
4287+#: spyderlib\plugins\editor.py:777
4288 msgid "Set console working directory"
4289 msgstr "Répertoire de travail de la console"
4290
4291-#: spyderlib\plugins\editor.py:772
4292+#: spyderlib\plugins\editor.py:779
4293 msgid ""
4294 "Set current console (and file explorer) working directory to current script "
4295 "directory"
4296@@ -850,134 +918,167 @@
4297 "Choisir le répertoire du script comme répertoire de travail de la console "
4298 "courante (et de l'explorateur de fichier)"
4299
4300-#: spyderlib\plugins\editor.py:777
4301+#: spyderlib\plugins\editor.py:784
4302 msgid "Maximum number of recent files..."
4303 msgstr "Nombre maximum de fichiers récents..."
4304
4305-#: spyderlib\plugins\editor.py:780
4306+#: spyderlib\plugins\editor.py:787
4307 msgid "Clear recent files list"
4308 msgstr "Effacer la liste des fichiers récents"
4309
4310-#: spyderlib\plugins\editor.py:780
4311+#: spyderlib\plugins\editor.py:787
4312 msgid "Clear this list"
4313 msgstr "Effacer cette liste"
4314
4315-#: spyderlib\plugins\editor.py:782
4316+#: spyderlib\plugins\editor.py:789
4317 msgid "Open &recent"
4318 msgstr "Fichiers &récents"
4319
4320-#: spyderlib\plugins\editor.py:1063 spyderlib\spyder.py:452
4321+#: spyderlib\plugins\editor.py:1070 spyderlib\spyder.py:484
4322 msgid "File toolbar"
4323 msgstr "Barre d'outil fichiers"
4324
4325-#: spyderlib\plugins\editor.py:1064 spyderlib\spyder.py:462
4326+#: spyderlib\plugins\editor.py:1071 spyderlib\spyder.py:494
4327 msgid "Search toolbar"
4328 msgstr "Barre d'outil de recherche"
4329
4330-#: spyderlib\plugins\editor.py:1065 spyderlib\spyder.py:467
4331+#: spyderlib\plugins\editor.py:1072 spyderlib\spyder.py:499
4332 msgid "Source toolbar"
4333 msgstr "Barre d'outils code source"
4334
4335-#: spyderlib\plugins\editor.py:1066 spyderlib\spyder.py:472
4336+#: spyderlib\plugins\editor.py:1073 spyderlib\spyder.py:504
4337 msgid "Run toolbar"
4338 msgstr "Barre d'outil exécution"
4339
4340-#: spyderlib\plugins\editor.py:1067 spyderlib\spyder.py:457
4341+#: spyderlib\plugins\editor.py:1074 spyderlib\spyder.py:489
4342 msgid "Edit toolbar"
4343 msgstr "Barre d'outil édition"
4344
4345-#: spyderlib\plugins\editor.py:1070 spyderlib\spyder.py:449
4346+#: spyderlib\plugins\editor.py:1077 spyderlib\spyder.py:481
4347 msgid "&File"
4348 msgstr "&Fichier"
4349
4350-#: spyderlib\plugins\editor.py:1071 spyderlib\spyder.py:456
4351+#: spyderlib\plugins\editor.py:1078 spyderlib\spyder.py:488
4352 msgid "&Edit"
4353 msgstr "&Édition"
4354
4355-#: spyderlib\plugins\editor.py:1072 spyderlib\spyder.py:461
4356+#: spyderlib\plugins\editor.py:1079 spyderlib\spyder.py:493
4357 msgid "&Search"
4358 msgstr "&Recherche"
4359
4360-#: spyderlib\plugins\editor.py:1073 spyderlib\spyder.py:466
4361+#: spyderlib\plugins\editor.py:1080 spyderlib\spyder.py:498
4362 msgid "Sour&ce"
4363 msgstr "Sour&ce"
4364
4365-#: spyderlib\plugins\editor.py:1075 spyderlib\spyder.py:476
4366+#: spyderlib\plugins\editor.py:1082 spyderlib\spyder.py:511
4367 msgid "&Tools"
4368 msgstr "Ou&tils"
4369
4370-#: spyderlib\plugins\editor.py:1076
4371+#: spyderlib\plugins\editor.py:1083
4372 msgid "?"
4373 msgstr "?"
4374
4375-#: spyderlib\plugins\editor.py:1298
4376+#: spyderlib\plugins\editor.py:1294
4377 msgid "Spyder Editor"
4378 msgstr "Éditeur de Spyder"
4379
4380-#: spyderlib\plugins\editor.py:1299
4381+#: spyderlib\plugins\editor.py:1295
4382 msgid "This temporary script file is located here:"
4383 msgstr "Ce script temporaire est sauvegardé ici :"
4384
4385-#: spyderlib\plugins\editor.py:1349
4386+#: spyderlib\plugins\editor.py:1352
4387 msgid "untitled"
4388 msgstr "sanstitre"
4389
4390-#: spyderlib\plugins\editor.py:1413
4391+#: spyderlib\plugins\editor.py:1422
4392 msgid "Maximum number of recent files"
4393 msgstr "Nombre maximum de fichiers récents"
4394
4395-#: spyderlib\plugins\editor.py:1444 spyderlib\plugins\workingdirectory.py:71
4396+#: spyderlib\plugins\editor.py:1453 spyderlib\plugins\workingdirectory.py:69
4397 msgid "Open file"
4398 msgstr "Ouvrir un fichier"
4399
4400-#: spyderlib\plugins\editor.py:1513
4401+#: spyderlib\plugins\editor.py:1531
4402 msgid "Printing..."
4403 msgstr "Impression en cours..."
4404
4405-#: spyderlib\plugins\editor.py:1529
4406-msgid "Print"
4407-msgstr "Impression"
4408-
4409-#: spyderlib\plugins\editor.py:1530
4410-msgid "<b>Unable to print document '%s'</b>"
4411-msgstr "<b>Impossible d'imprimer le document '%s'</b>"
4412-
4413-#: spyderlib\plugins\explorer.py:55
4414+#: spyderlib\plugins\explorer.py:47
4415 msgid "File explorer"
4416 msgstr "Explorateur de fichiers"
4417
4418-#: spyderlib\plugins\explorer.py:68 spyderlib\plugins\inspector.py:218
4419-#: spyderlib\plugins\projectexplorer.py:66
4420+#: spyderlib\plugins\explorer.py:60 spyderlib\plugins\inspector.py:221
4421+#: spyderlib\plugins\projectexplorer.py:57
4422 msgid "Set font style"
4423 msgstr "Changer la police d'écriture"
4424
4425-#: spyderlib\plugins\externalconsole.py:43
4426+#: spyderlib\plugins\externalconsole.py:42
4427+#: spyderlib\plugins\externalconsole.py:865 spyderlib\plugins\inspector.py:247
4428+#: spyderlib\widgets\externalshell\baseshell.py:104
4429+msgid "Console"
4430+msgstr "Console"
4431+
4432+#: spyderlib\plugins\externalconsole.py:49
4433 msgid "One tab per script"
4434 msgstr "Un onglet par script"
4435
4436-#: spyderlib\plugins\externalconsole.py:44
4437-#: spyderlib\widgets\externalshell\baseshell.py:164
4438+#: spyderlib\plugins\externalconsole.py:50
4439+#: spyderlib\widgets\externalshell\baseshell.py:169
4440 msgid "Show elapsed time"
4441 msgstr "Afficher le temps écoulé"
4442
4443-#: spyderlib\plugins\externalconsole.py:45 spyderlib\widgets\explorer.py:532
4444+#: spyderlib\plugins\externalconsole.py:51 spyderlib\widgets\explorer.py:952
4445 msgid "Show icons and text"
4446 msgstr "Afficher icônes et textes"
4447
4448-#: spyderlib\plugins\externalconsole.py:57
4449+#: spyderlib\plugins\externalconsole.py:63
4450 msgid " lines"
4451 msgstr " lignes"
4452
4453-#: spyderlib\plugins\externalconsole.py:57
4454+#: spyderlib\plugins\externalconsole.py:63
4455 msgid "Buffer: "
4456 msgstr "Tampon : "
4457
4458 #: spyderlib\plugins\externalconsole.py:68
4459-#: spyderlib\widgets\arrayeditor.py:385
4460+msgid "Merge process standard output/error channels"
4461+msgstr "Fusionner les canaux de sortie et d'erreur du processus"
4462+
4463+#: spyderlib\plugins\externalconsole.py:70
4464+msgid ""
4465+"Merging the output channels of the process means that\n"
4466+"the standard error won't be written in red anymore,\n"
4467+"but this has the effect of speeding up display.\n"
4468+"\n"
4469+"This option has no effect on IPython."
4470+msgstr ""
4471+"Fusionner les canaux de sortie et d'erreur du processus\n"
4472+"signifie que les erreurs ne seront plus affichées en rouge,\n"
4473+"mais cela entraînera également une amélioration des performances\n"
4474+"d'affichage et une meilleure réactivité de la console.\n"
4475+"\n"
4476+"Cette option n'a aucun effet sur les interpréteurs IPython."
4477+
4478+#: spyderlib\plugins\externalconsole.py:75
4479+msgid "Colorize standard error channel using ANSI escape codes"
4480+msgstr "Coloriser le canal d'erreur standard (codes d'échappement ANSI)"
4481+
4482+#: spyderlib\plugins\externalconsole.py:77
4483+msgid ""
4484+"This method is the only way to have colorized standard\n"
4485+"error channel when the output channels have been merged.\n"
4486+"\n"
4487+"This option has no effect on IPython."
4488+msgstr ""
4489+"Cette méthode est le seul moyen de coloriser le canal\n"
4490+"d'erreur standard lorsque les canaux de sorties ont été fusionnés.\n"
4491+"\n"
4492+"Cette option n'a aucun effet sur les interpréteurs IPython."
4493+
4494+#: spyderlib\plugins\externalconsole.py:95
4495+#: spyderlib\widgets\arrayeditor.py:393
4496 msgid "Background color"
4497 msgstr "Couleur de fond"
4498
4499-#: spyderlib\plugins\externalconsole.py:69
4500+#: spyderlib\plugins\externalconsole.py:96
4501 msgid ""
4502 "This option will be applied the next time a Python console or a terminal is "
4503 "opened."
4504@@ -985,15 +1086,15 @@
4505 "Cette option sera prise en compte lors de la prochaine ouverture de console "
4506 "(interpréteur Python ou terminal)."
4507
4508-#: spyderlib\plugins\externalconsole.py:72
4509+#: spyderlib\plugins\externalconsole.py:99
4510 msgid "Light background (white color)"
4511 msgstr "Fond blanc"
4512
4513-#: spyderlib\plugins\externalconsole.py:74
4514+#: spyderlib\plugins\externalconsole.py:101
4515 msgid "Set the appropriate IPython color option"
4516 msgstr "Utiliser le réglage de couleur IPython approprié"
4517
4518-#: spyderlib\plugins\externalconsole.py:97
4519+#: spyderlib\plugins\externalconsole.py:125
4520 msgid ""
4521 "If this option is enabled, object inspector\n"
4522 "will automatically show informations on functions\n"
4523@@ -1005,23 +1106,24 @@
4524 "déclenché par la saisie d'une parenthèse gauche après un nom valide de "
4525 "fonction)"
4526
4527-#: spyderlib\plugins\externalconsole.py:112
4528+#: spyderlib\plugins\externalconsole.py:140
4529 msgid "User Module Deleter (UMD)"
4530 msgstr "User Module Deleter (UMD)"
4531
4532-#: spyderlib\plugins\externalconsole.py:113
4533+#: spyderlib\plugins\externalconsole.py:141
4534 msgid ""
4535-"UMD forces Python to reload modules imported when executing a script in the "
4536-"external console with the 'runfile' function"
4537+"UMD forces Python to reload modules which were imported when executing a \n"
4538+"script in the external console with the 'runfile' function."
4539 msgstr ""
4540-"L'UMD force Python à recharger les modules importés lors de l'exécution d'un "
4541-"script dans la console interne avec la fonction 'runfile'"
4542+"L'UMD force Python à recharger les modules importés lors de l'exécution "
4543+"d'un\n"
4544+"script dans la console interne avec la fonction 'runfile'."
4545
4546-#: spyderlib\plugins\externalconsole.py:117
4547+#: spyderlib\plugins\externalconsole.py:144
4548 msgid "Enable UMD"
4549 msgstr "Activer l'UMD"
4550
4551-#: spyderlib\plugins\externalconsole.py:118
4552+#: spyderlib\plugins\externalconsole.py:145
4553 msgid ""
4554 "This option will enable the User Module Deleter (UMD) in Python/IPython "
4555 "interpreters. UMD forces Python to reload deeply modules during import when "
4556@@ -1046,12 +1148,12 @@
4557 "l'attribut <b>Qt.WA_DeleteOnClose</b> sur votre objet fenêtre principale "
4558 "grâce à la méthode <b>setAttribute</b>)"
4559
4560-#: spyderlib\plugins\externalconsole.py:134
4561+#: spyderlib\plugins\externalconsole.py:161
4562 msgid "Show reloaded modules list"
4563 msgstr "Afficher les modules rechargés"
4564
4565-#: spyderlib\plugins\externalconsole.py:135
4566-#: spyderlib\plugins\externalconsole.py:888
4567+#: spyderlib\plugins\externalconsole.py:162
4568+#: spyderlib\plugins\externalconsole.py:1149
4569 msgid ""
4570 "Please note that these changes will be applied only to new Python/IPython "
4571 "interpreters"
4572@@ -1059,28 +1161,70 @@
4573 "Veuillez noter que ces changements ne seront pris en compte que par les "
4574 "nouveaux interpréteurs Python/IPython"
4575
4576-#: spyderlib\plugins\externalconsole.py:141
4577+#: spyderlib\plugins\externalconsole.py:168
4578 msgid "Set UMD excluded (not reloaded) modules"
4579 msgstr "Modifier la liste des modules non rechargés par l'UMD"
4580
4581-#: spyderlib\plugins\externalconsole.py:153
4582-#: spyderlib\plugins\workingdirectory.py:44
4583+#: spyderlib\plugins\externalconsole.py:180
4584+msgid "Python executable"
4585+msgstr "Exécutable Python"
4586+
4587+#: spyderlib\plugins\externalconsole.py:181
4588+msgid "Path to Python interpreter executable binary:"
4589+msgstr "Emplacement de l'exécutable de l'interpréteur Python :"
4590+
4591+#: spyderlib\plugins\externalconsole.py:184
4592+msgid "Executables"
4593+msgstr "Exécutables"
4594+
4595+#: spyderlib\plugins\externalconsole.py:196
4596+#: spyderlib\plugins\workingdirectory.py:42
4597 msgid "Startup"
4598 msgstr "Démarrage"
4599
4600-#: spyderlib\plugins\externalconsole.py:154
4601+#: spyderlib\plugins\externalconsole.py:197
4602 msgid "Open a Python interpreter at startup"
4603 msgstr "Ouvrir un interpréteur Python au démarrage"
4604
4605-#: spyderlib\plugins\externalconsole.py:156
4606+#: spyderlib\plugins\externalconsole.py:199
4607 msgid "Open an IPython interpreter at startup"
4608 msgstr "Ouvrir un interpréteur IPython au démarrage"
4609
4610-#: spyderlib\plugins\externalconsole.py:166
4611+#: spyderlib\plugins\externalconsole.py:205
4612+msgid ""
4613+"This option is not available for IPython\n"
4614+"versions which are not fully supported\n"
4615+"through Spyder's console (i.e. IPython v0.11+)."
4616+msgstr ""
4617+"Cette option est désactivée pour les versions de IPython\n"
4618+"qui ne sont entièrement prises en charge par Spyder\n"
4619+"à travers la console (i.e. IPython v0.11+)."
4620+
4621+#: spyderlib\plugins\externalconsole.py:215
4622+msgid "PYTHONSTARTUP replacement"
4623+msgstr "Substitution de PYTHONSTARTUP"
4624+
4625+#: spyderlib\plugins\externalconsole.py:216
4626+msgid ""
4627+"This option will override the PYTHONSTARTUP environment variable which\n"
4628+"defines the script to be executed during the Python interpreter startup."
4629+msgstr ""
4630+"Cette option permet de remplacer le script de démarrage défini par la\n"
4631+"variable d'environnement PYTHONSTARTUP."
4632+
4633+#: spyderlib\plugins\externalconsole.py:221
4634+msgid "Default PYTHONSTARTUP script"
4635+msgstr "Script PYTHONSTARTUP par défaut"
4636+
4637+#: spyderlib\plugins\externalconsole.py:224
4638+msgid "Use the following startup script:"
4639+msgstr "Utiliser le script de démarrage suivant :"
4640+
4641+#: spyderlib\plugins\externalconsole.py:242
4642 msgid "Monitor"
4643 msgstr "Moniteur"
4644
4645-#: spyderlib\plugins\externalconsole.py:167
4646+#: spyderlib\plugins\externalconsole.py:243
4647 msgid ""
4648 "The monitor provides introspection features to console: code completion, "
4649 "calltips and variable explorer. Because it relies on several modules, "
4650@@ -1091,75 +1235,146 @@
4651 "Parce qu'il nécessite l'import de nombreux modules, désactiver le moniteur "
4652 "permet d'accélérer le démarrage de la console."
4653
4654-#: spyderlib\plugins\externalconsole.py:174
4655+#: spyderlib\plugins\externalconsole.py:250
4656 msgid "Enable monitor"
4657 msgstr "Activer le moniteur"
4658
4659-#: spyderlib\plugins\externalconsole.py:186
4660+#: spyderlib\plugins\externalconsole.py:280
4661+msgid "Qt (PyQt/PySide)"
4662+msgstr "Qt (PyQt/PySide)"
4663+
4664+#: spyderlib\plugins\externalconsole.py:282
4665+msgid "Qt-Python bindings library selection:"
4666+msgstr "Sélection de la bibliothèque d'interfaçage Qt :"
4667+
4668+#: spyderlib\plugins\externalconsole.py:283
4669+msgid "Default library"
4670+msgstr "Bibliothèque par défaut"
4671+
4672+#: spyderlib\plugins\externalconsole.py:284
4673+msgid "This option will act on libraries such as Matplotlib, guidata or ETS"
4674+msgstr ""
4675+"Cette option est prise en charge par les bibliothèques telles que "
4676+"Matplotlib, guidata ou ETS"
4677+
4678+#: spyderlib\plugins\externalconsole.py:286
4679+msgid "Install Spyder's input hook for Qt"
4680+msgstr "Installer le \"input hook\" de Spyder pour Qt"
4681+
4682+#: spyderlib\plugins\externalconsole.py:288
4683+msgid ""
4684+"PyQt installs an input hook that allows creating and interacting\n"
4685+"with Qt widgets in an interactive interpreter without blocking it. \n"
4686+"On Windows platforms, it is strongly recommended to replace it by "
4687+"Spyder's. \n"
4688+"Regarding PySide, note that it does not install an input hook, so it is \n"
4689+"required to enable this feature in order to be able to manipulate PySide/"
4690+"Qt \n"
4691+"objects interactively. Note that this feature requires the monitor to be \n"
4692+"enabled and that it has no effect in IPython."
4693+msgstr ""
4694+"PyQt installe un \"input hook\", mécanisme permettant d'interagir\n"
4695+"avec des widgets Qt dans un interpréteur Python sans bloquer ce dernier. \n"
4696+"Sous Windows, il est fortement conseillé de le remplacer par celui de "
4697+"Spyder. \n"
4698+"Concernant PySide, aucun \"input hook\" n'étant implémenté dans la version "
4699+"1.0, \n"
4700+"il est également recommandé d'activer cette option \n"
4701+"(cette fonctionnalité n'a aucun effet si le moniteur est désactivé \n"
4702+"ou dans un interpréteur IPython)."
4703+
4704+#: spyderlib\plugins\externalconsole.py:304
4705 msgid "PyQt"
4706 msgstr "PyQt"
4707
4708-#: spyderlib\plugins\externalconsole.py:187
4709+#: spyderlib\plugins\externalconsole.py:306
4710+msgid "API selection for QString and QVariant objects:"
4711+msgstr "Sélection de l'API des objets QString et QVariant :"
4712+
4713+#: spyderlib\plugins\externalconsole.py:307
4714+msgid "API #1"
4715+msgstr "API n°1"
4716+
4717+#: spyderlib\plugins\externalconsole.py:307
4718+msgid "API #2"
4719+msgstr "API n°2"
4720+
4721+#: spyderlib\plugins\externalconsole.py:307
4722+msgid "Default API"
4723+msgstr "API par défaut"
4724+
4725+#: spyderlib\plugins\externalconsole.py:308
4726 msgid ""
4727-"PyQt installs an input hook that allows creating and interacting with "
4728-"widgets in an interactive interpreter without blocking it. It is strongly "
4729-"recommended to remove it on Windows platforms (it has no effect in IPython)."
4730+"PyQt API #1 is the default API for Python 2. PyQt API #2 is the default \n"
4731+"API for Python 3 and is compatible with PySide.\n"
4732+"Note that switching to API #2 may require to enable the Matplotlib patch."
4733 msgstr ""
4734-"PyQt installe un \"input hook\" qui permet d'interagir avec des widgets dans "
4735-"un interpréteur Python sans bloquer ce dernier. Il est fortement conseillé "
4736-"de le supprimer sous Windows."
4737-
4738-#: spyderlib\plugins\externalconsole.py:193
4739-msgid "Remove PyQt input hook"
4740-msgstr "Supprimer le \"input hook\" de PyQt"
4741-
4742-#: spyderlib\plugins\externalconsole.py:195
4743+"L'API n°1 de PyQt est l'API par défaut pour Python 2. L'API n°2 est l'API \n"
4744+"par défaut pour Python 3 : c'est l'API qui est compatible avec PySide.\n"
4745+"La sélection de l'API n°2 peut nécessiter l'activation du patch de "
4746+"Matplotlib."
4747+
4748+#: spyderlib\plugins\externalconsole.py:312
4749 msgid "Ignore API change errors (sip.setapi)"
4750 msgstr "Ignorer les erreurs de changement d'API (sip.setapi)"
4751
4752-#: spyderlib\plugins\externalconsole.py:210
4753-msgid "IPython"
4754-msgstr "IPython"
4755-
4756-#: spyderlib\plugins\externalconsole.py:211
4757-msgid ""
4758-"IPython interpreter command line options:\n"
4759-"(Qt4 and matplotlib support: -q4thread -pylab)"
4760-msgstr ""
4761-"Options en ligne de commande de IPython :\n"
4762-"(support Qt4 et matplotlib : -q4thread -pylab)"
4763-
4764-#: spyderlib\plugins\externalconsole.py:222
4765+#: spyderlib\plugins\externalconsole.py:313
4766+msgid ""
4767+"Enabling this option will ignore errors when changing PyQt API.\n"
4768+"As PyQt does not support dynamic API changes, it is strongly recommended\n"
4769+"to use this feature wisely, e.g. for debugging purpose."
4770+msgstr ""
4771+"L'activation de cette option permet d'ignorer les erreurs liées aux "
4772+"changements\n"
4773+"d'API de PyQt. Vu que PyQt ne prend pas en charge le changement dynamique\n"
4774+" d'API, il est fortement recommandé d'utiliser cette fonctionnalité "
4775+"exceptionnellement,\n"
4776+"par exemple pour du débogage."
4777+
4778+#: spyderlib\plugins\externalconsole.py:332
4779+msgid "IPython interpreter command line options"
4780+msgstr "IPython : options en ligne de commande"
4781+
4782+#: spyderlib\plugins\externalconsole.py:344
4783+msgid ""
4784+"<b>Note:</b><br>IPython >=<u>v0.10</u> is not installed on this computer."
4785+msgstr ""
4786+"<b>Note :</b><br>IPython >=<u>v0.10</u> n'est pas installé sur cet "
4787+"ordinateur."
4788+
4789+#: spyderlib\plugins\externalconsole.py:353
4790 msgid "Matplotlib"
4791 msgstr "Matplotlib"
4792
4793-#: spyderlib\plugins\externalconsole.py:223
4794+#: spyderlib\plugins\externalconsole.py:355
4795+msgid "GUI backend:"
4796+msgstr "Backend graphique :"
4797+
4798+#: spyderlib\plugins\externalconsole.py:357
4799+msgid ""
4800+"Set the GUI toolkit used by Matplotlib to show figures (default: Qt4Agg)"
4801+msgstr ""
4802+"Spécifie la bibliothèque d'interfaces graphiques à utiliser pour l'affichage "
4803+"des figures Matplotlib (par défaut : Qt4Agg)"
4804+
4805+#: spyderlib\plugins\externalconsole.py:367
4806+msgid "Patch Matplotlib figures"
4807+msgstr "Patcher les figures Matplotlib"
4808+
4809+#: spyderlib\plugins\externalconsole.py:369
4810 msgid ""
4811 "Patching Matplotlib library will add a button to customize figure options "
4812-"(curves/images plot parameters)."
4813+"(Qt4Agg only) and fix some issues."
4814 msgstr ""
4815 "Appliquer un patch à la bibliothèque Matplotlib permet d'ajouter un bouton "
4816-"pour modifier les options des courbes et images affichées."
4817-
4818-#: spyderlib\plugins\externalconsole.py:227
4819-msgid "Patch Matplotlib figures"
4820-msgstr "Patcher les figures Matplotlib"
4821-
4822-#: spyderlib\plugins\externalconsole.py:229
4823-msgid "Matplotlib backend (default: Qt4Agg):"
4824-msgstr "Backend Matplotlib (valeur par défaut: Qt4Agg) :"
4825-
4826-#: spyderlib\plugins\externalconsole.py:232
4827-msgid "Set the GUI toolkit used by Matplotlib to show figures"
4828-msgstr ""
4829-"Spécifie la bibliothèque d'interfaces graphiques à utiliser pour l'affichage "
4830-"des figures Matplotlib"
4831-
4832-#: spyderlib\plugins\externalconsole.py:248
4833+"(au backend Qt4Agg) pour modifier les options des courbes et images "
4834+"affichées et de corriger quelques bogues."
4835+
4836+#: spyderlib\plugins\externalconsole.py:391
4837 msgid "Enthought Tool Suite"
4838 msgstr "Enthought Tool Suite"
4839
4840-#: spyderlib\plugins\externalconsole.py:249
4841+#: spyderlib\plugins\externalconsole.py:392
4842 msgid ""
4843 "Enthought Tool Suite (ETS) supports PyQt4 (qt4) and wxPython (wx) graphical "
4844 "user interfaces."
4845@@ -1167,15 +1382,15 @@
4846 "Le logiciel Enthought Tool Suite (ETS) prend en charge les interfaces "
4847 "graphiques PyQt4 (qt4) et wxPython (wx)."
4848
4849-#: spyderlib\plugins\externalconsole.py:253
4850-msgid "ETS_TOOLKIT (default value: qt4):"
4851-msgstr "ETS_TOOLKIT (valeur par défaut: qt4) :"
4852+#: spyderlib\plugins\externalconsole.py:396
4853+msgid "ETS_TOOLKIT:"
4854+msgstr "ETS_TOOLKIT:"
4855
4856-#: spyderlib\plugins\externalconsole.py:275
4857+#: spyderlib\plugins\externalconsole.py:417
4858 msgid "External modules"
4859 msgstr "Modules externes"
4860
4861-#: spyderlib\plugins\externalconsole.py:473
4862+#: spyderlib\plugins\externalconsole.py:644
4863 msgid ""
4864 "%s is already running in a separate process.\n"
4865 "Do you want to kill the process before starting a new one?"
4866@@ -1183,58 +1398,57 @@
4867 "%s est déjà en cours d'exécution dans un processus séparé.\n"
4868 "Souhaitez-vous tuer ce processus avant d'en démarrer un autre ?"
4869
4870-#: spyderlib\plugins\externalconsole.py:597
4871+#: spyderlib\plugins\externalconsole.py:803
4872 msgid "Command Window"
4873 msgstr "Invite de commandes"
4874
4875-#: spyderlib\plugins\externalconsole.py:599
4876+#: spyderlib\plugins\externalconsole.py:805
4877 msgid "Terminal"
4878 msgstr "Terminal"
4879
4880-#: spyderlib\plugins\externalconsole.py:653 spyderlib\plugins\inspector.py:244
4881-#: spyderlib\widgets\externalshell\baseshell.py:99
4882-msgid "Console"
4883-msgstr "Console"
4884-
4885-#: spyderlib\plugins\externalconsole.py:669
4886+#: spyderlib\plugins\externalconsole.py:887
4887 msgid "Open &interpreter"
4888 msgstr "Ouvrir un &interpréteur"
4889
4890-#: spyderlib\plugins\externalconsole.py:670
4891+#: spyderlib\plugins\externalconsole.py:888
4892 msgid "Open a Python interpreter"
4893 msgstr "Ouvrir un interpréteur Python"
4894
4895-#: spyderlib\plugins\externalconsole.py:673
4896+#: spyderlib\plugins\externalconsole.py:891
4897 msgid "Open &command prompt"
4898 msgstr "Ouvrir un invite de &commandes"
4899
4900-#: spyderlib\plugins\externalconsole.py:674
4901+#: spyderlib\plugins\externalconsole.py:892
4902 msgid "Open a Windows command prompt"
4903 msgstr "Ouvrir un invite de commandes Windows"
4904
4905-#: spyderlib\plugins\externalconsole.py:676
4906+#: spyderlib\plugins\externalconsole.py:894
4907 msgid "Open &terminal"
4908 msgstr "Ouvrir un &terminal"
4909
4910-#: spyderlib\plugins\externalconsole.py:677
4911+#: spyderlib\plugins\externalconsole.py:895
4912 msgid "Open a terminal window inside Spyder"
4913 msgstr "Ouvrir un terminal de commandes dans Spyder"
4914
4915-#: spyderlib\plugins\externalconsole.py:690
4916+#: spyderlib\plugins\externalconsole.py:908
4917+msgid "Start a new IPython kernel"
4918+msgstr "Démarrer un nouveau noyau IPython"
4919+
4920+#: spyderlib\plugins\externalconsole.py:915
4921 msgid "Open IPython interpreter"
4922 msgstr "Ouvrir un interpréteur IPython"
4923
4924-#: spyderlib\plugins\externalconsole.py:692
4925+#: spyderlib\plugins\externalconsole.py:917
4926 msgid "Open an IPython interpreter"
4927 msgstr "Ouvrir un interpréteur IPython"
4928
4929-#: spyderlib\plugins\externalconsole.py:870
4930-#: spyderlib\plugins\externalconsole.py:883
4931-#: spyderlib\plugins\externalconsole.py:887
4932+#: spyderlib\plugins\externalconsole.py:1131
4933+#: spyderlib\plugins\externalconsole.py:1144
4934+#: spyderlib\plugins\externalconsole.py:1148
4935 msgid "UMD"
4936 msgstr "UMD"
4937
4938-#: spyderlib\plugins\externalconsole.py:871
4939+#: spyderlib\plugins\externalconsole.py:1132
4940 msgid ""
4941 "UMD excluded modules:\n"
4942 "(example: guidata, guiqwt)"
4943@@ -1242,7 +1456,7 @@
4944 "Modules non rechargés par l'UMD :\n"
4945 "(exemple: guidata, guiqwt)"
4946
4947-#: spyderlib\plugins\externalconsole.py:884
4948+#: spyderlib\plugins\externalconsole.py:1145
4949 msgid ""
4950 "The following modules are not installed on your machine:\n"
4951 "%s"
4952@@ -1250,54 +1464,58 @@
4953 "Les modules suivants ne sont pas installés sur votre ordinateur :\n"
4954 "%s"
4955
4956-#: spyderlib\plugins\findinfiles.py:86 spyderlib\widgets\findinfiles.py:701
4957+#: spyderlib\plugins\findinfiles.py:89 spyderlib\widgets\findinfiles.py:695
4958 msgid "Find in files"
4959 msgstr "Recherche dans des fichiers"
4960
4961-#: spyderlib\plugins\findinfiles.py:110
4962+#: spyderlib\plugins\findinfiles.py:113
4963 msgid "&Find in files"
4964 msgstr "Rechercher dans des &fichiers"
4965
4966-#: spyderlib\plugins\findinfiles.py:113
4967+#: spyderlib\plugins\findinfiles.py:116
4968 msgid "Search text in multiple files"
4969 msgstr "Rechercher une chaîne de caractères dans plusieurs fichiers à la fois"
4970
4971-#: spyderlib\plugins\history.py:32
4972+#: spyderlib\plugins\history.py:29
4973 msgid "Settings"
4974 msgstr "Options"
4975
4976-#: spyderlib\plugins\history.py:34
4977+#: spyderlib\plugins\history.py:31
4978 msgid " entries"
4979 msgstr " lignes"
4980
4981-#: spyderlib\plugins\history.py:34
4982+#: spyderlib\plugins\history.py:31
4983 msgid "History depth: "
4984 msgstr "Taille de l'historique : "
4985
4986-#: spyderlib\plugins\history.py:94 spyderlib\plugins\inspector.py:297
4987-#: spyderlib\widgets\editor.py:553 spyderlib\widgets\explorer.py:567
4988-#: spyderlib\widgets\externalshell\baseshell.py:144
4989-#: spyderlib\widgets\externalshell\namespacebrowser.py:206
4990+#: spyderlib\plugins\history.py:38
4991+msgid "Scroll automatically to last entry"
4992+msgstr "Défiler automatiquement jusqu'à la dernière ligne"
4993+
4994+#: spyderlib\plugins\history.py:97 spyderlib\plugins\inspector.py:300
4995+#: spyderlib\widgets\editor.py:610 spyderlib\widgets\explorer.py:982
4996+#: spyderlib\widgets\externalshell\baseshell.py:149
4997+#: spyderlib\widgets\externalshell\namespacebrowser.py:221
4998 msgid "Options"
4999 msgstr "Options"
5000
The diff has been truncated for viewing.

Subscribers

People subscribed via source and target branches

to all changes: