comparison env/lib/python3.9/site-packages/urllib3-1.26.4.dist-info/METADATA @ 0:4f3585e2f14b draft default tip

"planemo upload commit 60cee0fc7c0cda8592644e1aad72851dec82c959"
author shellac
date Mon, 22 Mar 2021 18:12:50 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4f3585e2f14b
1 Metadata-Version: 2.0
2 Name: urllib3
3 Version: 1.26.4
4 Summary: HTTP library with thread-safe connection pooling, file post, and more.
5 Home-page: https://urllib3.readthedocs.io/
6 Author: Andrey Petrov
7 Author-email: andrey.petrov@shazow.net
8 License: MIT
9 Project-URL: Documentation, https://urllib3.readthedocs.io/
10 Project-URL: Code, https://github.com/urllib3/urllib3
11 Project-URL: Issue tracker, https://github.com/urllib3/urllib3/issues
12 Keywords: urllib httplib threadsafe filepost http https ssl pooling
13 Platform: UNKNOWN
14 Classifier: Environment :: Web Environment
15 Classifier: Intended Audience :: Developers
16 Classifier: License :: OSI Approved :: MIT License
17 Classifier: Operating System :: OS Independent
18 Classifier: Programming Language :: Python
19 Classifier: Programming Language :: Python :: 2
20 Classifier: Programming Language :: Python :: 2.7
21 Classifier: Programming Language :: Python :: 3
22 Classifier: Programming Language :: Python :: 3.5
23 Classifier: Programming Language :: Python :: 3.6
24 Classifier: Programming Language :: Python :: 3.7
25 Classifier: Programming Language :: Python :: 3.8
26 Classifier: Programming Language :: Python :: 3.9
27 Classifier: Programming Language :: Python :: Implementation :: CPython
28 Classifier: Programming Language :: Python :: Implementation :: PyPy
29 Classifier: Topic :: Internet :: WWW/HTTP
30 Classifier: Topic :: Software Development :: Libraries
31 Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <4
32 Description-Content-Type: text/x-rst
33 Provides-Extra: secure
34 Provides-Extra: socks
35 Provides-Extra: brotli
36 Requires-Dist: pyOpenSSL>=0.14; extra == 'secure'
37 Requires-Dist: cryptography>=1.3.4; extra == 'secure'
38 Requires-Dist: idna>=2.0.0; extra == 'secure'
39 Requires-Dist: certifi; extra == 'secure'
40 Requires-Dist: ipaddress; python_version=="2.7" and extra == 'secure'
41 Requires-Dist: PySocks>=1.5.6,<2.0,!=1.5.7; extra == 'socks'
42 Requires-Dist: brotlipy>=0.6.0; extra == 'brotli'
43
44
45 urllib3 is a powerful, *user-friendly* HTTP client for Python. Much of the
46 Python ecosystem already uses urllib3 and you should too.
47 urllib3 brings many critical features that are missing from the Python
48 standard libraries:
49
50 - Thread safety.
51 - Connection pooling.
52 - Client-side SSL/TLS verification.
53 - File uploads with multipart encoding.
54 - Helpers for retrying requests and dealing with HTTP redirects.
55 - Support for gzip, deflate, and brotli encoding.
56 - Proxy support for HTTP and SOCKS.
57 - 100% test coverage.
58
59 urllib3 is powerful and easy to use:
60
61 .. code-block:: python
62
63 >>> import urllib3
64 >>> http = urllib3.PoolManager()
65 >>> r = http.request('GET', 'http://httpbin.org/robots.txt')
66 >>> r.status
67 200
68 >>> r.data
69 'User-agent: *\nDisallow: /deny\n'
70
71
72 Installing
73 ----------
74
75 urllib3 can be installed with `pip <https://pip.pypa.io>`_::
76
77 $ python -m pip install urllib3
78
79 Alternatively, you can grab the latest source code from `GitHub <https://github.com/urllib3/urllib3>`_::
80
81 $ git clone git://github.com/urllib3/urllib3.git
82 $ python setup.py install
83
84
85 Documentation
86 -------------
87
88 urllib3 has usage and reference documentation at `urllib3.readthedocs.io <https://urllib3.readthedocs.io>`_.
89
90
91 Contributing
92 ------------
93
94 urllib3 happily accepts contributions. Please see our
95 `contributing documentation <https://urllib3.readthedocs.io/en/latest/contributing.html>`_
96 for some tips on getting started.
97
98
99 Security Disclosures
100 --------------------
101
102 To report a security vulnerability, please use the
103 `Tidelift security contact <https://tidelift.com/security>`_.
104 Tidelift will coordinate the fix and disclosure with maintainers.
105
106
107 Maintainers
108 -----------
109
110 - `@sethmlarson <https://github.com/sethmlarson>`__ (Seth M. Larson)
111 - `@pquentin <https://github.com/pquentin>`__ (Quentin Pradet)
112 - `@theacodes <https://github.com/theacodes>`__ (Thea Flowers)
113 - `@haikuginger <https://github.com/haikuginger>`__ (Jess Shapiro)
114 - `@lukasa <https://github.com/lukasa>`__ (Cory Benfield)
115 - `@sigmavirus24 <https://github.com/sigmavirus24>`__ (Ian Stapleton Cordasco)
116 - `@shazow <https://github.com/shazow>`__ (Andrey Petrov)
117
118 👋
119
120
121 Sponsorship
122 -----------
123
124 If your company benefits from this library, please consider `sponsoring its
125 development <https://urllib3.readthedocs.io/en/latest/sponsors.html>`_.
126
127
128 For Enterprise
129 --------------
130
131 .. |tideliftlogo| image:: https://nedbatchelder.com/pix/Tidelift_Logos_RGB_Tidelift_Shorthand_On-White_small.png
132 :width: 75
133 :alt: Tidelift
134
135 .. list-table::
136 :widths: 10 100
137
138 * - |tideliftlogo|
139 - Professional support for urllib3 is available as part of the `Tidelift
140 Subscription`_. Tidelift gives software development teams a single source for
141 purchasing and maintaining their software, with professional grade assurances
142 from the experts who know it best, while seamlessly integrating with existing
143 tools.
144
145 .. _Tidelift Subscription: https://tidelift.com/subscription/pkg/pypi-urllib3?utm_source=pypi-urllib3&utm_medium=referral&utm_campaign=readme
146
147
148 Changes
149 =======
150
151 1.26.4 (2021-03-15)
152 -------------------
153
154 * Changed behavior of the default ``SSLContext`` when connecting to HTTPS proxy
155 during HTTPS requests. The default ``SSLContext`` now sets ``check_hostname=True``.
156
157
158 1.26.3 (2021-01-26)
159 -------------------
160
161 * Fixed bytes and string comparison issue with headers (Pull #2141)
162
163 * Changed ``ProxySchemeUnknown`` error message to be
164 more actionable if the user supplies a proxy URL without
165 a scheme. (Pull #2107)
166
167
168 1.26.2 (2020-11-12)
169 -------------------
170
171 * Fixed an issue where ``wrap_socket`` and ``CERT_REQUIRED`` wouldn't
172 be imported properly on Python 2.7.8 and earlier (Pull #2052)
173
174
175 1.26.1 (2020-11-11)
176 -------------------
177
178 * Fixed an issue where two ``User-Agent`` headers would be sent if a
179 ``User-Agent`` header key is passed as ``bytes`` (Pull #2047)
180
181
182 1.26.0 (2020-11-10)
183 -------------------
184
185 * **NOTE: urllib3 v2.0 will drop support for Python 2**.
186 `Read more in the v2.0 Roadmap <https://urllib3.readthedocs.io/en/latest/v2-roadmap.html>`_.
187
188 * Added support for HTTPS proxies contacting HTTPS servers (Pull #1923, Pull #1806)
189
190 * Deprecated negotiating TLSv1 and TLSv1.1 by default. Users that
191 still wish to use TLS earlier than 1.2 without a deprecation warning
192 should opt-in explicitly by setting ``ssl_version=ssl.PROTOCOL_TLSv1_1`` (Pull #2002)
193 **Starting in urllib3 v2.0: Connections that receive a ``DeprecationWarning`` will fail**
194
195 * Deprecated ``Retry`` options ``Retry.DEFAULT_METHOD_WHITELIST``, ``Retry.DEFAULT_REDIRECT_HEADERS_BLACKLIST``
196 and ``Retry(method_whitelist=...)`` in favor of ``Retry.DEFAULT_ALLOWED_METHODS``,
197 ``Retry.DEFAULT_REMOVE_HEADERS_ON_REDIRECT``, and ``Retry(allowed_methods=...)``
198 (Pull #2000) **Starting in urllib3 v2.0: Deprecated options will be removed**
199
200 * Added default ``User-Agent`` header to every request (Pull #1750)
201
202 * Added ``urllib3.util.SKIP_HEADER`` for skipping ``User-Agent``, ``Accept-Encoding``,
203 and ``Host`` headers from being automatically emitted with requests (Pull #2018)
204
205 * Collapse ``transfer-encoding: chunked`` request data and framing into
206 the same ``socket.send()`` call (Pull #1906)
207
208 * Send ``http/1.1`` ALPN identifier with every TLS handshake by default (Pull #1894)
209
210 * Properly terminate SecureTransport connections when CA verification fails (Pull #1977)
211
212 * Don't emit an ``SNIMissingWarning`` when passing ``server_hostname=None``
213 to SecureTransport (Pull #1903)
214
215 * Disabled requesting TLSv1.2 session tickets as they weren't being used by urllib3 (Pull #1970)
216
217 * Suppress ``BrokenPipeError`` when writing request body after the server
218 has closed the socket (Pull #1524)
219
220 * Wrap ``ssl.SSLError`` that can be raised from reading a socket (e.g. "bad MAC")
221 into an ``urllib3.exceptions.SSLError`` (Pull #1939)
222
223
224 1.25.11 (2020-10-19)
225 --------------------
226
227 * Fix retry backoff time parsed from ``Retry-After`` header when given
228 in the HTTP date format. The HTTP date was parsed as the local timezone
229 rather than accounting for the timezone in the HTTP date (typically
230 UTC) (Pull #1932, Pull #1935, Pull #1938, Pull #1949)
231
232 * Fix issue where an error would be raised when the ``SSLKEYLOGFILE``
233 environment variable was set to the empty string. Now ``SSLContext.keylog_file``
234 is not set in this situation (Pull #2016)
235
236
237 1.25.10 (2020-07-22)
238 --------------------
239
240 * Added support for ``SSLKEYLOGFILE`` environment variable for
241 logging TLS session keys with use with programs like
242 Wireshark for decrypting captured web traffic (Pull #1867)
243
244 * Fixed loading of SecureTransport libraries on macOS Big Sur
245 due to the new dynamic linker cache (Pull #1905)
246
247 * Collapse chunked request bodies data and framing into one
248 call to ``send()`` to reduce the number of TCP packets by 2-4x (Pull #1906)
249
250 * Don't insert ``None`` into ``ConnectionPool`` if the pool
251 was empty when requesting a connection (Pull #1866)
252
253 * Avoid ``hasattr`` call in ``BrotliDecoder.decompress()`` (Pull #1858)
254
255
256 1.25.9 (2020-04-16)
257 -------------------
258
259 * Added ``InvalidProxyConfigurationWarning`` which is raised when
260 erroneously specifying an HTTPS proxy URL. urllib3 doesn't currently
261 support connecting to HTTPS proxies but will soon be able to
262 and we would like users to migrate properly without much breakage.
263
264 See `this GitHub issue <https://github.com/urllib3/urllib3/issues/1850>`_
265 for more information on how to fix your proxy config. (Pull #1851)
266
267 * Drain connection after ``PoolManager`` redirect (Pull #1817)
268
269 * Ensure ``load_verify_locations`` raises ``SSLError`` for all backends (Pull #1812)
270
271 * Rename ``VerifiedHTTPSConnection`` to ``HTTPSConnection`` (Pull #1805)
272
273 * Allow the CA certificate data to be passed as a string (Pull #1804)
274
275 * Raise ``ValueError`` if method contains control characters (Pull #1800)
276
277 * Add ``__repr__`` to ``Timeout`` (Pull #1795)
278
279
280 1.25.8 (2020-01-20)
281 -------------------
282
283 * Drop support for EOL Python 3.4 (Pull #1774)
284
285 * Optimize _encode_invalid_chars (Pull #1787)
286
287
288 1.25.7 (2019-11-11)
289 -------------------
290
291 * Preserve ``chunked`` parameter on retries (Pull #1715, Pull #1734)
292
293 * Allow unset ``SERVER_SOFTWARE`` in App Engine (Pull #1704, Issue #1470)
294
295 * Fix issue where URL fragment was sent within the request target. (Pull #1732)
296
297 * Fix issue where an empty query section in a URL would fail to parse. (Pull #1732)
298
299 * Remove TLS 1.3 support in SecureTransport due to Apple removing support (Pull #1703)
300
301
302 1.25.6 (2019-09-24)
303 -------------------
304
305 * Fix issue where tilde (``~``) characters were incorrectly
306 percent-encoded in the path. (Pull #1692)
307
308
309 1.25.5 (2019-09-19)
310 -------------------
311
312 * Add mitigation for BPO-37428 affecting Python <3.7.4 and OpenSSL 1.1.1+ which
313 caused certificate verification to be enabled when using ``cert_reqs=CERT_NONE``.
314 (Issue #1682)
315
316
317 1.25.4 (2019-09-19)
318 -------------------
319
320 * Propagate Retry-After header settings to subsequent retries. (Pull #1607)
321
322 * Fix edge case where Retry-After header was still respected even when
323 explicitly opted out of. (Pull #1607)
324
325 * Remove dependency on ``rfc3986`` for URL parsing.
326
327 * Fix issue where URLs containing invalid characters within ``Url.auth`` would
328 raise an exception instead of percent-encoding those characters.
329
330 * Add support for ``HTTPResponse.auto_close = False`` which makes HTTP responses
331 work well with BufferedReaders and other ``io`` module features. (Pull #1652)
332
333 * Percent-encode invalid characters in URL for ``HTTPConnectionPool.request()`` (Pull #1673)
334
335
336 1.25.3 (2019-05-23)
337 -------------------
338
339 * Change ``HTTPSConnection`` to load system CA certificates
340 when ``ca_certs``, ``ca_cert_dir``, and ``ssl_context`` are
341 unspecified. (Pull #1608, Issue #1603)
342
343 * Upgrade bundled rfc3986 to v1.3.2. (Pull #1609, Issue #1605)
344
345
346 1.25.2 (2019-04-28)
347 -------------------
348
349 * Change ``is_ipaddress`` to not detect IPvFuture addresses. (Pull #1583)
350
351 * Change ``parse_url`` to percent-encode invalid characters within the
352 path, query, and target components. (Pull #1586)
353
354
355 1.25.1 (2019-04-24)
356 -------------------
357
358 * Add support for Google's ``Brotli`` package. (Pull #1572, Pull #1579)
359
360 * Upgrade bundled rfc3986 to v1.3.1 (Pull #1578)
361
362
363 1.25 (2019-04-22)
364 -----------------
365
366 * Require and validate certificates by default when using HTTPS (Pull #1507)
367
368 * Upgraded ``urllib3.utils.parse_url()`` to be RFC 3986 compliant. (Pull #1487)
369
370 * Added support for ``key_password`` for ``HTTPSConnectionPool`` to use
371 encrypted ``key_file`` without creating your own ``SSLContext`` object. (Pull #1489)
372
373 * Add TLSv1.3 support to CPython, pyOpenSSL, and SecureTransport ``SSLContext``
374 implementations. (Pull #1496)
375
376 * Switched the default multipart header encoder from RFC 2231 to HTML 5 working draft. (Issue #303, Pull #1492)
377
378 * Fixed issue where OpenSSL would block if an encrypted client private key was
379 given and no password was given. Instead an ``SSLError`` is raised. (Pull #1489)
380
381 * Added support for Brotli content encoding. It is enabled automatically if
382 ``brotlipy`` package is installed which can be requested with
383 ``urllib3[brotli]`` extra. (Pull #1532)
384
385 * Drop ciphers using DSS key exchange from default TLS cipher suites.
386 Improve default ciphers when using SecureTransport. (Pull #1496)
387
388 * Implemented a more efficient ``HTTPResponse.__iter__()`` method. (Issue #1483)
389
390 1.24.3 (2019-05-01)
391 -------------------
392
393 * Apply fix for CVE-2019-9740. (Pull #1591)
394
395 1.24.2 (2019-04-17)
396 -------------------
397
398 * Don't load system certificates by default when any other ``ca_certs``, ``ca_certs_dir`` or
399 ``ssl_context`` parameters are specified.
400
401 * Remove Authorization header regardless of case when redirecting to cross-site. (Issue #1510)
402
403 * Add support for IPv6 addresses in subjectAltName section of certificates. (Issue #1269)
404
405
406 1.24.1 (2018-11-02)
407 -------------------
408
409 * Remove quadratic behavior within ``GzipDecoder.decompress()`` (Issue #1467)
410
411 * Restored functionality of ``ciphers`` parameter for ``create_urllib3_context()``. (Issue #1462)
412
413
414 1.24 (2018-10-16)
415 -----------------
416
417 * Allow key_server_hostname to be specified when initializing a PoolManager to allow custom SNI to be overridden. (Pull #1449)
418
419 * Test against Python 3.7 on AppVeyor. (Pull #1453)
420
421 * Early-out ipv6 checks when running on App Engine. (Pull #1450)
422
423 * Change ambiguous description of backoff_factor (Pull #1436)
424
425 * Add ability to handle multiple Content-Encodings (Issue #1441 and Pull #1442)
426
427 * Skip DNS names that can't be idna-decoded when using pyOpenSSL (Issue #1405).
428
429 * Add a server_hostname parameter to HTTPSConnection which allows for
430 overriding the SNI hostname sent in the handshake. (Pull #1397)
431
432 * Drop support for EOL Python 2.6 (Pull #1429 and Pull #1430)
433
434 * Fixed bug where responses with header Content-Type: message/* erroneously
435 raised HeaderParsingError, resulting in a warning being logged. (Pull #1439)
436
437 * Move urllib3 to src/urllib3 (Pull #1409)
438
439
440 1.23 (2018-06-04)
441 -----------------
442
443 * Allow providing a list of headers to strip from requests when redirecting
444 to a different host. Defaults to the ``Authorization`` header. Different
445 headers can be set via ``Retry.remove_headers_on_redirect``. (Issue #1316)
446
447 * Fix ``util.selectors._fileobj_to_fd`` to accept ``long`` (Issue #1247).
448
449 * Dropped Python 3.3 support. (Pull #1242)
450
451 * Put the connection back in the pool when calling stream() or read_chunked() on
452 a chunked HEAD response. (Issue #1234)
453
454 * Fixed pyOpenSSL-specific ssl client authentication issue when clients
455 attempted to auth via certificate + chain (Issue #1060)
456
457 * Add the port to the connectionpool connect print (Pull #1251)
458
459 * Don't use the ``uuid`` module to create multipart data boundaries. (Pull #1380)
460
461 * ``read_chunked()`` on a closed response returns no chunks. (Issue #1088)
462
463 * Add Python 2.6 support to ``contrib.securetransport`` (Pull #1359)
464
465 * Added support for auth info in url for SOCKS proxy (Pull #1363)
466
467
468 1.22 (2017-07-20)
469 -----------------
470
471 * Fixed missing brackets in ``HTTP CONNECT`` when connecting to IPv6 address via
472 IPv6 proxy. (Issue #1222)
473
474 * Made the connection pool retry on ``SSLError``. The original ``SSLError``
475 is available on ``MaxRetryError.reason``. (Issue #1112)
476
477 * Drain and release connection before recursing on retry/redirect. Fixes
478 deadlocks with a blocking connectionpool. (Issue #1167)
479
480 * Fixed compatibility for cookiejar. (Issue #1229)
481
482 * pyopenssl: Use vendored version of ``six``. (Issue #1231)
483
484
485 1.21.1 (2017-05-02)
486 -------------------
487
488 * Fixed SecureTransport issue that would cause long delays in response body
489 delivery. (Pull #1154)
490
491 * Fixed regression in 1.21 that threw exceptions when users passed the
492 ``socket_options`` flag to the ``PoolManager``. (Issue #1165)
493
494 * Fixed regression in 1.21 that threw exceptions when users passed the
495 ``assert_hostname`` or ``assert_fingerprint`` flag to the ``PoolManager``.
496 (Pull #1157)
497
498
499 1.21 (2017-04-25)
500 -----------------
501
502 * Improved performance of certain selector system calls on Python 3.5 and
503 later. (Pull #1095)
504
505 * Resolved issue where the PyOpenSSL backend would not wrap SysCallError
506 exceptions appropriately when sending data. (Pull #1125)
507
508 * Selectors now detects a monkey-patched select module after import for modules
509 that patch the select module like eventlet, greenlet. (Pull #1128)
510
511 * Reduced memory consumption when streaming zlib-compressed responses
512 (as opposed to raw deflate streams). (Pull #1129)
513
514 * Connection pools now use the entire request context when constructing the
515 pool key. (Pull #1016)
516
517 * ``PoolManager.connection_from_*`` methods now accept a new keyword argument,
518 ``pool_kwargs``, which are merged with the existing ``connection_pool_kw``.
519 (Pull #1016)
520
521 * Add retry counter for ``status_forcelist``. (Issue #1147)
522
523 * Added ``contrib`` module for using SecureTransport on macOS:
524 ``urllib3.contrib.securetransport``. (Pull #1122)
525
526 * urllib3 now only normalizes the case of ``http://`` and ``https://`` schemes:
527 for schemes it does not recognise, it assumes they are case-sensitive and
528 leaves them unchanged.
529 (Issue #1080)
530
531
532 1.20 (2017-01-19)
533 -----------------
534
535 * Added support for waiting for I/O using selectors other than select,
536 improving urllib3's behaviour with large numbers of concurrent connections.
537 (Pull #1001)
538
539 * Updated the date for the system clock check. (Issue #1005)
540
541 * ConnectionPools now correctly consider hostnames to be case-insensitive.
542 (Issue #1032)
543
544 * Outdated versions of PyOpenSSL now cause the PyOpenSSL contrib module
545 to fail when it is injected, rather than at first use. (Pull #1063)
546
547 * Outdated versions of cryptography now cause the PyOpenSSL contrib module
548 to fail when it is injected, rather than at first use. (Issue #1044)
549
550 * Automatically attempt to rewind a file-like body object when a request is
551 retried or redirected. (Pull #1039)
552
553 * Fix some bugs that occur when modules incautiously patch the queue module.
554 (Pull #1061)
555
556 * Prevent retries from occurring on read timeouts for which the request method
557 was not in the method whitelist. (Issue #1059)
558
559 * Changed the PyOpenSSL contrib module to lazily load idna to avoid
560 unnecessarily bloating the memory of programs that don't need it. (Pull
561 #1076)
562
563 * Add support for IPv6 literals with zone identifiers. (Pull #1013)
564
565 * Added support for socks5h:// and socks4a:// schemes when working with SOCKS
566 proxies, and controlled remote DNS appropriately. (Issue #1035)
567
568
569 1.19.1 (2016-11-16)
570 -------------------
571
572 * Fixed AppEngine import that didn't function on Python 3.5. (Pull #1025)
573
574
575 1.19 (2016-11-03)
576 -----------------
577
578 * urllib3 now respects Retry-After headers on 413, 429, and 503 responses when
579 using the default retry logic. (Pull #955)
580
581 * Remove markers from setup.py to assist ancient setuptools versions. (Issue
582 #986)
583
584 * Disallow superscripts and other integerish things in URL ports. (Issue #989)
585
586 * Allow urllib3's HTTPResponse.stream() method to continue to work with
587 non-httplib underlying FPs. (Pull #990)
588
589 * Empty filenames in multipart headers are now emitted as such, rather than
590 being suppressed. (Issue #1015)
591
592 * Prefer user-supplied Host headers on chunked uploads. (Issue #1009)
593
594
595 1.18.1 (2016-10-27)
596 -------------------
597
598 * CVE-2016-9015. Users who are using urllib3 version 1.17 or 1.18 along with
599 PyOpenSSL injection and OpenSSL 1.1.0 *must* upgrade to this version. This
600 release fixes a vulnerability whereby urllib3 in the above configuration
601 would silently fail to validate TLS certificates due to erroneously setting
602 invalid flags in OpenSSL's ``SSL_CTX_set_verify`` function. These erroneous
603 flags do not cause a problem in OpenSSL versions before 1.1.0, which
604 interprets the presence of any flag as requesting certificate validation.
605
606 There is no PR for this patch, as it was prepared for simultaneous disclosure
607 and release. The master branch received the same fix in Pull #1010.
608
609
610 1.18 (2016-09-26)
611 -----------------
612
613 * Fixed incorrect message for IncompleteRead exception. (Pull #973)
614
615 * Accept ``iPAddress`` subject alternative name fields in TLS certificates.
616 (Issue #258)
617
618 * Fixed consistency of ``HTTPResponse.closed`` between Python 2 and 3.
619 (Issue #977)
620
621 * Fixed handling of wildcard certificates when using PyOpenSSL. (Issue #979)
622
623
624 1.17 (2016-09-06)
625 -----------------
626
627 * Accept ``SSLContext`` objects for use in SSL/TLS negotiation. (Issue #835)
628
629 * ConnectionPool debug log now includes scheme, host, and port. (Issue #897)
630
631 * Substantially refactored documentation. (Issue #887)
632
633 * Used URLFetch default timeout on AppEngine, rather than hardcoding our own.
634 (Issue #858)
635
636 * Normalize the scheme and host in the URL parser (Issue #833)
637
638 * ``HTTPResponse`` contains the last ``Retry`` object, which now also
639 contains retries history. (Issue #848)
640
641 * Timeout can no longer be set as boolean, and must be greater than zero.
642 (Pull #924)
643
644 * Removed pyasn1 and ndg-httpsclient from dependencies used for PyOpenSSL. We
645 now use cryptography and idna, both of which are already dependencies of
646 PyOpenSSL. (Pull #930)
647
648 * Fixed infinite loop in ``stream`` when amt=None. (Issue #928)
649
650 * Try to use the operating system's certificates when we are using an
651 ``SSLContext``. (Pull #941)
652
653 * Updated cipher suite list to allow ChaCha20+Poly1305. AES-GCM is preferred to
654 ChaCha20, but ChaCha20 is then preferred to everything else. (Pull #947)
655
656 * Updated cipher suite list to remove 3DES-based cipher suites. (Pull #958)
657
658 * Removed the cipher suite fallback to allow HIGH ciphers. (Pull #958)
659
660 * Implemented ``length_remaining`` to determine remaining content
661 to be read. (Pull #949)
662
663 * Implemented ``enforce_content_length`` to enable exceptions when
664 incomplete data chunks are received. (Pull #949)
665
666 * Dropped connection start, dropped connection reset, redirect, forced retry,
667 and new HTTPS connection log levels to DEBUG, from INFO. (Pull #967)
668
669
670 1.16 (2016-06-11)
671 -----------------
672
673 * Disable IPv6 DNS when IPv6 connections are not possible. (Issue #840)
674
675 * Provide ``key_fn_by_scheme`` pool keying mechanism that can be
676 overridden. (Issue #830)
677
678 * Normalize scheme and host to lowercase for pool keys, and include
679 ``source_address``. (Issue #830)
680
681 * Cleaner exception chain in Python 3 for ``_make_request``.
682 (Issue #861)
683
684 * Fixed installing ``urllib3[socks]`` extra. (Issue #864)
685
686 * Fixed signature of ``ConnectionPool.close`` so it can actually safely be
687 called by subclasses. (Issue #873)
688
689 * Retain ``release_conn`` state across retries. (Issues #651, #866)
690
691 * Add customizable ``HTTPConnectionPool.ResponseCls``, which defaults to
692 ``HTTPResponse`` but can be replaced with a subclass. (Issue #879)
693
694
695 1.15.1 (2016-04-11)
696 -------------------
697
698 * Fix packaging to include backports module. (Issue #841)
699
700
701 1.15 (2016-04-06)
702 -----------------
703
704 * Added Retry(raise_on_status=False). (Issue #720)
705
706 * Always use setuptools, no more distutils fallback. (Issue #785)
707
708 * Dropped support for Python 3.2. (Issue #786)
709
710 * Chunked transfer encoding when requesting with ``chunked=True``.
711 (Issue #790)
712
713 * Fixed regression with IPv6 port parsing. (Issue #801)
714
715 * Append SNIMissingWarning messages to allow users to specify it in
716 the PYTHONWARNINGS environment variable. (Issue #816)
717
718 * Handle unicode headers in Py2. (Issue #818)
719
720 * Log certificate when there is a hostname mismatch. (Issue #820)
721
722 * Preserve order of request/response headers. (Issue #821)
723
724
725 1.14 (2015-12-29)
726 -----------------
727
728 * contrib: SOCKS proxy support! (Issue #762)
729
730 * Fixed AppEngine handling of transfer-encoding header and bug
731 in Timeout defaults checking. (Issue #763)
732
733
734 1.13.1 (2015-12-18)
735 -------------------
736
737 * Fixed regression in IPv6 + SSL for match_hostname. (Issue #761)
738
739
740 1.13 (2015-12-14)
741 -----------------
742
743 * Fixed ``pip install urllib3[secure]`` on modern pip. (Issue #706)
744
745 * pyopenssl: Fixed SSL3_WRITE_PENDING error. (Issue #717)
746
747 * pyopenssl: Support for TLSv1.1 and TLSv1.2. (Issue #696)
748
749 * Close connections more defensively on exception. (Issue #734)
750
751 * Adjusted ``read_chunked`` to handle gzipped, chunk-encoded bodies without
752 repeatedly flushing the decoder, to function better on Jython. (Issue #743)
753
754 * Accept ``ca_cert_dir`` for SSL-related PoolManager configuration. (Issue #758)
755
756
757 1.12 (2015-09-03)
758 -----------------
759
760 * Rely on ``six`` for importing ``httplib`` to work around
761 conflicts with other Python 3 shims. (Issue #688)
762
763 * Add support for directories of certificate authorities, as supported by
764 OpenSSL. (Issue #701)
765
766 * New exception: ``NewConnectionError``, raised when we fail to establish
767 a new connection, usually ``ECONNREFUSED`` socket error.
768
769
770 1.11 (2015-07-21)
771 -----------------
772
773 * When ``ca_certs`` is given, ``cert_reqs`` defaults to
774 ``'CERT_REQUIRED'``. (Issue #650)
775
776 * ``pip install urllib3[secure]`` will install Certifi and
777 PyOpenSSL as dependencies. (Issue #678)
778
779 * Made ``HTTPHeaderDict`` usable as a ``headers`` input value
780 (Issues #632, #679)
781
782 * Added `urllib3.contrib.appengine <https://urllib3.readthedocs.io/en/latest/contrib.html#google-app-engine>`_
783 which has an ``AppEngineManager`` for using ``URLFetch`` in a
784 Google AppEngine environment. (Issue #664)
785
786 * Dev: Added test suite for AppEngine. (Issue #631)
787
788 * Fix performance regression when using PyOpenSSL. (Issue #626)
789
790 * Passing incorrect scheme (e.g. ``foo://``) will raise
791 ``ValueError`` instead of ``AssertionError`` (backwards
792 compatible for now, but please migrate). (Issue #640)
793
794 * Fix pools not getting replenished when an error occurs during a
795 request using ``release_conn=False``. (Issue #644)
796
797 * Fix pool-default headers not applying for url-encoded requests
798 like GET. (Issue #657)
799
800 * log.warning in Python 3 when headers are skipped due to parsing
801 errors. (Issue #642)
802
803 * Close and discard connections if an error occurs during read.
804 (Issue #660)
805
806 * Fix host parsing for IPv6 proxies. (Issue #668)
807
808 * Separate warning type SubjectAltNameWarning, now issued once
809 per host. (Issue #671)
810
811 * Fix ``httplib.IncompleteRead`` not getting converted to
812 ``ProtocolError`` when using ``HTTPResponse.stream()``
813 (Issue #674)
814
815 1.10.4 (2015-05-03)
816 -------------------
817
818 * Migrate tests to Tornado 4. (Issue #594)
819
820 * Append default warning configuration rather than overwrite.
821 (Issue #603)
822
823 * Fix streaming decoding regression. (Issue #595)
824
825 * Fix chunked requests losing state across keep-alive connections.
826 (Issue #599)
827
828 * Fix hanging when chunked HEAD response has no body. (Issue #605)
829
830
831 1.10.3 (2015-04-21)
832 -------------------
833
834 * Emit ``InsecurePlatformWarning`` when SSLContext object is missing.
835 (Issue #558)
836
837 * Fix regression of duplicate header keys being discarded.
838 (Issue #563)
839
840 * ``Response.stream()`` returns a generator for chunked responses.
841 (Issue #560)
842
843 * Set upper-bound timeout when waiting for a socket in PyOpenSSL.
844 (Issue #585)
845
846 * Work on platforms without `ssl` module for plain HTTP requests.
847 (Issue #587)
848
849 * Stop relying on the stdlib's default cipher list. (Issue #588)
850
851
852 1.10.2 (2015-02-25)
853 -------------------
854
855 * Fix file descriptor leakage on retries. (Issue #548)
856
857 * Removed RC4 from default cipher list. (Issue #551)
858
859 * Header performance improvements. (Issue #544)
860
861 * Fix PoolManager not obeying redirect retry settings. (Issue #553)
862
863
864 1.10.1 (2015-02-10)
865 -------------------
866
867 * Pools can be used as context managers. (Issue #545)
868
869 * Don't re-use connections which experienced an SSLError. (Issue #529)
870
871 * Don't fail when gzip decoding an empty stream. (Issue #535)
872
873 * Add sha256 support for fingerprint verification. (Issue #540)
874
875 * Fixed handling of header values containing commas. (Issue #533)
876
877
878 1.10 (2014-12-14)
879 -----------------
880
881 * Disabled SSLv3. (Issue #473)
882
883 * Add ``Url.url`` property to return the composed url string. (Issue #394)
884
885 * Fixed PyOpenSSL + gevent ``WantWriteError``. (Issue #412)
886
887 * ``MaxRetryError.reason`` will always be an exception, not string.
888 (Issue #481)
889
890 * Fixed SSL-related timeouts not being detected as timeouts. (Issue #492)
891
892 * Py3: Use ``ssl.create_default_context()`` when available. (Issue #473)
893
894 * Emit ``InsecureRequestWarning`` for *every* insecure HTTPS request.
895 (Issue #496)
896
897 * Emit ``SecurityWarning`` when certificate has no ``subjectAltName``.
898 (Issue #499)
899
900 * Close and discard sockets which experienced SSL-related errors.
901 (Issue #501)
902
903 * Handle ``body`` param in ``.request(...)``. (Issue #513)
904
905 * Respect timeout with HTTPS proxy. (Issue #505)
906
907 * PyOpenSSL: Handle ZeroReturnError exception. (Issue #520)
908
909
910 1.9.1 (2014-09-13)
911 ------------------
912
913 * Apply socket arguments before binding. (Issue #427)
914
915 * More careful checks if fp-like object is closed. (Issue #435)
916
917 * Fixed packaging issues of some development-related files not
918 getting included. (Issue #440)
919
920 * Allow performing *only* fingerprint verification. (Issue #444)
921
922 * Emit ``SecurityWarning`` if system clock is waaay off. (Issue #445)
923
924 * Fixed PyOpenSSL compatibility with PyPy. (Issue #450)
925
926 * Fixed ``BrokenPipeError`` and ``ConnectionError`` handling in Py3.
927 (Issue #443)
928
929
930
931 1.9 (2014-07-04)
932 ----------------
933
934 * Shuffled around development-related files. If you're maintaining a distro
935 package of urllib3, you may need to tweak things. (Issue #415)
936
937 * Unverified HTTPS requests will trigger a warning on the first request. See
938 our new `security documentation
939 <https://urllib3.readthedocs.io/en/latest/security.html>`_ for details.
940 (Issue #426)
941
942 * New retry logic and ``urllib3.util.retry.Retry`` configuration object.
943 (Issue #326)
944
945 * All raised exceptions should now wrapped in a
946 ``urllib3.exceptions.HTTPException``-extending exception. (Issue #326)
947
948 * All errors during a retry-enabled request should be wrapped in
949 ``urllib3.exceptions.MaxRetryError``, including timeout-related exceptions
950 which were previously exempt. Underlying error is accessible from the
951 ``.reason`` property. (Issue #326)
952
953 * ``urllib3.exceptions.ConnectionError`` renamed to
954 ``urllib3.exceptions.ProtocolError``. (Issue #326)
955
956 * Errors during response read (such as IncompleteRead) are now wrapped in
957 ``urllib3.exceptions.ProtocolError``. (Issue #418)
958
959 * Requesting an empty host will raise ``urllib3.exceptions.LocationValueError``.
960 (Issue #417)
961
962 * Catch read timeouts over SSL connections as
963 ``urllib3.exceptions.ReadTimeoutError``. (Issue #419)
964
965 * Apply socket arguments before connecting. (Issue #427)
966
967
968 1.8.3 (2014-06-23)
969 ------------------
970
971 * Fix TLS verification when using a proxy in Python 3.4.1. (Issue #385)
972
973 * Add ``disable_cache`` option to ``urllib3.util.make_headers``. (Issue #393)
974
975 * Wrap ``socket.timeout`` exception with
976 ``urllib3.exceptions.ReadTimeoutError``. (Issue #399)
977
978 * Fixed proxy-related bug where connections were being reused incorrectly.
979 (Issues #366, #369)
980
981 * Added ``socket_options`` keyword parameter which allows to define
982 ``setsockopt`` configuration of new sockets. (Issue #397)
983
984 * Removed ``HTTPConnection.tcp_nodelay`` in favor of
985 ``HTTPConnection.default_socket_options``. (Issue #397)
986
987 * Fixed ``TypeError`` bug in Python 2.6.4. (Issue #411)
988
989
990 1.8.2 (2014-04-17)
991 ------------------
992
993 * Fix ``urllib3.util`` not being included in the package.
994
995
996 1.8.1 (2014-04-17)
997 ------------------
998
999 * Fix AppEngine bug of HTTPS requests going out as HTTP. (Issue #356)
1000
1001 * Don't install ``dummyserver`` into ``site-packages`` as it's only needed
1002 for the test suite. (Issue #362)
1003
1004 * Added support for specifying ``source_address``. (Issue #352)
1005
1006
1007 1.8 (2014-03-04)
1008 ----------------
1009
1010 * Improved url parsing in ``urllib3.util.parse_url`` (properly parse '@' in
1011 username, and blank ports like 'hostname:').
1012
1013 * New ``urllib3.connection`` module which contains all the HTTPConnection
1014 objects.
1015
1016 * Several ``urllib3.util.Timeout``-related fixes. Also changed constructor
1017 signature to a more sensible order. [Backwards incompatible]
1018 (Issues #252, #262, #263)
1019
1020 * Use ``backports.ssl_match_hostname`` if it's installed. (Issue #274)
1021
1022 * Added ``.tell()`` method to ``urllib3.response.HTTPResponse`` which
1023 returns the number of bytes read so far. (Issue #277)
1024
1025 * Support for platforms without threading. (Issue #289)
1026
1027 * Expand default-port comparison in ``HTTPConnectionPool.is_same_host``
1028 to allow a pool with no specified port to be considered equal to to an
1029 HTTP/HTTPS url with port 80/443 explicitly provided. (Issue #305)
1030
1031 * Improved default SSL/TLS settings to avoid vulnerabilities.
1032 (Issue #309)
1033
1034 * Fixed ``urllib3.poolmanager.ProxyManager`` not retrying on connect errors.
1035 (Issue #310)
1036
1037 * Disable Nagle's Algorithm on the socket for non-proxies. A subset of requests
1038 will send the entire HTTP request ~200 milliseconds faster; however, some of
1039 the resulting TCP packets will be smaller. (Issue #254)
1040
1041 * Increased maximum number of SubjectAltNames in ``urllib3.contrib.pyopenssl``
1042 from the default 64 to 1024 in a single certificate. (Issue #318)
1043
1044 * Headers are now passed and stored as a custom
1045 ``urllib3.collections_.HTTPHeaderDict`` object rather than a plain ``dict``.
1046 (Issue #329, #333)
1047
1048 * Headers no longer lose their case on Python 3. (Issue #236)
1049
1050 * ``urllib3.contrib.pyopenssl`` now uses the operating system's default CA
1051 certificates on inject. (Issue #332)
1052
1053 * Requests with ``retries=False`` will immediately raise any exceptions without
1054 wrapping them in ``MaxRetryError``. (Issue #348)
1055
1056 * Fixed open socket leak with SSL-related failures. (Issue #344, #348)
1057
1058
1059 1.7.1 (2013-09-25)
1060 ------------------
1061
1062 * Added granular timeout support with new ``urllib3.util.Timeout`` class.
1063 (Issue #231)
1064
1065 * Fixed Python 3.4 support. (Issue #238)
1066
1067
1068 1.7 (2013-08-14)
1069 ----------------
1070
1071 * More exceptions are now pickle-able, with tests. (Issue #174)
1072
1073 * Fixed redirecting with relative URLs in Location header. (Issue #178)
1074
1075 * Support for relative urls in ``Location: ...`` header. (Issue #179)
1076
1077 * ``urllib3.response.HTTPResponse`` now inherits from ``io.IOBase`` for bonus
1078 file-like functionality. (Issue #187)
1079
1080 * Passing ``assert_hostname=False`` when creating a HTTPSConnectionPool will
1081 skip hostname verification for SSL connections. (Issue #194)
1082
1083 * New method ``urllib3.response.HTTPResponse.stream(...)`` which acts as a
1084 generator wrapped around ``.read(...)``. (Issue #198)
1085
1086 * IPv6 url parsing enforces brackets around the hostname. (Issue #199)
1087
1088 * Fixed thread race condition in
1089 ``urllib3.poolmanager.PoolManager.connection_from_host(...)`` (Issue #204)
1090
1091 * ``ProxyManager`` requests now include non-default port in ``Host: ...``
1092 header. (Issue #217)
1093
1094 * Added HTTPS proxy support in ``ProxyManager``. (Issue #170 #139)
1095
1096 * New ``RequestField`` object can be passed to the ``fields=...`` param which
1097 can specify headers. (Issue #220)
1098
1099 * Raise ``urllib3.exceptions.ProxyError`` when connecting to proxy fails.
1100 (Issue #221)
1101
1102 * Use international headers when posting file names. (Issue #119)
1103
1104 * Improved IPv6 support. (Issue #203)
1105
1106
1107 1.6 (2013-04-25)
1108 ----------------
1109
1110 * Contrib: Optional SNI support for Py2 using PyOpenSSL. (Issue #156)
1111
1112 * ``ProxyManager`` automatically adds ``Host: ...`` header if not given.
1113
1114 * Improved SSL-related code. ``cert_req`` now optionally takes a string like
1115 "REQUIRED" or "NONE". Same with ``ssl_version`` takes strings like "SSLv23"
1116 The string values reflect the suffix of the respective constant variable.
1117 (Issue #130)
1118
1119 * Vendored ``socksipy`` now based on Anorov's fork which handles unexpectedly
1120 closed proxy connections and larger read buffers. (Issue #135)
1121
1122 * Ensure the connection is closed if no data is received, fixes connection leak
1123 on some platforms. (Issue #133)
1124
1125 * Added SNI support for SSL/TLS connections on Py32+. (Issue #89)
1126
1127 * Tests fixed to be compatible with Py26 again. (Issue #125)
1128
1129 * Added ability to choose SSL version by passing an ``ssl.PROTOCOL_*`` constant
1130 to the ``ssl_version`` parameter of ``HTTPSConnectionPool``. (Issue #109)
1131
1132 * Allow an explicit content type to be specified when encoding file fields.
1133 (Issue #126)
1134
1135 * Exceptions are now pickleable, with tests. (Issue #101)
1136
1137 * Fixed default headers not getting passed in some cases. (Issue #99)
1138
1139 * Treat "content-encoding" header value as case-insensitive, per RFC 2616
1140 Section 3.5. (Issue #110)
1141
1142 * "Connection Refused" SocketErrors will get retried rather than raised.
1143 (Issue #92)
1144
1145 * Updated vendored ``six``, no longer overrides the global ``six`` module
1146 namespace. (Issue #113)
1147
1148 * ``urllib3.exceptions.MaxRetryError`` contains a ``reason`` property holding
1149 the exception that prompted the final retry. If ``reason is None`` then it
1150 was due to a redirect. (Issue #92, #114)
1151
1152 * Fixed ``PoolManager.urlopen()`` from not redirecting more than once.
1153 (Issue #149)
1154
1155 * Don't assume ``Content-Type: text/plain`` for multi-part encoding parameters
1156 that are not files. (Issue #111)
1157
1158 * Pass `strict` param down to ``httplib.HTTPConnection``. (Issue #122)
1159
1160 * Added mechanism to verify SSL certificates by fingerprint (md5, sha1) or
1161 against an arbitrary hostname (when connecting by IP or for misconfigured
1162 servers). (Issue #140)
1163
1164 * Streaming decompression support. (Issue #159)
1165
1166
1167 1.5 (2012-08-02)
1168 ----------------
1169
1170 * Added ``urllib3.add_stderr_logger()`` for quickly enabling STDERR debug
1171 logging in urllib3.
1172
1173 * Native full URL parsing (including auth, path, query, fragment) available in
1174 ``urllib3.util.parse_url(url)``.
1175
1176 * Built-in redirect will switch method to 'GET' if status code is 303.
1177 (Issue #11)
1178
1179 * ``urllib3.PoolManager`` strips the scheme and host before sending the request
1180 uri. (Issue #8)
1181
1182 * New ``urllib3.exceptions.DecodeError`` exception for when automatic decoding,
1183 based on the Content-Type header, fails.
1184
1185 * Fixed bug with pool depletion and leaking connections (Issue #76). Added
1186 explicit connection closing on pool eviction. Added
1187 ``urllib3.PoolManager.clear()``.
1188
1189 * 99% -> 100% unit test coverage.
1190
1191
1192 1.4 (2012-06-16)
1193 ----------------
1194
1195 * Minor AppEngine-related fixes.
1196
1197 * Switched from ``mimetools.choose_boundary`` to ``uuid.uuid4()``.
1198
1199 * Improved url parsing. (Issue #73)
1200
1201 * IPv6 url support. (Issue #72)
1202
1203
1204 1.3 (2012-03-25)
1205 ----------------
1206
1207 * Removed pre-1.0 deprecated API.
1208
1209 * Refactored helpers into a ``urllib3.util`` submodule.
1210
1211 * Fixed multipart encoding to support list-of-tuples for keys with multiple
1212 values. (Issue #48)
1213
1214 * Fixed multiple Set-Cookie headers in response not getting merged properly in
1215 Python 3. (Issue #53)
1216
1217 * AppEngine support with Py27. (Issue #61)
1218
1219 * Minor ``encode_multipart_formdata`` fixes related to Python 3 strings vs
1220 bytes.
1221
1222
1223 1.2.2 (2012-02-06)
1224 ------------------
1225
1226 * Fixed packaging bug of not shipping ``test-requirements.txt``. (Issue #47)
1227
1228
1229 1.2.1 (2012-02-05)
1230 ------------------
1231
1232 * Fixed another bug related to when ``ssl`` module is not available. (Issue #41)
1233
1234 * Location parsing errors now raise ``urllib3.exceptions.LocationParseError``
1235 which inherits from ``ValueError``.
1236
1237
1238 1.2 (2012-01-29)
1239 ----------------
1240
1241 * Added Python 3 support (tested on 3.2.2)
1242
1243 * Dropped Python 2.5 support (tested on 2.6.7, 2.7.2)
1244
1245 * Use ``select.poll`` instead of ``select.select`` for platforms that support
1246 it.
1247
1248 * Use ``Queue.LifoQueue`` instead of ``Queue.Queue`` for more aggressive
1249 connection reusing. Configurable by overriding ``ConnectionPool.QueueCls``.
1250
1251 * Fixed ``ImportError`` during install when ``ssl`` module is not available.
1252 (Issue #41)
1253
1254 * Fixed ``PoolManager`` redirects between schemes (such as HTTP -> HTTPS) not
1255 completing properly. (Issue #28, uncovered by Issue #10 in v1.1)
1256
1257 * Ported ``dummyserver`` to use ``tornado`` instead of ``webob`` +
1258 ``eventlet``. Removed extraneous unsupported dummyserver testing backends.
1259 Added socket-level tests.
1260
1261 * More tests. Achievement Unlocked: 99% Coverage.
1262
1263
1264 1.1 (2012-01-07)
1265 ----------------
1266
1267 * Refactored ``dummyserver`` to its own root namespace module (used for
1268 testing).
1269
1270 * Added hostname verification for ``VerifiedHTTPSConnection`` by vendoring in
1271 Py32's ``ssl_match_hostname``. (Issue #25)
1272
1273 * Fixed cross-host HTTP redirects when using ``PoolManager``. (Issue #10)
1274
1275 * Fixed ``decode_content`` being ignored when set through ``urlopen``. (Issue
1276 #27)
1277
1278 * Fixed timeout-related bugs. (Issues #17, #23)
1279
1280
1281 1.0.2 (2011-11-04)
1282 ------------------
1283
1284 * Fixed typo in ``VerifiedHTTPSConnection`` which would only present as a bug if
1285 you're using the object manually. (Thanks pyos)
1286
1287 * Made RecentlyUsedContainer (and consequently PoolManager) more thread-safe by
1288 wrapping the access log in a mutex. (Thanks @christer)
1289
1290 * Made RecentlyUsedContainer more dict-like (corrected ``__delitem__`` and
1291 ``__getitem__`` behaviour), with tests. Shouldn't affect core urllib3 code.
1292
1293
1294 1.0.1 (2011-10-10)
1295 ------------------
1296
1297 * Fixed a bug where the same connection would get returned into the pool twice,
1298 causing extraneous "HttpConnectionPool is full" log warnings.
1299
1300
1301 1.0 (2011-10-08)
1302 ----------------
1303
1304 * Added ``PoolManager`` with LRU expiration of connections (tested and
1305 documented).
1306 * Added ``ProxyManager`` (needs tests, docs, and confirmation that it works
1307 with HTTPS proxies).
1308 * Added optional partial-read support for responses when
1309 ``preload_content=False``. You can now make requests and just read the headers
1310 without loading the content.
1311 * Made response decoding optional (default on, same as before).
1312 * Added optional explicit boundary string for ``encode_multipart_formdata``.
1313 * Convenience request methods are now inherited from ``RequestMethods``. Old
1314 helpers like ``get_url`` and ``post_url`` should be abandoned in favour of
1315 the new ``request(method, url, ...)``.
1316 * Refactored code to be even more decoupled, reusable, and extendable.
1317 * License header added to ``.py`` files.
1318 * Embiggened the documentation: Lots of Sphinx-friendly docstrings in the code
1319 and docs in ``docs/`` and on https://urllib3.readthedocs.io/.
1320 * Embettered all the things!
1321 * Started writing this file.
1322
1323
1324 0.4.1 (2011-07-17)
1325 ------------------
1326
1327 * Minor bug fixes, code cleanup.
1328
1329
1330 0.4 (2011-03-01)
1331 ----------------
1332
1333 * Better unicode support.
1334 * Added ``VerifiedHTTPSConnection``.
1335 * Added ``NTLMConnectionPool`` in contrib.
1336 * Minor improvements.
1337
1338
1339 0.3.1 (2010-07-13)
1340 ------------------
1341
1342 * Added ``assert_host_name`` optional parameter. Now compatible with proxies.
1343
1344
1345 0.3 (2009-12-10)
1346 ----------------
1347
1348 * Added HTTPS support.
1349 * Minor bug fixes.
1350 * Refactored, broken backwards compatibility with 0.2.
1351 * API to be treated as stable from this version forward.
1352
1353
1354 0.2 (2008-11-17)
1355 ----------------
1356
1357 * Added unit tests.
1358 * Bug fixes.
1359
1360
1361 0.1 (2008-11-16)
1362 ----------------
1363
1364 * First release.
1365
1366