Skip to content

Commit

Permalink
Merge pull request #204 from prkumar/v0.9.2/pass-through-converter
Browse files Browse the repository at this point in the history
Update fallback strategies for converters
  • Loading branch information
prkumar committed Oct 17, 2020
2 parents 2f4260d + 89c43d1 commit 6038716
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 35 deletions.
14 changes: 0 additions & 14 deletions tests/unit/test_converters.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,6 @@ def test_convert_with_caster(self, mocker):
assert return_value == 3


class TestRequestBodyConverter(object):
def test_convert_str(self):
converter_ = standard.RequestBodyConverter()
assert converter_.convert("example") == "example"

def test_convert_obj(self):
converter_ = standard.RequestBodyConverter()
example = {"hello": "2"}
assert converter_.convert(example) == example


class TestStringConverter(object):
def test_convert(self):
converter_ = standard.StringConverter()
Expand All @@ -63,9 +52,6 @@ def test_create_response_body_converter(self, converter_mock):
converter = factory.create_response_body_converter(converter_mock)
assert converter is converter_mock

# Run & Verify: Otherwise, return None
assert None is factory.create_response_body_converter("converter")


class TestConverterFactoryRegistry(object):
backend = converters.ConverterFactoryRegistry._converter_factory_registry
Expand Down
3 changes: 2 additions & 1 deletion uplink/arguments.py
Original file line number Diff line number Diff line change
Expand Up @@ -179,7 +179,8 @@ def converter_key(self): # pragma: no cover
def modify_request(self, request_builder, value):
argument_type, converter_key = self.type, self.converter_key
converter = request_builder.get_converter(converter_key, argument_type)
self._modify_request(request_builder, converter(value))
converted_value = converter(value) if converter else value
self._modify_request(request_builder, converted_value)


class TypedArgument(ArgumentAnnotation):
Expand Down
26 changes: 6 additions & 20 deletions uplink/converters/standard.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
# Standard library imports
import json

# Local imports
from uplink.converters import interfaces, register_default_converter_factory

Expand All @@ -19,18 +16,6 @@ def convert(self, value):
return self._converter(value)


class RequestBodyConverter(interfaces.Converter):
@staticmethod
def _default_json_dumper(obj):
return obj.__dict__ # pragma: no cover

def convert(self, value):
if isinstance(value, str):
return value
dumped = json.dumps(value, default=self._default_json_dumper)
return json.loads(dumped)


class StringConverter(interfaces.Converter):
def convert(self, value):
return str(value)
Expand All @@ -44,12 +29,13 @@ class StandardConverter(interfaces.Factory):
converters could handle a particular type.
"""

def create_response_body_converter(self, type_, *args, **kwargs):
if isinstance(type_, interfaces.Converter):
return type_
@staticmethod
def pass_through_converter(type_, *args, **kwargs):
return type_

def create_request_body_converter(self, type_, *args, **kwargs):
return Cast(type_, RequestBodyConverter()) # pragma: no cover
create_response_body_converter = (
create_request_body_converter
) = pass_through_converter

def create_string_converter(self, type_, *args, **kwargs):
return Cast(type_, StringConverter()) # pragma: no cover

0 comments on commit 6038716

Please sign in to comment.