From 54ea67a8042b7b1af107f5eab3484fa2d0463737 Mon Sep 17 00:00:00 2001 From: "Eevee (Lexy Munroe)" Date: Wed, 4 Nov 2015 20:10:27 -0800 Subject: [PATCH] Fix `pokedex dump` under Python 2 AND 3, at the same time even --- pokedex/db/load.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pokedex/db/load.py b/pokedex/db/load.py index 805c4ac..7a195a0 100644 --- a/pokedex/db/load.py +++ b/pokedex/db/load.py @@ -402,9 +402,13 @@ def dump(session, tables=[], directory=None, verbose=False, langs=None): else: filename = '%s/%s.csv' % (directory, table_name) - writer = csv.writer(io.open(filename, 'wb'), lineterminator='\n') - - columns = [col.name.encode('utf8') for col in table.columns] + # CSV module only works with bytes on 2 and only works with text on 3! + if six.PY3: + writer = csv.writer(open(filename, 'w', newline=''), lineterminator='\n') + columns = [col.name for col in table.columns] + else: + writer = csv.writer(open(filename, 'wb'), lineterminator='\n') + columns = [col.name.encode('utf8') for col in table.columns] # For name tables, always dump rows for official languages, as well as # for those in `langs` if specified. @@ -442,7 +446,9 @@ def dump(session, tables=[], directory=None, verbose=False, langs=None): elif val == False: val = '0' else: - val = six.text_type(val).encode('utf-8') + val = six.text_type(val) + if not six.PY3: + val = val.encode('utf8') csvs.append(val)