# Spyder (software)

Spyder is an open-source cross-platform integrated development environment (IDE) for scientific programming in the Python language. Spyder integrates with a number of prominent packages in the scientific Python stack, as well as other open-source software. Created by Pierre Raybaut and released in 2009 under the MIT license, since 2012 Spyder has been maintained and continuously improved by Python developers and the community.
Spyder is extensible with first-party and third-party plugins, and includes support for interactive tools for data inspection and embeds Python-specific code quality assurance and introspection instruments, such as Pyflakes, Pylint and Rope. Spyder uses Qt for its GUI and is designed to use either of the PyQt or PySide Python bindings. QtPy, a thin abstraction layer developed by the Spyder project and later adopted by multiple other packages, provides the flexibility to use either backend.

## History

Initially created and developed by Pierre Raybaut, it was published on October 18, 2009 under the MIT license.
Since 2012 Spyder has been maintained and continuously improved by a team of scientific Python developers and the community. As of 2024, the Spyder website lists the Chan Zuckerberg Initiative and NumFOCUS as their two major sponsors, also noting donations received from users through Open Collective. Carlos Cordoba was listed as the lead maintainer of the software, with Daniel Althiz as co-maintainer.

## Software

It is an open-source cross-platform integrated development environment (IDE) for scientific programming in the Python language. Spyder integrates with a number of prominent packages in the scientific Python stack, including NumPy, SciPy, Matplotlib, pandas, IPython, SymPy and Cython, as well as other open-source software.
Spyder is extensible with first-party and third-party plugins, includes support for interactive tools for data inspection and embeds Python-specific code quality assurance and introspection instruments, such as Pyflakes, Pylint and Rope. It is available cross-platform through Anaconda, on Windows, on macOS through MacPorts, and on major Linux distributions such as Arch Linux, Debian, Fedora, Gentoo Linux, openSUSE and Ubuntu.
Spyder uses Qt for its GUI and is designed to use either of the PyQt or PySide Python bindings. QtPy, a thin abstraction layer developed by the Spyder project and later adopted by multiple other packages, provides the flexibility to use either backend.

## Features

Features include:
* An editor with syntax highlighting, introspection, code completion
* Support for multiple IPython consoles
* The ability to explore and edit variables from a GUI
* A Help pane able to retrieve and render rich text documentation on functions, classes and methods automatically or on-demand
* A debugger linked to IPdb, for step-by-step execution
* Static code analysis, powered by Pylint
* A run-time Profiler, to benchmark code
* Project support, allowing work on multiple development efforts simultaneously
* A built-in file explorer, for interacting with the filesystem and managing projects
* A "Find in Files" feature, allowing full regular expression search over a specified scope
* An online help browser, allowing users to search and view Python and package documentation inside the IDE
* A history log, recording every user command entered in each console
* An internal console, allowing for introspection and control over Spyder's own operation

## Plugins

Available plugins include:
* Spyder-Unittest, which integrates the popular unit testing frameworks Pytest, Unittest and Nose with Spyder
* Spyder-Notebook, allowing the viewing and editing of Jupyter Notebooks within the IDE
** Download Spyder Notebook
** Using conda: conda install spyder-notebook -c spyder-ide
** Using pip: pip install spyder-notebook
* Spyder-Reports, enabling use of literate programming techniques in Python
* Spyder-Terminal, adding the ability to open, control and manage cross-platform system shells within Spyder
** Download Spyder Terminal
** Using conda: conda install spyder-terminal -c spyder-ide
** Using pip: pip install spyder-terminal
* Spyder-Vim, containing commands and shortcuts emulating the Vim text editor
* Spyder-AutoPEP8, which can automatically conform code to the standard PEP 8 code style
* Spyder-Line-Profiler and Spyder-Memory-Profiler, extending the built-in profiling functionality to include testing an individual line, and measuring memory usage