inspect.signature throws weird errors sometimes, just make it a bit simpler

Fixes #1031
This commit is contained in:
Dave Halter
2018-01-26 01:30:10 +01:00
parent d44385c25e
commit fc458a3c2a
2 changed files with 16 additions and 1 deletions

View File

@@ -399,7 +399,13 @@ class DirectObjectAccess(object):
or obj.__new__ != object.__new__)):
raise ValueError
signature = inspect.signature(obj)
try:
signature = inspect.signature(obj)
except (RuntimeError, TypeError):
# Reading the code of the function in Python 3.6 implies there are
# at least these errors that might occur if something is wrong with
# the signature. In that case we just want a simple escape for now.
raise ValueError
return [
SignatureParam(
name=p.name,

View File

@@ -164,6 +164,15 @@ def test_completion_params(Script):
assert [p.name for p in c.params] == ['s', 'sep']
def test_hashlib_params(Script, environment):
if environment.version_info < (3,):
pytest.skip()
script = Script(source='from hashlib import ', line=1, column=20)
c = script.completions()
assert c[2].params
def test_signature_params(Script):
def check(defs):
params = defs[0].params