cython

Форк
0
/
default_optional_gh5643.py 
86 строк · 1.7 Кб
1
# mode: run
2
# tag: pep484, warnings, pure3.6
3
# ticket: 5643
4
# cython: language_level=3
5

6
try:
7
    from typing import Optional
8
except ImportError:
9
    pass
10

11

12
# no crash
13
def gh5643_optional(a: Optional[int] = None):
14
    """
15
    >>> gh5643_optional()
16
    True
17
    >>> gh5643_optional(1)
18
    False
19
    """
20
    return a is None
21

22

23
# no crash
24
def gh5643_int_untyped(a: int = 1, b = None):
25
    """
26
    >>> gh5643_int_untyped(2)
27
    (False, True)
28
    >>> gh5643_int_untyped(2, None)
29
    (False, True)
30
    >>> gh5643_int_untyped(1, 3)
31
    (True, False)
32
    """
33
    return a == 1, b is None
34

35

36
# used to crash
37
def gh5643_int_int_none(a: int = 1, b: int = None):  # should warn about missing "Optional[]"
38
    """
39
    >>> gh5643_int_int_none()
40
    (True, True)
41
    >>> gh5643_int_int_none(2, 3)
42
    (False, False)
43
    """
44
    return a == 1, b is None
45

46

47
def gh5643_int_int_integer(a: int = 1, b: int = 3):
48
    """
49
    >>> gh5643_int_int_integer()
50
    (True, True)
51
    >>> gh5643_int_int_integer(2, 3)
52
    (False, True)
53
    """
54
    return a == 1, b == 3
55

56

57
# used to crash
58
def gh5643_int_optional_none(a: int = 1, b: Optional[int] = None):
59
    """
60
    >>> gh5643_int_optional_none()
61
    (True, True)
62
    >>> gh5643_int_optional_none(2)
63
    (False, True)
64
    >>> gh5643_int_optional_none(2, 3)
65
    (False, False)
66
    """
67
    return a == 1, b is None
68

69

70
def gh5643_int_optional_integer(a: int = 1, b: Optional[int] = 2):
71
    """
72
    >>> gh5643_int_optional_integer()
73
    (True, True)
74
    >>> gh5643_int_optional_integer(2)
75
    (False, True)
76
    >>> gh5643_int_optional_integer(2, 3)
77
    (False, False)
78
    >>> gh5643_int_optional_integer(2, 2)
79
    (False, True)
80
    """
81
    return a == 1, b == 2
82

83

84
_WARNINGS = """
85
37:36: PEP-484 recommends 'typing.Optional[...]' for arguments that can be None.
86
"""
87

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.