def test_update_yield(self): sig = Signature.from_callable(UpdateSignatureHelper.a_class_method) sig = update_signature_return(sig, yield_type=int) assert sig == Signature(return_annotation=Iterator[int]) sig = update_signature_return(sig, return_type=NoneType, yield_type=int) assert sig == Signature(return_annotation=Iterator[int])
def test_update_yield_none_and_return(self): sig = Signature.from_callable(UpdateSignatureHelper.a_class_method) sig = update_signature_return(sig, return_type=str, yield_type=NoneType) assert sig == Signature(return_annotation=Generator[NoneType, NoneType, str])
def test_update_return_with_anno(self): """Leave existing return annotations alone""" sig = Signature.from_callable(UpdateSignatureHelper.has_annos) sig = update_signature_return(sig, return_type=str) expected = Signature(parameters=[ Parameter('a', Parameter.POSITIONAL_OR_KEYWORD, annotation=int), Parameter('b', Parameter.POSITIONAL_OR_KEYWORD) ], return_annotation=int) assert sig == expected
def test_avoid_incompatible_return(self): """Generate stub for application with no annotation where source has one""" sig = Signature.from_callable(UpdateSignatureHelper.has_annos) sig = update_signature_return( sig, return_type=str, existing_annotation_strategy=ExistingAnnotationStrategy.OMIT) expected = Signature(parameters=[ Parameter('a', Parameter.POSITIONAL_OR_KEYWORD, annotation=int), Parameter('b', Parameter.POSITIONAL_OR_KEYWORD) ], ) assert sig == expected
def test_update_return(self): """Update return annotations from types""" sig = Signature.from_callable(UpdateSignatureHelper.a_class_method) sig = update_signature_return(sig, return_type=str) assert sig == Signature(return_annotation=str)