Skip to content

Commit aad15ec

Browse files
committed
Stricter bool validation
1 parent cb5ad10 commit aad15ec

File tree

2 files changed

+9
-14
lines changed

2 files changed

+9
-14
lines changed

computercraft/server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def __init__(self, nid, program):
108108
self.commands = CommandsAPI(self)
109109
self.disk = DiskAPI(self)
110110
self.fs = FSAPI(self)
111-
self.gps = GpsAPI(self) # TODO: test
111+
self.gps = GpsAPI(self)
112112
self.help = HelpAPI(self)
113113
self.keys = KeysAPI(self)
114114
self.multishell = MultishellAPI(self)

computercraft/subapis/base.py

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -85,25 +85,20 @@ def op_fn(v):
8585
return op_fn
8686

8787

88-
def make_single_value_return(*types):
89-
if len(types) > 1:
90-
types = tuple(types)
91-
else:
92-
types = types[0]
93-
88+
def make_single_value_return(cond):
9489
def fn(v):
9590
assert len(v) == 1
96-
assert isinstance(v[0], types)
91+
assert cond(v[0])
9792
return v[0]
9893
return fn
9994

10095

101-
bool_return = make_single_value_return(bool)
102-
int_return = make_single_value_return(int)
103-
number_return = make_single_value_return(int, float)
104-
str_return = make_single_value_return(str)
105-
list_return = make_single_value_return(list)
106-
dict_return = make_single_value_return(dict)
96+
bool_return = make_single_value_return(lambda v: isinstance(v, bool))
97+
int_return = make_single_value_return(lambda v: isinstance(v, int) and not isinstance(v, bool))
98+
number_return = make_single_value_return(lambda v: isinstance(v, (int, float)) and not isinstance(v, bool))
99+
str_return = make_single_value_return(lambda v: isinstance(v, str))
100+
list_return = make_single_value_return(lambda v: isinstance(v, list))
101+
dict_return = make_single_value_return(lambda v: isinstance(v, dict))
107102

108103

109104
@make_optional

0 commit comments

Comments
 (0)