1 Version 7.13.1 [requires libcurl-7.13.1 or better]
4 2005-03-04 Kjetil Jacobsen <kjetilja>
6 * Use METH_NOARGS where appropriate.
8 2005-03-03 Kjetil Jacobsen <kjetilja>
10 * Added support for CURLFORM API with HTTPPOST: Supports a
11 a tuple with pairs of options and values instead of just
12 supporting string contents. See tests/test_post2.py
13 for example usage. Options are FORM_CONTENTS, FORM_FILE and
14 FORM_CONTENTTYPE, corresponding to the CURLFORM_* options,
15 and values are strings.
17 2005-02-13 Markus F.X.J. Oberhumer <mfx>
19 * Read callbacks (pycurl.READFUNCTION) can now return
20 pycurl.READFUNC_ABORT to immediately abort the current transfer.
22 * The INFILESIZE, MAXFILESIZE, POSTFIELDSIZE and RESUME_FROM
23 options now automatically use the largefile version to handle
26 * Added missing pycurl.PORT constant.
32 2005-02-10 Kjetil Jacobsen <kjetilja>
34 * Added file_upload.py to examples, shows how to upload
37 * Added CURLOPT_IOCTLFUNCTION/DATA.
39 * Added options from libcurl 7.13.0: FTP_ACCOUNT, SOURCE_URL,
42 * Obsoleted options: SOURCE_HOST, SOURCE_PATH, SOURCE_PORT,
49 2004-12-22 Markus F.X.J. Oberhumer <mfx>
51 * Added CURLINFO_NUM_CONNECTS and CURLINFO_SSL_ENGINES.
53 * Added some other missing constants.
55 * Updated pycurl.version_info() to return a 12-tuple
62 2004-10-15 Kjetil Jacobsen <kjetilja>
64 * Added CURLOPT_FTPSSLAUTH (and CURLFTPAUTH_*).
66 * Added CURLINFO_OS_ERRNO.
68 2004-08-17 Kjetil Jacobsen <kjetilja>
70 * Use LONG_LONG instead of PY_LONG_LONG to make pycurl compile
71 on Python versions < 2.3 (fix from Domenico Andreoli
72 <cavok at libero.it>).
78 2004-08-02 Kjetil Jacobsen <kjetilja>
80 * Added INFOTYPE_SSL_DATA_IN/OUT.
82 2004-07-16 Markus F.X.J. Oberhumer <mfx>
84 * WARNING: removed deprecated PROXY_, TIMECOND_ and non-prefixed
85 INFOTYPE constant names. See ChangeLog entry 2003-06-10.
87 2004-06-21 Kjetil Jacobsen <kjetilja>
89 * Added test program for HTTP post using the read callback (see
90 tests/test_post3.py for details).
92 * Use the new CURL_READFUNC_ABORT return code where appropriate
93 to avoid hanging in perform() when read callbacks are used.
95 * Added support for libcurl 7.12.1 CURLOPT features:
96 SOURCE_HOST, SOURCE_USERPWD, SOURCE_PATH, SOURCE_PORT,
97 PASV_HOST, SOURCE_PREQUOTE, SOURCE_POSTQUOTE.
99 2004-06-08 Markus F.X.J. Oberhumer <mfx>
101 * Setting CURLOPT_POSTFIELDS now allows binary data and
102 automatically sets CURLOPT_POSTFIELDSIZE for you. If you really
103 want a different size you have to manually set POSTFIELDSIZE
104 after setting POSTFIELDS.
105 (Based on a patch by Martin Muenstermann).
107 2004-06-05 Markus F.X.J. Oberhumer <mfx>
109 * Added stricter checks within the callback handlers.
111 * Unify the behaviour of int and long parameters where appropriate.
117 2004-05-18 Kjetil Jacobsen <kjetilja>
119 * WARNING: To simplify code maintenance pycurl now requires
120 libcurl 7.11.2 and Python 2.2 or newer to work.
122 * GC support is now always enabled.
128 2004-04-30 Kjetil Jacobsen <kjetilja>
130 * Do not use the deprecated curl_formparse function.
131 API CHANGE: HTTPPOST now takes a list of tuples where each
132 tuple contains a form name and a form value, both strings
133 (see test/test_post2.py for example usage).
135 * Found a possible reference count bug in the multithreading
136 code which may have contributed to the long-standing GC
137 segfault which has haunted pycurl. Fingers crossed.
143 2004-04-21 Kjetil Jacobsen <kjetilja>
145 * Added support for libcurl 7.11.2 CURLOPT features:
148 2004-03-25 Kjetil Jacobsen <kjetilja>
150 * Store Python longs in off_t with PyLong_AsLongLong instead
151 of PyLong_AsLong. Should make the options which deal
152 with large files behave a little better. Note that this
153 requires the long long support in Python 2.2 or newer to
160 2004-03-16 Kjetil Jacobsen <kjetilja>
162 * WARNING: Removed support for the PASSWDFUNCTION callback, which
163 is no longer supported by libcurl.
165 2004-03-15 Kjetil Jacobsen <kjetilja>
167 * Added support for libcurl 7.11.1 CURLOPT features:
168 CURLOPT_POSTFIELDSIZE_LARGE.
174 2004-02-11 Kjetil Jacobsen <kjetilja>
176 * Added support for libcurl 7.11.0 CURLOPT features:
177 INFILESIZE_LARGE, RESUME_FROM_LARGE, MAXFILESIZE_LARGE
180 * Circular garbage collection support can now be enabled or
181 disabled by passing the '--use-gc=[1|0]' parameter to setup.py
182 when building pycurl.
184 * HTTP_VERSION options are known as CURL_HTTP_VERSION_NONE,
185 CURL_HTTP_VERSION_1_0, CURL_HTTP_VERSION_1_1 and
186 CURL_HTTP_VERSION_LAST.
188 2003-11-16 Markus F.X.J. Oberhumer <mfx>
190 * Added support for these new libcurl 7.11.0 features:
197 2003-11-04 Markus F.X.J. Oberhumer <mfx>
199 * Added support for these new libcurl 7.10.8 features:
200 CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPT_IPRESOLVE,
202 CURLINFO_HTTPAUTH_AVAIL, CURLINFO_PROXYAUTH_AVAIL,
203 CURL_IPRESOLVE_* constants.
205 * Added support for these new libcurl 7.10.7 features:
206 CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPT_PROXYAUTH,
207 CURLINFO_HTTP_CONNECTCODE.
210 2003-10-28 Kjetil Jacobsen <kjetilja>
212 * Added missing CURLOPT_ENCODING option (patch by Martijn
213 Boerwinkel <xim@xs4all.nl>)
219 2003-07-29 Markus F.X.J. Oberhumer <mfx>
221 * Started working on support for CURLOPT_SSL_CTX_FUNCTION and
222 CURLOPT_SSL_CTX_DATA (libcurl-7.10.6) - not yet finished.
224 2003-06-10 Markus F.X.J. Oberhumer <mfx>
226 * Added support for CURLOPT_HTTPAUTH (libcurl-7.10.6), including
227 the new HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_GSSNEGOTIATE
228 and HTTPAUTH_NTML constants.
230 * Some constants were renamed for consistency:
232 All curl_infotype constants are now prefixed with "INFOTYPE_",
233 all curl_proxytype constants are prefixed with "PROXYTYPE_" instead
234 of "PROXY_", and all curl_TimeCond constants are now prefixed
235 with "TIMECONDITION_" instead of "TIMECOND_".
237 (The old names are still available but will get removed
238 in a future release.)
240 * WARNING: Removed the deprecated pycurl.init() and pycurl.multi_init()
241 names - use pycurl.Curl() and pycurl.CurlMulti() instead.
243 * WARNING: Removed the deprecated Curl.cleanup() and
244 CurlMulti.cleanup() methods - use Curl.close() and
245 CurlMulti.close() instead.
251 2003-05-15 Markus F.X.J. Oberhumer <mfx>
253 * Added support for CURLOPT_FTP_USE_EPRT (libcurl-7.10.5).
255 * Documentation updates.
257 2003-05-07 Eric S. Raymond <esr@snark.thyrsus.com>
259 * Lifted all HTML docs to clean XHTML, verified by tidy.
261 2003-05-02 Markus F.X.J. Oberhumer <mfx>
263 * Fixed some `int' vs. `long' mismatches that affected 64-bit systems.
265 * Fixed wrong pycurl.CAPATH constant.
267 2003-05-01 Markus F.X.J. Oberhumer <mfx>
269 * Added new method Curl.errstr() which returns the internal
270 libcurl error buffer string of the handle.
276 2003-04-15 Markus F.X.J. Oberhumer <mfx>
278 * Allow compilation against the libcurl-7.10.3 release - some
279 recent Linux distributions (e.g. Mandrake 9.1) ship with 7.10.3,
280 and apart from the new CURLOPT_UNRESTRICTED_AUTH option there is
281 no need that we require libcurl-7.10.4.
287 2003-04-01 Kjetil Jacobsen <kjetilja>
289 * Markus added CURLOPT_UNRESTRICTED_AUTH (libcurl-7.10.4).
291 2003-02-25 Kjetil Jacobsen <kjetilja>
293 * Fixed some broken test code and removed the fileupload test
294 since it didn't work properly.
296 2003-01-28 Kjetil Jacobsen <kjetilja>
298 * Some documentation updates by Markus and me.
300 2003-01-22 Kjetil Jacobsen <kjetilja>
302 * API CHANGE: the CurlMulti.info_read() method now returns
303 a separate array with handles that failed. Each entry in this array
304 is a tuple with (curl object, error number, error message).
305 This addition makes it simpler to do error checking of individual
306 curl objects when using the multi interface.
312 2003-01-13 Kjetil Jacobsen <kjetilja>
314 * PycURL memory usage has been reduced.
316 2003-01-10 Kjetil Jacobsen <kjetilja>
318 * Added 'examples/retriever-multi.py' which shows how to retrieve
319 a set of URLs concurrently using the multi interface.
321 2003-01-09 Kjetil Jacobsen <kjetilja>
323 * Added support for CURLOPT_HTTP200ALIASES.
325 2002-11-22 Kjetil Jacobsen <kjetilja>
327 * Updated pycurl documentation in the 'doc' directory.
329 2002-11-21 Kjetil Jacobsen <kjetilja>
331 * Updated and improved 'examples/curl.py'.
333 * Added 'tests/test_multi6.py' which shows how to use the
334 info_read method with CurlMulti.
336 2002-11-19 Kjetil Jacobsen <kjetilja>
338 * Added new method CurlMulti.info_read().
344 2002-11-14 Kjetil Jacobsen <kjetilja>
346 * Free options set with setopt after cleanup is called, as cleanup
347 assumes that options are still valid when invoked. This fixes the
348 bug with COOKIEJAR reported by Bastiaan Naber
349 <bastiaan@ricardis.tudelft.nl>.
351 2002-11-06 Markus F.X.J. Oberhumer <mfx>
353 * Install documentation under /usr/share/doc instead of /usr/doc.
354 Also, start shipping the (unfinished) HTML docs and some
357 2002-10-30 Markus F.X.J. Oberhumer <mfx>
359 * API CHANGE: For integral values, Curl.getinfo() now returns a
360 Python-int instead of a Python-long.
366 2002-10-03 Markus F.X.J. Oberhumer <mfx>
368 * Added new module-level function version_info() from
375 2002-09-13 Kjetil Jacobsen <kjetilja>
377 * Added commandline options to setup.py for specifying the path to
378 'curl-config' (non-windows) and the curl installation directory
379 (windows). See the 'INSTALL' file for details.
381 * Added CURLOPT_ENCODING, CURLOPT_NOSIGNAL and CURLOPT_BUFFERSIZE
382 from libcurl-7.10 (by Markus Oberhumer).
388 2002-08-28 Kjetil Jacobsen <kjetilja>
390 * Added a simple web-browser example based on gtkhtml and pycurl.
391 See the file 'examples/gtkhtml_demo.py' for details. The example
392 requires a working installation of gnome-python with gtkhtml
393 bindings enabled (pass --with-gtkhtml to gnome-python configure).
395 2002-08-14 Kjetil Jacobsen <kjetilja>
397 * Added new method 'select' on CurlMulti objects. Example usage
398 in 'tests/test_multi5.py'. This method is just an optimization of
399 the combined use of fdset and select.
401 2002-08-12 Kjetil Jacobsen <kjetilja>
403 * Added support for curl_multi_fdset. See the file
404 'tests/test_multi4.py' for example usage. Contributed by Conrad
405 Steenberg <conrad@hep.caltech.edu>.
407 * perform() on multi objects now returns a tuple (result, number
408 of handles) like the libcurl interface does.
410 2002-08-08 Kjetil Jacobsen <kjetilja>
412 * Added the 'sfquery' script which retrieves a SourceForge XML
413 export object for a given project. See the file 'examples/sfquery.py'
414 for details and usage. 'sfquery' was contributed by Eric
415 S. Raymond <esr@thyrsus.com>.
417 2002-07-20 Markus F.X.J. Oberhumer <mfx>
419 * API enhancements: added Curl() and CurlMulti() as aliases for
420 init() and multi_init(), and added close() methods as aliases
421 for the cleanup() methods. The new names much better match
422 the actual intended use of the objects, and they also nicely
423 correspond to Python's file object.
425 * Also, all constants for Curl.setopt() and Curl.getinfo() are now
426 visible from within Curl objects.
428 All changes are fully backward-compatible.
434 2002-07-16 Markus F.X.J. Oberhumer <mfx>
436 * Under Python 2.2 or better, Curl and CurlMulti objects now
437 automatically participate in cyclic garbarge collection
438 (using the gc module).
444 2002-07-05 Markus F.X.J. Oberhumer <mfx>
446 * Curl and CurlMulti objects now support standard Python attributes.
447 See tests/test_multi2.py for an example.
449 2002-07-02 Kjetil Jacobsen <kjetilja>
451 * Added support for the multi-interface.
457 2002-06-25 Markus F.X.J. Oberhumer <mfx>
459 * Fixed a couple of `int' vs. `size_t' mismatches in callbacks
460 and Py_BuildValue() calls.
462 2002-06-25 Kjetil Jacobsen <kjetilja>
464 * Use 'double' type instead of 'size_t' for progress callbacks
465 (by Conrad Steenberg <conrad@hep.caltech.edu>). Also cleaned up
466 some other type mismatches in the callback interfaces.
468 2002-06-24 Kjetil Jacobsen <kjetilja>
470 * Added example code on how to upload a file using HTTPPOST in
471 pycurl (code by Amit Mongia <amit_mongia@hotmail.com>). See the
472 file 'test_fileupload.py' for details.
478 2002-06-24 Kjetil Jacobsen <kjetilja>
480 * Resolved some build problems on Windows (by Markus Oberhumer).
482 2002-06-19 Kjetil Jacobsen <kjetilja>
484 * Added CURLOPT_CAPATH.
486 * Added option constants for CURLOPT_NETRC: CURL_NETRC_OPTIONAL,
487 CURL_NETRC_IGNORED and CURL_NETRC_REQUIRED.
489 * Added option constants for CURLOPT_TIMECONDITION:
490 TIMECOND_IFMODSINCE and TIMECOND_IFUNMODSINCE.
492 * Added an simple example crawler, which downloads documents
493 listed in a file with a configurable number of worker threads.
494 See the file 'crawler.py' in the 'tests' directory for details.
496 * Removed the redundant 'test_xmlrpc2.py' test script.
498 * Disallow recursive callback invocations (by Markus Oberhumer).
500 2002-06-18 Kjetil Jacobsen <kjetilja>
502 * Made some changes to setup.py which should fix the build
503 problems on RedHat 7.3 (suggested by Benji <benji@kioza.net>).
505 * Use CURLOPT_READDATA instead of CURLOPT_INFILE, and
506 CURLOPT_WRITEDATA instead of CURLOPT_FILE. Also fixed some
507 reference counting bugs with file objects.
509 * CURLOPT_FILETIME and CURLINFO_FILETIME had a namespace clash
510 which caused them not to work. Use OPT_FILETIME for setopt() and
511 INFO_FILETIME for getinfo(). See example usage in
512 'test_getinfo.py' for details.
518 2002-05-20 Kjetil Jacobsen <kjetilja>
520 * New versioning scheme. Pycurl now has the same version number
521 as the libcurl version it was built with. The pycurl version
522 number thus indicates which version of libcurl is required to run.
524 2002-05-17 Kjetil Jacobsen <kjetilja>
526 * Added CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT.
528 2002-04-27 Kjetil Jacobsen <kjetilja>
530 * Fixed potential memory leak and thread race (by Markus
537 2002-04-15 Kjetil Jacobsen <kjetilja>
539 * Added CURLOPT_DEBUGFUNCTION to allow debug callbacks to be
540 specified (see the file 'test_debug.py' for details on how to use
543 * Added CURLOPT_DNS_USE_GLOBAL_CACHE and
544 CURLOPT_DNS_CACHE_TIMEOUT.
546 * Fixed a segfault when finalizing curl objects in Python 1.5.2.
548 * Now requires libcurl 7.9.6 or greater.
550 2002-04-12 Kjetil Jacobsen <kjetilja>
552 * Added 'test_post2.py' file which is another example on how to
555 2002-04-11 Markus F.X.J. Oberhumer <mfx>
557 * Added the 'test_post.py' file which demonstrates the use of
564 2002-03-07 Kjetil Jacobsen <kjetilja>
566 * Added CURLOPT_PREQUOTE.
568 * Now requires libcurl 7.9.5 or greater.
570 * Other minor code cleanups and bugfixes.
572 2002-03-05 Kjetil Jacobsen <kjetilja>
574 * Do not allow WRITEFUNCTION and WRITEHEADER on the same handle.
580 2002-02-27 Kjetil Jacobsen <kjetilja>
582 * Abort callback if the thread state of the calling thread cannot
585 * Check that the installed version of libcurl matches the
586 requirements of pycurl.
588 2002-02-26 Kjetil Jacobsen <kjetilja>
590 * Clarence Garnder <clarence@silcom.com> found a bug where string
591 arguments to setopt sometimes were prematurely deallocated, this
594 2002-02-21 Kjetil Jacobsen <kjetilja>
596 * Added the 'xmlrpc_curl.py' file which implements a transport
597 for xmlrpclib (xmlrpclib is part of Python 2.2).
599 * Added CURLINFO_CONTENT_TYPE.
601 * Added CURLOPT_SSLCERTTYPE, CURLOPT_SSLKEY, CURLOPT_SSLKEYTYPE,
602 CURLOPT_SSLKEYPASSWD, CURLOPT_SSLENGINE and
603 CURLOPT_SSLENGINE_DEFAULT.
605 * When thrown, the pycurl.error exception is now a tuple consisting
606 of the curl error code and the error message.
608 * Now requires libcurl 7.9.4 or greater.
610 2002-02-19 Kjetil Jacobsen <kjetilja>
612 * Fixed docstring for getopt() function.
614 2001-12-18 Kjetil Jacobsen <kjetilja>
616 * Updated the INSTALL information for Win32.
618 2001-12-12 Kjetil Jacobsen <kjetilja>
620 * Added missing link flag to make pycurl build on MacOS X (by Matt
621 King <matt@gnik.com>).
623 2001-12-06 Kjetil Jacobsen <kjetilja>
625 * Added CURLINFO_STARTTRANSFER_TIME and CURLOPT_FTP_USE_EPSV from
628 2001-12-01 Markus F.X.J. Oberhumer <mfx>
630 * Added the 'test_stringio.py' file which demonstrates the use of
631 StringIO objects as callback.
633 2001-12-01 Markus F.X.J. Oberhumer <mfx>
635 * setup.py: Do not remove entries from a list while iterating
638 2001-11-29 Kjetil Jacobsen <kjetilja>
640 * Added code in setup.py to install on Windows. Requires some
641 manual configuration (by Tino Lange <Tino.Lange@gmx.de>).
643 2001-11-27 Kjetil Jacobsen <kjetilja>
645 * Improved detection of where libcurl is installed in setup.py.
646 Should make it easier to install pycurl when libcurl is not
647 located in regular lib/include paths.
649 2001-11-05 Kjetil Jacobsen <kjetilja>
651 * Some of the newer options to setopt were missing, this should
654 2001-11-04 Kjetil Jacobsen <kjetilja>
656 * Exception handling has been improved and should no longer throw
657 spurious exceptions (by Markus F.X.J. Oberhumer
658 <markus@oberhumer.com>).
660 2001-10-15 Kjetil Jacobsen <kjetilja>
662 * Refactored the test_gtk.py script to avoid global variables.
664 2001-10-12 Kjetil Jacobsen <kjetilja>
666 * Added module docstrings, terse perhaps, but better than nothing.
668 * Added the 'basicfirst.py' file which is a Python version of the
669 corresponding Perl script by Daniel.
671 * PycURL now works properly under Python 1.5 and 1.6 (by Markus
672 F.X.J. Oberhumer <markus@oberhumer.com>).
674 * Allow C-functions and Python methods as callbacks (by Markus
675 F.X.J. Oberhumer <markus@oberhumer.com>).
677 * Allow None as success result of write, header and progress
678 callback invocations (by Markus F.X.J. Oberhumer
679 <markus@oberhumer.com>).
681 * Added the 'basicfirst2.py' file which demonstrates the use of a
682 class method as callback instead of just a function.
684 2001-08-21 Kjetil Jacobsen <kjetilja>
686 * Cleaned up the script with GNOME/PycURL integration.
688 2001-08-20 Kjetil Jacobsen <kjetilja>
690 * Added another test script for shipping XML-RPC requests which
691 uses py-xmlrpc to encode the arguments (tests/test_xmlrpc2.py).
693 2001-08-20 Kjetil Jacobsen <kjetilja>
695 * Added test script for using PycURL and GNOME (tests/test_gtk.py).
697 2001-08-20 Kjetil Jacobsen <kjetilja>
699 * Added test script for using XML-RPC (tests/test_xmlrpc.py).
701 * Added more comments to the test sources.
703 2001-08-06 Kjetil Jacobsen <kjetilja>
705 * Renamed module namespace to pycurl instead of curl.
707 2001-08-06 Kjetil Jacobsen <kjetilja>
709 * Set CURLOPT_VERBOSE to 0 by default.
711 2001-06-29 Kjetil Jacobsen <kjetilja>
713 * Updated INSTALL, curl version 7.8 or greater is now mandatory to
716 2001-06-13 Kjetil Jacobsen <kjetilja>
718 * Set NOPROGRESS to 1 by default.
720 2001-06-07 Kjetil Jacobsen <kjetilja>
722 * Added global_init/cleanup.
724 2001-06-06 Kjetil Jacobsen <kjetilja>
726 * Added HEADER/PROGRESSFUNCTION callbacks (see files in tests/).
728 * Added PASSWDFUNCTION callback (untested).
730 * Added READFUNCTION callback (untested).
732 2001-06-05 Kjetil Jacobsen <kjetilja>
734 * WRITEFUNCTION callbacks now work (see tests/test_cb.py for details).
736 * Preliminary distutils installation.
738 * Added CLOSEPOLICY constants to module namespace.
740 2001-06-04 Kjetil Jacobsen <kjetilja>
742 * Return -1 on error from Python callback in WRITEFUNCTION callback.
744 2001-06-01 Kjetil Jacobsen <kjetilja>
746 * Moved source to src and tests to tests directory.
748 2001-05-31 Kjetil Jacobsen <kjetilja>
750 * Added better type checking for setopt.
752 2001-05-30 Kjetil Jacobsen <kjetilja>
754 * Moved code to sourceforge.
756 * Added getinfo support.