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 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152
|
# Copyright 2018 The Bazel Authors. All rights reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
"""Skylib module containing functions checking types."""
# create instance singletons to avoid unnecessary allocations
_a_bool_type = type(True)
_a_dict_type = type({})
_a_list_type = type([])
_a_string_type = type("")
_a_tuple_type = type(())
_an_int_type = type(1)
_a_depset_type = type(depset())
_a_struct_type = type(struct())
def _a_function():
pass
_a_function_type = type(_a_function)
def _is_list(v):
"""Returns True if v is an instance of a list.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a list, False otherwise.
"""
return type(v) == _a_list_type
def _is_string(v):
"""Returns True if v is an instance of a string.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a string, False otherwise.
"""
return type(v) == _a_string_type
def _is_bool(v):
"""Returns True if v is an instance of a bool.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a bool, False otherwise.
"""
return type(v) == _a_bool_type
def _is_none(v):
"""Returns True if v has the type of None.
Args:
v: The value whose type should be checked.
Returns:
True if v is None, False otherwise.
"""
return type(v) == type(None)
def _is_int(v):
"""Returns True if v is an instance of a signed integer.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a signed integer, False otherwise.
"""
return type(v) == _an_int_type
def _is_tuple(v):
"""Returns True if v is an instance of a tuple.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a tuple, False otherwise.
"""
return type(v) == _a_tuple_type
def _is_dict(v):
"""Returns True if v is an instance of a dict.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a dict, False otherwise.
"""
return type(v) == _a_dict_type
def _is_function(v):
"""Returns True if v is an instance of a function.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a function, False otherwise.
"""
return type(v) == _a_function_type
def _is_depset(v):
"""Returns True if v is an instance of a `depset`.
Args:
v: The value whose type should be checked.
Returns:
True if v is an instance of a `depset`, False otherwise.
"""
return type(v) == _a_depset_type
def _is_set(v):
"""Returns True if v is a set created by sets.make().
Args:
v: The value whose type should be checked.
Returns:
True if v was created by sets.make(), False otherwise.
"""
return type(v) == _a_struct_type and hasattr(v, "_values") and _is_dict(v._values)
types = struct(
is_list = _is_list,
is_string = _is_string,
is_bool = _is_bool,
is_none = _is_none,
is_int = _is_int,
is_tuple = _is_tuple,
is_dict = _is_dict,
is_function = _is_function,
is_depset = _is_depset,
is_set = _is_set,
)
|