# Contributions to the urllib3 project ## Creator & Maintainer * Andrey Petrov ## Contributors In chronological order: * victor.vde * HTTPS patch (which inspired HTTPSConnectionPool) * erikcederstrand * NTLM-authenticated HTTPSConnectionPool * Basic-authenticated HTTPSConnectionPool (merged into make_headers) * niphlod * Client-verified SSL certificates for HTTPSConnectionPool * Response gzip and deflate encoding support * Better unicode support for filepost using StringIO buffers * btoconnor * Non-multipart encoding for POST requests * p.dobrogost * Code review, PEP8 compliance, benchmark fix * kennethreitz * Bugfixes, suggestions, Requests integration * georgemarshall * Bugfixes, Improvements and Test coverage * Thomas Kluyver * Python 3 support * brandon-rhodes * Design review, bugfixes, test coverage. * studer * IPv6 url support and test coverage * Shivaram Lingamneni * Support for explicitly closing pooled connections * hartator * Corrected multipart behavior for params * Thomas Weißschuh * Support for TLS SNI * API unification of ssl_version/cert_reqs * SSL fingerprint and alternative hostname verification * Bugfixes in testsuite * Sune Kirkeby * Optional SNI-support for Python 2 via PyOpenSSL. * Marc Schlaich * Various bugfixes and test improvements. * Bryce Boe * Correct six.moves conflict * Fixed pickle support of some exceptions * Boris Figovsky * Allowed to skip SSL hostname verification * Cory Benfield * Stream method for Response objects. * Return native strings in header values. * Generate 'Host' header when using proxies. * Jason Robinson * Add missing WrappedSocket.fileno method in PyOpenSSL * Audrius Butkevicius * Fixed a race condition * Stanislav Vitkovskiy * Added HTTPS (CONNECT) proxy support * Stephen Holsapple * Added abstraction for granular control of request fields * Martin von Gagern * Support for non-ASCII header parameters * Kevin Burke and Pavel Kirichenko * Support for separate connect and request timeouts * Peter Waller * HTTPResponse.tell() for determining amount received over the wire * Nipunn Koorapati * Ignore default ports when comparing hosts for equality * Danilo @dbrgn * Disabled TLS compression by default on Python 3.2+ * Disabled TLS compression in pyopenssl contrib module * Configurable cipher suites in pyopenssl contrib module * Roman Bogorodskiy * Account retries on proxy errors * Nicolas Delaby * Use the platform-specific CA certificate locations * Josh Schneier * HTTPHeaderDict and associated tests and docs * Bugfixes, docs, test coverage * Tahia Khan * Added Timeout examples in docs * Arthur Grunseid * source_address support and tests (with https://github.com/bui) * Ian Cordasco * PEP8 Compliance and Linting * Add ability to pass socket options to an HTTP Connection * Erik Tollerud * Support for standard library io module. * Krishna Prasad * Google App Engine documentation * Aaron Meurer * Added Url.url, which unparses a Url * Evgeny Kapun * Bugfixes * Benjamen Meyer * Security Warning Documentation update for proper capture * Shivan Sornarajah * Support for using ConnectionPool and PoolManager as context managers. * Alex Gaynor * Updates to the default SSL configuration * Tomas Tomecek * Implemented generator for getting chunks from chunked responses. * tlynn * Respect the warning preferences at import. * David D. Riddle * IPv6 bugfixes in testsuite * Jon Wayne Parrott * App Engine environment tests. * John Krauss * Clues to debugging problems with `cryptography` dependency in docs * Disassem * Fix pool-default headers not applying for url-encoded requests like GET. * James Atherfold * Bugfixes relating to cleanup of connections during errors. * Christian Pedersen * IPv6 HTTPS proxy bugfix * Jordan Moldow * Fix low-level exceptions leaking from ``HTTPResponse.stream()``. * Bugfix for ``ConnectionPool.urlopen(release_conn=False)``. * Creation of ``HTTPConnectionPool.ResponseCls``. * Predrag Gruevski * Made cert digest comparison use a constant-time algorithm. * Adam Talsma * Bugfix to ca_cert file paths. * Evan Meagher * Bugfix related to `memoryview` usage in PyOpenSSL adapter * John Vandenberg * Python 2.6 fixes; pyflakes and pep8 compliance * Andy Caldwell * Bugfix related to reusing connections in indeterminate states. * Ville Skyttä * Logging efficiency improvements, spelling fixes, Travis config. * Shige Takeda * Started Recipes documentation and added a recipe about handling concatenated gzip data in HTTP response * Jesse Shapiro * Various character-encoding fixes/tweaks * Disabling IPv6 DNS when IPv6 connections not supported * David Foster * Ensure order of request and response headers are preserved. * Jeremy Cline * Added connection pool keys by scheme * Aviv Palivoda * History list to Retry object. * HTTPResponse contains the last Retry object. * Nate Prewitt * Ensure timeouts are not booleans and greater than zero. * Fixed infinite loop in ``stream`` when amt=None. * Added length_remaining to determine remaining data to be read. * Added enforce_content_length to raise exception when incorrect content-length received. * Seth Michael Larson * Created selectors backport that supports PEP 475. * Alexandre Dias * Don't retry on timeout if method not in whitelist * Moinuddin Quadri * Lazily load idna package * Tom White * Made SOCKS handler differentiate socks5h from socks5 and socks4a from socks4. * Tim Burke * Stop buffering entire deflate-encoded responses. * Tuukka Mustonen * Add counter for status_forcelist retries. * Erik Rose * Bugfix to pyopenssl vendoring * [Your name or handle] <[email or website]> * [Brief summary of your changes]