1
0
forked from VimPlug/jedi

TypedDict checking should be at a later point

This commit is contained in:
Dave Halter
2020-03-01 02:34:38 +01:00
parent fa63c92cf7
commit 609737322d
4 changed files with 6 additions and 30 deletions

View File

@@ -350,33 +350,6 @@ class TypedDictBase(BaseTypingValue):
"""
class TypedDictClass(Value):
"""
This represents a class defined like:
class Foo(TypedDict):
bar: str
"""
def __init__(self, definition_class):
super().__init__(definition_class.inference_state, definition_class.parent_context)
self.tree_node = definition_class.tree_node
self._definition_class = definition_class
def get_filters(self, origin_scope=None):
"""
A TypedDict doesn't have attributes.
"""
o, = self.inference_state.builtins_module.py__getattribute__('object')
return o.get_filters()
@property
def name(self):
return ValueName(self, self.tree_node.name)
def py__call__(self, arguments):
return ValueSet({TypedDict(self._definition_class)})
class TypedDict(LazyValueWrapper):
"""Represents the instance version of ``TypedDictClass``."""
def __init__(self, definition_class):

View File

@@ -26,7 +26,6 @@ from jedi.inference.compiled.access import COMPARISON_OPERATORS
from jedi.inference.cache import inference_state_method_cache
from jedi.inference.gradual.stub_value import VersionInfo
from jedi.inference.gradual import annotation
from jedi.inference.gradual.typing import TypedDictClass
from jedi.inference.names import TreeNameDefinition
from jedi.inference.context import CompForContext
from jedi.inference.value.decorator import Decoratee
@@ -749,8 +748,6 @@ def _apply_decorators(context, node):
parent_context=context,
tree_node=node
)
if decoratee_value.is_typeddict():
decoratee_value = TypedDictClass(decoratee_value)
else:
decoratee_value = FunctionValue.from_context(context, node)
initial = values = ValueSet([decoratee_value])

View File

@@ -133,6 +133,10 @@ class ClassMixin(object):
def py__call__(self, arguments=None):
from jedi.inference.value import TreeInstance
from jedi.inference.gradual.typing import TypedDict
if self.is_typeddict():
return ValueSet([TypedDict(self)])
return ValueSet([TreeInstance(self.inference_state, self.parent_context, self, arguments)])
def py__class__(self):

View File

@@ -558,6 +558,8 @@ d.foo
Foo.set
#? ['setdefault']
d.setdefaul
#? []
Foo.setdefaul
#? 5 ["'foo"]
d['fo']