From 4b8b84754497a787564ba21a169d4ac8b231e9ad Mon Sep 17 00:00:00 2001 From: Rob <1572423+robweber@users.noreply.github.com> Date: Wed, 27 Dec 2017 09:55:20 -0600 Subject: [PATCH] Dropbox 2.6 fixes (#127) Dropbox lib fixes for python 2.6 --- resources/lib/dropbox/oauth.py | 6 +++- resources/lib/dropbox/stone_serializers.py | 37 +++++++++++----------- resources/lib/dropbox/stone_validators.py | 11 ++++--- 3 files changed, 30 insertions(+), 24 deletions(-) diff --git a/resources/lib/dropbox/oauth.py b/resources/lib/dropbox/oauth.py index c51f870..be46b40 100644 --- a/resources/lib/dropbox/oauth.py +++ b/resources/lib/dropbox/oauth.py @@ -511,5 +511,9 @@ def _params_to_urlencoded(params): else: return str(o).encode('utf-8') - utf8_params = {encode(k): encode(v) for k, v in six.iteritems(params)} + #fix for python 2.6 + utf8_params = {} + for k,v in six.iteritems(params): + utf8_params[encode(k)] = encode(v) + return url_encode(utf8_params) diff --git a/resources/lib/dropbox/stone_serializers.py b/resources/lib/dropbox/stone_serializers.py index e4be3fa..3fe68b1 100644 --- a/resources/lib/dropbox/stone_serializers.py +++ b/resources/lib/dropbox/stone_serializers.py @@ -237,11 +237,12 @@ class StoneToPythonPrimitiveSerializer(StoneSerializerBase): def encode_map(self, validator, value): validated_value = validator.validate(value) - return { - self.encode_sub(validator.key_validator, key): - self.encode_sub(validator.value_validator, value) for - key, value in validated_value.items() - } + #fix for python 2.6 + result = {} + for key, value in validated_value.items(): + result[self.encode_sub(validator.key_validator,key)] = self.encode_sub(validator.value_validator, value) + + return result def encode_nullable(self, validator, value): if value is None: @@ -830,11 +831,12 @@ def _decode_list( if not isinstance(obj, list): raise bv.ValidationError( 'expected list, got %s' % bv.generic_type_name(obj)) - return [ - _json_compat_obj_decode_helper( - data_type.item_validator, item, alias_validators, strict, - old_style, for_msgpack) - for item in obj] + + result = [] + for item in obj: + result.append(_json_compat_obj_decode_helper(data_type.item_validator, item, alias_validators, strict,old_style, for_msgpack)) + + return result def _decode_map( @@ -846,15 +848,12 @@ def _decode_map( if not isinstance(obj, dict): raise bv.ValidationError( 'expected dict, got %s' % bv.generic_type_name(obj)) - return { - _json_compat_obj_decode_helper( - data_type.key_validator, key, alias_validators, strict, - old_style, for_msgpack): - _json_compat_obj_decode_helper( - data_type.value_validator, value, alias_validators, strict, - old_style, for_msgpack) - for key, value in obj.items() - } + + result = {} + for key, value in obj.items(): + result[_json_compat_obj_decode_helper(data_type.key_validator, key, alias_validators, strict,old_style, for_msgpack)] = _json_compat_obj_decode_helper(data_type.value_validator, value, alias_validators, strict,old_style, for_msgpack) + + return result def _decode_nullable( diff --git a/resources/lib/dropbox/stone_validators.py b/resources/lib/dropbox/stone_validators.py index f919dc7..3e9bc22 100644 --- a/resources/lib/dropbox/stone_validators.py +++ b/resources/lib/dropbox/stone_validators.py @@ -422,10 +422,13 @@ class Map(Composite): def validate(self, val): if not isinstance(val, dict): raise ValidationError('%r is not a valid dict' % val) - return { - self.key_validator.validate(key): - self.value_validator.validate(value) for key, value in val.items() - } + + #fix for python 2.6 + result = {} + for key, value in val.items(): + result[self.key_validator.validate(key)] = self.value_validator.validate(value) + + return result class Struct(Composite):