Skip to content

Commit 8cb480e

Browse files
authored
Merge pull request #47 from alexei/hotfix-str
Fix issue with Unicode characters
2 parents c29f0c5 + 88e7f66 commit 8cb480e

File tree

4 files changed

+19
-4
lines changed

4 files changed

+19
-4
lines changed

adapters/fields.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# -*- coding: utf-8 -*-
22

3+
from builtins import str
34
import datetime
45
import dateutil.parser
56
from decimal import Decimal
7+
import six
68

79
from .base import BaseField
810
from .utils import EMPTY_VALUES, undefined
@@ -55,7 +57,7 @@ class DateField(BaseField):
5557
def prepare(self, data):
5658
if isinstance(data, datetime.date):
5759
return data
58-
elif isinstance(data, str):
60+
elif isinstance(data, six.string_types):
5961
return dateutil.parser.parse(data).date()
6062
else:
6163
raise ValueError("Invalid date argument")
@@ -65,7 +67,7 @@ class DateTimeField(BaseField):
6567
def prepare(self, data):
6668
if isinstance(data, datetime.datetime):
6769
return data
68-
elif isinstance(data, str):
70+
elif isinstance(data, six.string_types):
6971
return dateutil.parser.parse(data)
7072
else:
7173
raise ValueError("Invalid date argument")
@@ -94,7 +96,7 @@ class TimeField(BaseField):
9496
def prepare(self, data):
9597
if isinstance(data, datetime.time):
9698
return data
97-
elif isinstance(data, str):
99+
elif isinstance(data, six.string_types):
98100
return dateutil.parser.parse(data).timetz()
99101
else:
100102
raise ValueError("Invalid time argument")

requirements.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,3 @@
1+
future
12
python-dateutil==2.6.0
3+
six

setup.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,5 +16,9 @@
1616
url='https://github.com/alexei/python-adapters',
1717
download_url='https://github.com/alexei/python-adapters/archive/2.0.1.tar.gz', # noqa
1818
keywords=['adapter pattern'],
19-
install_requires=['python-dateutil>=2.6.0'],
19+
install_requires=[
20+
'future',
21+
'python-dateutil>=2.6.0',
22+
'six',
23+
],
2024
)

tests/test_fields.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
# -*- coding: utf-8 -*-
22

3+
from __future__ import unicode_literals
4+
35
import datetime
46
from decimal import Decimal
57
import unittest
@@ -16,6 +18,11 @@ def test_char_field(self):
1618
expected = 'Los Angeles'
1719
self.assertEqual(actual, expected)
1820

21+
def test_unicode_field(self):
22+
actual = adapters.CharField().adapt('Alexandru Mărășteanu')
23+
expected = 'Alexandru Mărășteanu'
24+
self.assertEqual(actual, expected)
25+
1926
def test_int_field(self):
2027
actual = adapters.IntField().adapt(123456)
2128
expected = 123456

0 commit comments

Comments
 (0)