示例#1
0
 def test_update_self(self):
     """Don't annotate first arg of instance methods"""
     sig = Signature.from_callable(UpdateSignatureHelper.an_instance_method)
     sig = update_signature_args(sig, {'self': UpdateSignatureHelper}, True)
     expected = Signature(
         parameters=[Parameter('self', Parameter.POSITIONAL_OR_KEYWORD)])
     assert sig == expected
示例#2
0
 def test_update_self_ignore_existing_anno(self):
     """Don't annotate first arg of instance methods if asked to ignore"""
     sig = Signature.from_callable(UpdateSignatureHelper.an_instance_method)
     sig = update_signature_args(sig, {'self': UpdateSignatureHelper}, has_self=True,
                                 existing_annotation_strategy=ExistingAnnotationStrategy.IGNORE)
     expected = Signature(parameters=[Parameter('self', Parameter.POSITIONAL_OR_KEYWORD)])
     assert sig == expected
示例#3
0
 def test_nonetype_annotation(self):
     """NoneType should always be rendered as None"""
     sig = Signature.from_callable(UpdateSignatureHelper.has_annos)
     sig = update_signature_args(sig, {'a': Dict[str, NoneType]}, has_self=False,
                                 existing_annotation_strategy=ExistingAnnotationStrategy.IGNORE)
     stub = FunctionStub('test', sig, FunctionKind.MODULE)
     expected = 'def test(a: Dict[str, None], b) -> int: ...'
     assert stub.render() == expected
示例#4
0
 def test_update_class(self):
     """Don't annotate the first arg of classmethods"""
     sig = Signature.from_callable(
         UpdateSignatureHelper.a_class_method.__func__)
     sig = update_signature_args(sig, {'cls': Type[UpdateSignatureHelper]},
                                 True)
     expected = Signature(
         parameters=[Parameter('cls', Parameter.POSITIONAL_OR_KEYWORD)])
     assert sig == expected
示例#5
0
 def test_update_arg(self):
     """Update arg annotations from types"""
     sig = Signature.from_callable(UpdateSignatureHelper.has_annos)
     sig = update_signature_args(sig, {'b': int}, False)
     params = [
         Parameter('a', Parameter.POSITIONAL_OR_KEYWORD, annotation=int),
         Parameter('b', Parameter.POSITIONAL_OR_KEYWORD, annotation=int),
     ]
     assert sig == Signature(parameters=params, return_annotation=int)
示例#6
0
 def test_update_arg_ignore_existing_anno_None(self):
     """Update arg annotations from types"""
     sig = Signature.from_callable(UpdateSignatureHelper.has_annos)
     sig = update_signature_args(sig, {'a': None, 'b': int}, has_self=False, ignore_existing_annotations=True)
     params = [
         Parameter('a', Parameter.POSITIONAL_OR_KEYWORD, annotation=inspect.Parameter.empty),
         Parameter('b', Parameter.POSITIONAL_OR_KEYWORD, annotation=int),
     ]
     assert sig == Signature(parameters=params, return_annotation=int)
示例#7
0
 def test_update_arg_ignore_existing_anno(self):
     """Update stubs only bases on traces."""
     sig = Signature.from_callable(UpdateSignatureHelper.has_annos)
     sig = update_signature_args(sig, {'a': str, 'b': bool}, has_self=False, ignore_existing_annotations=True)
     params = [
         Parameter('a', Parameter.POSITIONAL_OR_KEYWORD, annotation=str),
         Parameter('b', Parameter.POSITIONAL_OR_KEYWORD, annotation=bool),
     ]
     assert sig == Signature(parameters=params, return_annotation=int)
示例#8
0
 def test_update_arg_with_anno(self):
     """Leave existing arg annotations alone"""
     sig = Signature.from_callable(UpdateSignatureHelper.has_annos)
     sig = update_signature_args(sig, {'a': str}, False)
     expected = Signature(parameters=[
         Parameter('a', Parameter.POSITIONAL_OR_KEYWORD, annotation=int),
         Parameter('b', Parameter.POSITIONAL_OR_KEYWORD)
     ],
                          return_annotation=int)
     assert sig == expected
示例#9
0
 def test_update_arg_avoid_incompatible_anno(self):
     """Can generate stub with no annotations where they already exist in the source."""
     sig = Signature.from_callable(UpdateSignatureHelper.has_annos)
     sig = update_signature_args(
         sig, {'a': int, 'b': int}, has_self=False, existing_annotation_strategy=ExistingAnnotationStrategy.OMIT)
     params = [
         Parameter('a', Parameter.POSITIONAL_OR_KEYWORD, annotation=inspect.Parameter.empty),
         Parameter('b', Parameter.POSITIONAL_OR_KEYWORD, annotation=int)
     ]
     assert sig == Signature(parameters=params, return_annotation=int)