diff --git a/pythonosc/osc_message_builder.py b/pythonosc/osc_message_builder.py index dac5158128dbef83097d8b064b24ff71a826d1fc..6214deca3001c50ad783caf3cc536ee765e2b10c 100644 --- a/pythonosc/osc_message_builder.py +++ b/pythonosc/osc_message_builder.py @@ -1,11 +1,5 @@ """Build OSC messages for client applications.""" -try: - import builtins -except ImportError: - # for python 2.x - import __builtin__ as builtins - from pythonosc import osc_message from pythonosc.parsing import osc_types @@ -65,19 +59,20 @@ class OscMessageBuilder(object): raise ValueError( 'arg_type must be one of {}'.format(self._SUPPORTED_ARG_TYPES)) if not arg_type: - builtin_type = type(arg_value) - if builtin_type == builtins.str: + if isinstance(arg_value, str): arg_type = self.ARG_TYPE_STRING - elif builtin_type == builtins.bytes: + elif isinstance(arg_value, bytes): arg_type = self.ARG_TYPE_BLOB - elif builtin_type == builtins.int: + elif isinstance(arg_value, int): arg_type = self.ARG_TYPE_INT - elif builtin_type == builtins.float: + elif isinstance(arg_value, float): arg_type = self.ARG_TYPE_FLOAT - elif builtin_type == builtins.bool and arg_value: + elif arg_value == True: arg_type = self.ARG_TYPE_TRUE - elif builtin_type == builtins.bool and not arg_value: + elif arg_value == False: arg_type = self.ARG_TYPE_FALSE + else: + raise ValueError('Infered arg_value type is not supported') self._args.append((arg_type, arg_value)) def build(self): diff --git a/pythonosc/test/test_osc_message_builder.py b/pythonosc/test/test_osc_message_builder.py index 38cddc9cfcf89f5cae6919e783a0af16ce59aaa5..e73c088eff49912246a1836de5c9b0dc5c7074fe 100644 --- a/pythonosc/test/test_osc_message_builder.py +++ b/pythonosc/test/test_osc_message_builder.py @@ -20,6 +20,10 @@ class TestOscMessageBuilder(unittest.TestCase): builder = osc_message_builder.OscMessageBuilder("") self.assertRaises(ValueError, builder.add_arg, "what?", 1) + def test_add_arg_invalid_infered_type(self): + builder = osc_message_builder.OscMessageBuilder('') + self.assertRaises(ValueError, builder.add_arg, {'name': 'John'}) + def test_all_param_types(self): builder = osc_message_builder.OscMessageBuilder(address="/SYNC") builder.add_arg(4.0)