()
| 25 | |
| 26 | |
| 27 | def test_get_optional_arg() -> None: |
| 28 | def func( |
| 29 | arg: int, |
| 30 | optional: typing.Optional[int], |
| 31 | optional2: typing.Union[int, None], |
| 32 | optional3: typing.Union[None, int], |
| 33 | not_optional1: typing.Union[str, int], |
| 34 | not_optional2: typing.Union[str, int, bool], |
| 35 | ) -> None: |
| 36 | pass |
| 37 | |
| 38 | parameters = inspect.signature(func).parameters |
| 39 | |
| 40 | assert get_optional_arg(parameters['arg'].annotation) is None |
| 41 | assert get_optional_arg(parameters['optional'].annotation) is int |
| 42 | assert get_optional_arg(parameters['optional2'].annotation) is int |
| 43 | assert get_optional_arg(parameters['optional3'].annotation) is int |
| 44 | assert get_optional_arg(parameters['not_optional1'].annotation) is None |
| 45 | assert get_optional_arg(parameters['not_optional2'].annotation) is None |
| 46 | |
| 47 | |
| 48 | @pytest.mark.skipif(sys.version_info < (3, 10), reason="Notation is only supported in Python 3.10 or newer.") |
nothing calls this directly
no test coverage detected