1
0
forked from VimPlug/jedi

Use inspect.Parameter.kind for better differentiation between param types

Refs #292
This commit is contained in:
Dave Halter
2018-03-13 22:47:08 +01:00
parent f9ec989835
commit 5d36114be4
5 changed files with 48 additions and 15 deletions

View File

@@ -99,7 +99,10 @@ def safe_getattr(obj, name, default=_sentinel):
return attr
SignatureParam = namedtuple('SignatureParam', 'name has_default default has_annotation annotation')
SignatureParam = namedtuple(
'SignatureParam',
'name has_default default has_annotation annotation kind_name'
)
def compiled_objects_cache(attribute_name):
@@ -413,6 +416,7 @@ class DirectObjectAccess(object):
default=self._create_access_path(p.default),
has_annotation=p.annotation is not p.empty,
annotation=self._create_access_path(p.annotation),
kind_name=str(p.kind)
) for p in signature.parameters.values()
]

View File

@@ -5,7 +5,7 @@ import re
from functools import partial
from jedi import debug
from jedi._compatibility import force_unicode
from jedi._compatibility import force_unicode, Parameter
from jedi.cache import underscore_memoization, memoize_method
from jedi.evaluate.filters import AbstractFilter, AbstractNameDefinition, \
ContextNameMixin
@@ -248,6 +248,12 @@ class SignatureParamName(AbstractNameDefinition):
def string_name(self):
return self._signature_param.name
def get_kind(self):
return getattr(Parameter, self._signature_param.kind_name)
def is_keyword_param(self):
return self._signature_param
def infer(self):
p = self._signature_param
evaluator = self.parent_context.evaluator
@@ -267,6 +273,9 @@ class UnresolvableParamName(AbstractNameDefinition):
self.parent_context = compiled_obj.parent_context
self.string_name = name
def get_kind(self):
return Parameter.POSITIONAL_ONLY
def infer(self):
return ContextSet()