This release collects fixes and improvements made over the past year, notably updating Windows dependencies to address DNS resolution and TLS connection issues.
Highlights of this release:
Binary wheels are now built for Windows systems.
setopt_string method added to Curl objects to permit setting string libcurl options that PycURL does not know about.
curl module can now be imported on Windows again.
OPENSOCKETFUNCTION callback is now invoked with the address as bytes on Python 3 as was documented.
Support for many libcurl options and constants was added.
Highlights of this release:
Socket callbacks are now fully implemented (
CURLOPT_CLOSESOCKETFUNCTION). Unfortunately this required changing
OPENSOCKETFUNCTION API once again in a backwards-incompatible manner. Support for
CLOSESOCKETFUNCTION was added in this release.
OPENSOCKETFUNCTION now supports Unix sockets.
Many other libcurl options and constants have been added to PycURL.
pycurl module initialization fails,
ImportError is raised instead of a fatal error terminating the process.
Usability of official Windows builds has been greatly improved:
PycURL 184.108.40.206 release did not include some of the test suite files in its manifest, leading to inability to run the test suite from the sdist tarball. This is now fixed thanks to Kamil Dudka.
Breaking change: DEBUGFUNCTION now takes bytes rather than (Unicode) string as its argument on Python 3.
Breaking change: CURLMOPT_* option constants moved from Easy to Multi class. They remain available in pycurl module.
SSL library detection improved again, –libcurl-dll option to setup.py added.
Options that required tuples now also accept lists, and vice versa.
This release fixes several memory leaks and one use after free issue.
Support for several new libcurl options and constants has been added.
This release primarily fixes build breakage against libcurl 7.19.4 through 7.21.1, such as versions shipped with CentOS.
PycURL C code has been significantly reorganized. Curl, CurlMulti and CurlShare classes are now properly exported, instead of factory functions for the respective objects. PycURL API has not changed.
Documentation has been transitioned to Sphinx and reorganized as well. Both docstrings and standalone documentation are now more informative.
Documentation is no longer included in released distributions. It can be generated from source by running
Tests are no longer included in released distributions. Instead the documentation and quickstart examples should be consulted for sample code.
Official Windows builds now are linked against zlib.
This release restores PycURL’s ability to automatically detect SSL library in use in most circumstances, thanks to Andjelko Horvat.
This release brings official Python 3 support to PycURL. Several GNU/Linux distributions provided Python 3 packages of PycURL previously; these packages were based on patches that were incomplete and in some places incorrect. Behavior of PycURL 7.19.3 and later may therefore differ from behavior of unofficial Python 3 packages of previous PycURL versions.
To summarize the behavior under Python 3, PycURL will accept
bytes where it accepted strings under Python 2, and will also accept Unicode strings containing ASCII codepoints only for convenience. Please refer to
file_ documentation for further details.
In the interests of compatibility, PycURL will also accept Unicode data on Python 2 given the same constraints as under Python 3.
While Unicode and file handling rules are expected to be sensible for all use cases, and retain backwards compatibility with previous PycURL versions, please treat behavior of this versions under Python 3 as experimental and subject to change.
Another potentially disruptive change in PycURL is the requirement for compile time and runtime SSL backends to match. Please see the readme for how to indicate the SSL backend to setup.py.
.. _Unicode: doc/unicode.html .. _file: doc/files.html