diff --git a/adapters/fields.py b/adapters/fields.py index 727d40e..909a9da 100644 --- a/adapters/fields.py +++ b/adapters/fields.py @@ -1,8 +1,10 @@ # -*- coding: utf-8 -*- +from builtins import str import datetime import dateutil.parser from decimal import Decimal +import six from .base import BaseField from .utils import EMPTY_VALUES, undefined @@ -55,7 +57,7 @@ class DateField(BaseField): def prepare(self, data): if isinstance(data, datetime.date): return data - elif isinstance(data, str): + elif isinstance(data, six.string_types): return dateutil.parser.parse(data).date() else: raise ValueError("Invalid date argument") @@ -65,7 +67,7 @@ class DateTimeField(BaseField): def prepare(self, data): if isinstance(data, datetime.datetime): return data - elif isinstance(data, str): + elif isinstance(data, six.string_types): return dateutil.parser.parse(data) else: raise ValueError("Invalid date argument") @@ -94,7 +96,7 @@ class TimeField(BaseField): def prepare(self, data): if isinstance(data, datetime.time): return data - elif isinstance(data, str): + elif isinstance(data, six.string_types): return dateutil.parser.parse(data).timetz() else: raise ValueError("Invalid time argument") diff --git a/requirements.txt b/requirements.txt index 668f62e..e133ac8 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,3 @@ +future python-dateutil==2.6.0 +six diff --git a/setup.py b/setup.py index e4288d2..a8bbdb5 100644 --- a/setup.py +++ b/setup.py @@ -16,5 +16,9 @@ url='https://github.com/alexei/python-adapters', download_url='https://github.com/alexei/python-adapters/archive/2.0.1.tar.gz', # noqa keywords=['adapter pattern'], - install_requires=['python-dateutil>=2.6.0'], + install_requires=[ + 'future', + 'python-dateutil>=2.6.0', + 'six', + ], ) diff --git a/tests/test_fields.py b/tests/test_fields.py index d94152a..47a9d83 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -1,5 +1,7 @@ # -*- coding: utf-8 -*- +from __future__ import unicode_literals + import datetime from decimal import Decimal import unittest @@ -16,6 +18,11 @@ def test_char_field(self): expected = 'Los Angeles' self.assertEqual(actual, expected) + def test_unicode_field(self): + actual = adapters.CharField().adapt('Alexandru Mărășteanu') + expected = 'Alexandru Mărășteanu' + self.assertEqual(actual, expected) + def test_int_field(self): actual = adapters.IntField().adapt(123456) expected = 123456