-
-
Notifications
You must be signed in to change notification settings - Fork 47
Expand file tree
/
Copy pathtype_util.py
More file actions
111 lines (60 loc) · 1.87 KB
/
type_util.py
File metadata and controls
111 lines (60 loc) · 1.87 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
import pathlib
import re
from datetime import datetime
from decimal import Decimal
regex = re.compile("").__class__
uuid_re = re.compile(
"^([0-9a-f]{32}){1}$|^([0-9a-f]{8}-([0-9a-f]{4}-){3}[0-9a-f]{12}){1}$",
flags=re.IGNORECASE,
)
def is_bool(val):
return isinstance(val, bool)
def is_collection(val):
return isinstance(val, (dict, list, set, tuple))
def is_datetime(val):
return isinstance(val, datetime)
def is_decimal(val):
return isinstance(val, Decimal)
def is_dict(val):
return isinstance(val, dict)
def is_dict_or_list(val):
return isinstance(val, (dict, list))
def is_dict_or_list_or_tuple(val):
return isinstance(val, (dict, list, tuple))
def is_float(val):
return isinstance(val, float)
def is_function(val):
return callable(val)
def is_integer(val):
return isinstance(val, int)
def is_json_serializable(val):
json_types = (type(None), bool, dict, float, int, list, str, tuple)
return isinstance(val, json_types)
def is_list(val):
return isinstance(val, list)
def is_list_or_tuple(val):
return isinstance(val, (list, tuple))
def is_none(val):
return val is None
def is_not_none(val):
return val is not None
def is_path(val):
return isinstance(val, pathlib.Path)
def is_regex(val):
return isinstance(val, regex)
def is_set(val):
return isinstance(val, set)
def is_string(val):
return isinstance(val, str)
def is_tuple(val):
return isinstance(val, tuple)
def is_uuid(val):
return is_string(val) and uuid_re.match(val)
def is_wildcard(val):
return is_string(val) and val == "*"
def is_list_of_dicts(val):
return is_list(val) and all(is_dict(_val) for _val in val)
def any_wildcard_in_list(val):
return is_list(val) and any(is_wildcard(_val) for _val in val)
def is_list_of_list(val):
return is_list(val) and all(is_list(_val) for _val in val)