Repository: spyder-ide/spyder

Issue:
IndexError when getting help of an object
## Description

**What steps will reproduce the problem?**

1. Create a function named "print_file" in the text editor.  The contents or arguments of the function have no effect on the error. The function name is the critical part.  Changing the function name prevents this error.  Using: Windows 10, Python 3.6 Anaconda install. Anaconda 3 64-bit
2. Run the cell to load the function into the IPython console.
3. Enter the function in the console.  This error is generated by typing the open parentheses "("

**What is the expected output? What do you see instead?**
Because changing the function itself does not affect this error, there is no specific expected output.  Multiple functions were tried.  This causes the Spyder error popup window to appear.  Clicking "OK" on the window closes it and the function can be run normally in the IPython console afterwards. 



**Please provide any additional information below**

  File "C:\Users\steve\Anaconda3\lib\site-packages\spyder\plugins\help.py", line 92, in validate
    valid = self.is_valid(qstr)
  File "C:\Users\steve\Anaconda3\lib\site-packages\spyder\plugins\help.py", line 74, in is_valid
    return shell.is_defined(objtxt, force_import=True)
  File "C:\Users\steve\Anaconda3\lib\site-packages\spyder\widgets\internalshell.py", line 467, in is_defined
    return self.interpreter.is_defined(objtxt, force_import)
  File "C:\Users\steve\Anaconda3\lib\site-packages\spyder\interpreter.py", line 312, in is_defined
    namespace=self.locals)
  File "C:\Users\steve\Anaconda3\lib\site-packages\spyder\utils\dochelpers.py", line 305, in isdefined
    module = __import__(base, globals(), namespace)
  File "C:\Users\steve\Documents\Online Classes\Coursera Python Programming Introduction\print_file.py", line 6, in <module>
    filename = sys.argv[1]
IndexError: list index out of range


## Version and main components

* Spyder Version: 3.2.4 
* Python Version: 3.6.3
* Qt Versions: 5.6.2, PyQt5 5.6 on Windows

## Dependencies
```
pyflakes >=0.6.0 :  1.6.0 (OK)
pycodestyle >=2.3:  2.3.1 (OK)
pygments >=2.0   :  2.2.0 (OK)
pandas >=0.13.1  :  0.20.3 (OK)
numpy >=1.7      :  1.13.3 (OK)
sphinx >=0.6.6   :  1.6.3 (OK)
rope >=0.9.4     :  0.10.5 (OK)
jedi >=0.9.0     :  0.10.2 (OK)
nbconvert >=4.0  :  5.3.1 (OK)
sympy >=0.7.3    :  1.1.1 (OK)
cython >=0.21    :  0.26.1 (OK)
qtconsole >=4.2.0:  4.3.1 (OK)
IPython >=4.0    :  6.1.0 (OK)
pylint >=0.25    :  1.7.4 (OK)

```



Discussion:
Thanks for reporting. I was unable to reproduce this error in Spyder 3.2.6 on Windows 8.1 Pro x64 with Python 3.6.4 x64 and the same versions of Qt, IPython, qtconsole, rope, jedi, and sphix as you. Please try updating Spyder and Python, and seeing if the error reoccurs. For reference, I stuck the function

```
def print_file(to_print):
    print("Printed: " + str(to_print))
```

in a cell, and then tried running

```
print_file("test 2")
```

in both the console and the editor, and everything worked fine.
@dalthviz, please catch `IndexError` around `module = __import__(base, globals(), namespace)` in `utils/dochelpers.py`.
Or better still, simply catch **any** error at point to avoid more errors like this one in the future.

Resolving patch:
diff --git a/spyder/utils/dochelpers.py b/spyder/utils/dochelpers.py
--- a/spyder/utils/dochelpers.py
+++ b/spyder/utils/dochelpers.py
@@ -306,7 +306,7 @@ def isdefined(obj, force_import=False, namespace=None):
                 if base not in globals():
                     globals()[base] = module
                 namespace[base] = module
-            except (ImportError, NameError, SyntaxError, SystemExit):
+            except Exception:
                 return False
         else:
             return False


Test patch: