From 3e60a9eb9c0321938cd9788e550532ba79c15592 Mon Sep 17 00:00:00 2001 From: Idan Gazit Date: Thu, 19 Apr 2012 09:18:26 +0300 Subject: [PATCH] Proper test for str vs unicode when preparing data In python 2.x, requests sets str = unicode in requests/compat.py. This causes isinstance(foo, str) to return True even if foo is a unicode string. --- requests/models.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/requests/models.py b/requests/models.py index 60f58d2a..2a9e3161 100644 --- a/requests/models.py +++ b/requests/models.py @@ -8,6 +8,7 @@ This module contains the primary objects that power Requests. """ import os +import types from datetime import datetime from .hooks import dispatch_hook, HOOKS @@ -329,8 +330,9 @@ class Request(object): result = [] for k, vs in list(data.items()): for v in isinstance(vs, list) and vs or [vs]: - result.append((k.encode('utf-8') if isinstance(k, str) else k, - v.encode('utf-8') if isinstance(v, str) else v)) + result.append( + (k.encode('utf-8') if isinstance(k, types.StringType) else k, + v.encode('utf-8') if isinstance(v, types.StringType) else v)) return result, urlencode(result, doseq=True) else: return data, data