diff --git a/requests/defaults.py b/requests/defaults.py index 1d6716df..424d3731 100644 --- a/requests/defaults.py +++ b/requests/defaults.py @@ -10,16 +10,13 @@ Configurations: :base_headers: Default HTTP headers. :verbose: Stream to write request logging to. -:timeout: Seconds until request timeout. -:max_redirects: Maximum number of redirects allowed within a request. -:decode_unicode: Decode unicode responses automatically? +:max_redirects: Maximum number of redirects allowed within a request.s :keep_alive: Reuse HTTP Connections? :max_retries: The number of times a request should be retried in the event of a connection failure. :danger_mode: If true, Requests will raise errors immediately. :safe_mode: If true, Requests will catch all errors. :pool_maxsize: The maximium size of an HTTP connection pool. :pool_connections: The number of active HTTP connection pools to use. - """ from . import __version__ @@ -35,7 +32,6 @@ defaults['base_headers'] = { defaults['verbose'] = None defaults['max_redirects'] = 30 -defaults['decode_unicode'] = True defaults['pool_connections'] = 10 defaults['pool_maxsize'] = 10 defaults['max_retries'] = 0 diff --git a/requests/models.py b/requests/models.py index 9e351600..4ef45da6 100644 --- a/requests/models.py +++ b/requests/models.py @@ -152,7 +152,7 @@ class Request(object): return '' % (self.method) - def _build_response(self, resp, is_error=False): + def _build_response(self, resp): """Build internal :class:`Response ` object from given response. """ @@ -191,10 +191,6 @@ class Request(object): # Save original response for later. response.raw = resp - - if is_error: - response.error = resp - response.url = self.full_url.decode('utf-8') return response @@ -611,7 +607,7 @@ class Response(object): return True - def iter_content(self, chunk_size=10 * 1024, decode_unicode=None): + def iter_content(self, chunk_size=10 * 1024, decode_unicode=False): """Iterates over the response data. This avoids reading the content at once into memory for large responses. The chunk size is the number of bytes it should read into memory. This is not necessarily the @@ -665,9 +661,6 @@ class Response(object): elif 'deflate' in self.headers.get('content-encoding', ''): gen = stream_decompress(gen, mode='deflate') - if decode_unicode is None: - decode_unicode = self.config.get('decode_unicode') - if decode_unicode: gen = stream_decode_response_unicode(gen, self) @@ -705,9 +698,7 @@ class Response(object): @property def content(self): - """Content of the response, in bytes or unicode - (if available). - """ + """Content of the response, in bytes.""" if self._content is None: # Read the contents. @@ -720,26 +711,29 @@ class Response(object): except AttributeError: self._content = None - content = self._content + self._content_consumed = True + return self._content - # Decode unicode content. - if self.config.get('decode_unicode'): - # Try charset from content-type + @property + def text(self): + """Content of the response, in unicode.""" - if self.encoding: - try: - content = unicode(content, self.encoding) - except UnicodeError: - pass + # Try charset from content-type + content = u'' - # Fall back: + if self.encoding: + try: + content = unicode(self.content, self.encoding) + except UnicodeError: + pass + + # Try to fall back: try: content = unicode(content, self.encoding, errors='replace') except TypeError: pass - self._content_consumed = True return content diff --git a/requests/utils.py b/requests/utils.py index c7ab0a4e..95dea4bb 100644 --- a/requests/utils.py +++ b/requests/utils.py @@ -276,6 +276,9 @@ def get_encoding_from_headers(headers): if 'charset' in params: return params['charset'].strip("'\"") + if 'text' in content_type: + return 'ISO-8859-1' + def unicode_from_html(content): """Attempts to decode an HTML string into unicode.