Skip to content

Commit

Permalink
Merge with 3.x to deconflict changes with #7169
Browse files Browse the repository at this point in the history
  • Loading branch information
CAM-Gerlach committed May 22, 2018
2 parents 4e13957 + a4b5640 commit ceb6a80
Show file tree
Hide file tree
Showing 88 changed files with 371 additions and 1,521 deletions.
33 changes: 24 additions & 9 deletions .github/ISSUE_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,24 @@
<!--- **PLEASE READ:** Before submitting here, please carefully consult our *Troubleshooting Guide* at https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ and search the issues page for your error/problem, as most posted bugs are duplicates or easy fixes.
<!--- **PLEASE READ:** When submitting here, please ensure you've completed the following checklist and checked the boxes to confirm. Issue reports without it may be closed. Thanks! --->

### Issue Report Checklist

* [ ] Searched the [issues page](https://github.com/spyder-ide/spyder/issues?q=is%3Aissue) for similar reports
* [ ] Read the relevant sections of the [Spyder Troubleshooting Guide](https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ) and followed its advice
* [ ] Reproduced the issue after updating with ``conda update spyder`` (or ``pip``, if not using Anaconda)
* [ ] Could not reproduce inside ``jupyter qtconsole`` (if console-related)
* [ ] Tried basic troubleshooting (if a bug/error)
* [ ] Restarted Spyder
* [ ] Reset preferences with ``spyder --reset``
* [ ] Reinstalled the latest version of [Anaconda](https://www.anaconda.com/download/)
* [ ] Tried the other applicable steps from the Troubleshooting Guide
* [ ] Completed the **Problem Description**, **Steps to Reproduce** and **Version** sections below

If you don't find anything, please provide a detailed step-by-step description (in English) of the problem and what led up to it below. Issue reports without a clear way to reproduce them will be closed. Thanks! --->

## Problem Description



### What steps will reproduce the problem?
### What steps reproduce the problem?

1.
2.
Expand All @@ -25,13 +37,16 @@ PASTE TRACEBACK HERE
```

## Package Versions
## Versions
<!--- You can get this information from Help > About Spyder...
or (if Spyder won't launch) the "conda list" command
from the Anaconda Prompt/Terminal/command line. --->

* Spyder:
* Python:
* Qt:
* PyQt:
* Operating System:
* Spyder version:
* Python version:
* Qt version:
* PyQt version:
* Operating System name/version:

### Dependencies
<!--- Please go to the menu entry Help > Dependencies,
Expand Down
43 changes: 31 additions & 12 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,34 @@
Before submitting your pull request be sure that:
<!--- Before submitting your pull request --->
<!--- please complete as much as possible of the following checklist: --->

1. You haven't touched any file in the `spyder/defaults` directory.
- There is *absolutely* no need to touch those files.
- If you want to add new configuration options, please go to
`spyder/config/main.py`.
2. You haven't eliminated unnecessary blank lines or spaces during your work.
That makes our reviewing work harder and it could introduce unnecessary
conflicts with other pull requests.
3. You haven't added new icons to Spyder. Please leave decisions about what
icons to use to us :)
### Pull Request Checklist

----
* [ ] Read and followed this repo's [Contributing Guidelines](https://github.com/spyder-ide/spyder/blob/master/CONTRIBUTING.md)
* [ ] Based your PR on the latest version of the correct branch (master or 3.x)
* [ ] Followed [PEP8](https://www.python.org/dev/peps/pep-0008/) for code style
* [ ] Ensured your pull request hasn't eliminated unrelated blank lines/spaces,
modified the ``spyder/defaults`` directory, or added new icons/assets
* [ ] Wrote at least one-line docstrings for any new functions
* [ ] Added at least one unit test covering the changes, if at all possible
* [ ] Described your changes and the motivation for them below
* [ ] Noted what issue(s) this pull request resolves, creating one if needed
* [ ] Included a screenshot, if this PR makes any visible changes to the UI

*Note*: You can safely remove this text before submitting your work.

## Description of Changes

<!--- Describe what you've changed and why. --->




### Issue(s) Resolved

<!--- Pull requests should typically resolve one, preferably only one --->
<!--- outstanding issue; create a new one if no relevant issue exists. --->
<!--- List the issue(s) below, in the form "Fixes #1234" . One per line.--->

Fixes #


<!--- Thanks for your help making Spyder better for everyone! --->
14 changes: 5 additions & 9 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,16 @@ sudo: false
matrix:
include:
- python: "2.7"
env: USE_PYQT=pyqt4
os: linux
- python: "2.7"
env: USE_PYQT=pyqt5
env: USE_PYQT=pyqt5 USE_CONDA=yes
os: linux
- python: "3.5"
env: USE_PYQT=pyqt4
env: USE_PYQT=pyqt5 USE_CONDA=yes
os: linux
# This slot runs our tests only with pip packages
- python: "3.5"
env: USE_PYQT=pyqt5
- python: "3.6"
env: USE_PYQT=pyqt5 USE_CONDA=yes
os: linux
- python: "3.6"
env: USE_PYQT=pyqt5
env: USE_PYQT=pyqt5 USE_CONDA=no
os: linux

before_install:
Expand Down
13 changes: 9 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,8 @@ the directory where your git clone is stored and run:
$ pip install -r requirements/requirements.txt
```

If you are using `pip` and Python 2, you also need to install a Qt binding
package (PyQt4 or PyQt5, with the latter strongly recommended).
This can be achieved by running:
If you are using `pip` and Python 3, you also need to install a Qt binding
package (PyQt5). This can be achieved by running:

```bash
$ pip install pyqt5
Expand Down Expand Up @@ -184,19 +183,25 @@ To run the Spyder test suite, please use (from the `spyder` root directory):

## More information

[Main Website](https://www.spyder-ide.org/)

[Download Spyder (with Anaconda)](https://www.anaconda.com/download/)

[Online Documentation](https://docs.spyder-ide.org/)

[Spyder Github](https://github.com/spyder-ide/spyder)

[Troubleshooting Guide and FAQ](
https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ')
https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ)

[Development Wiki](https://github.com/spyder-ide/spyder/wiki/Dev:-Index)

[Gitter Chatroom](https://gitter.im/spyder-ide/public)

[Google Group](http://groups.google.com/group/spyderlib)

[@Spyder_IDE on Twitter](https://twitter.com/spyder_ide)

[@SpyderIDE on Facebook](https://www.facebook.com/SpyderIDE/)

[Support Spyder on OpenCollective](https://opencollective.com/spyder/)
1 change: 0 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ recursive-include spyder *.pot *.po *.svg *.png *.css *.qss *.c *.cpp *.html *.j
recursive-include spyder_breakpoints *.pot *.po *.svg *.png
recursive-include spyder_profiler *.pot *.po *.svg *.png
recursive-include spyder_pylint *.pot *.po *.svg *.png
recursive-include doc *.py *.rst *.png *.ico *.
include spyder/fonts/spyder.ttf
include spyder/fonts/spyder-charmap.json
include scripts/*
Expand Down
61 changes: 37 additions & 24 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@

[![license](https://img.shields.io/pypi/l/spyder.svg)](./LICENSE)
[![pypi version](https://img.shields.io/pypi/v/spyder.svg)](https://pypi.python.org/pypi/spyder)
[![conda version](https://img.shields.io/conda/vn/conda-forge/spyder.svg)](https://www.anaconda.com/download/)
[![download count](https://img.shields.io/conda/dn/conda-forge/spyder.svg)](https://www.anaconda.com/download/)
[![Join the chat at https://gitter.im/spyder-ide/public](https://badges.gitter.im/spyder-ide/spyder.svg)](https://gitter.im/spyder-ide/public)
[![OpenCollective Backers](https://opencollective.com/spyder/backers/badge.svg?color=blue)](#backers)
[![OpenCollective Sponsors](https://opencollective.com/spyder/sponsors/badge.svg?color=blue)](#sponsors)
Expand All @@ -15,15 +17,32 @@
[![CircleCI](https://circleci.com/gh/spyder-ide/spyder.svg?style=shield)](https://circleci.com/gh/spyder-ide/spyder)
[![Coverage Status](https://coveralls.io/repos/github/spyder-ide/spyder/badge.svg?branch=master)](https://coveralls.io/github/spyder-ide/spyder?branch=master)
[![codecov](https://codecov.io/gh/spyder-ide/spyder/branch/master/graph/badge.svg)](https://codecov.io/gh/spyder-ide/spyder)
[![PyPI status](https://img.shields.io/pypi/status/spyder.svg)](https://github.com/spyder-ide/spyder)


![Screenshot of Spyder's main window](./img_src/screenshot.png)


## Overview

Spyder is a Python development environment with many features for research,
data analysis, and scientific package creation:
Spyder is a powerful scientific environment written in Python, for Python,
and designed by and for scientists, engineers and data analysts. It offers 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.

Beyond its many built-in features, its abilities can be extended even further
via its plugin system and API. Furthermore, 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.

For more general information about Spyder and to stay up to date on the
latest Spyder news and information, please check out [our new website](
https://www.spyder-ide.org/).


## Core components

* **Editor**

Expand All @@ -34,14 +53,15 @@ data analysis, and scientific package creation:

* **Interactive console**

Multiple IPython consoles with workspace and debugging support to
instantly evaluate the code written in the Editor.
Spyder consoles also come with full Matplotlib integration.
Harness the power of as many IPython consoles as you like with full
workspace and debugging support, all within the flexibility of a full
GUI interface. Instantly run your code by line, cell, or file,
and render plots right inline with the output or in interactive windows.

* **Documentation viewer**

Render documentation in real-time with Sphinx for any class or function,
whether external or user-created from either the Editor or a Console.
whether external or user-created, from either the Editor or a Console.

* **Variable explorer**

Expand All @@ -53,22 +73,9 @@ data analysis, and scientific package creation:
* **Development tools**

Examine your code with the static analyzer, trace its execution with the
interactive debugger, measure its performance with the profiler,
and keep things organized with project support and a builtin file explorer.

* **Find in files**

Search for queries across multiple files in your project,
with full support for regular expressions.

* **History log**

Browse an automatically de-duplicated listing of every command you run
on any Spyder console.

Spyder may also be used as a PyQt5 extension library (module `spyder`).
For example, the Python interactive shell widget used in
Spyder may be embedded in your own PyQt5 application.
interactive debugger, and unleash its performance with the profiler.
Keep things organized with project support and a builtin file explorer, and
use find in files to search across entire projects with full regex support.


## Documentation
Expand Down Expand Up @@ -163,7 +170,7 @@ a Python version greater than 2.7 or 3.4 (Python <=3.3 is no longer supported).
### Runtime dependencies

* **Python** 2.7 or 3.4+: The core language Spyder is written in and for.
* **PyQt5** 5.2+: Python bindings for Qt, used for Spyder's GUI.
* **PyQt5** 5.5+: Python bindings for Qt, used for Spyder's GUI.
* **qtconsole** 4.2.0+: Enhanced Python interpreter.
* **Rope** 0.9.4+ and **Jedi** 0.9.0+: Editor code completion, calltips
and go-to-definition.
Expand Down Expand Up @@ -195,19 +202,25 @@ a Python version greater than 2.7 or 3.4 (Python <=3.3 is no longer supported).

## More information

[Main Website](https://www.spyder-ide.org/)

[Download Spyder (with Anaconda)](https://www.anaconda.com/download/)

[Online Documentation](https://docs.spyder-ide.org/)

[Spyder Github](https://github.com/spyder-ide/spyder)

[Troubleshooting Guide and FAQ](
https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ')
https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ)

[Development Wiki](https://github.com/spyder-ide/spyder/wiki/Dev:-Index)

[Gitter Chatroom](https://gitter.im/spyder-ide/public)

[Google Group](http://groups.google.com/group/spyderlib)

[@Spyder_IDE on Twitter](https://twitter.com/spyder_ide)

[@SpyderIDE on Facebook](https://www.facebook.com/SpyderIDE/)

[Support Spyder on OpenCollective](https://opencollective.com/spyder/)
2 changes: 0 additions & 2 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,6 @@ install:
- "conda install jupyter_client=5.2.2"
# Fix problems with latest pyqt
- "conda install pyqt=5.6*"
# Fix test issues with the latest jedi 0.12 for now
- "conda install jedi=0.11.1"

build: false

Expand Down
44 changes: 24 additions & 20 deletions bootstrap.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@
"""

# pylint: disable=C0103
# pylint: disable=C0412
# pylint: disable=C0413

import time
time_start = time.time()
Expand All @@ -20,6 +22,7 @@
import os.path as osp
import sys
import optparse
import shutil


# --- Parse command line
Expand All @@ -39,8 +42,9 @@
"is to show the console")
parser.add_option('--hide-console', action='store_true',
default=False, help="Hide parent console window (Windows only)")
parser.add_option('--test', dest="test", action='store_true', default=False,
help="Test Spyder with a clean settings dir")
parser.add_option('--safe-mode', dest="safe_mode",
action='store_true', default=False,
help="Start Spyder with a clean configuration directory")
parser.add_option('--no-apport', action='store_true',
default=False, help="Disable Apport exception hook (Ubuntu)")
parser.add_option('--debug', action='store_true',
Expand All @@ -54,9 +58,9 @@
assert options.gui in (None, 'pyqt5', 'pyqt', 'pyside'), \
"Invalid GUI toolkit option '%s'" % options.gui

# For testing purposes
if options.test:
os.environ['SPYDER_TEST'] = 'True'
# Start Spyder with a clean configuration directory for testing purposes
if options.safe_mode:
os.environ['SPYDER_SAFE_MODE'] = 'True'

# Prepare arguments for Spyder's main script
sys.argv = [sys.argv[0]] + args
Expand Down Expand Up @@ -117,21 +121,14 @@
print("01. Patched sys.path with %s" % DEVPATH)


# Selecting the GUI toolkit: PyQt5 if installed, otherwise PySide or PyQt4
# (Note: PyQt4 is still the officially supported GUI toolkit for Spyder)
# Selecting the GUI toolkit: PyQt5 if installed
if options.gui is None:
try:
import PyQt5 # analysis:ignore
print("02. PyQt5 is detected, selecting")
os.environ['QT_API'] = 'pyqt5'
except ImportError:
try:
import PyQt4 # analysis:ignore
print("02. PyQt4 is detected, selecting")
os.environ['QT_API'] = 'pyqt'
except ImportError:
print("02. No PyQt5 or PyQt4 detected, using PySide if available "
"(deprecated)")
sys.exit("ERROR: No PyQt5 detected!")
else:
print ("02. Skipping GUI toolkit detection")
os.environ['QT_API'] = options.gui
Expand Down Expand Up @@ -165,13 +162,20 @@
print("0x. Hiding parent console (Windows only)")
sys.argv.append("--hide-console") # Windows only: show parent console

# Reset temporary config directory if starting in --safe-mode
if options.safe_mode or os.environ.get('SPYDER_SAFE_MODE'):
from spyder.config.base import get_conf_path # analysis:ignore
conf_dir = get_conf_path()
if osp.isdir(conf_dir):
shutil.rmtree(conf_dir)

print("04. Running Spyder")
from spyder.app import start
from spyder.app import start # analysis:ignore

time_lapse = time.time()-time_start
print("Bootstrap completed in " +
time.strftime("%H:%M:%S.", time.gmtime(time_lapse)) +
# gmtime() converts float into tuple, but loses milliseconds
("%.4f" % time_lapse).split('.')[1])
time_lapse = time.time() - time_start
print("Bootstrap completed in "
+ time.strftime("%H:%M:%S.", time.gmtime(time_lapse))
# gmtime() converts float into tuple, but loses milliseconds
+ ("%.4f" % time_lapse).split('.')[1])

start.main()
Loading

0 comments on commit ceb6a80

Please sign in to comment.