verboselib.core   A
last analyzed

Complexity

Total Complexity 8

Size/Duplication

Total Lines 50
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 8
eloc 30
dl 0
loc 50
rs 10
c 0
b 0
f 0

7 Functions

Rating   Name   Duplication   Size   Complexity  
A drop_language() 0 3 1
A set_default_language() 0 3 1
A get_language() 0 8 2
A set_language() 0 3 1
A drop_default_language() 0 3 1
A get_default_language() 0 3 1
A set_language_bypass() 0 3 1
1
import threading
2
3
from typing import Optional
4
5
from ._utils import export
6
7
8
_bypass_value  = "__bypass__"
9
_local_storage = threading.local()
10
11
12
@export
13
def get_default_language() -> Optional[str]:
14
  return getattr(_local_storage, "default_value", None)
15
16
17
@export
18
def set_default_language(value: Optional[str]) -> None:
19
  setattr(_local_storage, "default_value", value)
20
21
22
@export
23
def drop_default_language() -> None:
24
  set_default_language(None)
25
26
27
@export
28
def set_language(value: Optional[str]) -> None:
29
  setattr(_local_storage, "current_value", value)
30
31
32
@export
33
def set_language_bypass() -> None:
34
  set_language(_bypass_value)
35
36
37
@export
38
def drop_language() -> None:
39
  set_language(None)
40
41
42
@export
43
def get_language() -> Optional[str]:
44
  language = getattr(_local_storage, "current_value", None)
45
46
  if language is _bypass_value:
47
    return None
48
49
  return language or getattr(_local_storage, "default_value", None)
50