cython

Форк
0
/
pycontextvar.pyx 
56 строк · 1.5 Кб
1
# mode: run
2

3
from cpython.contextvars cimport (
4
    PyContextVar_New, PyContextVar_New_with_default,
5
    get_value, get_value_no_default,
6
)
7

8
NOTHING = object()
9
CVAR = PyContextVar_New("cvar", NULL)
10
CVAR_WITH_DEFAULT = PyContextVar_New_with_default("cvar_wd", "DEFAULT")
11

12

13
import contextvars
14
PYCVAR = contextvars.ContextVar("pycvar")
15

16
def disable_for_pypy737(f):
17
    import sys
18
    # will be fixed in PyPy 7.3.8
19
    if hasattr(sys, 'pypy_version_info') and sys.pypy_version_info < (7,3,8):
20
        return None
21
    return f
22

23

24
@disable_for_pypy737
25
def test_get_value(var, default=NOTHING):
26
    """
27
    >>> test_get_value(CVAR)
28
    >>> test_get_value(CVAR, "default")
29
    'default'
30
    >>> test_get_value(PYCVAR)
31
    >>> test_get_value(PYCVAR, "default")
32
    'default'
33
    >>> test_get_value(CVAR_WITH_DEFAULT)
34
    'DEFAULT'
35
    >>> test_get_value(CVAR_WITH_DEFAULT, "default")
36
    'DEFAULT'
37
    """
38
    return get_value(var, default) if default is not NOTHING else get_value(var)
39

40

41
@disable_for_pypy737
42
def test_get_value_no_default(var, default=NOTHING):
43
    """
44
    >>> test_get_value_no_default(CVAR)
45
    >>> test_get_value_no_default(CVAR, "default")
46
    'default'
47
    >>> test_get_value_no_default(PYCVAR)
48
    >>> test_get_value_no_default(PYCVAR, "default")
49
    'default'
50
    >>> test_get_value_no_default(CVAR_WITH_DEFAULT)
51
    >>> test_get_value_no_default(CVAR_WITH_DEFAULT, "default")
52
    'default'
53
    """
54
    return get_value_no_default(var, default) if default is not NOTHING else get_value_no_default(var)
55

56
__test__ = {}
57

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

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

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

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