Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/jedi/inference/value/decorator.py: 38%

16 statements  

« prev     ^ index     » next       coverage.py v7.4.4, created at 2024-04-20 06:09 +0000

1''' 

2Decorators are not really values, however we need some wrappers to improve 

3docstrings and other things around decorators. 

4''' 

5 

6from jedi.inference.base_value import ValueWrapper, ValueSet 

7 

8 

9class Decoratee(ValueWrapper): 

10 def __init__(self, wrapped_value, original_value): 

11 super().__init__(wrapped_value) 

12 self._original_value = original_value 

13 

14 def py__doc__(self): 

15 return self._original_value.py__doc__() 

16 

17 def py__get__(self, instance, class_value): 

18 return ValueSet( 

19 Decoratee(v, self._original_value) 

20 for v in self._wrapped_value.py__get__(instance, class_value) 

21 ) 

22 

23 def get_signatures(self): 

24 signatures = self._wrapped_value.get_signatures() 

25 if signatures: 

26 return signatures 

27 # Fallback to signatures of the original function/class if the 

28 # decorator has no signature or it is not inferrable. 

29 # 

30 # __get__ means that it's a descriptor. In that case we don't return 

31 # signatures, because they are usually properties. 

32 if not self._wrapped_value.py__getattribute__('__get__'): 

33 return self._original_value.get_signatures() 

34 return []