From aa161891cee9e536962c0e5b5eb3b98a806d4e51 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Fri, 11 May 2018 18:25:34 -0500 Subject: [PATCH 01/44] Rename related plugins, make subhead and add additional --- doc/debugging.rst | 4 +++- doc/editor.rst | 8 ++++++-- doc/fileexplorer.rst | 7 +++++-- doc/findinfiles.rst | 5 ++++- doc/help.rst | 7 +++++-- doc/historylog.rst | 4 +++- doc/internalconsole.rst | 6 ++++++ doc/ipythonconsole.rst | 9 ++++++--- doc/onlinehelp.rst | 4 +++- doc/projects.rst | 7 +++++++ doc/pylint.rst | 4 +++- doc/variableexplorer.rst | 5 ++++- 12 files changed, 55 insertions(+), 15 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index 65f5f438f..e8a3bf9f4 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -39,7 +39,9 @@ For a simple, yet quite complete introduction to `pdb`, you may read this: http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/ -Related plugins: +Related components +~~~~~~~~~~~~~~~~~~ * :doc:`editor` * :doc:`ipythonconsole` +* :doc:`variableexplorer` diff --git a/doc/editor.rst b/doc/editor.rst index 8cdf17fd6..8ffb528ca 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -56,8 +56,12 @@ Cells are separated by lines starting with: * `# %%` (standard cell separator, when file has been edited with Eclipse) * `# ` (IPython notebook cell separator) -Related plugins: -* :doc:`ipythonconsole` +Related components +~~~~~~~~~~~~~~~~~~ + * :doc:`fileexplorer` * :doc:`findinfiles` +* :doc:`ipythonconsole` +* :doc:`projects` +* :doc:`pylint` diff --git a/doc/fileexplorer.rst b/doc/fileexplorer.rst index da2b9be55..2500fc140 100644 --- a/doc/fileexplorer.rst +++ b/doc/fileexplorer.rst @@ -20,7 +20,10 @@ Windows explorer window (Windows only): | -Related plugins: -* :doc:`ipythonconsole` +Related components +~~~~~~~~~~~~~~~~~~ + * :doc:`editor` +* :doc:`findinfiles` +* :doc:`projects` diff --git a/doc/findinfiles.rst b/doc/findinfiles.rst index abd816cb0..d2e143508 100644 --- a/doc/findinfiles.rst +++ b/doc/findinfiles.rst @@ -10,6 +10,9 @@ support for maximum search customization. | -Related plugins: + +Related components +~~~~~~~~~~~~~~~~~~ * :doc:`editor` +* :doc:`fileexplorer` diff --git a/doc/help.rst b/doc/help.rst index 2e250e9e7..3324e0ad7 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -37,7 +37,10 @@ if the object is pure Python): | -Related plugins: -* :doc:`ipythonconsole` +Related components +~~~~~~~~~~~~~~~~~~ + * :doc:`editor` +* :doc:`ipythonconsole` +* :doc:`onlinehelp` diff --git a/doc/historylog.rst b/doc/historylog.rst index 3f8e79d21..523d32d85 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -9,6 +9,8 @@ or command windows. | -Related plugins: + +Related components +~~~~~~~~~~~~~~~~~~ * :doc:`ipythonconsole` diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index 726f5cf86..cbef9371d 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -15,3 +15,9 @@ thread (this is optional and for example this is not the case in Spyder itself). The internal console support the following features: * Code completion and calltips + + +Related components +~~~~~~~~~~~~~~~~~~ + +* :doc:`ipythonconsole` diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 8ccff96d0..51d91382f 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -88,8 +88,11 @@ within the same Python interpreter without having to restart it every time (restart time may be relatively long when testing GUI-based applications). -Related plugins: +Related components +~~~~~~~~~~~~~~~~~~ -* :doc:`help` +* :doc:`debugging` * :doc:`editor` -* :doc:`fileexplorer` +* :doc:`help` +* :doc:`historylog` +* :doc:`variableexplorer` diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index 9c42367d1..e4d59272c 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -11,6 +11,8 @@ generated Python documentation on installed module, including your own modules | -Related plugins: + +Related components +~~~~~~~~~~~~~~~~~~ * :doc:`help` diff --git a/doc/projects.rst b/doc/projects.rst index d73cba2a7..5e89923ac 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -66,3 +66,10 @@ available on the system path. .. _Mercurial: http://mercurial.selenic.com/ .. _TortoiseHg: http://tortoisehg.bitbucket.org/ .. _Git for Windows: https://git-for-windows.github.io/ + + +Related components +~~~~~~~~~~~~~~~~~~ + +* :doc:`editor` +* :doc:`fileexplorer` diff --git a/doc/pylint.rst b/doc/pylint.rst index 5092fdc04..96fdb9da8 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -11,6 +11,8 @@ with `.py` (or `.pyw`) Python scripts or with whole Python packages | -Related plugins: + +Related components +~~~~~~~~~~~~~~~~~~ * :doc:`editor` diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index 5ee7eebf2..c0eaf61e3 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -81,6 +81,9 @@ supported are: #. Tuples #. Strings -Related plugins: +Related components +~~~~~~~~~~~~~~~~~~ + +* :doc:`debugging` * :doc:`ipythonconsole` From b92f2fa632a1b3de6821950c94e8e08b191f4934 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sat, 12 May 2018 15:54:23 -0500 Subject: [PATCH 02/44] Harmonize format of topic names to bold and title case on 1st use --- doc/debugging.rst | 2 +- doc/editor.rst | 2 +- doc/fileexplorer.rst | 2 +- doc/findinfiles.rst | 2 +- doc/help.rst | 2 +- doc/historylog.rst | 2 +- doc/onlinehelp.rst | 2 +- doc/projects.rst | 2 +- doc/pylint.rst | 2 +- doc/variableexplorer.rst | 2 +- 10 files changed, 10 insertions(+), 10 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index e8a3bf9f4..3a1565012 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -1,7 +1,7 @@ Debugging ========= -Debugging in Spyder is supported thanks to the following Python modules: +**Debugging** in Spyder is supported thanks to the following Python modules: * `pdb`: the Python debugger, which is included in Python standard library. diff --git a/doc/editor.rst b/doc/editor.rst index 8ffb528ca..c8aed1015 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -1,7 +1,7 @@ Editor ====== -Spyder's text editor is a multi-language editor with features such as syntax +Spyder's text **Editor** is a multi-language editor with features such as syntax coloring, code analysis (real-time code analysis powered by `pyflakes` and advanced code analysis using `pylint`), introspection capabilities such as code completion, calltips and go-to-definition features (powered by `rope`), diff --git a/doc/fileexplorer.rst b/doc/fileexplorer.rst index 2500fc140..dc39e0351 100644 --- a/doc/fileexplorer.rst +++ b/doc/fileexplorer.rst @@ -1,7 +1,7 @@ File Explorer ============= -The file explorer pane is a file/directory browser allowing the user to open +The **File Explorer** pane is a file/directory browser allowing the user to open files with the internal editor or with the appropriate application (Windows only). diff --git a/doc/findinfiles.rst b/doc/findinfiles.rst index d2e143508..67fc00a4a 100644 --- a/doc/findinfiles.rst +++ b/doc/findinfiles.rst @@ -1,7 +1,7 @@ Find in files ============= -The *Find in Files* plugin provides text search in whole directories or +The **Find in Files** plugin provides text search in whole directories or `mercurial` repositories (or even in PYTHONPATH) with regular expression support for maximum search customization. diff --git a/doc/help.rst b/doc/help.rst index 3324e0ad7..60ee9632c 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -1,7 +1,7 @@ Help ==== -The help plugin works together with the :doc:`ipythonconsole` and the +The **Help** plugin works together with the :doc:`ipythonconsole` and the :doc:`editor`: it shows automatically documentation available when the user is instantiating a class or calling a function (pressing the left parenthesis key after a valid function or class name triggers a call diff --git a/doc/historylog.rst b/doc/historylog.rst index 523d32d85..d1643ec70 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -1,7 +1,7 @@ History log =========== -The history log plugin collects command histories of Python/IPython interpreters +The **History Log** plugin collects command histories of Python/IPython interpreters or command windows. .. image:: images/history_log/history_log_menu.png diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index e4d59272c..88f4fc684 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -1,7 +1,7 @@ Online help =========== -The online help plugin provides an internal web browser to explore dynamically +The **Online Help** plugin provides an internal web browser to explore dynamically generated Python documentation on installed module, including your own modules (this documentation is provided by a pydoc server running in background). diff --git a/doc/projects.rst b/doc/projects.rst index 5e89923ac..498b6803a 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -1,7 +1,7 @@ Projects ======== -Spyder allows users to associate a given directory with a project. This has two +Spyder allows users to associate a given directory with a **Project**. This has two main advantages: 1. Projects remember the list of open files in Editor. This permits to easily diff --git a/doc/pylint.rst b/doc/pylint.rst index 96fdb9da8..f6c00a00f 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -1,7 +1,7 @@ Static code analysis ==================== -The static code analysis tool may be used directly from the :doc:`editor`, or +The **Static Code Analysis** tool may be used directly from the :doc:`editor`, or by entering manually the Python module or package path - i.e. it works either with `.py` (or `.pyw`) Python scripts or with whole Python packages (directories containing an `__init__.py` script). diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index c0eaf61e3..017823de9 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -1,7 +1,7 @@ Variable Explorer ================= -The variable explorer shows the namespace contents (i.e. all global object +The **Variable Explorer** shows the namespace contents (i.e. all global object references) of the current console .. image:: images/variable_explorer/variable_explorer_standard.png From 62b992c707d762f84e8911a5ad0b21bccdb27e61 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sat, 12 May 2018 20:52:33 -0500 Subject: [PATCH 03/44] Use consistant heading caps, markers, naming and structure --- doc/debugging.rst | 8 +++++-- doc/editor.rst | 8 ++++--- doc/fileexplorer.rst | 7 +++++- doc/findinfiles.rst | 5 ++-- doc/help.rst | 7 +++++- doc/historylog.rst | 5 ++-- doc/index.rst | 5 ++-- doc/installation.rst | 52 +++++++++++++++++++--------------------- doc/internalconsole.rst | 15 ++++++++---- doc/ipythonconsole.rst | 15 +++++++++--- doc/onlinehelp.rst | 5 ++-- doc/options.rst | 5 ++-- doc/overview.rst | 3 ++- doc/projects.rst | 15 +++++++++--- doc/pylint.rst | 5 ++-- doc/variableexplorer.rst | 9 +++++-- 16 files changed, 110 insertions(+), 59 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index 3a1565012..a80c590fe 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -1,5 +1,6 @@ +######### Debugging -========= +######### **Debugging** in Spyder is supported thanks to the following Python modules: @@ -13,8 +14,11 @@ Debugging :align: center :alt: A Spyder IPython console window, showing the ipdb debugger in action +| + + Debugging with pdb ------------------- +================== The Python debugger is partly integrated in Spyder: diff --git a/doc/editor.rst b/doc/editor.rst index c8aed1015..0d7539bcc 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -1,5 +1,6 @@ +###### Editor -====== +###### Spyder's text **Editor** is a multi-language editor with features such as syntax coloring, code analysis (real-time code analysis powered by `pyflakes` and @@ -34,10 +35,11 @@ Code analysis with `pyflakes`: :align: center :alt: A snippit of code in the Spyder Editor, showing code style warnings +| -How to define a code cell --------------------------- +Defining code cells +=================== A "code cell" is a concept similar to MATLAB's "cell" (except that there is no "cell mode" in Spyder), i.e. a block of lines to be executed at once in the diff --git a/doc/fileexplorer.rst b/doc/fileexplorer.rst index dc39e0351..26c398f3c 100644 --- a/doc/fileexplorer.rst +++ b/doc/fileexplorer.rst @@ -1,5 +1,6 @@ +############# File Explorer -============= +############# The **File Explorer** pane is a file/directory browser allowing the user to open files with the internal editor or with the appropriate application (Windows @@ -11,6 +12,10 @@ only). | + +Performing file operations +========================== + Context menus may be used to run a script, open a terminal window or run a Windows explorer window (Windows only): diff --git a/doc/findinfiles.rst b/doc/findinfiles.rst index 67fc00a4a..9ab16c750 100644 --- a/doc/findinfiles.rst +++ b/doc/findinfiles.rst @@ -1,5 +1,6 @@ -Find in files -============= +############# +Find in Files +############# The **Find in Files** plugin provides text search in whole directories or `mercurial` repositories (or even in PYTHONPATH) with regular expression diff --git a/doc/help.rst b/doc/help.rst index 60ee9632c..00292de63 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -1,5 +1,6 @@ +#### Help -==== +#### The **Help** plugin works together with the :doc:`ipythonconsole` and the :doc:`editor`: it shows automatically documentation available when the @@ -14,6 +15,10 @@ Of course, one can use the documentation viewer directly by entering an object name in the editable combo box field, or by selecting old documentation requests in the combo box. + +Help modes +========== + Rich text mode: .. image:: images/help/help_standard.png diff --git a/doc/historylog.rst b/doc/historylog.rst index d1643ec70..04c1a4da3 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -1,5 +1,6 @@ -History log -=========== +########### +History Log +########### The **History Log** plugin collects command histories of Python/IPython interpreters or command windows. diff --git a/doc/index.rst b/doc/index.rst index e93250b00..b7f566dc0 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,5 +1,6 @@ -Spyder - Documentation -====================== +##################################################### +Spyder: The Scientific Python Development Environment +##################################################### | diff --git a/doc/installation.rst b/doc/installation.rst index 35cd1bde4..3e4060bb7 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -1,5 +1,6 @@ +############ Installation -============ +############ Spyder is quite easy to install on Windows, Linux and macOS; just read the following instructions with care. @@ -17,8 +18,8 @@ fix or at least isolate the vast majority of install-related problems. Thanks! -The Easy/Recommended Way: Anaconda ----------------------------------- +Installing with Anaconda (recommended) +====================================== Spyder is included in the `Anaconda `_ Python distribution, which comes with everything you need to get started in @@ -31,8 +32,8 @@ it generally has the least likelihood of potential pitfalls for non-experts, and we may be able to provide limited assistance if you do run into trouble. -The Harder Way: Alternative distributions ------------------------------------------ +Installing with an alternative distribution +=========================================== **Important Note:** While we offer alternative Spyder installation options for users who desire them, we currently lack the resources to offer individual @@ -40,15 +41,15 @@ assistance for problems specific to installing via these alternative distributio Therefore, we recommend you switch to Anaconda if you encounter installation issues you are unable to solve on your own. -Windows -~~~~~~~ +Install on Windows +~~~~~~~~~~~~~~~~~~ Spyder is also included in the `WinPython `_ scientific Python distribution, although some users have reported bugs specific to it. You can use it immediately after installing, just like with Anaconda. -macOS -~~~~~ +Install on macOS +~~~~~~~~~~~~~~~~ Thanks to the `*MacPorts* project `_, Spyder can be installed using its ``port`` package manager; however, it may be out of date @@ -71,13 +72,14 @@ __ http://www.macports.org/ports.php?by=name&substr=spyder | -GNU/Linux -~~~~~~~~~ +Install on GNU/Linux +~~~~~~~~~~~~~~~~~~~~ Please refer to the `Requirements`_ section to see what other packages you might need. -**Ubuntu**: +Ubuntu +------ Using the official package manager: ``sudo apt-get install spyder``. @@ -86,8 +88,8 @@ Using the official package manager: ``sudo apt-get install spyder``. This package could be slightly outdated. If you find that is the case, please use the Debian package mentioned below. - -**Debian Unstable**: +Debian Unstable +--------------- Using the package manager: ``sudo apt-get install spyder`` @@ -95,8 +97,8 @@ The Spyder's official Debian package is available `here`__ __ http://packages.debian.org/fr/sid/spyder. - -**Other Distributions** +Other Distributions +------------------- Spyder is also available in other GNU/Linux distributions, like @@ -116,8 +118,8 @@ there. | -The Expert Way: Installing with pip ------------------------------------ +Installing with pip (experts only) +================================== **Warning:** While this installation method is a viable option for experienced users, installing Spyder (and other SciPy stack packages) @@ -125,7 +127,6 @@ with `pip` can lead to a number of tricky issues. While you are welcome to try this on your own, we unfortunately do not have the resources to help you if you do run into problems, except to recommend using Anaconda instead. - Requirements ~~~~~~~~~~~~ @@ -183,7 +184,6 @@ The requirements to run Spyder are: * `Cloudpickle `_ Serialize variables in the IPython kernel to send them to Spyder. - Optional modules ~~~~~~~~~~~~~~~~ @@ -205,7 +205,6 @@ Optional modules * `Cython `_ >=0.21 -- Run Cython files or Python files that depend on Cython libraries in the IPython console. - Installation procedure ~~~~~~~~~~~~~~~~~~~~~~ @@ -218,7 +217,6 @@ Then, to install Spyder and its other dependencies, run ``pip install spyder``. You may need to separately install a Qt binding with ``pip`` if running Python 2; PyQt5 is strongly recommended though the legacy PyQt4 is also still supported. - Run without installing ~~~~~~~~~~~~~~~~~~~~~~ @@ -238,7 +236,7 @@ Spyder itself. Updating Spyder ---------------- +=============== You can update Spyder by: @@ -262,8 +260,8 @@ You can update Spyder by: | -Installing the development version ----------------------------------- +Installing a development build +============================== If you want to try the next Spyder version before it is released, you can! You may want to do this for fixing bugs in Spyder, adding new @@ -308,8 +306,8 @@ To do so: | -Help and support ----------------- +Additional help +=============== * For a comprehensive guide to spyder troubleshooting, including installation issues, read our `Troubleshooting Guide and FAQ diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index cbef9371d..6443d6239 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -1,17 +1,24 @@ +################ Internal Console -================ +################ The **Internal Console** is dedicated to Spyder internal debugging or may be used as an embedded Python console in your own application. -All the commands entered in the internal console are executed in the same -process as Spyder's, but the Internal Console may be executed in a separate -thread (this is optional and for example this is not the case in Spyder itself). .. image:: images/internal_console/internal_console_standard.png :alt: Spyder Internal Console, with error messages and command output shown | + +Supported features +================== + +All the commands entered in the internal console are executed in the same +process as Spyder's, but the Internal Console may be executed in a separate +thread (this is optional and for example this is not the case in Spyder itself). + + The internal console support the following features: * Code completion and calltips diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 51d91382f..3f98a3920 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -1,5 +1,6 @@ +############### IPython Console -=============== +############### The **IPython Console** is where you may enter, interact with and visualize data inside a command interpreter. All the commands entered in the console are @@ -17,6 +18,10 @@ IPython's many features. | + +Connecting a console +==================== + From the Consoles menu, Spyder can launch **IPython Console** instances that attach to kernels that are managed by Spyder itself or it can connect to external kernels that are managed @@ -38,6 +43,10 @@ kernel connection file details: | + +Supported features +================== + **IPython Consoles** that are attached to kernels that were created by Spyder support the following features: @@ -63,8 +72,8 @@ set: from the console command line. -Reloading modules: the User Module Reloader (UMR) -------------------------------------------------- +Using UMR to reload modules +=========================== When working with Python scripts interactively, one must keep in mind that Python import a module from its source code (on disk) only when parsing the diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index 88f4fc684..ada81bc0e 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -1,5 +1,6 @@ -Online help -=========== +########### +Online Help +########### The **Online Help** plugin provides an internal web browser to explore dynamically generated Python documentation on installed module, including your own modules diff --git a/doc/options.rst b/doc/options.rst index 4fe7dd7d7..49aefa4f8 100644 --- a/doc/options.rst +++ b/doc/options.rst @@ -1,5 +1,6 @@ -Command line options -==================== +#################### +Command Line Options +#################### Spyder's command line options are the following: diff --git a/doc/overview.rst b/doc/overview.rst index 3ecbfafd0..d70311cf8 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -1,5 +1,6 @@ +######## Overview -======== +######## .. image:: images/mainwindow/mainwindow_custom_1610.png :align: center diff --git a/doc/projects.rst b/doc/projects.rst index 498b6803a..032737a3a 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -1,5 +1,6 @@ +######## Projects -======== +######## Spyder allows users to associate a given directory with a **Project**. This has two main advantages: @@ -10,6 +11,10 @@ main advantages: that modules developed as part of a project can be easily imported in any console. + +Creating a project +================== + To create a project, it is necessary to select the *New Project* entry from the *Projects* menu: @@ -19,6 +24,10 @@ To create a project, it is necessary to select the *New Project* entry from the | + +Using the project explorer +========================== + When a project is activated, the *Project explorer* pane is shown, which presents a tree view structure of the current project. Through this pane, it is possible to make several operations on the files that belong to project: @@ -40,8 +49,8 @@ it is possible to make several operations on the files that belong to project: can work without creating any project. -Version Control Integration ---------------------------- +Working with version control +============================ Spyder has limited integration with Git_ and Mercurial_. Commit and browse commands are available by right-clicking on relevant files that reside within diff --git a/doc/pylint.rst b/doc/pylint.rst index f6c00a00f..04e8a80d1 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -1,5 +1,6 @@ -Static code analysis -==================== +#################### +Static Code Analysis +#################### The **Static Code Analysis** tool may be used directly from the :doc:`editor`, or by entering manually the Python module or package path - i.e. it works either diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index 017823de9..48b4a4750 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -1,5 +1,6 @@ +################# Variable Explorer -================= +################# The **Variable Explorer** shows the namespace contents (i.e. all global object references) of the current console @@ -10,6 +11,10 @@ references) of the current console | + +Features and editors +==================== + The following screenshots show some interesting features such as editing lists, strings, dictionaries, NumPy arrays, or plotting/showing NumPy arrays data. @@ -64,7 +69,7 @@ data. Supported types ---------------- +=============== The variable explorer can't show all types of objects. The ones currently supported are: From f57b12399367a3b2dceed93ffa37a6280b26e1ec Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 13:29:00 -0500 Subject: [PATCH 04/44] Overhaul existing text on doc index page --- doc/index.rst | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/doc/index.rst b/doc/index.rst index b7f566dc0..570a36c8a 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -10,21 +10,20 @@ Spyder: The Scientific Python Development Environment | -Spyder is the Scientific Python Development Environment: - -* A powerful interactive development environment for the Python language with - advanced editing, interactive testing, debugging and introspection features -* A numerical computing environment thanks to the support of `IPython` - (an enhanced interactive Python interpreter) and popular Python libraries - such as `NumPy` (linear algebra), `SciPy` (signal and image processing) - and `matplotlib` (interactive 2D/3D plotting). - -Spyder may also be used as a library providing powerful console-related widgets -for your PyQt-based applications -- for example, it may be used to integrate a -debugging console directly in the layout of your graphical user interface. - -For more information about Spyder and to download the latest version, please -see the relevant links in the sidebar. +Spyder is a powerful scientific environment written in Python, for Python, and designed by and for scientists, engineers and data analysts. +It features a unique combination of the advanced editing, analysis, debugging, and profiling functionality of a comprehensive development tool with the data exploration, interactive execution, deep inspection, and beautiful visualization capabilities of a scientific package. +Furthermore, Spyper offers built-in integration with many popular scientific packages, including `NumPy`_, `SciPy`_, `Pandas`_, `IPython`_, `QtConsole`_, `Matplotlib`_, `SymPy`_, and more. + +.. _NumPy: https://www.numpy.org/ +.. _SciPy: https://www.scipy.org/ +.. _Pandas: https://pandas.pydata.org/ +.. _IPython: https://ipython.org/ +.. _QtConsole: https://qtconsole.readthedocs.io/en/stable/ +.. _Matplotlib: https://matplotlib.org/ +.. _SymPy: http://www.sympy.org/en/index.html + +Beyond its many built-in features, Spyder's abilities can be extended even further via its plugin system and API. +Spyder can also be used as a PyQt5 extension library, allowing you to build upon its functionality and embed its components, such as the interactive console, in your own software. Contents: From 3f5f15eb46e07bc2c1877efafe8984305aa01cc7 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 13:35:23 -0500 Subject: [PATCH 05/44] Make contents a heading, eliminate redundant items and tweak order --- doc/index.rst | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/doc/index.rst b/doc/index.rst index 570a36c8a..fd1e3a704 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -26,7 +26,8 @@ Beyond its many built-in features, Spyder's abilities can be extended even furth Spyder can also be used as a PyQt5 extension library, allowing you to build upon its functionality and embed its components, such as the interactive console, in your own software. -Contents: +Contents +======== .. toctree:: :maxdepth: 2 @@ -37,18 +38,13 @@ Contents: options editor ipythonconsole - debugging variableexplorer help - projects + debugging pylint + projects fileexplorer - historylog findinfiles onlinehelp + historylog internalconsole - -Indices and tables: - -* :ref:`genindex` -* :ref:`search` From 11b35755a3beebb4139f0b9a3bf7660c95a5bc01 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 19:07:13 -0500 Subject: [PATCH 06/44] Update, copyedit, and line-break debugging doc --- doc/debugging.rst | 43 ++++++++++++++++++------------------------- 1 file changed, 18 insertions(+), 25 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index a80c590fe..dfd703d92 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -2,13 +2,8 @@ Debugging ######### -**Debugging** in Spyder is supported thanks to the following Python modules: - -* `pdb`: the Python debugger, which is included in Python standard library. - -* `winpdb`: a graphical frontend to `pdb`, which is an external package - (in the :doc:`editor`, press F7 to run `winpdb` on the currently edited - script). +**Debugging** in Spyder is supported through integration with the enhanced ``ipdb`` debugger in the :doc:`ipythonconsole`. +This allows breakpoints and the execution flow to be viewed and controlled right from the Spyder GUI, as well as with all the familiar IPython console commands. .. image:: images/debugging/debugging_console.png :align: center @@ -17,30 +12,28 @@ Debugging | -Debugging with pdb -================== - -The Python debugger is partly integrated in Spyder: - -* Breakpoints may be defined in the :doc:`editor`. +Debugging with ipdb +=================== - * Simple breakpoints can be set from the Run menu, by keyboard shortcut - (F12 by default), or by double-click to the left of line numbers - in the :doc:`editor`. - * Conditional breakpoints can also be set from the Run menu, by - keyboard shortcut (Shift+F12 by default), or by Shift+double-click - to the left of line numbers in the :doc:`editor`. +Spyder offers the following debugging features integrated into the native GUI: .. image:: images/debugging/debugging_condbreakpoint.png - :align: center + :align: right + :width: 50% :alt: Inset of Spyder Editor, with breakpoint set and condition dialog open -* The current frame (debugging step) is highlighted in the :doc:`editor`. -* At each breakpoint, globals may be accessed through - the :doc:`variableexplorer`. +* Multiple means of setting and clearing normal and conditional breakpoints for any line in a file opened in the :doc:`editor`. + + * By selecting the respective option from the Debug menu. + * Through pressing a configurable keyboard shortcut (F12 for normal, or Shift-F12 for conditional by default). + * By double-clicking to the left of the line number in an open file. + +* Highlighting of the current frame (debugging step) in the :doc:`editor`. +* The ability to accessed and edit local and global variables at each breakpoint through the :doc:`variableexplorer`, and run many commands in the :doc:`ipythonconsole`. + +For a comprehensive but accessible introduction to ``pdb``/``ipdb``, consult Steve Ferg's excellent online guide, `Debugging in Python`_. -For a simple, yet quite complete introduction to `pdb`, you may read this: -http://pythonconquerstheuniverse.wordpress.com/category/python-debugger/ +.. _Debugging in Python: https://pythonconquerstheuniverse.wordpress.com/2009/09/10/debugging-in-python/ Related components From c5c817e871e9a68fbaa87abede6a75b1e7121db9 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 19:08:27 -0500 Subject: [PATCH 07/44] Add a few additional key Spyder debugging capabilities in list --- doc/debugging.rst | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index dfd703d92..6c9b41fa3 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -25,9 +25,13 @@ Spyder offers the following debugging features integrated into the native GUI: * Multiple means of setting and clearing normal and conditional breakpoints for any line in a file opened in the :doc:`editor`. * By selecting the respective option from the Debug menu. - * Through pressing a configurable keyboard shortcut (F12 for normal, or Shift-F12 for conditional by default). + * Through pressing a configurable keyboard shortcut (F12 for normal, or Shift-F12 for conditional breakpoints by default). * By double-clicking to the left of the line number in an open file. + * With a ``ipdb.set_trace()`` statement in your code. + * Interactively, using the ``b`` magic command in an ``ipdb`` session. +* A breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (Debug > List Breakpoints, or Ctrl-Shift-B by default). +* Full GUI control over debugger execution from the Debug menu, Debug toolbar and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. * Highlighting of the current frame (debugging step) in the :doc:`editor`. * The ability to accessed and edit local and global variables at each breakpoint through the :doc:`variableexplorer`, and run many commands in the :doc:`ipythonconsole`. From c4de1b2630de483c3e71321e60179bf96495b91b Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 19:33:20 -0500 Subject: [PATCH 08/44] Add a few additional images relevant to the existing debug content --- doc/debugging.rst | 19 +++++++++++++++--- doc/images/debugging/breakpoints_standard.png | Bin 0 -> 12541 bytes doc/images/menu/menu_debug.png | Bin 0 -> 24719 bytes 3 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 doc/images/debugging/breakpoints_standard.png create mode 100644 doc/images/menu/menu_debug.png diff --git a/doc/debugging.rst b/doc/debugging.rst index 6c9b41fa3..35f15c3b2 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -17,10 +17,10 @@ Debugging with ipdb Spyder offers the following debugging features integrated into the native GUI: -.. image:: images/debugging/debugging_condbreakpoint.png +.. image:: images/menu/menu_debug.png :align: right :width: 50% - :alt: Inset of Spyder Editor, with breakpoint set and condition dialog open + :alt: Spyder's debug menu, showing options to set, show and clear breakpoints, and control debugger execution flow * Multiple means of setting and clearing normal and conditional breakpoints for any line in a file opened in the :doc:`editor`. @@ -30,10 +30,23 @@ Spyder offers the following debugging features integrated into the native GUI: * With a ``ipdb.set_trace()`` statement in your code. * Interactively, using the ``b`` magic command in an ``ipdb`` session. +.. image:: images/debugging/breakpoints_standard.png + :align: right + :width: 50% + :alt: Spyder's Breakpoints panel, with a number of examples showing file, line number and an optional condition + * A breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (Debug > List Breakpoints, or Ctrl-Shift-B by default). + * Full GUI control over debugger execution from the Debug menu, Debug toolbar and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. + +.. image:: images/debugging/debugging_condbreakpoint.png + :align: right + :width: 50% + :alt: Inset of Spyder's Editor, with a breakpoint set and the condition dialog open + * Highlighting of the current frame (debugging step) in the :doc:`editor`. -* The ability to accessed and edit local and global variables at each breakpoint through the :doc:`variableexplorer`, and run many commands in the :doc:`ipythonconsole`. + +* The ability to access and edit local and global variables at each breakpoint through the :doc:`variableexplorer`, and run many commands in the :doc:`ipythonconsole`. For a comprehensive but accessible introduction to ``pdb``/``ipdb``, consult Steve Ferg's excellent online guide, `Debugging in Python`_. diff --git a/doc/images/debugging/breakpoints_standard.png b/doc/images/debugging/breakpoints_standard.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca3070dfbd396f101c9a55abb3282837bef9fad GIT binary patch literal 12541 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 literal 0 HcmV?d00001 diff --git a/doc/images/menu/menu_debug.png b/doc/images/menu/menu_debug.png new file mode 100644 index 0000000000000000000000000000000000000000..e82633c5cbc4517ac5dce795a87496bf783553a0 GIT binary patch literal 24719 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 Date: Sun, 13 May 2018 20:02:27 -0500 Subject: [PATCH 09/44] Update, copyedit and line break editor doc --- doc/editor.rst | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/doc/editor.rst b/doc/editor.rst index 0d7539bcc..14f03e184 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -2,11 +2,8 @@ Editor ###### -Spyder's text **Editor** is a multi-language editor with features such as syntax -coloring, code analysis (real-time code analysis powered by `pyflakes` and -advanced code analysis using `pylint`), introspection capabilities such as -code completion, calltips and go-to-definition features (powered by `rope`), -function/class browser, horizontal/vertical splitting features, etc. +Spyder's multi-language **Editor** integrates a number of powerful tools right out of the box for an easy to use, efficient editing experience. +The Editor's key features include syntax highlighting (``pygments``); real-time code and style analysis (``pyflakes`` and ``pycodestyle``); on-demand completion, calltips and go-to-definition features (``rope`` and ``jedi``); a function/class browser, horizontal and vertical splitting, and much more. .. image:: images/editor/editor_split_horizontal.png :align: center @@ -14,7 +11,7 @@ function/class browser, horizontal/vertical splitting features, etc. | -Function/class/method browser and horizontal/vertical splitting feature: +Function/class/method browser, and horizontal/vertical splitting capabilities: |outline| |split| @@ -29,7 +26,7 @@ Function/class/method browser and horizontal/vertical splitting feature: | -Code analysis with `pyflakes`: +Real-time code and style analysis with ``pyflakes`` and ``pycodestyle``: .. image:: images/editor/editor_inset_code_analysis.png :align: center @@ -41,10 +38,9 @@ Code analysis with `pyflakes`: Defining code cells =================== -A "code cell" is a concept similar to MATLAB's "cell" (except that there is -no "cell mode" in Spyder), i.e. a block of lines to be executed at once in the -current interpreter (Python or IPython). Every script may be divided in as -many cells as needed. +A "code cell" in Spyder is a block of lines, typically in a script, that can be easily executed all at once in the current doc:`ipythonconsole`. +This is much like a "cell" in MATLAB (except without any need to enable a "cell mode", since in Spyder, cells are detected automatically). +You can separate your scripts may be divided into as many cells as needed, or none at all—the choice is yours. .. image:: images/editor/editor_standard.png :align: center @@ -52,12 +48,14 @@ many cells as needed. | -Cells are separated by lines starting with: +You can separate cells by lines starting with either: * `#%%` (standard cell separator) * `# %%` (standard cell separator, when file has been edited with Eclipse) * `# ` (IPython notebook cell separator) +Providing a description to the right of the separator will give that cell its own name in the previously shown Outline viewer. + Related components ~~~~~~~~~~~~~~~~~~ From af74490fce13ff4e636d6c17dc75dcec2d2a6a25 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 20:14:06 -0500 Subject: [PATCH 10/44] Update, copyedit and line break file explorer doc --- doc/fileexplorer.rst | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/doc/fileexplorer.rst b/doc/fileexplorer.rst index 26c398f3c..314b44462 100644 --- a/doc/fileexplorer.rst +++ b/doc/fileexplorer.rst @@ -2,9 +2,7 @@ File Explorer ############# -The **File Explorer** pane is a file/directory browser allowing the user to open -files with the internal editor or with the appropriate application (Windows -only). +The **File Explorer** pane is a built-in filesystem and directory browser allowing you to view and filter files and their properties, open them with the Editor or an external tool, and perform common management tasks (varies by platform). .. image:: images/file_explorer/file_explorer_standard.png :align: center @@ -16,8 +14,7 @@ only). Performing file operations ========================== -Context menus may be used to run a script, open a terminal window or run a -Windows explorer window (Windows only): +You can use context menus to access a number of functions on a per-file and per-directory basis, including running scripts, creating, renaming, moving, editing or deleting files, performing basic operations with ``git``, and (on Windows) opening an external file explorer. .. image:: images/file_explorer/file_explorer_contextmenu_new.png :align: center From 19d7bb35aa7485def7490b747bbd8c98f09d2f27 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 20:54:57 -0500 Subject: [PATCH 11/44] Update find in files doc, and split search options into section --- doc/findinfiles.rst | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/doc/findinfiles.rst b/doc/findinfiles.rst index 9ab16c750..c0a78f475 100644 --- a/doc/findinfiles.rst +++ b/doc/findinfiles.rst @@ -2,9 +2,7 @@ Find in Files ############# -The **Find in Files** plugin provides text search in whole directories or -`mercurial` repositories (or even in PYTHONPATH) with regular expression -support for maximum search customization. +The **Find in Files** pane allows to you perform full-text, recursive content search in a user-defined scope, with advanced features to customize your searches. .. image:: images/find_in_files/find_in_files_inprogress.png :alt: Spyder Find in Files panel, with search results shown per-file @@ -12,6 +10,17 @@ support for maximum search customization. | +Choosing search options +======================= + +The Find in Files tool allows you to select from a number of options to enable searches as broad or refined as you need: + +* To enable case sensitivity, controlling whether matches are returned with a different case than your search text, toggle the "Aa" button on. +* To parse your search string as a regular expression, allowing for highly expressive search queries, toggle the "Gear" button on. +* To exclude certain filenames, types, or directories from your search, use the "Exclude:" text box, which can similarly be parsed as a regular expression with the "Gear" button to its right. +* To select whether to search in a specific file, in the current working directory, in a new or previously-used custom directory, or even in entire :doc:`projects`, use the "Search In" menu. + + Related components ~~~~~~~~~~~~~~~~~~ From 83d26cc223e634c96452aedfe6662353f6ff2e03 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 21:44:28 -0500 Subject: [PATCH 12/44] Update, copyedit and line-break help doc --- doc/help.rst | 28 +++++++++++----------------- 1 file changed, 11 insertions(+), 17 deletions(-) diff --git a/doc/help.rst b/doc/help.rst index 00292de63..180c347ed 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -2,40 +2,34 @@ Help #### -The **Help** plugin works together with the :doc:`ipythonconsole` and the -:doc:`editor`: it shows automatically documentation available when the -user is instantiating a class or calling a function (pressing the left -parenthesis key after a valid function or class name triggers a call -in the help pane). +You can use the **Help** pane to find, render and display rich documentation for any object with a docstring, including modules, classes, functions and methods. +Help can be retrieved both by static analysis of open files in the :doc:`editor`, or by dynamically inspecting an object in an :doc:`ipythonconsole`. -Note that this automatic link may be disabled by pressing the "Lock" button -(at the top right corner of the window). +You can trigger help by manually entering the object's name into the help box, pressing the configurable help shortcut (Ctrl-I by default), or even automatically if desired when on typing a left parenthesis (``(``) after a function or method name. +Automatic help can be individually enabled for both the Editor and the Console under ``Preferences > Help > Automatic Connections``, and turned on and off dynamically via the "lock" icon in the top right corner of the Help pane. -Of course, one can use the documentation viewer directly by entering an object -name in the editable combo box field, or by selecting old documentation requests -in the combo box. +Understanding help modes +======================== -Help modes -========== +You can use the options menu ("Gear" icon) in the top right of the help pane to toggle the help display mode. -Rich text mode: +Rich Text mode renders the object's docstrings with ``Sphinx``: .. image:: images/help/help_standard.png :alt: Spyder Help panel, displaying rich text docs for the DataFrame class | -Plain text mode: +Plain Text mode displays the docstring without formatting: .. image:: images/help/help_plain.png :alt: Spyder Help panel, displaying plain text docs for the DataFrame class | -Sometimes, when docstrings are not available or not sufficient to document the -object, the documentation viewer can show the source code (if available, i.e. -if the object is pure Python): +Show Source displays the docstring inline with the code for the selected object, or any Python portion of it (if the object is not pure Python). +This can be useful when docstrings are not available or insufficient to document the object: .. image:: images/help/help_source_code.png :alt: Help panel showing part of the docstring and source code for DataFrame From bd5d59ec015230e71dcdbbae2a59fe5b696f6c33 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 13 May 2018 22:15:52 -0500 Subject: [PATCH 13/44] Update and revise history log doc, and add section describing usage --- doc/historylog.rst | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/doc/historylog.rst b/doc/historylog.rst index 04c1a4da3..6bfe257c0 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -2,8 +2,7 @@ History Log ########### -The **History Log** plugin collects command histories of Python/IPython interpreters -or command windows. +With the **History Log** pane, you can view an automatically de-duplicated, time-stamped list of every command you enter into any connected :doc:`ipythonconsole`. .. image:: images/history_log/history_log_menu.png :alt: Spyder History Log, displaying a list of previously executed commands @@ -11,6 +10,19 @@ or command windows. | +Using the history log +===================== + +Navigating the history log is very straightforward. +Each session is marked by a date and time-stamp, making it easy to remember when you executed a certain command. +Statements can be selected and copied from the context menu or with the normal system shortcuts. +Just like in the editor, highlighting a word or phrase displays all other occurrences, and full syntax highlighting is also supported. +Finally, the top-right options menu ("Gear" icon) allows you to toggle soft-wrapping of long lines ("Wrap lines"), and set the number of commands the History Log should remember ("History"). + +The history log is stored in the ``.spyder-py3`` directory in your user home folder (by default, ``C:/Users/`` on Windows, ``/Users/`` for macOS, and typically ``/home/`` on GNU/Linux). +You might need to show invisible files in order to see it on a non-Windows operating system. + + Related components ~~~~~~~~~~~~~~~~~~ From 97751ba91d5090830e6586535afa2abce3dc0ed3 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sat, 19 May 2018 15:23:35 -0500 Subject: [PATCH 14/44] Rewrite and linebreak internal console doc --- doc/internalconsole.rst | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index 6443d6239..65ef84e5a 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -2,8 +2,7 @@ Internal Console ################ -The **Internal Console** is dedicated to Spyder internal debugging or may be -used as an embedded Python console in your own application. +You can use the **Internal Console** to control and debug Spyder itself, or as an embedded Python console in your own application. .. image:: images/internal_console/internal_console_standard.png :alt: Spyder Internal Console, with error messages and command output shown @@ -14,14 +13,13 @@ used as an embedded Python console in your own application. Supported features ================== -All the commands entered in the internal console are executed in the same -process as Spyder's, but the Internal Console may be executed in a separate -thread (this is optional and for example this is not the case in Spyder itself). +The Internal Console supports code completion and calltips, just like a normal IPython Console, along with a number of GUI selection, line-wrapping, buffer, and clear/copy/paste options. +You can toggle and customize these behaviors under Internal console settings from the context menu. +Additionally, you can use a number of special commands can be used to open a file in a Spyder or external editor, edit or remove variables, run scripts or system commands, get help, and more. +See the Help dialog in the context menu for more details on these. - -The internal console support the following features: - -* Code completion and calltips +By default, all the commands entered in the Internal Console are executed in the same process as Spyder's. +However, you can run the Internal Console in a separate thread by passing ``--multithread`` as one of Spyder's :doc:`options` on launch. Related components From a90de6e02ae7351c77485e1702462d3cf273e339 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sat, 19 May 2018 15:27:20 -0500 Subject: [PATCH 15/44] Add image of internal console contextmenu and settings to doc --- .../internal_console_contextmenu_settings.png | Bin 0 -> 23980 bytes doc/internalconsole.rst | 5 +++++ 2 files changed, 5 insertions(+) create mode 100644 doc/images/internal_console/internal_console_contextmenu_settings.png diff --git a/doc/images/internal_console/internal_console_contextmenu_settings.png b/doc/images/internal_console/internal_console_contextmenu_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..b6f6b48a76bcc43b8314a409c8077ae7a0661915 GIT binary patch literal 23980 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 Bq6Yu~ literal 0 HcmV?d00001 diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index 65ef84e5a..0a43764b6 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -18,6 +18,11 @@ You can toggle and customize these behaviors under Internal console settings fro Additionally, you can use a number of special commands can be used to open a file in a Spyder or external editor, edit or remove variables, run scripts or system commands, get help, and more. See the Help dialog in the context menu for more details on these. +.. image:: images/internal_console/internal_console_contextmenu_settings.png + :alt: Spyder Internal Console, showing context menu with settings options + +| + By default, all the commands entered in the Internal Console are executed in the same process as Spyder's. However, you can run the Internal Console in a separate thread by passing ``--multithread`` as one of Spyder's :doc:`options` on launch. From 79ebb187f4040e0eb3b66a66134e56dc7ddd719b Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sat, 19 May 2018 21:10:26 -0500 Subject: [PATCH 16/44] Update, copyedit and linebreak IPython Console documentation --- doc/ipythonconsole.rst | 104 +++++++++++++++++------------------------ 1 file changed, 43 insertions(+), 61 deletions(-) diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 3f98a3920..1f82468f9 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -2,14 +2,8 @@ IPython Console ############### -The **IPython Console** is where you may enter, interact with and visualize -data inside a command interpreter. All the commands entered in the console are -executed in a separate process, thus allowing the user to interrupt any -process at any time. Each console implements a full two-process -`IPython `_ session where -a lightweight front-end interface connects to a full IPython kernel on the -back end. Visit the IPython project website for full documentation of -IPython's many features. +The **IPython Console** allows you to execute commands and enter, interact with and visualize data inside any number of fully featured `IPython `_ interpreters. +Each console is executed in a separate process, allowing you to run scripts, interrupt execution and restart or terminate a shell without affecting the others or Spyder itself, and easily test your code in a clean environment without disrupting your primary session. .. image:: images/console/console_standard.png :align: center @@ -19,27 +13,24 @@ IPython's many features. | -Connecting a console -==================== +Connecting to a console +======================= -From the Consoles menu, Spyder can launch **IPython Console** -instances that attach to kernels that are managed -by Spyder itself or it can connect to external kernels that are managed -by IPython Qt Console sessions or the IPython Notebook. +Spyder can launch new IPython instances itself, through "Open an IPython console" under the Consoles menu, the IPython Console pane menu or its context menu (``Ctrl-T`` by default), to take advantage of the full suite of Spyder's features. +Each console implements a robust two-process IPython session, with a lightweight front-end interface connected to a full kernel back end. +Additionally, you can connect to external kernels managed by QtConsole sessions or the Jupyter Notebook, through the "Connect to an existing kernel" dialog under the same menus, which support many of Spdyer's advanced capabilities. .. image:: images/console/console_menu.png :align: center - :alt: Spyder IPython Console as above, except with the options menu open - + :alt: Spyder IPython Console as above, with the options menu open | -When "Connect to an existing kernel" is selected, Spyder prompts for the -kernel connection file details: +When "Connect to an existing kernel" is selected, Spyder prompts for the connection details: .. image:: images/console/console_dialog_connect.png :align: center - :alt: Connect to kernel dialog requesting path and connection details + :alt: Connect to kernel dialog, requesting path and connection details | @@ -47,54 +38,45 @@ kernel connection file details: Supported features ================== -**IPython Consoles** that are attached to kernels that were created by -Spyder support the following features: +Any **IPython Console** in Spyder, internally or externally created, supports additional features including: .. image:: images/console/console_completion.png :align: right :width: 50% :alt: Spyder IPython Console, with a popup list of code completion guesses -* Code completion and calltips -* Variable explorer with GUI-based editors for arrays, lists, - dictionaries, strings, etc. -* Debugging with standard Python debugger (`pdb`): at each breakpoint - the corresponding script is opened in the :doc:`editor` at the breakpoint - line number -* User Module Reloader (see below) - -**IPython Consoles** attached to external kernels support a smaller feature -set: - -* Code completion -* Debugging toolbar integration for launching the debugger and sending - debugging step commands to the kernel. Breakpoints must be set manually - from the console command line. - - -Using UMR to reload modules -=========================== - -When working with Python scripts interactively, one must keep in mind that -Python import a module from its source code (on disk) only when parsing the -first corresponding import statement. During this first import, the byte code -is generated (.pyc file) if necessary and the imported module code object is -cached in `sys.modules`. Then, when re-importing the same module, this cached -code object will be directly used even if the source code file (.py[w] file) -has changed meanwhile. - -This behavior is sometimes unexpected when working with the Python interpreter -in interactive mode, because one must either always restart the interpreter -or remove manually the .pyc files to be sure that changes made in imported -modules were taken into account. - -The User Module Reloader (UMR) is a Spyder console's exclusive feature that -forces the Python interpreter to reload modules completely when executing -a Python script. - -For example, when UMR is turned on, one may test complex applications -within the same Python interpreter without having to restart it every time -(restart time may be relatively long when testing GUI-based applications). +* Automatic code completion +* Real-time function calltips +* Debugging toolbar integration for launching the debugger and controlling execution flow + +Spyder-created consoles support even more advanced capabilities, such as: + +* The :doc:`variableexplorer`, with GUI-based editors for many built-in and third-party Python objects +* Full GUI integration with the enhanced IPython debugger, ``ipdb``, including viewing and setting normal and conditional breakpoints interactively in any file, a Breakpoints pane, and following along with execution flow in the in the :doc:`editor` (see the :doc:`debugging` documentation for more details) +* The :ref:`User Module Reloader `, which can automatically re-import modified packages and files +* Inline display of ``Matplotlib`` graphics, if the ``Inline`` backend is selected under ``Preferences > IPython console > Graphics > Graphics backend`` + +For information on the features, commands and capabilities built in to the IPython console itself, see the `IPython documentation`_. + +.. _IPython documentation: https://ipython.readthedocs.io/en/stable/overview.html + + +.. _umr-section: + +Using UMR to reload changed modules +=================================== + +When working with scripts and modules in an interactive session, Python only loads a module from its source file once, the first time it is ``import``ed. +During this first ``import``, the bytecode (``.pyc`` file) is generated if necessary and the imported module object is cached in ``sys.modules``. +If you subsequently re-import the module anytime in the same session, this cached code object will be used even if its source code (``.py{w}`` file) has changed in the meantime. +While efficient for final production code, this behavior is often undesired when working with the Python interpreter interactively, such as when analyzing data or testing your own module. +In effect, you're left with no way to update or modify any already-imported modules, aside from manually removing the relevant ``.pyc`` files, or completely restarting the console entirely. + +Fortunately, in Spyder, there's an easy solution: the User Module Reloader (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing IPython shell whenever they are modified, without any of the downsides of the above workarounds. +When UMR is turned on, you can test complex applications within the same IPython interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. +Or, if you're analyzing data step by step using your own custom libraries, you can easily add or tweak a function in the latter and see the results reflected in the former, all without the overhead of reloading the data and re-running your whole script to restore your session to the same point. + +UMR is enabled by default, and will do its work automatically without user intervention, although it will provide you with a red ``Reloaded modules:`` message in the console listing the files it has refreshed when it activates. If desired, you can turned it and the message on and off, and prevent specific modules from being reloaded, under ``Preferences > Python interpreter > User Module Reloader (UMR)``. Related components From 28edad2b86cdad9827ddc91347c160c3825cd928 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sat, 19 May 2018 22:23:26 -0500 Subject: [PATCH 17/44] Rewrite existing online help doc text and linebreak --- doc/onlinehelp.rst | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index ada81bc0e..a19cb4acd 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -2,9 +2,7 @@ Online Help ########### -The **Online Help** plugin provides an internal web browser to explore dynamically -generated Python documentation on installed module, including your own modules -(this documentation is provided by a pydoc server running in background). +The **Online Help** pane provides a built-in web browser to explore dynamically generated Python documentation on installed modules—including your own—rendered by a ``pydoc`` server running in the background. .. image:: images/online_help/online_help_standard.png :width: 570px From 10e170f8bb5ac31d1a470627248145363f9596d3 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sat, 19 May 2018 22:24:15 -0500 Subject: [PATCH 18/44] Add Using the Online Help section with basic instructions --- doc/onlinehelp.rst | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index a19cb4acd..89f862267 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -10,6 +10,17 @@ The **Online Help** pane provides a built-in web browser to explore dynamically | +Using the Online Help +===================== + +Enter the name of the item you'd like documentation on in the Module or package field, or the Get field, to load its doc directly. +Or, if you're not sure of the name of the object you want help on, or are looking for a specific keyword, use the Search field to get a list of results. +You can view and re-run previous searches with the drop-down menu or the down key in the Module or package field, navigate previous pages with the forward and back buttons (top left, left and right arrows), and go back to the homepage with the home button (house icon top left) or the ``Module Index`` link top right. + +Perform a realtime search within a page's content with the Find button (magnifying glass icon top left) or ``Ctrl-F``, navigate through matches with the Up and Down buttons, and make matching case sensitive with the "Aa" button. +You can use the zoom in/out buttons (- and +, top right), to change the font size to suit your preferences. +Finally, to cancel searching or page loading, click the stop button (red X, top right) and to reload the help content you're seeing to the most current version on disk (such as when you change your package's documentation), hit the refresh button (circular arrows, top right). + Related components ~~~~~~~~~~~~~~~~~~ From 87bfd1bc8cb58fa0a6ae67b69eb7082a8843741c Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 20 May 2018 22:17:08 -0500 Subject: [PATCH 19/44] Update, copyedit and linebreak projects doc --- doc/projects.rst | 57 +++++++++++++++++++++--------------------------- 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/doc/projects.rst b/doc/projects.rst index 032737a3a..68f25404a 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -2,21 +2,22 @@ Projects ######## -Spyder allows users to associate a given directory with a **Project**. This has two -main advantages: +Spyder allows users to associate a given directory with a **Project**, which offers several main advantages: -1. Projects remember the list of open files in Editor. This permits to easily - work on several coding efforts at the same time. -2. The project's path is added to the list of paths Python looks modules for, so - that modules developed as part of a project can be easily imported in any - console. +* Opening, closing or switching to a Project automatically saves and restores your Editor panes and open files to exactly how you left off. + This allows you to easily switch between many different development tasks without having to manually re-create your session for each one. +* Your project's root directory is automatically added to the ``PYTHONPATH``, so you can easily ``import`` and work with any modules and packages you create with zero setup. + +.. note:: + + Projects are completely optional and not imposed on users. + All of Spyder' functionality (session saving, File Explorer, working directory, etc) is available without creating a project, just on a global rather than project-specific basis. Creating a project ================== -To create a project, it is necessary to select the *New Project* entry from the -*Projects* menu: +To create a project, click the New Project entry in the Projects menu, choose whether you'd like to associate a Project with an existing directory or make a new one, and enter the project's name and path: .. image:: images/menu/menu_projects.png :align: center @@ -25,12 +26,13 @@ To create a project, it is necessary to select the *New Project* entry from the | -Using the project explorer +.. _project-explorer: + +Using the Project Explorer ========================== -When a project is activated, the *Project explorer* pane is shown, which -presents a tree view structure of the current project. Through this pane, -it is possible to make several operations on the files that belong to project: +Once a Project is opened, the Project Explorer pane is shown, presenting a tree view of the current project's files and directories. +This pane allows you to perform all the same operations as a normal Spyder :doc:`fileexplorer`. |explorer| |contextmenu| @@ -45,25 +47,21 @@ it is possible to make several operations on the files that belong to project: | -.. note:: Projects are completely optional and not imposed on users, i.e. users - can work without creating any project. - +.. _vcs-section: Working with version control ============================ -Spyder has limited integration with Git_ and Mercurial_. Commit and browse -commands are available by right-clicking on relevant files that reside within -an already initialized repository. This menu assume that certain commands are -available on the system path. +Spyder has basic integration with the `Git`_ distributed version control system. +You can commit or browse (in the ``gitk`` GUI) a file, directory or the entire repository via the commands in the context menu for the relevant object (right-click). + +.. _Git: http://git-scm.com/ -* For Mercurial repositories, TortoiseHG_ must be installed, and either ``thg`` - or ``hgtk`` must be on the system path. -* For git repositories, the commands ``git`` and ``gitk`` must be on the - system path. For Windows systems, the `Git for Windows`_ package provides a - convenient installer and the option to place common git commands on the - system path without creating conflicts with Windows system tools. - The second option in the dialog below is generally a safe approach. +To use this functionality, the project must be located in a ``git`` repository and the ``git`` and ``gitk`` commands must be on the system path. +For Windows systems, the `Git for Windows`_ package provides a convenient installer and the option to place common git commands on the system path without creating conflicts with Windows system tools. +The second option in the dialog below is generally a safe approach. + +.. _Git for Windows: https://git-for-windows.github.io/ .. image:: images/other/git_for_windows_install_path.png :align: center @@ -71,11 +69,6 @@ available on the system path. | -.. _Git: http://git-scm.com/ -.. _Mercurial: http://mercurial.selenic.com/ -.. _TortoiseHg: http://tortoisehg.bitbucket.org/ -.. _Git for Windows: https://git-for-windows.github.io/ - Related components ~~~~~~~~~~~~~~~~~~ From 6e28d62e770c10b481b6b75480d1ade92ba3d111 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 20 May 2018 22:18:17 -0500 Subject: [PATCH 20/44] Add a few updated bullets to list of core project funtionality --- doc/projects.rst | 3 +++ 1 file changed, 3 insertions(+) diff --git a/doc/projects.rst b/doc/projects.rst index 68f25404a..1af29181b 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -7,6 +7,9 @@ Spyder allows users to associate a given directory with a **Project**, which off * Opening, closing or switching to a Project automatically saves and restores your Editor panes and open files to exactly how you left off. This allows you to easily switch between many different development tasks without having to manually re-create your session for each one. * Your project's root directory is automatically added to the ``PYTHONPATH``, so you can easily ``import`` and work with any modules and packages you create with zero setup. +* The project path is also used to automatically set your working directory, and can be used as an automatic preset for several modules, such as the :doc:`findinfiles` search location. +* You can browse all your Project files from the :ref:`Project Explorer `, regardless of your current working directory or :doc:`fileexplorer` location. +* Projects are :ref:`integrated ` with the ``git`` version control system, allowing you to commit files and open them or your repository in the ``gitk`` GUI right from within Spyder. .. note:: From 523a4c9737cf621ae4e568d1dcb8a7cb216cafdc Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 20 May 2018 22:25:44 -0500 Subject: [PATCH 21/44] Add new project dialog image next to menu one and rename labels --- doc/images/dialog/dialog_new_project.png | Bin 0 -> 7813 bytes doc/projects.rst | 14 ++++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) create mode 100644 doc/images/dialog/dialog_new_project.png diff --git a/doc/images/dialog/dialog_new_project.png b/doc/images/dialog/dialog_new_project.png new file mode 100644 index 0000000000000000000000000000000000000000..000360fd6fac9e45059848a32b98a1f11faced5d GIT binary patch literal 7813 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 Date: Sun, 20 May 2018 23:14:37 -0500 Subject: [PATCH 22/44] Rewrite static analysis doc and add basic usage section --- doc/pylint.rst | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/doc/pylint.rst b/doc/pylint.rst index 04e8a80d1..2bd851c36 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -2,10 +2,10 @@ Static Code Analysis #################### -The **Static Code Analysis** tool may be used directly from the :doc:`editor`, or -by entering manually the Python module or package path - i.e. it works either -with `.py` (or `.pyw`) Python scripts or with whole Python packages -(directories containing an `__init__.py` script). +The **Static Code Analysis** module detects style issues, bad practices, potential bugs, and other quality problems in your code, all without having to actually execute it. +Spyder's static analyzer is powered by the best in class `Pylint`_ backend, which can intelligently detect an enormous and customizable range of problem signatures. + +.. _Pylint: https://www.pylint.org/ .. image:: images/pylint/static_analysis_standard.png :alt: Spyder Pylint pane, showing numerous issues discovered in a file @@ -13,6 +13,19 @@ with `.py` (or `.pyw`) Python scripts or with whole Python packages | +Using the static analyzer +========================= + +You can run Spyder's Static Code Analysis directly from the :doc:`editor`, or you can manually enter the Python module or package path you'd like it to check. +The analyzer works with both ``.py`` (or ``.pyw``) Python scripts and whole Python packages (directories containing an ``__init__.py`` file). +To go directly to the file and line in the :doc:`editor` highlighted by a failed check, just click its name. +Start and cancel analyzing a file with the Analyze and Stop buttons respectively, and if analysis fails, click the Output button to find out why. +You click the dropdown or press the down arrow in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the History dialog from the Static Code Analysis context menu. +All checks are displayed by default; you can turn certain messages off at the line, block or file/module level by adding a ``# pylinet: disable=insert, message-names, here`` comment at the respective level, or by editing the ``.pylintrc`` configuration file in your user home directory (for more details on configuring Pylint, see the `Pylint documentation`_). + +.. _Pylint documentation: https://pylint.readthedocs.io/en/latest/faq.html#message-control + + Related components ~~~~~~~~~~~~~~~~~~ From 51ff7272cb91057ab4c8915259eb723016510a17 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 20 May 2018 23:31:43 -0500 Subject: [PATCH 23/44] Update, copyedit and linebreak variable exp doc, and re-order list --- doc/variableexplorer.rst | 37 ++++++++++++++++++------------------- 1 file changed, 18 insertions(+), 19 deletions(-) diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index 48b4a4750..e6c071123 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -2,8 +2,7 @@ Variable Explorer ################# -The **Variable Explorer** shows the namespace contents (i.e. all global object -references) of the current console +The **Variable Explorer** shows the namespace contents (all global object references, such as variables, functions, modules, etc.) of the currently selected :doc:`ipythonconsole` session, and allows you to interact with them through a variety of GUI-based editors. .. image:: images/variable_explorer/variable_explorer_standard.png :align: center @@ -15,9 +14,8 @@ references) of the current console Features and editors ==================== -The following screenshots show some interesting features such as editing -lists, strings, dictionaries, NumPy arrays, or plotting/showing NumPy arrays -data. +Spyder's Variable Explorer offers built in support for editing lists, strings, dictionaries, NumPy arrays, Pandas DataFrames, and more, and can also histogram, plot, or even display some of them as an RGB image. +Several examples of this functionality follow: | @@ -71,20 +69,21 @@ data. Supported types =============== -The variable explorer can't show all types of objects. The ones currently -supported are: - -#. `Pandas` DataFrame, TimeSeries and DatetimeIndex objects -#. `NumPy` arrays and matrices -#. `PIL/Pillow` images -#. `datetime` dates -#. Integers -#. Floats -#. Complex numbers -#. Lists -#. Dictionaries -#. Tuples -#. Strings +The Variable Explorer has specialized editors for a range of common built-in and third-party Python objects, and can view, edit, and deeply introspect most arbitrary objects via a more general object editor. +Types with specialized editing support include: + +* Integers +* Floats +* Complex numbers +* Strings +* ``datetime`` dates and timedeltas +* Lists +* Tuples +* Dictionaries +* NumPy arrays and matrices +* Pandas ``DataFrame``, ``TimeSeries`` and ``DatetimeIndex`` objects +* ``PIL``/``Pillow`` images +* Namespaces Related components From 6a57e7a571522c38781b31df30a1170ca232019b Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 00:53:56 -0500 Subject: [PATCH 24/44] Linebreak installation doc, seperate URLs and minor copyedit/updates --- doc/installation.rst | 293 +++++++++++++++++-------------------------- 1 file changed, 114 insertions(+), 179 deletions(-) diff --git a/doc/installation.rst b/doc/installation.rst index 3e4060bb7..6145c1ad9 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -2,130 +2,116 @@ Installation ############ -Spyder is quite easy to install on Windows, Linux and macOS; just read the -following instructions with care. +Spyder is relatively easy to install on Windows, Linux and macOS. +Just make sure to read and follow these instructions with care. This section explains how to install the latest stable release of Spyder. -If you prefer testing the development version, please use the -``bootstrap`` script (see next section). - -If you run into problems, before posting a report, -*please* consult our comprehensive -`Troubleshooting Guide `_ -and search the `issue tracker `_ -for your error message and problem description, as these methods are known to -fix or at least isolate the vast majority of install-related problems. +If you prefer testing the development version, please use the :ref:`boostrap script` instead. + +If you run into problems, before posting a report, *please* consult our comprehensive `Troubleshooting Guide`_ and search the `issue tracker`_ for your error message and problem description, as these methods generally fix or isolate the great majority of install-related complaints. Thanks! +.. _Troubleshooting Guide: https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ +.. _issue tracker: https://github.com/spyder-ide/spyder/issues + Installing with Anaconda (recommended) ====================================== -Spyder is included in the `Anaconda `_ -Python distribution, which comes with everything you need to get started in -an all-in-one package. +Spyder is included by default in the `Anaconda`_ +Python distribution, which comes with everything you need to get started in an all-in-one package. + +.. _Anaconda: https://www.anaconda.com/download/ -This is the easiest way to install Spyder for any of our supported platforms, -and the way we recommend to avoid unexpected issues we aren't able to -help you with. If in doubt, you should install via this method; -it generally has the least likelihood of potential pitfalls for non-experts, -and we may be able to provide limited assistance if you do run into trouble. +This is the easiest way to install Spyder for any of our supported platforms, and the way we recommend to avoid unexpected issues we aren't able to help you with. +If in doubt, you should install via this method; it generally has the least likelihood of potential pitfalls for non-experts, and we may be able to provide limited assistance if you do run into trouble. Installing with an alternative distribution =========================================== -**Important Note:** While we offer alternative Spyder installation options -for users who desire them, we currently lack the resources to offer individual -assistance for problems specific to installing via these alternative distributions. -Therefore, we recommend you switch to Anaconda if you encounter installation -issues you are unable to solve on your own. +.. caution:: + + While we offer alternative Spyder installation options for users who desire them, we currently lack the resources to offer individual assistance for problems specific to installing via these alternative distributions. + Therefore, we recommend you switch to Anaconda if you encounter installation issues you are unable to solve on your own. Install on Windows ~~~~~~~~~~~~~~~~~~ -Spyder is also included in the `WinPython `_ -scientific Python distribution, although some users have reported bugs specific -to it. You can use it immediately after installing, just like with Anaconda. +Spyder is also included in the `WinPython`_ scientific Python distribution, although it doesn't include Anaconda's convenient ``conda`` package and environment manager like Anaconda. +You can use it immediately after installing, just like with Anaconda. + +.. _WinPython: https://winpython.github.io/ Install on macOS ~~~~~~~~~~~~~~~~ -Thanks to the `*MacPorts* project `_, Spyder can be -installed using its ``port`` package manager; however, it may be out of date -or have MacPorts-specific issues outside of Spyder's control. +Thanks to the `MacPorts project`_, Spyder can be installed using its ``port`` package manager; however, the included Spyder version may be out of date or have MacPorts-specific issues outside of Spyder's control. -There are `several versions`__ available from which you can choose from. +.. _MacPorts project: http://www.macports.org/ -__ http://www.macports.org/ports.php?by=name&substr=spyder +There are `several versions`_ available from which you can choose. - .. warning:: +.. _several versions: http://www.macports.org/ports.php?by=name&substr=spyder - It is known that the MacPorts version of Spyder is raising this error: - ``ValueError: unknown locale: UTF-8``, which doesn't let it start correctly. +.. attention:: - To fix it you will have to set these environment variables in your - ``~/.profile`` (or ``~/.bashrc``) manually:: + The MacPorts version of Spyder may currently be raising ``ValueError: unknown locale: UTF-8``, which doesn't let it start correctly. + To fix it you will have to set these environment variables in your ``~/.profile`` (or ``~/.bashrc``) manually:: export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 -| - Install on GNU/Linux ~~~~~~~~~~~~~~~~~~~~ -Please refer to the `Requirements`_ section to see what other packages you -might need. +Please refer to the `Requirements`_ to see what other packages you might need. Ubuntu ------ Using the official package manager: ``sudo apt-get install spyder``. - .. note:: +.. note:: - This package could be slightly outdated. If you find that is the case, - please use the Debian package mentioned below. + This package could be slightly outdated. If you find that is the case, please use the Debian package mentioned below. Debian Unstable --------------- Using the package manager: ``sudo apt-get install spyder`` -The Spyder's official Debian package is available `here`__ +Spyder's official Debian package is available on the `Debian package repository`_. -__ http://packages.debian.org/fr/sid/spyder. +.. _Debian package repository: https://packages.debian.org/en/sid/spyder Other Distributions ------------------- Spyder is also available in other GNU/Linux distributions, like -* `Archlinux `_ - -* `Fedora `_ - -* `Gentoo `_ - -* `openSUSE `_ +* `Arch Linux`_ +* `Fedora`_ +* `Gentoo`_ +* `openSUSE`_ +* `Mageia`_ -* `Mageia `_ +.. _Arch Linux: https://aur.archlinux.org/packages/?K=spyder +.. _Fedora: https://fedoraproject.org/wiki/Spyder +.. _Gentoo: http://packages.gentoo.org/package/dev-python/spyder +.. _openSUSE: https://software.opensuse.org/package/spyder3 +.. _Mageia: http://mageia.madb.org/package/show/name/spyder -Please refer to your distribution's documentation to learn how to install it -there. - -| +Please refer to your distribution's documentation to learn how to install Spyder. Installing with pip (experts only) ================================== -**Warning:** While this installation method is a viable option for -experienced users, installing Spyder (and other SciPy stack packages) -with `pip` can lead to a number of tricky issues. While you are welcome -to try this on your own, we unfortunately do not have the resources to help you -if you do run into problems, except to recommend using Anaconda instead. +.. warning:: + + While this installation method is a viable option for experienced users, installing Spyder (and other SciPy stack packages) with ``pip`` can lead to a number of tricky issues. + While you are welcome to try this on your own, we unfortunately do not have the resources to help you if you do run into problems, except to recommend you use Anaconda instead. Requirements ~~~~~~~~~~~~ @@ -134,191 +120,140 @@ The requirements to run Spyder are: * `Python `_ 2.7 or >=3.3 -* `PyQt5 `_ >=5.2 or - `PyQt4 `_ >=4.6.0 - (PyQt5 is recommended). +* `PyQt5 `_ >=5.5 -* `Qtconsole `_ >=4.2.0 -- for an - enhanced Python interpreter. +* `Qtconsole `_ >=4.2.0 -- for an enhanced Python interpreter. -* `Rope `_ >=0.9.4 and - `Jedi `_ >=0.9.0 -- for code completion, - go-to-definition and calltips on the Editor. +* `Rope `_ >=0.9.4 and `Jedi `_ >=0.9.0 -- for code completion, go-to-definition and calltips on the Editor. -* `Pyflakes `_ -- for real-time - code analysis. +* `Pyflakes `_ -- for real-time code analysis. -* `Sphinx `_ -- for the Help pane rich text mode - and to get our documentation. +* `Sphinx `_ -- for the Help pane rich text mode and to get our documentation. -* `Pygments `_ >=2.0 -- for syntax highlighting and code - completion in the Editor of all file types it supports. +* `Pygments `_ >=2.0 -- for syntax highlighting and code completion in the Editor of all file types it supports. * `Pylint `_ -- for static code analysis. * `Pycodestyle `_ -- for style analysis. -* `Psutil `_ -- for memory/CPU usage in the status - bar. +* `Psutil `_ -- for memory/CPU usage in the status bar. -* `Nbconvert `_ -- to manipulate Jupyter notebooks - on the Editor. +* `Nbconvert `_ -- to manipulate Jupyter notebooks on the Editor. -* `Qtawesome `_ >=0.4.1 -- for an icon theme based on - FontAwesome. +* `Qtawesome `_ >=0.4.1 -- for an icon theme based on FontAwesome. -* Pickleshare -- To show import completions on the Editor and Consoles. +* `Pickleshare `_ -- To show import completions on the Editor and Consoles. -* `PyZMQ `_ -- To run introspection services on the - Editor asynchronously. +* `PyZMQ `_ -- To run introspection services on the Editor asynchronously. -* `QtPy `_ >=1.2.0 -- To run Spyder with PyQt4 or - PyQt5 seamlessly. +* `QtPy `_ >=1.2.0 -- To run Spyder with different Qt bindings seamlessly. -* `Chardet `_ >=2.0.0-- Character encoding auto-detection - in Python. +* `Chardet `_ >=2.0.0-- Character encoding auto-detection in Python. -* `Numpydoc `_ Used by Jedi to get return types for - functions with Numpydoc docstrings. +* `Numpydoc `_ Used by Jedi to get return types for functions with Numpydoc docstrings. -* `Cloudpickle `_ Serialize variables in the - IPython kernel to send them to Spyder. +* `Cloudpickle `_ Serialize variables in the IPython kernel to send them to Spyder. Optional modules ~~~~~~~~~~~~~~~~ -* `Matplotlib `_ >=1.0 -- for 2D and 3D plotting - in the consoles. +* `Matplotlib `_ >=1.0 -- for 2D and 3D plotting in the consoles. -* `Pandas `_ >=0.13.1 -- for view and editing DataFrames - and Series in the Variable Explorer. +* `Pandas `_ >=0.13.1 -- for view and editing Series and DataFrames in the Variable Explorer. -* `Numpy `_ -- for view and editing two or three - dimensional arrays in the Variable Explorer. +* `Numpy `_ -- for view and editing two or three dimensional arrays in the Variable Explorer. -* `Sympy `_ >=0.7.3 -- for working with symbolic mathematics - in the IPython console. +* `Sympy `_ >=0.7.3 -- for working with symbolic mathematics in the IPython console. -* `Scipy `_ -- for importing Matlab workspace files in - the Variable Explorer. +* `Scipy `_ -- for importing Matlab workspace files in the Variable Explorer. -* `Cython `_ >=0.21 -- Run Cython files or Python files that - depend on Cython libraries in the IPython console. +* `Cython `_ >=0.21 -- Run Cython files or Python files that depend on Cython libraries in the IPython console. Installation procedure ~~~~~~~~~~~~~~~~~~~~~~ -You can install Spyder with the ``pip`` package manager, which comes by -default with most Python installations. -Before installing Spyder itself by this method, you need to acquire the -`Python programming language `_ +You can install Spyder with the ``pip`` package manager, which comes by default with most Python installations. +Before installing Spyder itself by this method, you need to acquire the `Python`_ programming language. + +.. _Python: http://www.python.org/ Then, to install Spyder and its other dependencies, run ``pip install spyder``. -You may need to separately install a Qt binding with ``pip`` if running Python 2; -PyQt5 is strongly recommended though the legacy PyQt4 is also still supported. +You may need to install a Qt binding (PyQt5) separately with ``pip`` if running under Python 2. Run without installing ~~~~~~~~~~~~~~~~~~~~~~ -You can execute Spyder without installing it first by following these steps: +You can execute Spyder from source without installing it first by the following procedure: -#. Unzip the source package available for download on the - `Spyder Github repo `_ - (or clone from Github, see the next section) +#. Unzip the source package available for download on the `Spyder Github repository`_ (or :ref:`clone it from Github`) #. Change current directory to the unzipped directory +#. Install Spyder's requirements with ``pip install -r requirements/requirements.txt`` #. Run Spyder with the command ``python bootstrap.py`` -#. (*Optional*) Build the documentation with ``python setup.py build_doc``. -This is especially useful for beta-testing, troubleshooting and helping develop -Spyder itself. - -| +.. _Spyder Github repository: https://github.com/spyder-ide/spyder +This is especially useful for beta-testing, troubleshooting and helping develop Spyder itself. Updating Spyder =============== -You can update Spyder by: - -* Updating Anaconda (recommended), WinPython, MacPorts, or - through your system package manager, if you installed via those options. +If you installed Spyder through Anaconda (recommended), WinPython, MacPorts, or your system package manager, update using those same methods. +With Anaconda, just run (in Anaconda Prompt if on Windows) ``conda update anaconda`` to update the distribution as a whole and ``conda update spyder`` to update Spyder specifically. - With Anaconda, just run (in Anaconda Prompt if on Windows) - ``conda update spyder`` - to update Spyder specifically, and - ``conda update anaconda`` - to update the rest of the distribution, as desired. +If you installed Spyder via the advanced/cross-platform method, ``pip``, run ``pip install --upgrade spyder``. +This command will also update all Spyder dependencies, so we recommend you use an isolated ``virtualenv`` or ``venv`` environment to avoid any potential unintended effects on other installed packages. -* If you installed Spyder via the advanced/crossplatform method, - ``pip``, run - ``pip install --upgrade spyder`` - - .. note:: - - This command will also update all Spyder dependencies - -| +.. _install-from-source: Installing a development build ============================== If you want to try the next Spyder version before it is released, you can! -You may want to do this for fixing bugs in Spyder, adding new -features, learning how Spyder works or just getting a taste of it. -For more information, please see the CONTRIBUTING.md document included -with the Spyder source or on Github, or for further detail consult the -`online development wiki `_ . - -To do so: +You may want to do this for fixing bugs in Spyder, adding new features, learning how Spyder works or just getting a taste of what the IDE can do. +For more information, please see the CONTRIBUTING.md document included with the Spyder source or on Github, and for further detail consult the `Spyder development wiki`_ . -#. Install Spyder `requirements`_ +.. _Spyder development wiki: https://github.com/spyder-ide/spyder/wiki - The recommended and easiest way to do this is with ``conda``: - ``conda install spyder`` - then - ``conda remove spyder`` +In summary: - This installs all of Spyder's dependencies into the environment along with - the stable/packaged version of Spyder itself, and then removes the latter. +#. Install the Spyder `requirements`_. -#. Install `Git `_, a powerful - source control management tool. + The recommended and easiest way to do this is with ``conda``:: -#. Clone the Spyder source code repository with the command: + conda install spyder + conda remove spyder - ``git clone https://github.com/spyder-ide/spyder.git`` + This installs all of Spyder's dependencies into the environment along with the stable/packaged version of Spyder, and then removes Spyder itself. -#. Run Spyder with the ``bootstrap.py`` script from within the cloned directory: - ``python bootstrap.py`` +#. Install `Git`_ `_, a powerful source control management tool. -#. To keep your repository up-to-date, run +#. Clone the Spyder source code repository with the command:: - ``git pull`` + git clone https://github.com/spyder-ide/spyder.git - inside the cloned directory. +#. Run Spyder with the ``bootstrap.py`` script from within the cloned directory:: -#. (*Optional*) If you want to read the documentation, you must build it first - with the command + python bootstrap.py - ``python setup.py build_doc`` +#. To keep your repository up-to-date, run ``git pull`` inside the cloned directory. -| +.. _Git: http://git-scm.com/downloads Additional help =============== -* For a comprehensive guide to spyder troubleshooting, including - installation issues, read our `Troubleshooting Guide and FAQ - `_. -* For general information about Spyder and its ecosystem, see our - `main website `_. -* For bug reports and feature requests, check out our - `Github repository `_. -* For development-oriented help and information, consult our - `Github wiki `_. -* For discussions and help requests, you can subscribe to our - `Google Group `_. -* For quick questions and to chat with the dev team, stop by our - `Gitter chatroom `_. +* For a comprehensive guide to spyder troubleshooting, including installation issues, read our `Troubleshooting Guide and FAQ`_. +* For general information about Spyder and its ecosystem, see our `main website`_. +* For bug reports and feature requests, check out our `Github repository`_. +* For development-oriented help and information, consult our `Github wiki`_. +* For discussions and help requests, you can subscribe to our `Google Group`_. +* For quick questions and to chat with the dev team, stop by our `Gitter chatroom`_. + +.. _Troubleshooting Guide and FAQ: https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ +.. _main website: https://www.spyder-ide.org/ +.. _Github repository: https://github.com/spyder-ide/spyder/ +.. _Github wiki: https://github.com/spyder-ide/spyder/wiki +.. _Google Group: http://groups.google.com/group/spyderlib +.. _Gitter chatroom: https://gitter.im/spyder-ide/public From 56463798cb9212cc7ccba11e171908c502b44677 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 00:54:22 -0500 Subject: [PATCH 25/44] Copyedit and line break command line options doc --- doc/options.rst | 26 +++++++++++--------------- 1 file changed, 11 insertions(+), 15 deletions(-) diff --git a/doc/options.rst b/doc/options.rst index 49aefa4f8..9dc004ed9 100644 --- a/doc/options.rst +++ b/doc/options.rst @@ -2,23 +2,19 @@ Command Line Options #################### -Spyder's command line options are the following: +Spyder's command line options including the following: Options: - -h, --help show this help message and exit - --new-instance Run a new instance of Spyder, even if the single - instance mode has been turned on (default) - --defaults Reset configuration settings to defaults - --reset Remove all configuration files! - --optimize Optimize Spyder bytecode (this may require - administrative privileges) + -h, --help Show this help message and exit + --new-instance Run a new Spyder instance, even if single instance mode is enabled + --defaults Reset Spyder settings file to the defaults + --reset Remove all configuration files and reset to defaults! + --optimize Optimize Spyder bytecode (may require administrative privileges) -w WORKING_DIRECTORY, --workdir=WORKING_DIRECTORY - Default working directory + Set the default working directory --hide-console Hide parent console window (Windows) - --show-console (Deprecated) Does nothing, now the default behavior is to show the console - --multithread Internal console is executed in another thread - (separate from main application thread) - --profile Profile mode (internal test, not related with Python - profiling) + --show-console (Deprecated) Does nothing, now the default behavior + --multithread Execute the Internal Console in separate thread from the application + --profile Profile mode (internal test, not related to Python profiling) --window-title=WINDOW_TITLE - String to show in the main window title + String to show in the window title, to identify the Spyder instance From 72c6492a6426673462afb9effe443b72e92832c8 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 17:03:38 -0500 Subject: [PATCH 26/44] Update & copyedit overview, & add updated items in existing sublists --- doc/overview.rst | 131 +++++++++++++++++++++++++---------------------- 1 file changed, 69 insertions(+), 62 deletions(-) diff --git a/doc/overview.rst b/doc/overview.rst index d70311cf8..4b232456d 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -8,92 +8,99 @@ Overview | -Spyder is a Python development environment with the following key features: +Spyder, the Scientific Python Development Environment, includes the following key features: -Key features: +* :doc:`editor`: + + * Customizable syntax highlighting themes (Python, C/C++, Fortran) + * :doc:`debugging` breakpoints and conditional breakpoints (through ``ipdb`` integration) + * Interactive execution: Run line/selection, run cell, run file, re-run and debug + * Run configuration settings: + + * Working directory selection + * Command line options + * Run in Current/dedicated/external console choice + * Automatically clear variables or enter debugging -* general features: + * Outline Explorer: Navigate cells, functions, classes, blocks, and more + * Code introspection (powered by ``rope`` and ``jedi``): - * MATLAB-like PYTHONPATH management dialog box (works with all consoles) - * Windows only: current user environment variables editor - * direct links to documentation (Python, Matplotlib, !NumPy, !Scipy, etc.) - * direct link to Python(x,y) launcher - * direct links to !QtDesigner, !QtLinguist and !QtAssistant (Qt documentation) + * On-demand (TAB) and "dot" automatic code completion + * Automatic popup calltips showing function signatures + * Go-to-definition for any symbol: Functions, classes, attributes, etc. (Ctrl-Click or ``Ctrl-G`` by default) -* *preferences* dialog box: + * Occurrence highlighting: Select or double-click any word to show all other instances throughout the current document + * Real-time automatic formatters (optional): - * keyboard shortcuts - * syntax coloring schemes (source editor, history log, help) - * console: background color (black/white), automatic code completion, etc. - * and a lot more... + * Automatic insertion of closing quotes parentheses, braces and brackets + * Automatic indentation after 'else', 'elif', 'finally', etc. + * Smart auto-indentation based on code structure + * Automatic insertion of colons after for, if, def, etc. + * Automatically fix mixed indentation, EoL characters and trailing spaces + + * Real-time code analysis: + * Errors/warnings/problems (powered by ``pyflakes``) + * PEP 8 and code style (powered by ``pycodestyle``) + * Code annotation parsing and "Todo lists" (``TODO``, ``FIXME``, ``XXX``, etc.) .. image:: images/mainwindow/mainwindow_dark_1610.png :align: right :width: 60% :alt: The Spyder main window, with a dark syntax highlighting theme applied +* :doc:`ipythonconsole`: -* :doc:`editor`: - - * syntax coloring (Python, C/C++, Fortran) - * *breakpoints* and *conditional breakpoints* (debugger: `pdb`) - * run or debug Python scripts (see console features) - * *run configuration* dialog box: - - * working directory - * command line options - * run in a new Python interpreter or in an existing Python interpreter or IPython client - * Python interpreter command line options + * Any number of individual consoles, each executed in a separate, isolated processes + * Each console uses the full IPython kernel as a back-end with a light GUI front-end + * Supports all of the powerful IPython magic commands and functionality + * Automatic code completion and calltips, and automatic link to doc:`help` + * Range of code run options and interactivity + * :doc:`debugging` integration with enhanced ``ipdb`` debugger and the :doc:`editor` + * Inline display of Matplotlib graphics (optional) + * The User Module Reloader, automatically re-importing modified source files - * *code outline explorer*: functions, classes, if/else/try/... statements - * *powerful code introspection features* (powered by `rope`): +* :doc:`variableexplorer`: - * *code completion* - * *calltips* - * *go-to-definition*: go to object (any symbol: function, class, attribute, etc.) definition by pressing Ctrl+Left mouse click on word or Ctrl+G (default shortcut) + * Lists all global variables, functions, classes, and their content + * GUI-based editors for numerous data types (numeric, strings, collections, NumPy arrays, Pandas DataFrames, dates/times, images, and more) + * Import/export data or an entire session from/to many formats (text, csv, NumPy files, MATLAB files) + * Interactive data visualization options (plot, histogram, image...) using Matplotlib - * *occurrence highlighting* - * typing helpers (optional): +* :doc:`help`: - * automatically insert closing parentheses, braces and brackets - * automatically unindent after 'else', 'elif', 'finally', etc. + * Provides documentation or source code for any Python object (class, function, module...) + * Can be triggered manually, on demand (``Ctrl-I`` by default) or automatically on typing a left parenthesis after a function name (optional) + * Real-time rendering and rich HTML display of many common docstring formats (powered by ``Sphinx``) - * *to-do* lists (TODO, FIXME, XXX) - * errors/warnings (real-time *code analysis* provided by `pyflakes`) - * integrated static code analysis (using `pylint`) - * direct link to `winpdb` external debugger +* :doc:`pylint`: Integrated code checker (powered by ``pylint``) +* Profiler +* :doc:`projects` +* :doc:`fileexplorer` +* :doc:`findinfiles`: Find string occurrences in a file, directory, or entire project with full support for powerful regular expressions and excluded locations +* :doc:`onlinehelp`: Search and browse rich HTML documentation on installed Python modules, packages, functions, classes, builtins and more, including your own +* :doc:`historylog` +* :doc:`internalconsole` .. image:: images/mainwindow/mainwindow_matlab_1610.png :align: right :width: 60% :alt: The Spyder main window, with a panel layout mirroring that of MATLAB +* Preferences: -* :doc:`ipythonconsole`: - - * *all consoles are executed in a separate process* - * *code completion*/calltips and automatic link to help (see below) - * open Python interpreters or basic terminal command windows - * run Python scripts (see source editor features) - * *variable explorer*: - - * *GUI-based editors* for a lot of data types (numbers, strings, lists, arrays, dictionaries, ...) - * *import/export data* from/to a lot of file types (text files, !NumPy files, MATLAB files) - * multiple array/list/dict editor instances at once, thus allowing to compare variable contents - * data visualization - -* :doc:`historylog` -* :doc:`help`: - - * provide documentation or source code on any Python object (class, function, module, ...) - * documentation may be displayed as an html page thanks to the rich text mode (powered by `sphinx`) + * Fully customizable keyboard shortcuts editor + * Selection of a custom Python interpreter to use for consoles + * Choice of around a dozen built-in syntax coloring theme, or create your own + * Toggle automatic editor and console introspection, analysis and helper features + * Options to use a variety of graphics back-ends and display preferences + * Much more... -* :doc:`onlinehelp`: automatically generated html documentation on installed Python modules -* :doc:`findinfiles`: find string occurrences in a directory, a git repository or directly in PYTHONPATH (support for regular expressions and included/excluded string lists) -* :doc:`fileexplorer` -* :doc:`projects` +* General: + * MATLAB-like ``PYTHONPATH`` management dialog + * User environment variables viewer/editor (Windows-only) + * Handy links to useful resources and documentation (Python, Matplotlib, NumPy, Scipy, Qt, IPython, etc.) + * Interactive tour, tutorial and shortcut cheat sheet for new users -Spyder may also be used as a PyQt5 or PyQt4 extension library -(module 'spyder'). For example, the Python interactive shell widget -used in Spyder may be embedded in your own PyQt5 or PyQt4 application. +Beyond its many built-in features, Spyder's abilities can be extended even further via its plugin system and API. +Spyder can also be used as a PyQt5 extension library, allowing you to build upon its functionality and embed its components, such as the interactive console, in your own software. From 33ff583de76251504dfdfe2a39d9e2efe4408472 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 18:25:01 -0500 Subject: [PATCH 27/44] Add descriptions to bare bullets in overview --- doc/overview.rst | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/overview.rst b/doc/overview.rst index 4b232456d..01d21a5fb 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -72,14 +72,14 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Can be triggered manually, on demand (``Ctrl-I`` by default) or automatically on typing a left parenthesis after a function name (optional) * Real-time rendering and rich HTML display of many common docstring formats (powered by ``Sphinx``) -* :doc:`pylint`: Integrated code checker (powered by ``pylint``) -* Profiler -* :doc:`projects` -* :doc:`fileexplorer` +* :doc:`pylint`: Detects an array of style issues, bad practices, potential bugs, and other problems with your code (powered by ``pylint``) +* Profiler: Measures the performance impact of every function in a script to idetify bottlenecks and aid optimization +* :doc:`projects`: Allows for easy saving and restoring of settings, sessions and setup for working on multiple development efforts simultaneously +* :doc:`fileexplorer`: Integrated filesystem viewing supporting many common operations * :doc:`findinfiles`: Find string occurrences in a file, directory, or entire project with full support for powerful regular expressions and excluded locations * :doc:`onlinehelp`: Search and browse rich HTML documentation on installed Python modules, packages, functions, classes, builtins and more, including your own -* :doc:`historylog` -* :doc:`internalconsole` +* :doc:`historylog`: Chronologically records every command entered into any Spyder console with timestamps, syntax highlighting and de-duplication +* :doc:`internalconsole`: Provides access to viewing, exploring and controlling Spyder's own operation .. image:: images/mainwindow/mainwindow_matlab_1610.png :align: right @@ -95,7 +95,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Options to use a variety of graphics back-ends and display preferences * Much more... -* General: +* General Features: * MATLAB-like ``PYTHONPATH`` management dialog * User environment variables viewer/editor (Windows-only) From a3c7f6ef654ef2a3070c7abd81d172bb3b470bdb Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 19:41:43 -0500 Subject: [PATCH 28/44] Fix broken links; update old ones; harmonize all to github and https --- doc/index.rst | 2 +- doc/installation.rst | 50 +++++++++++++++++++++--------------------- doc/ipythonconsole.rst | 2 +- doc/projects.rst | 4 ++-- 4 files changed, 29 insertions(+), 29 deletions(-) diff --git a/doc/index.rst b/doc/index.rst index fd1e3a704..a40b96e5e 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -20,7 +20,7 @@ Furthermore, Spyper offers built-in integration with many popular scientific pac .. _IPython: https://ipython.org/ .. _QtConsole: https://qtconsole.readthedocs.io/en/stable/ .. _Matplotlib: https://matplotlib.org/ -.. _SymPy: http://www.sympy.org/en/index.html +.. _SymPy: https://www.sympy.org/en/index.html Beyond its many built-in features, Spyder's abilities can be extended even further via its plugin system and API. Spyder can also be used as a PyQt5 extension library, allowing you to build upon its functionality and embed its components, such as the interactive console, in your own software. diff --git a/doc/installation.rst b/doc/installation.rst index 6145c1ad9..1d28a2f98 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -48,11 +48,11 @@ Install on macOS Thanks to the `MacPorts project`_, Spyder can be installed using its ``port`` package manager; however, the included Spyder version may be out of date or have MacPorts-specific issues outside of Spyder's control. -.. _MacPorts project: http://www.macports.org/ +.. _MacPorts project: https://www.macports.org/ There are `several versions`_ available from which you can choose. -.. _several versions: http://www.macports.org/ports.php?by=name&substr=spyder +.. _several versions: https://www.macports.org/ports.php?by=name&substr=spyder .. attention:: @@ -98,9 +98,9 @@ Spyder is also available in other GNU/Linux distributions, like .. _Arch Linux: https://aur.archlinux.org/packages/?K=spyder .. _Fedora: https://fedoraproject.org/wiki/Spyder -.. _Gentoo: http://packages.gentoo.org/package/dev-python/spyder +.. _Gentoo: https://packages.gentoo.org/packages/dev-python/spyder .. _openSUSE: https://software.opensuse.org/package/spyder3 -.. _Mageia: http://mageia.madb.org/package/show/name/spyder +.. _Mageia: https://madb.mageia.org/package/show/name/spyder Please refer to your distribution's documentation to learn how to install Spyder. @@ -118,37 +118,37 @@ Requirements The requirements to run Spyder are: -* `Python `_ 2.7 or >=3.3 +* `Python `_ 2.7 or >=3.3 * `PyQt5 `_ >=5.5 -* `Qtconsole `_ >=4.2.0 -- for an enhanced Python interpreter. +* `Qtconsole `_ >=4.2.0 -- for an enhanced Python interpreter. -* `Rope `_ >=0.9.4 and `Jedi `_ >=0.9.0 -- for code completion, go-to-definition and calltips on the Editor. +* `Rope `_ >=0.9.4 and `Jedi `_ >=0.9.0 -- for code completion, go-to-definition and calltips in the Editor. -* `Pyflakes `_ -- for real-time code analysis. +* `Pyflakes `_ -- for real-time code analysis. -* `Sphinx `_ -- for the Help pane rich text mode and to get our documentation. +* `Sphinx `_ -- for the Help pane rich text mode and to get our documentation. * `Pygments `_ >=2.0 -- for syntax highlighting and code completion in the Editor of all file types it supports. -* `Pylint `_ -- for static code analysis. +* `Pylint `_ -- for static code analysis. -* `Pycodestyle `_ -- for style analysis. +* `Pycodestyle `_ -- for style analysis. -* `Psutil `_ -- for memory/CPU usage in the status bar. +* `Psutil `_ -- for memory/CPU usage in the status bar. -* `Nbconvert `_ -- to manipulate Jupyter notebooks on the Editor. +* `Nbconvert `_ -- to manipulate Jupyter notebooks on the Editor. * `Qtawesome `_ >=0.4.1 -- for an icon theme based on FontAwesome. -* `Pickleshare `_ -- To show import completions on the Editor and Consoles. +* `Pickleshare `_ -- To show import completions in the Editor and Consoles. -* `PyZMQ `_ -- To run introspection services on the Editor asynchronously. +* `PyZMQ `_ -- To run introspection services in the Editor asynchronously. * `QtPy `_ >=1.2.0 -- To run Spyder with different Qt bindings seamlessly. -* `Chardet `_ >=2.0.0-- Character encoding auto-detection in Python. +* `Chardet `_ >=2.0.0-- Character encoding auto-detection in the Editor. * `Numpydoc `_ Used by Jedi to get return types for functions with Numpydoc docstrings. @@ -159,15 +159,15 @@ Optional modules * `Matplotlib `_ >=1.0 -- for 2D and 3D plotting in the consoles. -* `Pandas `_ >=0.13.1 -- for view and editing Series and DataFrames in the Variable Explorer. +* `Pandas `_ >=0.13.1 -- for viewing and editing Series and DataFrames in the Variable Explorer. -* `Numpy `_ -- for view and editing two or three dimensional arrays in the Variable Explorer. +* `Numpy `_ -- for viewing and editing two or three dimensional arrays in the Variable Explorer. -* `Sympy `_ >=0.7.3 -- for working with symbolic mathematics in the IPython console. +* `Sympy `_ >=0.7.3 -- for working with symbolic mathematics in the IPython console. -* `Scipy `_ -- for importing Matlab workspace files in the Variable Explorer. +* `Scipy `_ -- for importing Matlab workspace files in the Variable Explorer. -* `Cython `_ >=0.21 -- Run Cython files or Python files that depend on Cython libraries in the IPython console. +* `Cython `_ >=0.21 -- to run Cython files or Python files that depend on Cython libraries in the IPython console. Installation procedure ~~~~~~~~~~~~~~~~~~~~~~ @@ -175,7 +175,7 @@ Installation procedure You can install Spyder with the ``pip`` package manager, which comes by default with most Python installations. Before installing Spyder itself by this method, you need to acquire the `Python`_ programming language. -.. _Python: http://www.python.org/ +.. _Python: https://www.python.org/ Then, to install Spyder and its other dependencies, run ``pip install spyder``. You may need to install a Qt binding (PyQt5) separately with ``pip`` if running under Python 2. @@ -226,7 +226,7 @@ In summary: This installs all of Spyder's dependencies into the environment along with the stable/packaged version of Spyder, and then removes Spyder itself. -#. Install `Git`_ `_, a powerful source control management tool. +#. Install `Git`_, a powerful source control management tool. #. Clone the Spyder source code repository with the command:: @@ -238,7 +238,7 @@ In summary: #. To keep your repository up-to-date, run ``git pull`` inside the cloned directory. -.. _Git: http://git-scm.com/downloads +.. _Git: https://git-scm.com/downloads Additional help @@ -255,5 +255,5 @@ Additional help .. _main website: https://www.spyder-ide.org/ .. _Github repository: https://github.com/spyder-ide/spyder/ .. _Github wiki: https://github.com/spyder-ide/spyder/wiki -.. _Google Group: http://groups.google.com/group/spyderlib +.. _Google Group: https://groups.google.com/group/spyderlib .. _Gitter chatroom: https://gitter.im/spyder-ide/public diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 1f82468f9..74bd6f4a5 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -2,7 +2,7 @@ IPython Console ############### -The **IPython Console** allows you to execute commands and enter, interact with and visualize data inside any number of fully featured `IPython `_ interpreters. +The **IPython Console** allows you to execute commands and enter, interact with and visualize data inside any number of fully featured `IPython `_ interpreters. Each console is executed in a separate process, allowing you to run scripts, interrupt execution and restart or terminate a shell without affecting the others or Spyder itself, and easily test your code in a clean environment without disrupting your primary session. .. image:: images/console/console_standard.png diff --git a/doc/projects.rst b/doc/projects.rst index 5f9b59877..d88724c1b 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -64,13 +64,13 @@ Working with version control Spyder has basic integration with the `Git`_ distributed version control system. You can commit or browse (in the ``gitk`` GUI) a file, directory or the entire repository via the commands in the context menu for the relevant object (right-click). -.. _Git: http://git-scm.com/ +.. _Git: https://git-scm.com/ To use this functionality, the project must be located in a ``git`` repository and the ``git`` and ``gitk`` commands must be on the system path. For Windows systems, the `Git for Windows`_ package provides a convenient installer and the option to place common git commands on the system path without creating conflicts with Windows system tools. The second option in the dialog below is generally a safe approach. -.. _Git for Windows: https://git-for-windows.github.io/ +.. _Git for Windows: https://gitforwindows.org/ .. image:: images/other/git_for_windows_install_path.png :align: center From cd50e6a87d48e58378d814e3b4d3ffa0e7a74353 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 20:02:42 -0500 Subject: [PATCH 29/44] Have 2 linebreaks before all heads and make L2 head over and under --- doc/debugging.rst | 1 + doc/editor.rst | 1 + doc/fileexplorer.rst | 1 + doc/findinfiles.rst | 1 + doc/help.rst | 1 + doc/historylog.rst | 1 + doc/index.rst | 1 + doc/installation.rst | 17 +++++++++++++++++ doc/internalconsole.rst | 1 + doc/ipythonconsole.rst | 3 +++ doc/onlinehelp.rst | 2 ++ doc/projects.rst | 3 +++ doc/pylint.rst | 1 + doc/variableexplorer.rst | 2 ++ 14 files changed, 36 insertions(+) diff --git a/doc/debugging.rst b/doc/debugging.rst index 35f15c3b2..cd6ae67fe 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -12,6 +12,7 @@ This allows breakpoints and the execution flow to be viewed and controlled right | +=================== Debugging with ipdb =================== diff --git a/doc/editor.rst b/doc/editor.rst index 14f03e184..3c9e98107 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -35,6 +35,7 @@ Real-time code and style analysis with ``pyflakes`` and ``pycodestyle``: | +=================== Defining code cells =================== diff --git a/doc/fileexplorer.rst b/doc/fileexplorer.rst index 314b44462..135a6e72e 100644 --- a/doc/fileexplorer.rst +++ b/doc/fileexplorer.rst @@ -11,6 +11,7 @@ The **File Explorer** pane is a built-in filesystem and directory browser allowi | +========================== Performing file operations ========================== diff --git a/doc/findinfiles.rst b/doc/findinfiles.rst index c0a78f475..17c3ed7b8 100644 --- a/doc/findinfiles.rst +++ b/doc/findinfiles.rst @@ -10,6 +10,7 @@ The **Find in Files** pane allows to you perform full-text, recursive content se | +======================= Choosing search options ======================= diff --git a/doc/help.rst b/doc/help.rst index 180c347ed..752748f4e 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -9,6 +9,7 @@ You can trigger help by manually entering the object's name into the help box, p Automatic help can be individually enabled for both the Editor and the Console under ``Preferences > Help > Automatic Connections``, and turned on and off dynamically via the "lock" icon in the top right corner of the Help pane. +======================== Understanding help modes ======================== diff --git a/doc/historylog.rst b/doc/historylog.rst index 6bfe257c0..ceb5210a8 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -10,6 +10,7 @@ With the **History Log** pane, you can view an automatically de-duplicated, time | +===================== Using the history log ===================== diff --git a/doc/index.rst b/doc/index.rst index a40b96e5e..2d0c930ca 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -26,6 +26,7 @@ Beyond its many built-in features, Spyder's abilities can be extended even furth Spyder can also be used as a PyQt5 extension library, allowing you to build upon its functionality and embed its components, such as the interactive console, in your own software. +======== Contents ======== diff --git a/doc/installation.rst b/doc/installation.rst index 1d28a2f98..135cc273c 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -15,6 +15,7 @@ Thanks! .. _issue tracker: https://github.com/spyder-ide/spyder/issues +====================================== Installing with Anaconda (recommended) ====================================== @@ -27,6 +28,7 @@ This is the easiest way to install Spyder for any of our supported platforms, an If in doubt, you should install via this method; it generally has the least likelihood of potential pitfalls for non-experts, and we may be able to provide limited assistance if you do run into trouble. +=========================================== Installing with an alternative distribution =========================================== @@ -35,6 +37,7 @@ Installing with an alternative distribution While we offer alternative Spyder installation options for users who desire them, we currently lack the resources to offer individual assistance for problems specific to installing via these alternative distributions. Therefore, we recommend you switch to Anaconda if you encounter installation issues you are unable to solve on your own. + Install on Windows ~~~~~~~~~~~~~~~~~~ @@ -43,6 +46,7 @@ You can use it immediately after installing, just like with Anaconda. .. _WinPython: https://winpython.github.io/ + Install on macOS ~~~~~~~~~~~~~~~~ @@ -62,11 +66,13 @@ There are `several versions`_ available from which you can choose. export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 + Install on GNU/Linux ~~~~~~~~~~~~~~~~~~~~ Please refer to the `Requirements`_ to see what other packages you might need. + Ubuntu ------ @@ -76,6 +82,7 @@ Using the official package manager: ``sudo apt-get install spyder``. This package could be slightly outdated. If you find that is the case, please use the Debian package mentioned below. + Debian Unstable --------------- @@ -85,6 +92,7 @@ Spyder's official Debian package is available on the `Debian package repository` .. _Debian package repository: https://packages.debian.org/en/sid/spyder + Other Distributions ------------------- @@ -105,6 +113,7 @@ Spyder is also available in other GNU/Linux distributions, like Please refer to your distribution's documentation to learn how to install Spyder. +================================== Installing with pip (experts only) ================================== @@ -113,6 +122,7 @@ Installing with pip (experts only) While this installation method is a viable option for experienced users, installing Spyder (and other SciPy stack packages) with ``pip`` can lead to a number of tricky issues. While you are welcome to try this on your own, we unfortunately do not have the resources to help you if you do run into problems, except to recommend you use Anaconda instead. + Requirements ~~~~~~~~~~~~ @@ -154,6 +164,7 @@ The requirements to run Spyder are: * `Cloudpickle `_ Serialize variables in the IPython kernel to send them to Spyder. + Optional modules ~~~~~~~~~~~~~~~~ @@ -169,6 +180,7 @@ Optional modules * `Cython `_ >=0.21 -- to run Cython files or Python files that depend on Cython libraries in the IPython console. + Installation procedure ~~~~~~~~~~~~~~~~~~~~~~ @@ -180,6 +192,7 @@ Before installing Spyder itself by this method, you need to acquire the `Python` Then, to install Spyder and its other dependencies, run ``pip install spyder``. You may need to install a Qt binding (PyQt5) separately with ``pip`` if running under Python 2. + Run without installing ~~~~~~~~~~~~~~~~~~~~~~ @@ -194,6 +207,8 @@ You can execute Spyder from source without installing it first by the following This is especially useful for beta-testing, troubleshooting and helping develop Spyder itself. + +=============== Updating Spyder =============== @@ -206,6 +221,7 @@ This command will also update all Spyder dependencies, so we recommend you use a .. _install-from-source: +============================== Installing a development build ============================== @@ -241,6 +257,7 @@ In summary: .. _Git: https://git-scm.com/downloads +=============== Additional help =============== diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index 0a43764b6..5c44eed57 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -10,6 +10,7 @@ You can use the **Internal Console** to control and debug Spyder itself, or as a | +================== Supported features ================== diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 74bd6f4a5..d2a0e9476 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -13,6 +13,7 @@ Each console is executed in a separate process, allowing you to run scripts, int | +======================= Connecting to a console ======================= @@ -35,6 +36,7 @@ When "Connect to an existing kernel" is selected, Spyder prompts for the connect | +================== Supported features ================== @@ -63,6 +65,7 @@ For information on the features, commands and capabilities built in to the IPyth .. _umr-section: +=================================== Using UMR to reload changed modules =================================== diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index 89f862267..f084c3acb 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -10,6 +10,8 @@ The **Online Help** pane provides a built-in web browser to explore dynamically | + +===================== Using the Online Help ===================== diff --git a/doc/projects.rst b/doc/projects.rst index d88724c1b..a71e6f3b4 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -17,6 +17,7 @@ Spyder allows users to associate a given directory with a **Project**, which off All of Spyder' functionality (session saving, File Explorer, working directory, etc) is available without creating a project, just on a global rather than project-specific basis. +================== Creating a project ================== @@ -37,6 +38,7 @@ To create a project, click the New Project entry in the Projects menu, choose wh .. _project-explorer: +========================== Using the Project Explorer ========================== @@ -58,6 +60,7 @@ This pane allows you to perform all the same operations as a normal Spyder :doc: .. _vcs-section: +============================ Working with version control ============================ diff --git a/doc/pylint.rst b/doc/pylint.rst index 2bd851c36..b97ad573d 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -13,6 +13,7 @@ Spyder's static analyzer is powered by the best in class `Pylint`_ backend, whic | +========================= Using the static analyzer ========================= diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index e6c071123..cf11c6356 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -11,6 +11,7 @@ The **Variable Explorer** shows the namespace contents (all global object refere | +==================== Features and editors ==================== @@ -66,6 +67,7 @@ Several examples of this functionality follow: | +=============== Supported types =============== From 44617a6580687a7314e8e7f30f4a2a14d4527425 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 20:30:19 -0500 Subject: [PATCH 30/44] Update all files, directorys and paths to use :file: directive --- doc/historylog.rst | 2 +- doc/installation.rst | 4 ++-- doc/pylint.rst | 5 +++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/doc/historylog.rst b/doc/historylog.rst index ceb5210a8..51c6c3ae1 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -20,7 +20,7 @@ Statements can be selected and copied from the context menu or with the normal s Just like in the editor, highlighting a word or phrase displays all other occurrences, and full syntax highlighting is also supported. Finally, the top-right options menu ("Gear" icon) allows you to toggle soft-wrapping of long lines ("Wrap lines"), and set the number of commands the History Log should remember ("History"). -The history log is stored in the ``.spyder-py3`` directory in your user home folder (by default, ``C:/Users/`` on Windows, ``/Users/`` for macOS, and typically ``/home/`` on GNU/Linux). +The history log is stored in the :file:`.spyder-py3` directory in your user home folder (by default, :file:`C:/Users/{username}` on Windows, :file:`/Users/{username}` for macOS, and typically :file:`/home/{username}` on GNU/Linux). You might need to show invisible files in order to see it on a non-Windows operating system. diff --git a/doc/installation.rst b/doc/installation.rst index 135cc273c..9916f629c 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -61,7 +61,7 @@ There are `several versions`_ available from which you can choose. .. attention:: The MacPorts version of Spyder may currently be raising ``ValueError: unknown locale: UTF-8``, which doesn't let it start correctly. - To fix it you will have to set these environment variables in your ``~/.profile`` (or ``~/.bashrc``) manually:: + To fix it you will have to set these environment variables in your :file:`~/.profile` (or :file:`~/.bashrc`) file manually:: export LANG=en_US.UTF-8 export LC_ALL=en_US.UTF-8 @@ -248,7 +248,7 @@ In summary: git clone https://github.com/spyder-ide/spyder.git -#. Run Spyder with the ``bootstrap.py`` script from within the cloned directory:: +#. Run Spyder with the :file:`bootstrap.py` script from within the cloned :file:`spyder/` directory:: python bootstrap.py diff --git a/doc/pylint.rst b/doc/pylint.rst index b97ad573d..63b71700c 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -18,11 +18,12 @@ Using the static analyzer ========================= You can run Spyder's Static Code Analysis directly from the :doc:`editor`, or you can manually enter the Python module or package path you'd like it to check. -The analyzer works with both ``.py`` (or ``.pyw``) Python scripts and whole Python packages (directories containing an ``__init__.py`` file). +The analyzer works with both ``.py`` (or ``.pyw``) Python scripts and whole Python packages (directories containing an :file:`__init__.py` file). To go directly to the file and line in the :doc:`editor` highlighted by a failed check, just click its name. Start and cancel analyzing a file with the Analyze and Stop buttons respectively, and if analysis fails, click the Output button to find out why. You click the dropdown or press the down arrow in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the History dialog from the Static Code Analysis context menu. -All checks are displayed by default; you can turn certain messages off at the line, block or file/module level by adding a ``# pylinet: disable=insert, message-names, here`` comment at the respective level, or by editing the ``.pylintrc`` configuration file in your user home directory (for more details on configuring Pylint, see the `Pylint documentation`_). +All standard checks are run by default. +You can turn certain messages off at the line, block or file/module level by adding a ``# pylinet: disable=insert, message-names, here`` comment at the respective level, or by editing the :file:`.pylintrc` configuration file in your user home directory (for more details on configuring Pylint, see the `Pylint documentation`_). .. _Pylint documentation: https://pylint.readthedocs.io/en/latest/faq.html#message-control From e0da5615d4202082411c6e3b3226a8b9c3a48bb8 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 20:45:18 -0500 Subject: [PATCH 31/44] Make all keyboard shortcuts use :kbd: directive --- doc/debugging.rst | 4 ++-- doc/help.rst | 2 +- doc/ipythonconsole.rst | 2 +- doc/onlinehelp.rst | 2 +- doc/overview.rst | 4 ++-- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index cd6ae67fe..7a05e3317 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -26,7 +26,7 @@ Spyder offers the following debugging features integrated into the native GUI: * Multiple means of setting and clearing normal and conditional breakpoints for any line in a file opened in the :doc:`editor`. * By selecting the respective option from the Debug menu. - * Through pressing a configurable keyboard shortcut (F12 for normal, or Shift-F12 for conditional breakpoints by default). + * Through pressing a configurable keyboard shortcut (:kbd:`F12` for normal, or :kbd:`Shift-F12` for conditional breakpoints by default). * By double-clicking to the left of the line number in an open file. * With a ``ipdb.set_trace()`` statement in your code. * Interactively, using the ``b`` magic command in an ``ipdb`` session. @@ -36,7 +36,7 @@ Spyder offers the following debugging features integrated into the native GUI: :width: 50% :alt: Spyder's Breakpoints panel, with a number of examples showing file, line number and an optional condition -* A breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (Debug > List Breakpoints, or Ctrl-Shift-B by default). +* A breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (Debug > List Breakpoints, or :kbd:`Ctrl-Shift-B` by default). * Full GUI control over debugger execution from the Debug menu, Debug toolbar and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. diff --git a/doc/help.rst b/doc/help.rst index 752748f4e..cfebe1c4f 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -5,7 +5,7 @@ Help You can use the **Help** pane to find, render and display rich documentation for any object with a docstring, including modules, classes, functions and methods. Help can be retrieved both by static analysis of open files in the :doc:`editor`, or by dynamically inspecting an object in an :doc:`ipythonconsole`. -You can trigger help by manually entering the object's name into the help box, pressing the configurable help shortcut (Ctrl-I by default), or even automatically if desired when on typing a left parenthesis (``(``) after a function or method name. +You can trigger help by manually entering the object's name into the help box, pressing the configurable help shortcut (:kbd:`Ctrl-I` by default), or even automatically if desired when on typing a left parenthesis (``(``) after a function or method name. Automatic help can be individually enabled for both the Editor and the Console under ``Preferences > Help > Automatic Connections``, and turned on and off dynamically via the "lock" icon in the top right corner of the Help pane. diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index d2a0e9476..4729b0ca0 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -17,7 +17,7 @@ Each console is executed in a separate process, allowing you to run scripts, int Connecting to a console ======================= -Spyder can launch new IPython instances itself, through "Open an IPython console" under the Consoles menu, the IPython Console pane menu or its context menu (``Ctrl-T`` by default), to take advantage of the full suite of Spyder's features. +Spyder can launch new IPython instances itself, through "Open an IPython console" under the Consoles menu, the IPython Console pane menu or its context menu (:kbd:`Ctrl-T` by default), to take advantage of the full suite of Spyder's features. Each console implements a robust two-process IPython session, with a lightweight front-end interface connected to a full kernel back end. Additionally, you can connect to external kernels managed by QtConsole sessions or the Jupyter Notebook, through the "Connect to an existing kernel" dialog under the same menus, which support many of Spdyer's advanced capabilities. diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index f084c3acb..fda4b7666 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -19,7 +19,7 @@ Enter the name of the item you'd like documentation on in the Module or package Or, if you're not sure of the name of the object you want help on, or are looking for a specific keyword, use the Search field to get a list of results. You can view and re-run previous searches with the drop-down menu or the down key in the Module or package field, navigate previous pages with the forward and back buttons (top left, left and right arrows), and go back to the homepage with the home button (house icon top left) or the ``Module Index`` link top right. -Perform a realtime search within a page's content with the Find button (magnifying glass icon top left) or ``Ctrl-F``, navigate through matches with the Up and Down buttons, and make matching case sensitive with the "Aa" button. +Perform a realtime search within a page's content with the Find button (magnifying glass icon top left) or :kbd:`Ctrl-F`, navigate through matches with the Up and Down buttons, and make matching case sensitive with the "Aa" button. You can use the zoom in/out buttons (- and +, top right), to change the font size to suit your preferences. Finally, to cancel searching or page loading, click the stop button (red X, top right) and to reload the help content you're seeing to the most current version on disk (such as when you change your package's documentation), hit the refresh button (circular arrows, top right). diff --git a/doc/overview.rst b/doc/overview.rst index 01d21a5fb..f5cabca10 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -27,7 +27,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * On-demand (TAB) and "dot" automatic code completion * Automatic popup calltips showing function signatures - * Go-to-definition for any symbol: Functions, classes, attributes, etc. (Ctrl-Click or ``Ctrl-G`` by default) + * Go-to-definition for any symbol: Functions, classes, attributes, etc. (:kbd:`Ctrl`-Click or :kbd:`Ctrl-G` by default) * Occurrence highlighting: Select or double-click any word to show all other instances throughout the current document * Real-time automatic formatters (optional): @@ -69,7 +69,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * :doc:`help`: * Provides documentation or source code for any Python object (class, function, module...) - * Can be triggered manually, on demand (``Ctrl-I`` by default) or automatically on typing a left parenthesis after a function name (optional) + * Can be triggered manually, on demand (:kbd:`Ctrl-I` by default) or automatically on typing a left parenthesis after a function name (optional) * Real-time rendering and rich HTML display of many common docstring formats (powered by ``Sphinx``) * :doc:`pylint`: Detects an array of style issues, bad practices, potential bugs, and other problems with your code (powered by ``pylint``) From d92b2ccb09fe4c21c28f4a14a3a169df783c65d8 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 20:53:46 -0500 Subject: [PATCH 32/44] Update all menu and prefs selections to use :menuselection: dir --- doc/debugging.rst | 2 +- doc/help.rst | 2 +- doc/ipythonconsole.rst | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index 7a05e3317..61f42da60 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -36,7 +36,7 @@ Spyder offers the following debugging features integrated into the native GUI: :width: 50% :alt: Spyder's Breakpoints panel, with a number of examples showing file, line number and an optional condition -* A breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (Debug > List Breakpoints, or :kbd:`Ctrl-Shift-B` by default). +* A breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (:menuselection:`Debug --> List Breakpoints`, or :kbd:`Ctrl-Shift-B` by default). * Full GUI control over debugger execution from the Debug menu, Debug toolbar and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. diff --git a/doc/help.rst b/doc/help.rst index cfebe1c4f..2afb1102c 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -6,7 +6,7 @@ You can use the **Help** pane to find, render and display rich documentation for Help can be retrieved both by static analysis of open files in the :doc:`editor`, or by dynamically inspecting an object in an :doc:`ipythonconsole`. You can trigger help by manually entering the object's name into the help box, pressing the configurable help shortcut (:kbd:`Ctrl-I` by default), or even automatically if desired when on typing a left parenthesis (``(``) after a function or method name. -Automatic help can be individually enabled for both the Editor and the Console under ``Preferences > Help > Automatic Connections``, and turned on and off dynamically via the "lock" icon in the top right corner of the Help pane. +Automatic help can be individually enabled for both the Editor and the Console under :menuselection:`Preferences --> Help --> Automatic Connections`, and turned on and off dynamically via the "lock" icon in the top right corner of the Help pane. ======================== diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 4729b0ca0..a67f87006 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -56,7 +56,7 @@ Spyder-created consoles support even more advanced capabilities, such as: * The :doc:`variableexplorer`, with GUI-based editors for many built-in and third-party Python objects * Full GUI integration with the enhanced IPython debugger, ``ipdb``, including viewing and setting normal and conditional breakpoints interactively in any file, a Breakpoints pane, and following along with execution flow in the in the :doc:`editor` (see the :doc:`debugging` documentation for more details) * The :ref:`User Module Reloader `, which can automatically re-import modified packages and files -* Inline display of ``Matplotlib`` graphics, if the ``Inline`` backend is selected under ``Preferences > IPython console > Graphics > Graphics backend`` +* Inline display of ``Matplotlib`` graphics, if the ``Inline`` backend is selected under :menuselection:`Preferences --> IPython console --> Graphics --> Graphics backend` For information on the features, commands and capabilities built in to the IPython console itself, see the `IPython documentation`_. @@ -79,7 +79,7 @@ Fortunately, in Spyder, there's an easy solution: the User Module Reloader (UMR) When UMR is turned on, you can test complex applications within the same IPython interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. Or, if you're analyzing data step by step using your own custom libraries, you can easily add or tweak a function in the latter and see the results reflected in the former, all without the overhead of reloading the data and re-running your whole script to restore your session to the same point. -UMR is enabled by default, and will do its work automatically without user intervention, although it will provide you with a red ``Reloaded modules:`` message in the console listing the files it has refreshed when it activates. If desired, you can turned it and the message on and off, and prevent specific modules from being reloaded, under ``Preferences > Python interpreter > User Module Reloader (UMR)``. +UMR is enabled by default, and will do its work automatically without user intervention, although it will provide you with a red ``Reloaded modules:`` message in the console listing the files it has refreshed when it activates. If desired, you can turned it and the message on and off, and prevent specific modules from being reloaded, under :menuselection:`Preferences --> Python interpreter --> User Module Reloader (UMR)`. Related components From 21e179a5838cb4ec260d3bd93a5c62367994588e Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 21:13:30 -0500 Subject: [PATCH 33/44] Make all code into code-blocks:: directives --- doc/installation.rst | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/doc/installation.rst b/doc/installation.rst index 9916f629c..d9cf88f4d 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -61,10 +61,12 @@ There are `several versions`_ available from which you can choose. .. attention:: The MacPorts version of Spyder may currently be raising ``ValueError: unknown locale: UTF-8``, which doesn't let it start correctly. - To fix it you will have to set these environment variables in your :file:`~/.profile` (or :file:`~/.bashrc`) file manually:: + To fix it you will have to set these environment variables in your :file:`~/.profile` (or :file:`~/.bashrc`) file manually: - export LANG=en_US.UTF-8 - export LC_ALL=en_US.UTF-8 + .. code-block:: bash + + export LANG=en_US.UTF-8 + export LC_ALL=en_US.UTF-8 Install on GNU/Linux @@ -200,8 +202,17 @@ You can execute Spyder from source without installing it first by the following #. Unzip the source package available for download on the `Spyder Github repository`_ (or :ref:`clone it from Github`) #. Change current directory to the unzipped directory -#. Install Spyder's requirements with ``pip install -r requirements/requirements.txt`` -#. Run Spyder with the command ``python bootstrap.py`` +#. Install Spyder's requirements with: + + .. code-block:: bash + + pip install -r requirements/requirements.txt + +#. Run Spyder with the command: + + .. code-block:: bash + + python bootstrap.py .. _Spyder Github repository: https://github.com/spyder-ide/spyder @@ -235,22 +246,28 @@ In summary: #. Install the Spyder `requirements`_. - The recommended and easiest way to do this is with ``conda``:: + The recommended and easiest way to do this is with ``conda``: + + .. code-block:: bash - conda install spyder - conda remove spyder + conda install spyder + conda remove spyder This installs all of Spyder's dependencies into the environment along with the stable/packaged version of Spyder, and then removes Spyder itself. #. Install `Git`_, a powerful source control management tool. -#. Clone the Spyder source code repository with the command:: +#. Clone the Spyder source code repository with the command: + + .. code-block:: bash + + git clone https://github.com/spyder-ide/spyder.git - git clone https://github.com/spyder-ide/spyder.git +#. Run Spyder with the :file:`bootstrap.py` script from within the cloned :file:`spyder/` directory: -#. Run Spyder with the :file:`bootstrap.py` script from within the cloned :file:`spyder/` directory:: + .. code-block:: bash - python bootstrap.py + python bootstrap.py #. To keep your repository up-to-date, run ``git pull`` inside the cloned directory. From 522ee0db5cf652a06783abcb3e9cb170cd0fc855 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 22:19:34 -0500 Subject: [PATCH 34/44] Add :guilabel: directives to verbatim labels from the GUI --- doc/debugging.rst | 4 ++-- doc/editor.rst | 4 ++-- doc/findinfiles.rst | 10 +++++----- doc/help.rst | 12 ++++++------ doc/historylog.rst | 6 +++--- doc/internalconsole.rst | 10 +++++----- doc/ipythonconsole.rst | 10 +++++----- doc/onlinehelp.rst | 12 ++++++------ doc/overview.rst | 6 +++--- doc/projects.rst | 16 ++++++++-------- doc/pylint.rst | 6 +++--- doc/variableexplorer.rst | 4 ++-- 12 files changed, 50 insertions(+), 50 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index 61f42da60..71e54411c 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -36,9 +36,9 @@ Spyder offers the following debugging features integrated into the native GUI: :width: 50% :alt: Spyder's Breakpoints panel, with a number of examples showing file, line number and an optional condition -* A breakpoints pane, listing the file, line, and condition (if any) of every breakpoint defined (:menuselection:`Debug --> List Breakpoints`, or :kbd:`Ctrl-Shift-B` by default). +* A :guilabel:`Breakpoints` pane, listing the file, line, and condition (if any) of every breakpoint defined (:menuselection:`Debug --> List Breakpoints`, or :kbd:`Ctrl-Shift-B` by default). -* Full GUI control over debugger execution from the Debug menu, Debug toolbar and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. +* Full GUI control over debugger execution from the :guilabel:`Debug` menu, :guilabel:`Debug toolbar` and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. .. image:: images/debugging/debugging_condbreakpoint.png :align: right diff --git a/doc/editor.rst b/doc/editor.rst index 3c9e98107..41df2f6c7 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -11,7 +11,7 @@ The Editor's key features include syntax highlighting (``pygments``); real-time | -Function/class/method browser, and horizontal/vertical splitting capabilities: +:guilabel:`Outline Explorer` (function/class/method browser) and horizontal/vertical splitting capabilities: |outline| |split| @@ -55,7 +55,7 @@ You can separate cells by lines starting with either: * `# %%` (standard cell separator, when file has been edited with Eclipse) * `# ` (IPython notebook cell separator) -Providing a description to the right of the separator will give that cell its own name in the previously shown Outline viewer. +Providing a description to the right of the separator will give that cell its own name in the :guilabel:`Outline Explorer`. Related components diff --git a/doc/findinfiles.rst b/doc/findinfiles.rst index 17c3ed7b8..38ef1c19f 100644 --- a/doc/findinfiles.rst +++ b/doc/findinfiles.rst @@ -14,12 +14,12 @@ The **Find in Files** pane allows to you perform full-text, recursive content se Choosing search options ======================= -The Find in Files tool allows you to select from a number of options to enable searches as broad or refined as you need: +The :guilabel:`Find in Files` tool allows you to select from a number of options to enable searches as broad or refined as you need: -* To enable case sensitivity, controlling whether matches are returned with a different case than your search text, toggle the "Aa" button on. -* To parse your search string as a regular expression, allowing for highly expressive search queries, toggle the "Gear" button on. -* To exclude certain filenames, types, or directories from your search, use the "Exclude:" text box, which can similarly be parsed as a regular expression with the "Gear" button to its right. -* To select whether to search in a specific file, in the current working directory, in a new or previously-used custom directory, or even in entire :doc:`projects`, use the "Search In" menu. +* To enable case sensitivity, controlling whether matches are returned with a different case than your search text, toggle the :guilabel:`Aa` button on. +* To parse your search string as a regular expression, allowing for highly expressive search queries, toggle the :guilabel`Gear` button on. +* To exclude certain filenames, types, or directories from your search, use the :guilabel:`Exclude:` text box, which can similarly be parsed as a regular expression with the :guilabel:`Gear` button to its right. +* To select whether to search in a specific file, in the current working directory, in a new or previously-used custom directory, or even in entire :doc:`projects`, use the :guilabel:`Search In` menu. Related components diff --git a/doc/help.rst b/doc/help.rst index 2afb1102c..b1cbd358f 100644 --- a/doc/help.rst +++ b/doc/help.rst @@ -5,31 +5,31 @@ Help You can use the **Help** pane to find, render and display rich documentation for any object with a docstring, including modules, classes, functions and methods. Help can be retrieved both by static analysis of open files in the :doc:`editor`, or by dynamically inspecting an object in an :doc:`ipythonconsole`. -You can trigger help by manually entering the object's name into the help box, pressing the configurable help shortcut (:kbd:`Ctrl-I` by default), or even automatically if desired when on typing a left parenthesis (``(``) after a function or method name. -Automatic help can be individually enabled for both the Editor and the Console under :menuselection:`Preferences --> Help --> Automatic Connections`, and turned on and off dynamically via the "lock" icon in the top right corner of the Help pane. +You can trigger help by manually entering the object's name into the :guilabel:`Object` box, pressing the configurable help shortcut (:kbd:`Ctrl-I` by default), or even automatically if desired when on typing a left parenthesis (``(``) after a function or method name. +Automatic help can be individually enabled for both the :guilabel:`Editor` and the :guilabel:`Console` under :menuselection:`Preferences --> Help --> Automatic Connections`, and turned on and off dynamically via the :guilabel:`lock` icon in the top right corner of the :guilabel:`Help` pane. ======================== Understanding help modes ======================== -You can use the options menu ("Gear" icon) in the top right of the help pane to toggle the help display mode. +You can use the options menu (:guilabel:`Gear` icon) in the top right of the :guilabel:`Help` pane to toggle the help display mode. -Rich Text mode renders the object's docstrings with ``Sphinx``: +:guilabel:`Rich Text` mode renders the object's docstrings with ``Sphinx``: .. image:: images/help/help_standard.png :alt: Spyder Help panel, displaying rich text docs for the DataFrame class | -Plain Text mode displays the docstring without formatting: +:guilabel:`Plain Text` mode displays the docstring without formatting: .. image:: images/help/help_plain.png :alt: Spyder Help panel, displaying plain text docs for the DataFrame class | -Show Source displays the docstring inline with the code for the selected object, or any Python portion of it (if the object is not pure Python). +:guilabel:`Show Source` displays the docstring inline with the code for the selected object, or any Python portion of it (if the object is not pure Python). This can be useful when docstrings are not available or insufficient to document the object: .. image:: images/help/help_source_code.png diff --git a/doc/historylog.rst b/doc/historylog.rst index 51c6c3ae1..0a56fa9a6 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -14,13 +14,13 @@ With the **History Log** pane, you can view an automatically de-duplicated, time Using the history log ===================== -Navigating the history log is very straightforward. +Navigating the :guilabel:`History Log` is very straightforward. Each session is marked by a date and time-stamp, making it easy to remember when you executed a certain command. Statements can be selected and copied from the context menu or with the normal system shortcuts. Just like in the editor, highlighting a word or phrase displays all other occurrences, and full syntax highlighting is also supported. -Finally, the top-right options menu ("Gear" icon) allows you to toggle soft-wrapping of long lines ("Wrap lines"), and set the number of commands the History Log should remember ("History"). +Finally, the top-right options menu (:guilabel:`Gear` icon) allows you to toggle soft-wrapping of long lines (:guilabel:`Wrap lines`), and set the number of commands the :guilabel:`History Log` should remember (:guilabel:`History`). -The history log is stored in the :file:`.spyder-py3` directory in your user home folder (by default, :file:`C:/Users/{username}` on Windows, :file:`/Users/{username}` for macOS, and typically :file:`/home/{username}` on GNU/Linux). +The :guilabel:`History Log` is stored in the :file:`.spyder-py3` directory in your user home folder (by default, :file:`C:/Users/{username}` on Windows, :file:`/Users/{username}` for macOS, and typically :file:`/home/{username}` on GNU/Linux). You might need to show invisible files in order to see it on a non-Windows operating system. diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index 5c44eed57..75c6f236a 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -14,18 +14,18 @@ You can use the **Internal Console** to control and debug Spyder itself, or as a Supported features ================== -The Internal Console supports code completion and calltips, just like a normal IPython Console, along with a number of GUI selection, line-wrapping, buffer, and clear/copy/paste options. -You can toggle and customize these behaviors under Internal console settings from the context menu. +The :guilabel:`Internal Console` supports code completion and calltips, just like a normal IPython Console, along with a number of GUI selection, line-wrapping, buffer, and clear/copy/paste options. +You can toggle and customize these behaviors under :guilabel:`Internal console settings` from the context menu. Additionally, you can use a number of special commands can be used to open a file in a Spyder or external editor, edit or remove variables, run scripts or system commands, get help, and more. -See the Help dialog in the context menu for more details on these. +See the :guilabel:`Help` dialog in the context menu for more details on these. .. image:: images/internal_console/internal_console_contextmenu_settings.png :alt: Spyder Internal Console, showing context menu with settings options | -By default, all the commands entered in the Internal Console are executed in the same process as Spyder's. -However, you can run the Internal Console in a separate thread by passing ``--multithread`` as one of Spyder's :doc:`options` on launch. +By default, all the commands entered in the :guilabel:`Internal Console` are executed in the same process as Spyder's. +However, you can run the :guilabel:`Internal Console` in a separate thread by passing ``--multithread`` as one of Spyder's :doc:`options` on launch. Related components diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index a67f87006..19df89133 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -17,9 +17,9 @@ Each console is executed in a separate process, allowing you to run scripts, int Connecting to a console ======================= -Spyder can launch new IPython instances itself, through "Open an IPython console" under the Consoles menu, the IPython Console pane menu or its context menu (:kbd:`Ctrl-T` by default), to take advantage of the full suite of Spyder's features. +Spyder can launch new IPython instances itself, through "Open an IPython console" under the :guilabel:`Consoles` menu, the :guilabel:`IPython Console` pane menu or its context menu (:kbd:`Ctrl-T` by default), to take advantage of the full suite of Spyder's features. Each console implements a robust two-process IPython session, with a lightweight front-end interface connected to a full kernel back end. -Additionally, you can connect to external kernels managed by QtConsole sessions or the Jupyter Notebook, through the "Connect to an existing kernel" dialog under the same menus, which support many of Spdyer's advanced capabilities. +Additionally, you can connect to external kernels managed by QtConsole sessions or the Jupyter Notebook, through the :guilabel:`Connect to an existing kernel` dialog under the same menus, which support many of Spdyer's advanced capabilities. .. image:: images/console/console_menu.png :align: center @@ -27,7 +27,7 @@ Additionally, you can connect to external kernels managed by QtConsole sessions | -When "Connect to an existing kernel" is selected, Spyder prompts for the connection details: +When :guilabel:`Connect to an existing kernel` is selected, Spyder prompts for the connection details: .. image:: images/console/console_dialog_connect.png :align: center @@ -54,7 +54,7 @@ Any **IPython Console** in Spyder, internally or externally created, supports ad Spyder-created consoles support even more advanced capabilities, such as: * The :doc:`variableexplorer`, with GUI-based editors for many built-in and third-party Python objects -* Full GUI integration with the enhanced IPython debugger, ``ipdb``, including viewing and setting normal and conditional breakpoints interactively in any file, a Breakpoints pane, and following along with execution flow in the in the :doc:`editor` (see the :doc:`debugging` documentation for more details) +* Full GUI integration with the enhanced IPython debugger, ``ipdb``, including viewing and setting normal and conditional breakpoints interactively in any file, a :guilabel:`Breakpoints` pane, and following along with execution flow in the in the :doc:`editor` (see the :doc:`debugging` documentation for more details) * The :ref:`User Module Reloader `, which can automatically re-import modified packages and files * Inline display of ``Matplotlib`` graphics, if the ``Inline`` backend is selected under :menuselection:`Preferences --> IPython console --> Graphics --> Graphics backend` @@ -75,7 +75,7 @@ If you subsequently re-import the module anytime in the same session, this cache While efficient for final production code, this behavior is often undesired when working with the Python interpreter interactively, such as when analyzing data or testing your own module. In effect, you're left with no way to update or modify any already-imported modules, aside from manually removing the relevant ``.pyc`` files, or completely restarting the console entirely. -Fortunately, in Spyder, there's an easy solution: the User Module Reloader (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing IPython shell whenever they are modified, without any of the downsides of the above workarounds. +Fortunately, in Spyder, there's an easy solution: the :guilabel:`User Module Reloader` (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing IPython shell whenever they are modified, without any of the downsides of the above workarounds. When UMR is turned on, you can test complex applications within the same IPython interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. Or, if you're analyzing data step by step using your own custom libraries, you can easily add or tweak a function in the latter and see the results reflected in the former, all without the overhead of reloading the data and re-running your whole script to restore your session to the same point. diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index fda4b7666..477bee86a 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -15,13 +15,13 @@ The **Online Help** pane provides a built-in web browser to explore dynamically Using the Online Help ===================== -Enter the name of the item you'd like documentation on in the Module or package field, or the Get field, to load its doc directly. -Or, if you're not sure of the name of the object you want help on, or are looking for a specific keyword, use the Search field to get a list of results. -You can view and re-run previous searches with the drop-down menu or the down key in the Module or package field, navigate previous pages with the forward and back buttons (top left, left and right arrows), and go back to the homepage with the home button (house icon top left) or the ``Module Index`` link top right. +Enter the name of the item you'd like documentation on in the :guilabel:`Module or package` field, or the :guilabel:`Get` field, to load its doc directly. +Or, if you're not sure of the name of the object you want help on, or are looking for a specific keyword, use the :guilabel:`Search` field to get a list of results. +You can view and re-run previous searches with the drop-down menu or the down key in the :guilabel:`Module or package field`, navigate previous pages with the forward and back buttons (top left, left and right arrows), and go back to the homepage with the home button (house icon top left) or the ``Module Index`` link top right. -Perform a realtime search within a page's content with the Find button (magnifying glass icon top left) or :kbd:`Ctrl-F`, navigate through matches with the Up and Down buttons, and make matching case sensitive with the "Aa" button. -You can use the zoom in/out buttons (- and +, top right), to change the font size to suit your preferences. -Finally, to cancel searching or page loading, click the stop button (red X, top right) and to reload the help content you're seeing to the most current version on disk (such as when you change your package's documentation), hit the refresh button (circular arrows, top right). +Perform a realtime search within a page's content with the :guilabel:`Find` button (magnifying glass icon top left) or :kbd:`Ctrl-F`, navigate through matches with the Up and Down buttons, and make matching case sensitive with the :guilabel:`Aa` button. +You can use the zoom in/out buttons (:guilabel:`-` and :guilabel:`+`, top right), to change the font size to suit your preferences. +Finally, to cancel searching or page loading, click the stop button (red :guilabel:`X`, top right) and to reload the help content you're seeing to the most current version on disk (such as when you change your package's documentation), hit the refresh button (circular arrows, top right). Related components diff --git a/doc/overview.rst b/doc/overview.rst index f5cabca10..7dff05461 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -22,7 +22,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Run in Current/dedicated/external console choice * Automatically clear variables or enter debugging - * Outline Explorer: Navigate cells, functions, classes, blocks, and more + * :guilabel:`Outline Explorer`: Navigate cells, functions, classes, blocks, and more * Code introspection (powered by ``rope`` and ``jedi``): * On-demand (TAB) and "dot" automatic code completion @@ -57,7 +57,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Range of code run options and interactivity * :doc:`debugging` integration with enhanced ``ipdb`` debugger and the :doc:`editor` * Inline display of Matplotlib graphics (optional) - * The User Module Reloader, automatically re-importing modified source files + * The :guilabel:`User Module Reloader`, automatically re-importing modified source files * :doc:`variableexplorer`: @@ -73,7 +73,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Real-time rendering and rich HTML display of many common docstring formats (powered by ``Sphinx``) * :doc:`pylint`: Detects an array of style issues, bad practices, potential bugs, and other problems with your code (powered by ``pylint``) -* Profiler: Measures the performance impact of every function in a script to idetify bottlenecks and aid optimization +* :guilabel:`Profiler`: Measures the performance impact of every function in a script to idetify bottlenecks and aid optimization * :doc:`projects`: Allows for easy saving and restoring of settings, sessions and setup for working on multiple development efforts simultaneously * :doc:`fileexplorer`: Integrated filesystem viewing supporting many common operations * :doc:`findinfiles`: Find string occurrences in a file, directory, or entire project with full support for powerful regular expressions and excluded locations diff --git a/doc/projects.rst b/doc/projects.rst index a71e6f3b4..f0daa548a 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -4,24 +4,24 @@ Projects Spyder allows users to associate a given directory with a **Project**, which offers several main advantages: -* Opening, closing or switching to a Project automatically saves and restores your Editor panes and open files to exactly how you left off. +* Opening, closing or switching to a :guilabel:`Project` automatically saves and restores your Editor panes and open files to exactly how you left off. This allows you to easily switch between many different development tasks without having to manually re-create your session for each one. * Your project's root directory is automatically added to the ``PYTHONPATH``, so you can easily ``import`` and work with any modules and packages you create with zero setup. * The project path is also used to automatically set your working directory, and can be used as an automatic preset for several modules, such as the :doc:`findinfiles` search location. -* You can browse all your Project files from the :ref:`Project Explorer `, regardless of your current working directory or :doc:`fileexplorer` location. -* Projects are :ref:`integrated ` with the ``git`` version control system, allowing you to commit files and open them or your repository in the ``gitk`` GUI right from within Spyder. +* You can browse all your :guilabel:`Project` files from the :ref:`Project Explorer `, regardless of your current working directory or :doc:`fileexplorer` location. +* :guilabel:`Projects` are :ref:`integrated ` with the ``git`` version control system, allowing you to commit files and open them or your repository in the ``gitk`` GUI right from within Spyder. .. note:: - Projects are completely optional and not imposed on users. - All of Spyder' functionality (session saving, File Explorer, working directory, etc) is available without creating a project, just on a global rather than project-specific basis. + :guilabel:`Projects` are completely optional and not imposed on users. + All of Spyder' functionality (session saving, File Explorer, working directory, etc) is available without creating a :guilabel:`Project`, just on a global rather than :guilabel:`Project`-specific basis. ================== Creating a project ================== -To create a project, click the New Project entry in the Projects menu, choose whether you'd like to associate a Project with an existing directory or make a new one, and enter the project's name and path: +To create a :guilabel:`Project`, click the :guilabel:`New Project` entry in the :guilabel:`Projects` menu, choose whether you'd like to associate a :guilabel:`Project` with an existing directory or make a new one, and enter the :guilabel:`Project` 's name and path: |projectsmenu| |newprojectdialog| @@ -42,7 +42,7 @@ To create a project, click the New Project entry in the Projects menu, choose wh Using the Project Explorer ========================== -Once a Project is opened, the Project Explorer pane is shown, presenting a tree view of the current project's files and directories. +Once a :guilabel:`Project` is opened, the :guilabel:`Project Explorer` pane is shown, presenting a tree view of the current :guilabel:`Project` 's files and directories. This pane allows you to perform all the same operations as a normal Spyder :doc:`fileexplorer`. |projectexplorer| |contextmenu| @@ -69,7 +69,7 @@ You can commit or browse (in the ``gitk`` GUI) a file, directory or the entire r .. _Git: https://git-scm.com/ -To use this functionality, the project must be located in a ``git`` repository and the ``git`` and ``gitk`` commands must be on the system path. +To use this functionality, the :guilabel:`Project` must be located in a ``git`` repository and the ``git`` and ``gitk`` commands must be on the system path. For Windows systems, the `Git for Windows`_ package provides a convenient installer and the option to place common git commands on the system path without creating conflicts with Windows system tools. The second option in the dialog below is generally a safe approach. diff --git a/doc/pylint.rst b/doc/pylint.rst index 63b71700c..104f127a2 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -17,11 +17,11 @@ Spyder's static analyzer is powered by the best in class `Pylint`_ backend, whic Using the static analyzer ========================= -You can run Spyder's Static Code Analysis directly from the :doc:`editor`, or you can manually enter the Python module or package path you'd like it to check. +You can run Spyder's :guilabel:`Static Code Analysis` directly from the :doc:`editor`, or you can manually enter the Python module or package path you'd like it to check. The analyzer works with both ``.py`` (or ``.pyw``) Python scripts and whole Python packages (directories containing an :file:`__init__.py` file). To go directly to the file and line in the :doc:`editor` highlighted by a failed check, just click its name. -Start and cancel analyzing a file with the Analyze and Stop buttons respectively, and if analysis fails, click the Output button to find out why. -You click the dropdown or press the down arrow in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the History dialog from the Static Code Analysis context menu. +Start and cancel analyzing a file with the :guilabel:`Analyze` and :guilabel:`Stop` buttons respectively, and if analysis fails, click the :guilabel:`Output` button to find out why. +You click the dropdown or press the down arrow in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the :guilabel:`History` dialog from the :guilabel:`Static Code Analysis` context menu. All standard checks are run by default. You can turn certain messages off at the line, block or file/module level by adding a ``# pylinet: disable=insert, message-names, here`` comment at the respective level, or by editing the :file:`.pylintrc` configuration file in your user home directory (for more details on configuring Pylint, see the `Pylint documentation`_). diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index cf11c6356..f04fab5e2 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -15,7 +15,7 @@ The **Variable Explorer** shows the namespace contents (all global object refere Features and editors ==================== -Spyder's Variable Explorer offers built in support for editing lists, strings, dictionaries, NumPy arrays, Pandas DataFrames, and more, and can also histogram, plot, or even display some of them as an RGB image. +Spyder's :guilabel:`Variable Explorer` offers built in support for editing lists, strings, dictionaries, NumPy arrays, Pandas DataFrames, and more, and can also histogram, plot, or even display some of them as an RGB image. Several examples of this functionality follow: | @@ -71,7 +71,7 @@ Several examples of this functionality follow: Supported types =============== -The Variable Explorer has specialized editors for a range of common built-in and third-party Python objects, and can view, edit, and deeply introspect most arbitrary objects via a more general object editor. +The Variable Explorer has specialized editors for a range of common built-in and third-party Python objects, and can view, edit, and deeply introspect most arbitrary objects via a more general :guilabel:`Object explorer`. Types with specialized editing support include: * Integers From 7fe285cb98635e869b458db7e083e4cbdd48ea33 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Mon, 21 May 2018 22:39:29 -0500 Subject: [PATCH 35/44] Fix a host of minor bugs, issues and inconsistencies --- doc/debugging.rst | 4 ++-- doc/editor.rst | 6 +++--- doc/fileexplorer.rst | 2 +- doc/findinfiles.rst | 2 +- doc/historylog.rst | 2 +- doc/index.rst | 2 +- doc/installation.rst | 15 ++++++++++++--- doc/internalconsole.rst | 2 +- doc/ipythonconsole.rst | 14 +++++++------- doc/onlinehelp.rst | 2 +- doc/overview.rst | 12 ++++++------ doc/projects.rst | 4 ++-- doc/pylint.rst | 4 ++-- doc/variableexplorer.rst | 6 +++--- 14 files changed, 43 insertions(+), 34 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index 71e54411c..d0e40872a 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -28,7 +28,7 @@ Spyder offers the following debugging features integrated into the native GUI: * By selecting the respective option from the Debug menu. * Through pressing a configurable keyboard shortcut (:kbd:`F12` for normal, or :kbd:`Shift-F12` for conditional breakpoints by default). * By double-clicking to the left of the line number in an open file. - * With a ``ipdb.set_trace()`` statement in your code. + * With an ``ipdb.set_trace()`` statement in your code. * Interactively, using the ``b`` magic command in an ``ipdb`` session. .. image:: images/debugging/breakpoints_standard.png @@ -36,7 +36,7 @@ Spyder offers the following debugging features integrated into the native GUI: :width: 50% :alt: Spyder's Breakpoints panel, with a number of examples showing file, line number and an optional condition -* A :guilabel:`Breakpoints` pane, listing the file, line, and condition (if any) of every breakpoint defined (:menuselection:`Debug --> List Breakpoints`, or :kbd:`Ctrl-Shift-B` by default). +* A :guilabel:`Breakpoints` pane, listing the file, line, and condition (if any) of every breakpoint defined (:menuselection:`Debug --> List breakpoints`, or :kbd:`Ctrl-Shift-B` by default). * Full GUI control over debugger execution from the :guilabel:`Debug` menu, :guilabel:`Debug toolbar` and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. diff --git a/doc/editor.rst b/doc/editor.rst index 41df2f6c7..b162573b6 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -51,9 +51,9 @@ You can separate your scripts may be divided into as many cells as needed, or no You can separate cells by lines starting with either: -* `#%%` (standard cell separator) -* `# %%` (standard cell separator, when file has been edited with Eclipse) -* `# ` (IPython notebook cell separator) +* ``#%%`` (standard cell separator) +* ``# %%`` (standard cell separator, when file has been edited with Eclipse) +* ``# `` (IPython notebook cell separator) Providing a description to the right of the separator will give that cell its own name in the :guilabel:`Outline Explorer`. diff --git a/doc/fileexplorer.rst b/doc/fileexplorer.rst index 135a6e72e..bd4703b3c 100644 --- a/doc/fileexplorer.rst +++ b/doc/fileexplorer.rst @@ -2,7 +2,7 @@ File Explorer ############# -The **File Explorer** pane is a built-in filesystem and directory browser allowing you to view and filter files and their properties, open them with the Editor or an external tool, and perform common management tasks (varies by platform). +The **File Explorer** pane is a built-in filesystem and directory browser allowing you to view and filter files and their properties, open them with the :doc:`editor` or an external tool, and perform common management tasks (varies by platform). .. image:: images/file_explorer/file_explorer_standard.png :align: center diff --git a/doc/findinfiles.rst b/doc/findinfiles.rst index 38ef1c19f..16259019e 100644 --- a/doc/findinfiles.rst +++ b/doc/findinfiles.rst @@ -2,7 +2,7 @@ Find in Files ############# -The **Find in Files** pane allows to you perform full-text, recursive content search in a user-defined scope, with advanced features to customize your searches. +The **Find in Files** pane allows to you perform full-text, recursive content search in a user-defined scope, with advanced features to filter your results. .. image:: images/find_in_files/find_in_files_inprogress.png :alt: Spyder Find in Files panel, with search results shown per-file diff --git a/doc/historylog.rst b/doc/historylog.rst index 0a56fa9a6..2caafb0e7 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -11,7 +11,7 @@ With the **History Log** pane, you can view an automatically de-duplicated, time ===================== -Using the history log +Using the History Log ===================== Navigating the :guilabel:`History Log` is very straightforward. diff --git a/doc/index.rst b/doc/index.rst index 2d0c930ca..5e2efff10 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -12,7 +12,7 @@ Spyder: The Scientific Python Development Environment Spyder is a powerful scientific environment written in Python, for Python, and designed by and for scientists, engineers and data analysts. It features a unique combination of the advanced editing, analysis, debugging, and profiling functionality of a comprehensive development tool with the data exploration, interactive execution, deep inspection, and beautiful visualization capabilities of a scientific package. -Furthermore, Spyper offers built-in integration with many popular scientific packages, including `NumPy`_, `SciPy`_, `Pandas`_, `IPython`_, `QtConsole`_, `Matplotlib`_, `SymPy`_, and more. +Furthermore, Spyder offers built-in integration with many popular scientific packages, including `NumPy`_, `SciPy`_, `Pandas`_, `IPython`_, `QtConsole`_, `Matplotlib`_, `SymPy`_, and more. .. _NumPy: https://www.numpy.org/ .. _SciPy: https://www.scipy.org/ diff --git a/doc/installation.rst b/doc/installation.rst index d9cf88f4d..df27963ba 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -78,7 +78,11 @@ Please refer to the `Requirements`_ to see what other packages you might need. Ubuntu ------ -Using the official package manager: ``sudo apt-get install spyder``. +Using the official package manager: + +.. code-block:: bash + + sudo apt-get install spyder .. note:: @@ -88,7 +92,11 @@ Using the official package manager: ``sudo apt-get install spyder``. Debian Unstable --------------- -Using the package manager: ``sudo apt-get install spyder`` +Using the package manager: + +.. code-block:: bash + + sudo apt-get install spyder Spyder's official Debian package is available on the `Debian package repository`_. @@ -238,8 +246,9 @@ Installing a development build If you want to try the next Spyder version before it is released, you can! You may want to do this for fixing bugs in Spyder, adding new features, learning how Spyder works or just getting a taste of what the IDE can do. -For more information, please see the CONTRIBUTING.md document included with the Spyder source or on Github, and for further detail consult the `Spyder development wiki`_ . +For more information, please see the `CONTRIBUTING.md document`_ included with the Spyder source or on Github, and for further detail consult the `Spyder development wiki`_. +.. _CONTRIBUTING.md document: https://github.com/spyder-ide/spyder/blob/master/CONTRIBUTING.md .. _Spyder development wiki: https://github.com/spyder-ide/spyder/wiki In summary: diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index 75c6f236a..0efc2f2e2 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -14,7 +14,7 @@ You can use the **Internal Console** to control and debug Spyder itself, or as a Supported features ================== -The :guilabel:`Internal Console` supports code completion and calltips, just like a normal IPython Console, along with a number of GUI selection, line-wrapping, buffer, and clear/copy/paste options. +The :guilabel:`Internal Console` supports code completion and calltips, just like a normal :doc:`ipythonconsole`, along with a number of GUI selection, line-wrapping, buffer, and clear/copy/paste options. You can toggle and customize these behaviors under :guilabel:`Internal console settings` from the context menu. Additionally, you can use a number of special commands can be used to open a file in a Spyder or external editor, edit or remove variables, run scripts or system commands, get help, and more. See the :guilabel:`Help` dialog in the context menu for more details on these. diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 19df89133..3aaf210df 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -17,8 +17,8 @@ Each console is executed in a separate process, allowing you to run scripts, int Connecting to a console ======================= -Spyder can launch new IPython instances itself, through "Open an IPython console" under the :guilabel:`Consoles` menu, the :guilabel:`IPython Console` pane menu or its context menu (:kbd:`Ctrl-T` by default), to take advantage of the full suite of Spyder's features. -Each console implements a robust two-process IPython session, with a lightweight front-end interface connected to a full kernel back end. +Spyder can launch new ``IPython`` instances itself, through "Open an IPython console" under the :guilabel:`Consoles` menu, the :guilabel:`IPython Console` pane menu or its context menu (:kbd:`Ctrl-T` by default), to take advantage of the full suite of Spyder's features. +Each console implements a robust two-process ``IPython`` session, with a lightweight front-end interface connected to a full kernel back end. Additionally, you can connect to external kernels managed by QtConsole sessions or the Jupyter Notebook, through the :guilabel:`Connect to an existing kernel` dialog under the same menus, which support many of Spdyer's advanced capabilities. .. image:: images/console/console_menu.png @@ -40,7 +40,7 @@ When :guilabel:`Connect to an existing kernel` is selected, Spyder prompts for t Supported features ================== -Any **IPython Console** in Spyder, internally or externally created, supports additional features including: +Any :guilabel:`IPython Console` in Spyder, internally or externally created, supports additional features including: .. image:: images/console/console_completion.png :align: right @@ -54,11 +54,11 @@ Any **IPython Console** in Spyder, internally or externally created, supports ad Spyder-created consoles support even more advanced capabilities, such as: * The :doc:`variableexplorer`, with GUI-based editors for many built-in and third-party Python objects -* Full GUI integration with the enhanced IPython debugger, ``ipdb``, including viewing and setting normal and conditional breakpoints interactively in any file, a :guilabel:`Breakpoints` pane, and following along with execution flow in the in the :doc:`editor` (see the :doc:`debugging` documentation for more details) +* Full GUI integration with the enhanced ``IPython`` debugger, ``ipdb``, including viewing and setting normal and conditional breakpoints interactively in any file, a :guilabel:`Breakpoints` pane, and following along with execution flow in the in the :doc:`editor` (see the :doc:`debugging` documentation for more details) * The :ref:`User Module Reloader `, which can automatically re-import modified packages and files * Inline display of ``Matplotlib`` graphics, if the ``Inline`` backend is selected under :menuselection:`Preferences --> IPython console --> Graphics --> Graphics backend` -For information on the features, commands and capabilities built in to the IPython console itself, see the `IPython documentation`_. +For information on the features, commands and capabilities built into ``IPython`` itself, see the `IPython documentation`_. .. _IPython documentation: https://ipython.readthedocs.io/en/stable/overview.html @@ -75,8 +75,8 @@ If you subsequently re-import the module anytime in the same session, this cache While efficient for final production code, this behavior is often undesired when working with the Python interpreter interactively, such as when analyzing data or testing your own module. In effect, you're left with no way to update or modify any already-imported modules, aside from manually removing the relevant ``.pyc`` files, or completely restarting the console entirely. -Fortunately, in Spyder, there's an easy solution: the :guilabel:`User Module Reloader` (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing IPython shell whenever they are modified, without any of the downsides of the above workarounds. -When UMR is turned on, you can test complex applications within the same IPython interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. +Fortunately, in Spyder, there's an easy solution: the :guilabel:`User Module Reloader` (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing ``IPython`` shell whenever they are modified, without any of the downsides of the above workarounds. +When UMR is turned on, you can test complex applications within the same ``IPython`` interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. Or, if you're analyzing data step by step using your own custom libraries, you can easily add or tweak a function in the latter and see the results reflected in the former, all without the overhead of reloading the data and re-running your whole script to restore your session to the same point. UMR is enabled by default, and will do its work automatically without user intervention, although it will provide you with a red ``Reloaded modules:`` message in the console listing the files it has refreshed when it activates. If desired, you can turned it and the message on and off, and prevent specific modules from being reloaded, under :menuselection:`Preferences --> Python interpreter --> User Module Reloader (UMR)`. diff --git a/doc/onlinehelp.rst b/doc/onlinehelp.rst index 477bee86a..26b519caa 100644 --- a/doc/onlinehelp.rst +++ b/doc/onlinehelp.rst @@ -17,7 +17,7 @@ Using the Online Help Enter the name of the item you'd like documentation on in the :guilabel:`Module or package` field, or the :guilabel:`Get` field, to load its doc directly. Or, if you're not sure of the name of the object you want help on, or are looking for a specific keyword, use the :guilabel:`Search` field to get a list of results. -You can view and re-run previous searches with the drop-down menu or the down key in the :guilabel:`Module or package field`, navigate previous pages with the forward and back buttons (top left, left and right arrows), and go back to the homepage with the home button (house icon top left) or the ``Module Index`` link top right. +You can view and re-run previous searches with the drop-down menu or the :kbd:`Down Arrow` key in the :guilabel:`Module or package field`, navigate previous pages with the forward and back buttons (top left, left and right arrows), and go back to the homepage with the home button (house icon top left) or the ``Module Index`` link top right. Perform a realtime search within a page's content with the :guilabel:`Find` button (magnifying glass icon top left) or :kbd:`Ctrl-F`, navigate through matches with the Up and Down buttons, and make matching case sensitive with the :guilabel:`Aa` button. You can use the zoom in/out buttons (:guilabel:`-` and :guilabel:`+`, top right), to change the font size to suit your preferences. diff --git a/doc/overview.rst b/doc/overview.rst index 7dff05461..d8b416759 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -23,14 +23,14 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Automatically clear variables or enter debugging * :guilabel:`Outline Explorer`: Navigate cells, functions, classes, blocks, and more - * Code introspection (powered by ``rope`` and ``jedi``): + * Real-time code introspection features (powered by ``rope`` and ``jedi``): - * On-demand (TAB) and "dot" automatic code completion + * On-demand (:kbd:`Tab`) and "dot" automatic code completion * Automatic popup calltips showing function signatures * Go-to-definition for any symbol: Functions, classes, attributes, etc. (:kbd:`Ctrl`-Click or :kbd:`Ctrl-G` by default) * Occurrence highlighting: Select or double-click any word to show all other instances throughout the current document - * Real-time automatic formatters (optional): + * On-the-fly automatic formatters (optional): * Automatic insertion of closing quotes parentheses, braces and brackets * Automatic indentation after 'else', 'elif', 'finally', etc. @@ -53,7 +53,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Any number of individual consoles, each executed in a separate, isolated processes * Each console uses the full IPython kernel as a back-end with a light GUI front-end * Supports all of the powerful IPython magic commands and functionality - * Automatic code completion and calltips, and automatic link to doc:`help` + * Automatic code completion and calltips, and automatic link to :doc:`help` * Range of code run options and interactivity * :doc:`debugging` integration with enhanced ``ipdb`` debugger and the :doc:`editor` * Inline display of Matplotlib graphics (optional) @@ -73,7 +73,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Real-time rendering and rich HTML display of many common docstring formats (powered by ``Sphinx``) * :doc:`pylint`: Detects an array of style issues, bad practices, potential bugs, and other problems with your code (powered by ``pylint``) -* :guilabel:`Profiler`: Measures the performance impact of every function in a script to idetify bottlenecks and aid optimization +* :guilabel:`Profiler`: Measures the performance impact of every function in a script to identify bottlenecks and aid optimization * :doc:`projects`: Allows for easy saving and restoring of settings, sessions and setup for working on multiple development efforts simultaneously * :doc:`fileexplorer`: Integrated filesystem viewing supporting many common operations * :doc:`findinfiles`: Find string occurrences in a file, directory, or entire project with full support for powerful regular expressions and excluded locations @@ -90,7 +90,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Fully customizable keyboard shortcuts editor * Selection of a custom Python interpreter to use for consoles - * Choice of around a dozen built-in syntax coloring theme, or create your own + * Choice of 10 built-in syntax coloring theme, or create your own * Toggle automatic editor and console introspection, analysis and helper features * Options to use a variety of graphics back-ends and display preferences * Much more... diff --git a/doc/projects.rst b/doc/projects.rst index f0daa548a..b88a1d185 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -4,7 +4,7 @@ Projects Spyder allows users to associate a given directory with a **Project**, which offers several main advantages: -* Opening, closing or switching to a :guilabel:`Project` automatically saves and restores your Editor panes and open files to exactly how you left off. +* Opening, closing or switching to a :guilabel:`Project` automatically saves and restores your :doc:`editor` panes and open files to exactly how you left off. This allows you to easily switch between many different development tasks without having to manually re-create your session for each one. * Your project's root directory is automatically added to the ``PYTHONPATH``, so you can easily ``import`` and work with any modules and packages you create with zero setup. * The project path is also used to automatically set your working directory, and can be used as an automatic preset for several modules, such as the :doc:`findinfiles` search location. @@ -18,7 +18,7 @@ Spyder allows users to associate a given directory with a **Project**, which off ================== -Creating a project +Creating a Project ================== To create a :guilabel:`Project`, click the :guilabel:`New Project` entry in the :guilabel:`Projects` menu, choose whether you'd like to associate a :guilabel:`Project` with an existing directory or make a new one, and enter the :guilabel:`Project` 's name and path: diff --git a/doc/pylint.rst b/doc/pylint.rst index 104f127a2..838b795f4 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -3,7 +3,7 @@ Static Code Analysis #################### The **Static Code Analysis** module detects style issues, bad practices, potential bugs, and other quality problems in your code, all without having to actually execute it. -Spyder's static analyzer is powered by the best in class `Pylint`_ backend, which can intelligently detect an enormous and customizable range of problem signatures. +Spyder's static analyzer is powered by the best in class `Pylint`_ back-end, which can intelligently detect an enormous and customizable range of problem signatures. .. _Pylint: https://www.pylint.org/ @@ -21,7 +21,7 @@ You can run Spyder's :guilabel:`Static Code Analysis` directly from the :doc:`ed The analyzer works with both ``.py`` (or ``.pyw``) Python scripts and whole Python packages (directories containing an :file:`__init__.py` file). To go directly to the file and line in the :doc:`editor` highlighted by a failed check, just click its name. Start and cancel analyzing a file with the :guilabel:`Analyze` and :guilabel:`Stop` buttons respectively, and if analysis fails, click the :guilabel:`Output` button to find out why. -You click the dropdown or press the down arrow in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the :guilabel:`History` dialog from the :guilabel:`Static Code Analysis` context menu. +You can click the dropdown or press the :kbd:`Down Arrow` key in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the :guilabel:`History` dialog from the :guilabel:`Static Code Analysis` context menu. All standard checks are run by default. You can turn certain messages off at the line, block or file/module level by adding a ``# pylinet: disable=insert, message-names, here`` comment at the respective level, or by editing the :file:`.pylintrc` configuration file in your user home directory (for more details on configuring Pylint, see the `Pylint documentation`_). diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index f04fab5e2..eabe7a566 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -48,7 +48,7 @@ Several examples of this functionality follow: .. |contextmenu| image:: images/variable_explorer/variable_explorer_inset_contextmenu_array.png :width: 45% - :alt: Variable Explorer with a contextmenu, including plot/histogram options + :alt: Variable Explorer with a context menu, including plot/histogram options .. |histogram| image:: images/variable_explorer/variable_explorer_histogram.png :width: 50% @@ -58,7 +58,7 @@ Several examples of this functionality follow: .. image:: images/variable_explorer/variable_explorer_contextmenu_array.png :align: center - :alt: Contextmenu for an int array, with the Show image option selected + :alt: Context menu for an int array, with the Show image option selected .. image:: images/plot_window/plot_window_show_image.png :align: center @@ -78,7 +78,7 @@ Types with specialized editing support include: * Floats * Complex numbers * Strings -* ``datetime`` dates and timedeltas +* ``datetime`` dates and ``Timedelta`` s * Lists * Tuples * Dictionaries From e2654642719c8ede77c864d47da3bb0067912426 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Tue, 22 May 2018 21:21:54 -0500 Subject: [PATCH 36/44] Add & reorganize description of how to run static analyzer --- doc/pylint.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/pylint.rst b/doc/pylint.rst index 838b795f4..0eb944c38 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -17,10 +17,12 @@ Spyder's static analyzer is powered by the best in class `Pylint`_ back-end, whi Using the static analyzer ========================= -You can run Spyder's :guilabel:`Static Code Analysis` directly from the :doc:`editor`, or you can manually enter the Python module or package path you'd like it to check. +You can select the desired file to analyze directly in the :doc:`editor` by clicking anywhere within it, or you can manually enter the Python module or package path you'd like it to check in the path entry textbox in the :guilabel:`Static Code Analysis` pane. The analyzer works with both ``.py`` (or ``.pyw``) Python scripts and whole Python packages (directories containing an :file:`__init__.py` file). +Then, to run it, select :menuselection:`Source --> Run static code analysis` from the menubar, click the :guilabel:`Analyze` button in the pane, or press the configurable static analysis shortcut (:kbd:`F8` by default). +Cancel analyzing a file with the :guilabel:`Stop` button, and if analysis fails, click the :guilabel:`Output` button to find out why. + To go directly to the file and line in the :doc:`editor` highlighted by a failed check, just click its name. -Start and cancel analyzing a file with the :guilabel:`Analyze` and :guilabel:`Stop` buttons respectively, and if analysis fails, click the :guilabel:`Output` button to find out why. You can click the dropdown or press the :kbd:`Down Arrow` key in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the :guilabel:`History` dialog from the :guilabel:`Static Code Analysis` context menu. All standard checks are run by default. You can turn certain messages off at the line, block or file/module level by adding a ``# pylinet: disable=insert, message-names, here`` comment at the respective level, or by editing the :file:`.pylintrc` configuration file in your user home directory (for more details on configuring Pylint, see the `Pylint documentation`_). From 0f4beb48c67da1d768018ffbd9d1845adb612e3e Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Tue, 22 May 2018 21:46:39 -0500 Subject: [PATCH 37/44] Make image formatting and markup consistant and tweak menuselections --- doc/debugging.rst | 2 +- doc/editor.rst | 7 ++++--- doc/fileexplorer.rst | 1 - doc/projects.rst | 16 ++++++++++------ doc/pylint.rst | 2 +- doc/variableexplorer.rst | 8 +++++--- 6 files changed, 21 insertions(+), 15 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index d0e40872a..aae77e764 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -36,7 +36,7 @@ Spyder offers the following debugging features integrated into the native GUI: :width: 50% :alt: Spyder's Breakpoints panel, with a number of examples showing file, line number and an optional condition -* A :guilabel:`Breakpoints` pane, listing the file, line, and condition (if any) of every breakpoint defined (:menuselection:`Debug --> List breakpoints`, or :kbd:`Ctrl-Shift-B` by default). +* A :guilabel:`Breakpoints` pane, listing the file, line, and condition (if any) of every breakpoint defined (:menuselection:`&Debug --> List breakpoints`, or :kbd:`Ctrl-Shift-B` by default). * Full GUI control over debugger execution from the :guilabel:`Debug` menu, :guilabel:`Debug toolbar` and via configurable keyboard shortcuts, along with the standard ``ipdb`` console commands. diff --git a/doc/editor.rst b/doc/editor.rst index b162573b6..bfd3664e3 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -15,12 +15,14 @@ The Editor's key features include syntax highlighting (``pygments``); real-time |outline| |split| -.. |outline| image:: images/editor/outline_standard.png +.. |outline| + image:: images/editor/outline_standard.png :width: 209px :alt: Spyder outline panel, showing the functions/classes/methods in a file -.. |split| image:: images/editor/editor_split_vertical.png +.. |split| + image:: images/editor/editor_split_vertical.png :width: 422px :alt: A Spyder editor window, split vertically into two independent panes @@ -29,7 +31,6 @@ The Editor's key features include syntax highlighting (``pygments``); real-time Real-time code and style analysis with ``pyflakes`` and ``pycodestyle``: .. image:: images/editor/editor_inset_code_analysis.png - :align: center :alt: A snippit of code in the Spyder Editor, showing code style warnings | diff --git a/doc/fileexplorer.rst b/doc/fileexplorer.rst index bd4703b3c..8a34c0857 100644 --- a/doc/fileexplorer.rst +++ b/doc/fileexplorer.rst @@ -5,7 +5,6 @@ File Explorer The **File Explorer** pane is a built-in filesystem and directory browser allowing you to view and filter files and their properties, open them with the :doc:`editor` or an external tool, and perform common management tasks (varies by platform). .. image:: images/file_explorer/file_explorer_standard.png - :align: center :alt: Spyder File Explorer panel, showing a tree view of files and metadata | diff --git a/doc/projects.rst b/doc/projects.rst index b88a1d185..12b0a9641 100644 --- a/doc/projects.rst +++ b/doc/projects.rst @@ -25,11 +25,13 @@ To create a :guilabel:`Project`, click the :guilabel:`New Project` entry in the |projectsmenu| |newprojectdialog| -.. |projectsmenu| image:: images/menu/menu_projects.png +.. |projectsmenu| + image:: images/menu/menu_projects.png :width: 37% :alt: Closeup of Spyder's Projects menu, containing project-related commands -.. |newprojectdialog| image:: images/dialog/dialog_new_project.png +.. |newprojectdialog| + image:: images/dialog/dialog_new_project.png :width: 62% :alt: New project dialog, with options to set the name, type and location @@ -45,13 +47,15 @@ Using the Project Explorer Once a :guilabel:`Project` is opened, the :guilabel:`Project Explorer` pane is shown, presenting a tree view of the current :guilabel:`Project` 's files and directories. This pane allows you to perform all the same operations as a normal Spyder :doc:`fileexplorer`. -|projectexplorer| |contextmenu| +|projectexplorer| |projectcontextmenu| -.. |projectexplorer| image:: images/projects/project_explorer_standard.png - :width: 30% +.. |projectexplorer| + image:: images/projects/project_explorer_standard.png + :width: 40% :alt: Spyder Project Explorer, displaying a directory tree of project files -.. |contextmenu| image:: images/projects/project_explorer_inset_contextmenu.png +.. |projectcontextmenu| + image:: images/projects/project_explorer_inset_contextmenu.png :width: 50% :alt: Inset of the context-menu for a directory in project explorer diff --git a/doc/pylint.rst b/doc/pylint.rst index 0eb944c38..ee55ab05b 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -19,7 +19,7 @@ Using the static analyzer You can select the desired file to analyze directly in the :doc:`editor` by clicking anywhere within it, or you can manually enter the Python module or package path you'd like it to check in the path entry textbox in the :guilabel:`Static Code Analysis` pane. The analyzer works with both ``.py`` (or ``.pyw``) Python scripts and whole Python packages (directories containing an :file:`__init__.py` file). -Then, to run it, select :menuselection:`Source --> Run static code analysis` from the menubar, click the :guilabel:`Analyze` button in the pane, or press the configurable static analysis shortcut (:kbd:`F8` by default). +Then, to run it, select :menuselection:`Sour&ce --> Run static code analysis` from the menubar, click the :guilabel:`Analyze` button in the pane, or press the configurable static analysis shortcut (:kbd:`F8` by default). Cancel analyzing a file with the :guilabel:`Stop` button, and if analysis fails, click the :guilabel:`Output` button to find out why. To go directly to the file and line in the :doc:`editor` highlighted by a failed check, just click its name. diff --git a/doc/variableexplorer.rst b/doc/variableexplorer.rst index eabe7a566..248f4fe70 100644 --- a/doc/variableexplorer.rst +++ b/doc/variableexplorer.rst @@ -44,13 +44,15 @@ Several examples of this functionality follow: | -|contextmenu| |histogram| +|varexpcontextmenu| |histogram| -.. |contextmenu| image:: images/variable_explorer/variable_explorer_inset_contextmenu_array.png +.. |varexpcontextmenu| + image:: images/variable_explorer/variable_explorer_inset_contextmenu_array.png :width: 45% :alt: Variable Explorer with a context menu, including plot/histogram options -.. |histogram| image:: images/variable_explorer/variable_explorer_histogram.png +.. |histogram| + image:: images/variable_explorer/variable_explorer_histogram.png :width: 50% :alt: Plot window showing a histogram, generated via the previous options From 1c7de4a192b1138ea9fc1762c1e4db68a308f389 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Wed, 23 May 2018 10:00:48 -0500 Subject: [PATCH 38/44] Fix minor typos and corrections from reviewer comments --- doc/debugging.rst | 4 ++-- doc/editor.rst | 2 +- doc/historylog.rst | 2 +- doc/internalconsole.rst | 2 +- doc/ipythonconsole.rst | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/debugging.rst b/doc/debugging.rst index aae77e764..898dc1380 100644 --- a/doc/debugging.rst +++ b/doc/debugging.rst @@ -28,8 +28,8 @@ Spyder offers the following debugging features integrated into the native GUI: * By selecting the respective option from the Debug menu. * Through pressing a configurable keyboard shortcut (:kbd:`F12` for normal, or :kbd:`Shift-F12` for conditional breakpoints by default). * By double-clicking to the left of the line number in an open file. - * With an ``ipdb.set_trace()`` statement in your code. - * Interactively, using the ``b`` magic command in an ``ipdb`` session. + * With an ``ipdb.set_trace()`` statement in your code (after ``import`` ing ``pdb``). + * Interactively, using the ``b`` command in an ``ipdb`` session. .. image:: images/debugging/breakpoints_standard.png :align: right diff --git a/doc/editor.rst b/doc/editor.rst index bfd3664e3..d161c2594 100644 --- a/doc/editor.rst +++ b/doc/editor.rst @@ -42,7 +42,7 @@ Defining code cells A "code cell" in Spyder is a block of lines, typically in a script, that can be easily executed all at once in the current doc:`ipythonconsole`. This is much like a "cell" in MATLAB (except without any need to enable a "cell mode", since in Spyder, cells are detected automatically). -You can separate your scripts may be divided into as many cells as needed, or none at all—the choice is yours. +You can divide your scripts into as many cells as needed, or none at all—the choice is yours. .. image:: images/editor/editor_standard.png :align: center diff --git a/doc/historylog.rst b/doc/historylog.rst index 2caafb0e7..c194da3a5 100644 --- a/doc/historylog.rst +++ b/doc/historylog.rst @@ -20,7 +20,7 @@ Statements can be selected and copied from the context menu or with the normal s Just like in the editor, highlighting a word or phrase displays all other occurrences, and full syntax highlighting is also supported. Finally, the top-right options menu (:guilabel:`Gear` icon) allows you to toggle soft-wrapping of long lines (:guilabel:`Wrap lines`), and set the number of commands the :guilabel:`History Log` should remember (:guilabel:`History`). -The :guilabel:`History Log` is stored in the :file:`.spyder-py3` directory in your user home folder (by default, :file:`C:/Users/{username}` on Windows, :file:`/Users/{username}` for macOS, and typically :file:`/home/{username}` on GNU/Linux). +The :guilabel:`History Log` is stored in the :file:`.spyder-py3` (Python 3) or :file:`spyder` (Python 2) directory in your user home folder (by default, :file:`C:/Users/{username}` on Windows, :file:`/Users/{username}` for macOS, and typically :file:`/home/{username}` on GNU/Linux). You might need to show invisible files in order to see it on a non-Windows operating system. diff --git a/doc/internalconsole.rst b/doc/internalconsole.rst index 0efc2f2e2..8658605fe 100644 --- a/doc/internalconsole.rst +++ b/doc/internalconsole.rst @@ -16,7 +16,7 @@ Supported features The :guilabel:`Internal Console` supports code completion and calltips, just like a normal :doc:`ipythonconsole`, along with a number of GUI selection, line-wrapping, buffer, and clear/copy/paste options. You can toggle and customize these behaviors under :guilabel:`Internal console settings` from the context menu. -Additionally, you can use a number of special commands can be used to open a file in a Spyder or external editor, edit or remove variables, run scripts or system commands, get help, and more. +Additionally, you can use a number of special commands to open a file in a Spyder or external editor, edit or remove variables, run scripts or system commands, get help, and more. See the :guilabel:`Help` dialog in the context menu for more details on these. .. image:: images/internal_console/internal_console_contextmenu_settings.png diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 3aaf210df..d6988589f 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -19,7 +19,7 @@ Connecting to a console Spyder can launch new ``IPython`` instances itself, through "Open an IPython console" under the :guilabel:`Consoles` menu, the :guilabel:`IPython Console` pane menu or its context menu (:kbd:`Ctrl-T` by default), to take advantage of the full suite of Spyder's features. Each console implements a robust two-process ``IPython`` session, with a lightweight front-end interface connected to a full kernel back end. -Additionally, you can connect to external kernels managed by QtConsole sessions or the Jupyter Notebook, through the :guilabel:`Connect to an existing kernel` dialog under the same menus, which support many of Spdyer's advanced capabilities. +Additionally, you can connect to external kernels managed by QtConsole sessions or the Jupyter Notebook, through the :guilabel:`Connect to an existing kernel` dialog under the same menus, which support many of Spyder's advanced capabilities. .. image:: images/console/console_menu.png :align: center From b398025a6dec506e5394b431ecc179ef51b27bee Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Wed, 23 May 2018 14:12:06 -0500 Subject: [PATCH 39/44] Fix two textual errors in ipythonconsole --- doc/ipythonconsole.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index d6988589f..9c610171a 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -72,8 +72,8 @@ Using UMR to reload changed modules When working with scripts and modules in an interactive session, Python only loads a module from its source file once, the first time it is ``import``ed. During this first ``import``, the bytecode (``.pyc`` file) is generated if necessary and the imported module object is cached in ``sys.modules``. If you subsequently re-import the module anytime in the same session, this cached code object will be used even if its source code (``.py{w}`` file) has changed in the meantime. -While efficient for final production code, this behavior is often undesired when working with the Python interpreter interactively, such as when analyzing data or testing your own module. -In effect, you're left with no way to update or modify any already-imported modules, aside from manually removing the relevant ``.pyc`` files, or completely restarting the console entirely. +While efficient for final production code, this behavior is often undesired when working interactively, such as when analyzing data or testing your own modules. +In effect, you're left with no way to update or modify any already-imported modules, aside from manually removing the relevant ``.pyc`` files, or restarting the console entirely. Fortunately, in Spyder, there's an easy solution: the :guilabel:`User Module Reloader` (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing ``IPython`` shell whenever they are modified, without any of the downsides of the above workarounds. When UMR is turned on, you can test complex applications within the same ``IPython`` interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. From a96858666043521161dab70d24e8fd74d9a43232 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Sun, 27 May 2018 21:23:46 -0500 Subject: [PATCH 40/44] Fix #46 with updated Debian link to Py3 and generic unstable --- doc/installation.rst | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/doc/installation.rst b/doc/installation.rst index df27963ba..5d53458ed 100644 --- a/doc/installation.rst +++ b/doc/installation.rst @@ -96,11 +96,11 @@ Using the package manager: .. code-block:: bash - sudo apt-get install spyder + sudo apt-get install spyder3 Spyder's official Debian package is available on the `Debian package repository`_. -.. _Debian package repository: https://packages.debian.org/en/sid/spyder +.. _Debian package repository: https://packages.debian.org/unstable/spyder3 Other Distributions From 5ac4aaa520cde6f132f94b6bc16fe1de3fc2ec80 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Tue, 29 May 2018 13:00:56 -0500 Subject: [PATCH 41/44] Clarify UMR section and explain distinction of UMR vs. autoreload --- doc/ipythonconsole.rst | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/doc/ipythonconsole.rst b/doc/ipythonconsole.rst index 9c610171a..4b635255c 100644 --- a/doc/ipythonconsole.rst +++ b/doc/ipythonconsole.rst @@ -71,12 +71,13 @@ Using UMR to reload changed modules When working with scripts and modules in an interactive session, Python only loads a module from its source file once, the first time it is ``import``ed. During this first ``import``, the bytecode (``.pyc`` file) is generated if necessary and the imported module object is cached in ``sys.modules``. -If you subsequently re-import the module anytime in the same session, this cached code object will be used even if its source code (``.py{w}`` file) has changed in the meantime. +If you subsequently re-import the module anytime in the same session without Spyder, this cached code object will be used even if its source code (``.py{w}`` file) has changed in the meantime. While efficient for final production code, this behavior is often undesired when working interactively, such as when analyzing data or testing your own modules. In effect, you're left with no way to update or modify any already-imported modules, aside from manually removing the relevant ``.pyc`` files, or restarting the console entirely. -Fortunately, in Spyder, there's an easy solution: the :guilabel:`User Module Reloader` (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing ``IPython`` shell whenever they are modified, without any of the downsides of the above workarounds. -When UMR is turned on, you can test complex applications within the same ``IPython`` interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. +Fortunately, in Spyder, there's an easy solution: the :guilabel:`User Module Reloader` (UMR), a Spyder-exclusive feature that, when enabled, automatically reloads modules right in the existing ``IPython`` shell whenever they are modified and re-imported, without any of the downsides of the above workarounds. +Even better, Spyder also loads the ``%autoreload`` magic by default into any kernels it starts, allowing changes in already imported modules to be automatically picked up the as soon as the modified file is saved, without any additional user action. +With UMR enabled, you can test complex applications within the same ``IPython`` interpreter without having to restart it every time you make a change, saving large amounts of manual tedium and long restart times. Or, if you're analyzing data step by step using your own custom libraries, you can easily add or tweak a function in the latter and see the results reflected in the former, all without the overhead of reloading the data and re-running your whole script to restore your session to the same point. UMR is enabled by default, and will do its work automatically without user intervention, although it will provide you with a red ``Reloaded modules:`` message in the console listing the files it has refreshed when it activates. If desired, you can turned it and the message on and off, and prevent specific modules from being reloaded, under :menuselection:`Preferences --> Python interpreter --> User Module Reloader (UMR)`. From 2d9a59ed675029b83f87dd47de4fb7cb26ff0e5f Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Tue, 29 May 2018 13:05:00 -0500 Subject: [PATCH 42/44] Fix silly typo in options and add new project option --- doc/options.rst | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/options.rst b/doc/options.rst index 9dc004ed9..a0a52aaad 100644 --- a/doc/options.rst +++ b/doc/options.rst @@ -2,7 +2,7 @@ Command Line Options #################### -Spyder's command line options including the following: +Spyder's command line options include the following: Options: -h, --help Show this help message and exit @@ -18,3 +18,5 @@ Options: --profile Profile mode (internal test, not related to Python profiling) --window-title=WINDOW_TITLE String to show in the window title, to identify the Spyder instance + -p OPEN_PROJECT, --project=OPEN_PROJECT + Path that contains an Spyder project to open on startup From a88931306635f1405f81eda793d9fef364c48d99 Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Tue, 29 May 2018 13:24:05 -0500 Subject: [PATCH 43/44] Fix several minor typos/inaccuracies in Overview --- doc/overview.rst | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/doc/overview.rst b/doc/overview.rst index d8b416759..ac030aa28 100644 --- a/doc/overview.rst +++ b/doc/overview.rst @@ -12,7 +12,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * :doc:`editor`: - * Customizable syntax highlighting themes (Python, C/C++, Fortran) + * Customizable syntax highlighting themes * :doc:`debugging` breakpoints and conditional breakpoints (through ``ipdb`` integration) * Interactive execution: Run line/selection, run cell, run file, re-run and debug * Run configuration settings: @@ -36,7 +36,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Automatic indentation after 'else', 'elif', 'finally', etc. * Smart auto-indentation based on code structure * Automatic insertion of colons after for, if, def, etc. - * Automatically fix mixed indentation, EoL characters and trailing spaces + * Automatically fix mixed indentation, EOL characters and trailing spaces * Real-time code analysis: * Errors/warnings/problems (powered by ``pyflakes``) @@ -51,7 +51,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * :doc:`ipythonconsole`: * Any number of individual consoles, each executed in a separate, isolated processes - * Each console uses the full IPython kernel as a back-end with a light GUI front-end + * Each console uses the full IPython kernel as a backend with a light GUI frontend * Supports all of the powerful IPython magic commands and functionality * Automatic code completion and calltips, and automatic link to :doc:`help` * Range of code run options and interactivity @@ -61,7 +61,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * :doc:`variableexplorer`: - * Lists all global variables, functions, classes, and their content + * Can list all global variables, functions, classes, and other objects, or filter them by several criteria * GUI-based editors for numerous data types (numeric, strings, collections, NumPy arrays, Pandas DataFrames, dates/times, images, and more) * Import/export data or an entire session from/to many formats (text, csv, NumPy files, MATLAB files) * Interactive data visualization options (plot, histogram, image...) using Matplotlib @@ -70,7 +70,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Provides documentation or source code for any Python object (class, function, module...) * Can be triggered manually, on demand (:kbd:`Ctrl-I` by default) or automatically on typing a left parenthesis after a function name (optional) - * Real-time rendering and rich HTML display of many common docstring formats (powered by ``Sphinx``) + * Real-time rendering and rich HTML display of the popular ``numpydoc`` docstring format (powered by ``Sphinx``) * :doc:`pylint`: Detects an array of style issues, bad practices, potential bugs, and other problems with your code (powered by ``pylint``) * :guilabel:`Profiler`: Measures the performance impact of every function in a script to identify bottlenecks and aid optimization @@ -92,7 +92,7 @@ Spyder, the Scientific Python Development Environment, includes the following ke * Selection of a custom Python interpreter to use for consoles * Choice of 10 built-in syntax coloring theme, or create your own * Toggle automatic editor and console introspection, analysis and helper features - * Options to use a variety of graphics back-ends and display preferences + * Options to use a variety of graphics backends and display preferences * Much more... * General Features: From b6507cb1731d2641c2e3817fdb934523cf86b66e Mon Sep 17 00:00:00 2001 From: "C.A.M. Gerlach" Date: Tue, 29 May 2018 13:59:12 -0500 Subject: [PATCH 44/44] Rewrite pylint disable description and fix 'module' -> 'pane' --- doc/pylint.rst | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/doc/pylint.rst b/doc/pylint.rst index ee55ab05b..4bb31dfa0 100644 --- a/doc/pylint.rst +++ b/doc/pylint.rst @@ -2,7 +2,7 @@ Static Code Analysis #################### -The **Static Code Analysis** module detects style issues, bad practices, potential bugs, and other quality problems in your code, all without having to actually execute it. +The **Static Code Analysis** pane detects style issues, bad practices, potential bugs, and other quality problems in your code, all without having to actually execute it. Spyder's static analyzer is powered by the best in class `Pylint`_ back-end, which can intelligently detect an enormous and customizable range of problem signatures. .. _Pylint: https://www.pylint.org/ @@ -25,7 +25,9 @@ Cancel analyzing a file with the :guilabel:`Stop` button, and if analysis fails, To go directly to the file and line in the :doc:`editor` highlighted by a failed check, just click its name. You can click the dropdown or press the :kbd:`Down Arrow` key in the filename field to view results of previous analyses; the number of recent runs Spyder should remember can be customized in the :guilabel:`History` dialog from the :guilabel:`Static Code Analysis` context menu. All standard checks are run by default. -You can turn certain messages off at the line, block or file/module level by adding a ``# pylinet: disable=insert, message-names, here`` comment at the respective level, or by editing the :file:`.pylintrc` configuration file in your user home directory (for more details on configuring Pylint, see the `Pylint documentation`_). +You can turn certain messages off at the line, block or file/module level by adding a ``# pylint: disable=`` comment at the respective level, where the ``<...>`` portion should be replaced with a comma-separated list (or single value) without the ``<``/``>`` of Pylint message names (*e.g.* ``multiple-statements``, or ``fixme, line-too-long``; you can also use error codes like ``C0321`` although names are preferred for clarity). +Or, you can globally suppress certain messages by editing the :file:`.pylintrc` configuration file in your user home directory. +For more details on configuring Pylint, see the `Pylint documentation`_. .. _Pylint documentation: https://pylint.readthedocs.io/en/latest/faq.html#message-control