PycURL Changelog

What's new in PycURL 7.19.5.1

Jan 14, 2015
  • Added CURLPROXY_SOCKS4A and CURLPROXY_SOCKS5_HOSTNAME.
  • setup.py now prints PycURL-specific option help when -h is used.
  • LibreSSL is now supported (patch by JiCiT.)
  • Fixed an oversight that broke PycURL building against libcurl 7.19.4 through 7.21.1. The bug was introduced in PycURL 7.19.5.
  • Tests are now included in source distributions again, thanks to
  • Added CURLOPT_MAIL_FROM and CURLOPT_MAIL_RCPT (libcurl 7.20.0+) and CURLOPT_MAIL_AUTH (libcurl 7.25.0+).

New in PycURL 7.19.5 (Jul 14, 2014)

  • 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 make docs.
  • Tests are no longer included in released distributions. Instead the documentation and quickstart examples should be consulted for sample code.

New in PycURL 7.19.3.1 (Apr 10, 2014)

  • Added --avoid-stdio setup.py option to avoid passing FILE pointers from Python to libcurl. Applies to Python 2 only.
  • Added CURLMOPT_CHUNK_LENGTH_PENALTY_SIZE, CURLMOPT_CONTENT_LENGTH_PENALTY_SIZE, CURLMOPT_MAX_HOST_CONNECTIONS CURLMOPT_MAX_PIPELINE_LENGTH, CURLMOPT_MAX_TOTAL_CONNECTIONS multi options (patch by Jakob Truelsen).
  • SSL detection logic changed to consult `curl-config --static-libs` even if `curl-config --libs` succeeded. This should achieve pre-7.19.3 behavior with respect to automatic SSL detection (patch by Andjelko Horvat).

New in PycURL 7.19.3 (Apr 10, 2014)

  • Added CURLOPT_NOPROXY.
  • Added CURLINFO_LOCAL_PORT, CURLINFO_PRIMARY_PORT and CURLINFO_LOCAL_IP (patch by Adam Jacob Muller).
  • When running on Python 2.x, for compatibility with Python 3.x, Unicode strings containing ASCII code points only are now accepted in setopt() calls.
  • PycURL now requires that compile time SSL backend used by libcurl is the same as the one used at runtime. setup.py supports --with-ssl, --with-gnutls and --with-nss options like libcurl does, to specify which backend libcurl uses. On some systems PycURL can automatically figure out libcurl's backend. If the backend is not one for which PycURL provides crypto locks (i.e., any of the other backends supported by libcurl), no runtime SSL backend check is performed.
  • Default PycURL user agent string is now built at runtime, and will include the user agent string of libcurl loaded at runtime rather than the one present at compile time.
  • PycURL will now use WSAduplicateSocket rather than dup on Windows to duplicate sockets obtained from OPENSOCKETFUNCTION. Using dup may have caused crashes, OPENSOCKETFUNCTION should now be usable on Windows.
  • A new script, winbuild.py, was added to build PycURL on Windows against Python 2.6, 2.7, 3.2 and 3.3.
  • Added CURL_LOCK_DATA_SSL_SESSION (patch by Tom Pierce).
  • Added E_OPERATION_TIMEDOUT (patch by Romuald Brunet).
  • setup.py now handles --help argument and will print PycURL-specific configuration options in addition to distutils help.
  • Windows build configuration has been redone: PYCURL_USE_LIBCURL_DLL #define is gone, use --use-libcurl-dll argument to setup.py to build against a libcurl DLL. CURL_STATICLIB is now #defined only when --use-libcurl-dll is not given to setup.py, and PycURL is built against libcurl statically. --libcurl-lib-name option can be used to override libcurl import library name.
  • Added CURLAUTH_DIGEST_IE as pycurl.HTTPAUTH_DIGEST_IE.
  • Added CURLOPT_POSTREDIR option and CURL_REDIR_POST_301, CURL_REDIR_POST_302, CURL_REDIR_POST_303 and CURL_REDIR_POST_ALL constants. CURL_REDIR_POST_303 requires libcurl 7.26.0 or higher, all others require libcurl 7.19.1 or higher.
  • PycURL now supports Python 3.1 through 3.3. Python 3.0 might work but it appears to ship with broken distutils, making virtualenv not function on it.
  • PycURL multi objects now have the multi constants defined on them. Previously the constants were only available on pycurl module. The new behavior matches that of curl and share objects.
  • PycURL share objects can now be closed via the close() method.
  • PycURL will no longer call `curl-config --static-libs` if `curl-config --libs` succeeds and returns output. Systems on which neither `curl-config --libs` nor `curl-config --static-libs` do the right thing should provide a `curl-config` wrapper that is sane.
  • Added CURLFORM_BUFFER and CURLFORM_BUFFERPTR.
  • pycurl.version and user agent string now include both PycURL version and libcurl version as separate items.
  • Added CURLOPT_DNS_SERVERS.
  • PycURL can now be dynamically linked against libcurl on Windows if PYCURL_USE_LIBCURL_DLL is #defined during compilation.
  • Breaking change: opensocket callback now takes an additional (address, port) tuple argument. Existing callbacks will need to be modified to accept this new argument.

New in PycURL 7.19.0 (Mar 19, 2009)

  • Added CURLFILE, ADDRESS_SCOPE and ISSUERCERT options, as well as the APPCONNECT_TIME info.
  • Added PRIMARY_IP info
  • Added support for curl_easy_reset through a new 'reset' method on curl objects
  • Added support for OPENSOCKET callbacks. See 'tests/test_opensocket.py' for exampleusage.

New in PycURL 7.16.4 (Jan 22, 2009)

  • Allow any callable object as the callback function. This change comes handy when you would like to use objects which are callable but are not functions or methods, for example those objects created by the functions in the functools module (patch by Daniel Pe√±a Arteaga ).
  • Added NEW_DIRECTORY_PERMS and NEW_FILE_PERMS options.