Skip to content

Beta version changelog

Carlos Cordoba edited this page Nov 18, 2019 · 214 revisions

Version 4.0dev

New features

Main Window

  • Add a dark theme for the entire interface.
  • Add a new Plots pane to browse all inline figures generated by the IPython console.
  • Several plugins were renamed to have a simpler interface:
    • Static code analysis to Code Analysis
    • File explorer to Files
    • Find in files to Find
    • History log to History
    • Project explorer to Project
  • Add a new action called Undock to the Options menu of every plugin. This action creates a separate window that only contains the plugin and can be moved to a different place of the screen or to a different monitor.
  • Add a clock to the status bar, for those who like to work on full screen mode. It can be activated in Preferences > General > Advanced settings > Status bar > Show clock.
  • Add translation for Simplified Chinese.

Editor

  • Add code folding functionality.
  • Show code completions as you type.
  • Add autosave functionality to be able to recover unsaved files after a crash.
  • Add indentation guides. They can be activated under the Source menu.
  • Add a panel to show the current class and method/function where the cursor is placed, inspired by similar functionality present in Microsoft Visual Studio. It can activated under the Source menu.
  • Allow setting multiple line length indicators under Preferences > Editor > Display > Show vertical lines.
  • Add Ctrl+Alt+Shift+, and Ctrl+Alt+Shift+. shortcuts to go to the previous/next warning and error, respectively.
  • Allow scrolling past the end of the file. This can activated in Preferences > Editor > Display > Scroll past the end.
  • Add the ability to take into account code indentation and PEP 8 when adding and removing comment levels.
  • Add an option to convert end-of-line characters on save.
  • Add Ctrl+{ and Ctrl+_ shortcuts to split panels vertically and horizontally, respectively.
  • Add Alt+Shift+W shortcut to close the current split panel.
  • After pressing a quote or brace the current selection gets enclosed on it.
  • Add automatic docstring generation (parameters, return vals and exceptions raised) in Numpydoc and Googledoc formats.
  • Add an option to its context menu to sort files alphabetically.
  • Add the ability to reference issues on Gitlab (gl), Github (gh) and Bitbucket (bb) in comments or strings by using the convention {gl/gh/bb}:my-org/my-repo#123. You can also reference them by {gl/gh/bb}-123, if you previously set up an upstream or origin remote in your repo.
  • Use the Language Server Protocol for code completion and linting.

IPython console

  • Files are now run in an empty namespace. This avoids picking up variables defined in the console while running a file. To get the previous behavior you need to go to the menu Run > Configuration per file and activate the option called Run in console’s namespace instead of an empty one.
  • Add menu options to start consoles in Pylab, Sympy and Cython modes.
  • Run cells through a function called runcell instead of pasting their contents directly to the console.
  • Use Jupyter comms to handle communications between frontend and kernel.

Debugger

  • Add code completion to it.
  • Add the ability to execute multi-line statements on it.
  • Add syntax highlighting to it and color ipdb prompts.
  • Add permanent history to it, separate from the console history.
  • runfile and runcell can now be called when the debugger is active.
  • Add the ability to debug cells by pressing Alt+Shift+Return or by going to the menu Debug > Debug cell.
  • Add an option to ignore installed Python libraries while debugging. It can be turned on in the menu Debug > Ignore Python libraries while debugging.
  • Add the ability to see inline plots while debugging. For that you need to activate the option called Process execute events while debugging, present in in the Debug menu.
  • Disambiguate file names in the Breakpoints pane.

Variable Explorer

  • Add a new viewer to inspect any Python object in a tree-like view.
  • Add the ability to search for variable names and types.
  • Restore the ability to refresh it while code is being executed.
  • Add support for Numpy object arrays.
  • Add MultiIndex display support to the DataFrame viewer.
  • Add support for all Pandas indexes.
  • Add support for sets.
  • Add a new option to exclude callables and modules.
  • Add an option to its context menu (the one you get with a mouse right-click) to resize columns to its contents.

Files

  • Add the possibility to associate different external applications to open specific file extensions (e.g. .txt files with Notepad++ or VSCode).
  • Add a context menu action called Open externally to all files to open them with the Operating System default program associated with the file type.
  • Add multi-select functionality (Ctrl/Shift+click).
  • Add the ability to copy/paste files and their absolute or relative paths.
  • Use special icons for different file types.
  • Add an option to open files and directories with a single click.

Outline

  • Show cells grouped in sections. Level 1 cells are defined by #%% (as before), level 2 cells by #%%%, level 3 cells by #%%%% and so on. With this new syntax, all n+1 cells will be conveniently grouped under n-level cells in the outline tree.
  • Add an option to sort files alphabetically. By default files are shown in the same order as in the Editor.
  • Add a default name for cells to encourage users to name them. This way cells can be more easily spotted in the outline tree.

Preferences:

  • Spyder can now read default configuration options saved in spyder.ini files from system (e.g. /etc/spyder) and conda environment (e.g. ~/miniconda/envs/py36/etc/spyder) directories. This can be used by sysadmins to turn on/off certain options by default for all users in an organization. To inspect the paths from which Spyder reads these files per operating system and the order in which it does that, you can use the new command line option spyder --paths.

API Changes

Major changes
  • Create one module per plugin in spyder.plugins and move there all widgets and utility modules used by that plugin. For example, spyder.widgets.sourcecode.codeeditor is now at spyder.plugins.editor.widgets.codeeditor.
  • Create the spyder.api module to expose a public API for external plugins.
  • Add a SpyderPlugin class to be able to create plugins without an associated graphical pane.
Minor changes
  • Remove the SpyderPluginMixin class. Its contents were added to BasePluginMixin and BasePluginWidgetMixin (in plugins/base.py).
  • Move SpyderDockWidget to widgets/dock.py.
  • Config pages of all plugins are now located in a separate module called spyder/plugins/<plugin>/confpage.py

Under the hood

  • Drop support for Python 3.4.
  • Increase minimal PyQt supported version to 5.6.
  • Deprecate the usage of debug_print and use the logging module instead.
Clone this wiki locally