diff options
author | Oleg Pudeyev <oleg@bsdpower.com> | 2014-02-06 04:47:17 -0500 |
---|---|---|
committer | Oleg Pudeyev <oleg@bsdpower.com> | 2014-02-06 04:55:59 -0500 |
commit | 1825fee0215ce5618b0344668778f1ee96b28529 (patch) | |
tree | b85c351adb8f2e1c8c6239a4fec3affbb81a6955 | |
parent | 6de24d568df8f29fe5eabb637f8fb7a2989f9450 (diff) | |
download | pycurl-1825fee0215ce5618b0344668778f1ee96b28529.tar.gz |
Stop keeping generated html documentation in the source tree
-rw-r--r-- | www/htdocs/ChangeLog | 1147 | ||||
-rw-r--r-- | www/htdocs/doc/callbacks.html | 147 | ||||
-rw-r--r-- | www/htdocs/doc/curlmultiobject.html | 135 | ||||
-rw-r--r-- | www/htdocs/doc/curlobject.html | 136 | ||||
-rw-r--r-- | www/htdocs/doc/curlshareobject.html | 53 | ||||
-rw-r--r-- | www/htdocs/doc/files.html | 369 | ||||
-rw-r--r-- | www/htdocs/doc/internals.html | 354 | ||||
-rw-r--r-- | www/htdocs/doc/pycurl.html | 129 | ||||
-rw-r--r-- | www/htdocs/doc/release-process.html | 374 | ||||
-rw-r--r-- | www/htdocs/doc/unicode.html | 425 | ||||
-rw-r--r-- | www/htdocs/release-notes.html | 366 |
11 files changed, 0 insertions, 3635 deletions
diff --git a/www/htdocs/ChangeLog b/www/htdocs/ChangeLog deleted file mode 100644 index 3c90a29..0000000 --- a/www/htdocs/ChangeLog +++ /dev/null @@ -1,1147 +0,0 @@ -Version 7.19.3 [requires libcurl-7.19.0 or better] - 2014-01-09 ---------------------------------------------------------------- - - * 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. - https://github.com/pycurl/pycurl/pull/18 - -Version 7.19.0.3 [requires libcurl-7.19.0 or better] - 2013-12-24 ------------------------------------------------------------------ - - * Re-release of 7.19.0.2 with minor changes to build Windows packages - due to botched 7.19.0.2 files on PyPi. - http://curl.haxx.se/mail/curlpython-2013-12/0021.html - -Version 7.19.0.2 [requires libcurl-7.19.0 or better] - 2013-10-08 ------------------------------------------------------------------ - - * Fixed a bug in a commit made in 2008 but not released until 7.19.0.1 - which caused CURLOPT_POSTFIELDS to not correctly increment reference - count of the object being given as its argument, despite libcurl not - copying the data provided by said object. - - * Added support for libcurl pause/unpause functionality, - via curl_easy_pause call and returning READFUNC_PAUSE from - read callback function. - -Version 7.19.0.1 [requires libcurl-7.19.0 or better] - 2013-09-23 ------------------------------------------------------------------ - - * Test matrix tool added to test against all supported Python and - libcurl versions. - - * Python 2.4 is now the minimum required version. - - * Source code, bugs and patches are now kept on GitHub. - - * Added CURLINFO_CERTINFO and CURLOPT_CERTINFO. - - * Added CURLOPT_RESOLVE. - - * PycURL can now be used with Python binaries without thread - support. - - * gcrypt is no longer initialized when a newer version of gnutls - is used. - - * Marked NSS as supported. - - * Fixed relative URL request logic. - - * Fixed a memory leak in util_curl_init. - - * Added CURLOPT_USERNAME and CURLOPT_PASSWORD. - - * Fixed handling of big timeout values. - - * Added GLOBAL_ACK_EINTR. - - * setopt(..., None) can be used as unsetopt(). - - * CURLOPT_RANGE can now be unset. - - * Write callback can return -1 to signal user abort. - - * Reorganized tests into an automated test suite. - - * Added CURLOPT_SEEKFUNCTION and CURLOPT_SEEKDATA. - - * Cleaned up website. - - * Fix pycurl.reset() (patch by <johansen at sun.com>). - - * Fix install routine in setup.py where - certain platforms (Solaris, Mac OSX, etc) - would search for a static copy of libcurl (dbp). - - * Fixed build on OpenSolaris 0906 and other platforms on which - curl-config does not have a --static-libs option. - - * No longer keep string options copies in the - Curl Python objects, since string options are - now managed by libcurl. - - -Version 7.19.0 [requires libcurl-7.19.0 or better] --------------------------------------------------- - - * Added CURLFILE, ADDRESS_SCOPE and ISSUERCERT options, - as well as the APPCONNECT_TIME info. - - * Added PRIMARY_IP info (patch by - Yuhui H <eyecat at gmail.com>). - - * Added support for curl_easy_reset through a - new 'reset' method on curl objects - (patch by Nick Pilon <npilon at oreilly.com>). - - * Added support for OPENSOCKET callbacks. - See 'tests/test_opensocket.py' for example - usage (patch by Thomas Hunger <teh at camvine.com>). - - -Version 7.18.2 --------------- - - * Added REDIRECT_URL info and M_MAXCONNECTS option - (patch by Yuhui H <eyecat at gmail.com>). - - * Added socket_action() method to CurlMulti objects. - See 'tests/test_multi_socket_select.py' for example - usage (patch by Yuhui H <eyecat at gmail.com>). - - * Added AUTOREFERER option. - - * Allow resetting some list operations (HTTPHEADER, - QUOTE, POSTQUOTE, PREQUOTE) by passing an empty - list to setopt (patch by Jim Patterson). - - -Version 7.18.1 --------------- - - * Added POST301, SSH_HOST_PUBLIC_KEY_MD5, - COPYPOSTFIELDS and PROXY_TRANSFER_MODE options. - - * Check for static libs in setup.py to better detect - whether libcurl was linked with OpenSSL or GNUTLS. - - * PycURL is now dual licensed under the LGPL and - a license similar to the cURL license (an MIT/X - derivative). - - -Version 7.16.4 --------------- - - * 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 Pena Arteaga <dpena at ph.tum.de>). - - * Added NEW_DIRECTORY_PERMS and NEW_FILE_PERMS options. - - -Version 7.16.2.1 ----------------- - - * Added IOCMD_NOP and IOCMD_RESTARTREAD for ioctl callback - handling (patch by Mark Eichin). - - * Use Py_ssize_t where appropriate for Python 2.5 and 64-bit - compatibility. This fixes the problem reported by Aaron - Hill, where the exception "pycurl.error: (2, '')" is thrown - when calling setopt(pycurl.POSTFIELDS,...) on 64-bit - platforms. - - -Version 7.16.2 --------------- - - * Added options HTTP_TRANSFER_DECODING, HTTP_CONTENT_DECODING, - TIMEOUT_MS, CONNECTTIMEOUT_MS from libcurl 7.16.2. - - * Right-strip URLs read from files in the test scripts - to avoid sending requests with '\n' at the end. - - -Version 7.16.1 --------------- - - * Added constants for all libcurl (error) return codes. They - are named the same as the macro constants in curl.h but prefixed - with E_ instead of CURLE. Return codes for the multi API are - prefixed with M_ instead of CURLM. - - * Added CURLOPT_FTP_SSL_CCC, CURLOPT_SSH_PUBLIC_KEYFILE, - CURLOPT_SSH_PRIVATE_KEYFILE, CURLOPT_SSH_AUTH_TYPES. - - * Removed CLOSEPOLICY and friends since this option is now - deprecated in libcurl. - - * Set the _use_datetime attribute on the CURLTransport class - to unbreak xmlrpc_curl.py on Python 2.5. - - -Version 7.16.0 [no public release] --------------- - - * Added CURLOPT_SSL_SESSIONID_CACHE. - - * Removed SOURCE_* options since they are no longer - supported by libcurl. - - -Version 7.15.5.1 ----------------- - - * Added test for basic ftp usage (tests/test_ftp.py). - - * Fix broken ssl mutex lock function when using - GNU TLS (Debian bug #380156, fix by Bastian Kleineidam) - - -Version 7.15.5 --------------- - - * Added CURLOPT_FTP_ALTERNATIVE_TO_USER, - CURLOPT_MAX_SEND_SPEED_LARGE, - and CURLOPT_MAX_RECV_SPEED_LARGE. - - -Version 7.15.4.2 ----------------- - - * Use SSL locking callbacks, fixes random - crashes for multithreaded SSL connections - (patch by Jayne <corvine at gmail.com>). - - -Version 7.15.4.1 ----------------- - - * Fixed compilation problem with C compilers - not allowing declarations in the middle of - code blocks (patch by - K.S.Sreeram <sreeram at tachyontech.net>). - - * Fixed bug in curl_multi_fdset wrapping, - max_fd < 0 is not an error (patch by - K.S.Sreeram <sreeram at tachyontech.net>). - - -Version 7.15.4 --------------- - - * Added support for libcurl shares, patch from - Victor Lascurain <bittor at eleka.net>. See the - file tests/test_share.py for example usage. - - * Added support for CURLINFO_FTP_ENTRY_PATH. - - -Version 7.15.2 --------------- - - * Added CURLOPT_CONNECT_ONLY, CURLINFO_LASTSOCKET, - CURLOPT_LOCALPORT and CURLOPT_LOCALPORTRANGE. - - -Version 7.15.1 --------------- - -2006-01-31 Kjetil Jacobsen <kjetilja> - - * Fixed memory leak for getinfo calls that return a - list as result. Patch by Paul Pacheco. - - -Version 7.15.0 --------------- - -2005-10-18 Kjetil Jacobsen <kjetilja> - - * Added CURLOPT_FTP_SKIP_PASV_IP. - - -Version 7.14.1 --------------- - -2005-09-05 Kjetil Jacobsen <kjetilja> - - * Added CURLOPT_IGNORE_CONTENT_LENGTH, CURLOPT_COOKIELIST as - COOKIELIST and CURLINFO_COOKIELIST as INFO_COOKIELIST. - - -Version 7.14.0 --------------- - -2005-05-18 Kjetil Jacobsen <kjetilja> - - * Added missing information returned from the info() method - in the high-level interface. - - * Added the FORM_FILENAME option to the CURLFORM API - with HTTPPOST. - - -Version 7.13.2 --------------- - -2005-03-30 Kjetil Jacobsen <kjetilja> - - * Unbreak tests/test_gtk.py and require pygtk >= 2.0. - -2005-03-15 Kjetil Jacobsen <kjetilja> - - * Cleaned up several of the examples. - -2005-03-11 Kjetil Jacobsen <kjetilja> - - * WARNING: multi.select() now requires the previously optional - timeout parameter. Updated the tests and examples to reflect - this change. If the timeout is not set, select could block - infinitely and cause problems for the internal timeout handling - in the multi stack. The problem was identified by - <unknownsoldier93 at yahoo.com>. - - -Version 7.13.1 --------------- - -2005-03-04 Kjetil Jacobsen <kjetilja> - - * Use METH_NOARGS where appropriate. - -2005-03-03 Kjetil Jacobsen <kjetilja> - - * Added support for CURLFORM API with HTTPPOST: Supports a - a tuple with pairs of options and values instead of just - supporting string contents. See tests/test_post2.py - for example usage. Options are FORM_CONTENTS, FORM_FILE and - FORM_CONTENTTYPE, corresponding to the CURLFORM_* options, - and values are strings. - -2005-02-13 Markus F.X.J. Oberhumer <mfx> - - * Read callbacks (pycurl.READFUNCTION) can now return - pycurl.READFUNC_ABORT to immediately abort the current transfer. - - * The INFILESIZE, MAXFILESIZE, POSTFIELDSIZE and RESUME_FROM - options now automatically use the largefile version to handle - files > 2GB. - - * Added missing pycurl.PORT constant. - - -Version 7.13.0 --------------- - -2005-02-10 Kjetil Jacobsen <kjetilja> - - * Added file_upload.py to examples, shows how to upload - a file. - - * Added CURLOPT_IOCTLFUNCTION/DATA. - - * Added options from libcurl 7.13.0: FTP_ACCOUNT, SOURCE_URL, - SOURCE_QUOTE. - - * Obsoleted options: SOURCE_HOST, SOURCE_PATH, SOURCE_PORT, - PASV_HOST. - - -Version 7.12.3 --------------- - -2004-12-22 Markus F.X.J. Oberhumer <mfx> - - * Added CURLINFO_NUM_CONNECTS and CURLINFO_SSL_ENGINES. - - * Added some other missing constants. - - * Updated pycurl.version_info() to return a 12-tuple - instead of a 9-tuple. - - -Version 7.12.2 --------------- - -2004-10-15 Kjetil Jacobsen <kjetilja> - - * Added CURLOPT_FTPSSLAUTH (and CURLFTPAUTH_*). - - * Added CURLINFO_OS_ERRNO. - -2004-08-17 Kjetil Jacobsen <kjetilja> - - * Use LONG_LONG instead of PY_LONG_LONG to make pycurl compile - on Python versions < 2.3 (fix from Domenico Andreoli - <cavok at libero.it>). - - -Version 7.12.1 --------------- - -2004-08-02 Kjetil Jacobsen <kjetilja> - - * Added INFOTYPE_SSL_DATA_IN/OUT. - -2004-07-16 Markus F.X.J. Oberhumer <mfx> - - * WARNING: removed deprecated PROXY_, TIMECOND_ and non-prefixed - INFOTYPE constant names. See ChangeLog entry 2003-06-10. - -2004-06-21 Kjetil Jacobsen <kjetilja> - - * Added test program for HTTP post using the read callback (see - tests/test_post3.py for details). - - * Use the new CURL_READFUNC_ABORT return code where appropriate - to avoid hanging in perform() when read callbacks are used. - - * Added support for libcurl 7.12.1 CURLOPT features: - SOURCE_HOST, SOURCE_USERPWD, SOURCE_PATH, SOURCE_PORT, - PASV_HOST, SOURCE_PREQUOTE, SOURCE_POSTQUOTE. - -2004-06-08 Markus F.X.J. Oberhumer <mfx> - - * Setting CURLOPT_POSTFIELDS now allows binary data and - automatically sets CURLOPT_POSTFIELDSIZE for you. If you really - want a different size you have to manually set POSTFIELDSIZE - after setting POSTFIELDS. - (Based on a patch by Martin Muenstermann). - -2004-06-05 Markus F.X.J. Oberhumer <mfx> - - * Added stricter checks within the callback handlers. - - * Unify the behaviour of int and long parameters where appropriate. - - -Version 7.12 ------------- - -2004-05-18 Kjetil Jacobsen <kjetilja> - - * WARNING: To simplify code maintenance pycurl now requires - libcurl 7.11.2 and Python 2.2 or newer to work. - - * GC support is now always enabled. - - -Version 7.11.3 --------------- - -2004-04-30 Kjetil Jacobsen <kjetilja> - - * Do not use the deprecated curl_formparse function. - API CHANGE: HTTPPOST now takes a list of tuples where each - tuple contains a form name and a form value, both strings - (see test/test_post2.py for example usage). - - * Found a possible reference count bug in the multithreading - code which may have contributed to the long-standing GC - segfault which has haunted pycurl. Fingers crossed. - - -Version 7.11.2 --------------- - -2004-04-21 Kjetil Jacobsen <kjetilja> - - * Added support for libcurl 7.11.2 CURLOPT features: - CURLOPT_TCP_NODELAY. - -2004-03-25 Kjetil Jacobsen <kjetilja> - - * Store Python longs in off_t with PyLong_AsLongLong instead - of PyLong_AsLong. Should make the options which deal - with large files behave a little better. Note that this - requires the long long support in Python 2.2 or newer to - work properly. - - -Version 7.11.1 --------------- - -2004-03-16 Kjetil Jacobsen <kjetilja> - - * WARNING: Removed support for the PASSWDFUNCTION callback, which - is no longer supported by libcurl. - -2004-03-15 Kjetil Jacobsen <kjetilja> - - * Added support for libcurl 7.11.1 CURLOPT features: - CURLOPT_POSTFIELDSIZE_LARGE. - - -Version 7.11.0 --------------- - -2004-02-11 Kjetil Jacobsen <kjetilja> - - * Added support for libcurl 7.11.0 CURLOPT features: - INFILESIZE_LARGE, RESUME_FROM_LARGE, MAXFILESIZE_LARGE - and FTP_SSL. - - * Circular garbage collection support can now be enabled or - disabled by passing the '--use-gc=[1|0]' parameter to setup.py - when building pycurl. - - * HTTP_VERSION options are known as CURL_HTTP_VERSION_NONE, - CURL_HTTP_VERSION_1_0, CURL_HTTP_VERSION_1_1 and - CURL_HTTP_VERSION_LAST. - -2003-11-16 Markus F.X.J. Oberhumer <mfx> - - * Added support for these new libcurl 7.11.0 features: - CURLOPT_NETRC_FILE. - - -Version 7.10.8 --------------- - -2003-11-04 Markus F.X.J. Oberhumer <mfx> - - * Added support for these new libcurl 7.10.8 features: - CURLOPT_FTP_RESPONSE_TIMEOUT, CURLOPT_IPRESOLVE, - CURLOPT_MAXFILESIZE, - CURLINFO_HTTPAUTH_AVAIL, CURLINFO_PROXYAUTH_AVAIL, - CURL_IPRESOLVE_* constants. - - * Added support for these new libcurl 7.10.7 features: - CURLOPT_FTP_CREATE_MISSING_DIRS, CURLOPT_PROXYAUTH, - CURLINFO_HTTP_CONNECTCODE. - - -2003-10-28 Kjetil Jacobsen <kjetilja> - - * Added missing CURLOPT_ENCODING option (patch by Martijn - Boerwinkel <xim at xs4all.nl>) - - -Version 7.10.6 --------------- - -2003-07-29 Markus F.X.J. Oberhumer <mfx> - - * Started working on support for CURLOPT_SSL_CTX_FUNCTION and - CURLOPT_SSL_CTX_DATA (libcurl-7.10.6) - not yet finished. - -2003-06-10 Markus F.X.J. Oberhumer <mfx> - - * Added support for CURLOPT_HTTPAUTH (libcurl-7.10.6), including - the new HTTPAUTH_BASIC, HTTPAUTH_DIGEST, HTTPAUTH_GSSNEGOTIATE - and HTTPAUTH_NTML constants. - - * Some constants were renamed for consistency: - - All curl_infotype constants are now prefixed with "INFOTYPE_", - all curl_proxytype constants are prefixed with "PROXYTYPE_" instead - of "PROXY_", and all curl_TimeCond constants are now prefixed - with "TIMECONDITION_" instead of "TIMECOND_". - - (The old names are still available but will get removed - in a future release.) - - * WARNING: Removed the deprecated pycurl.init() and pycurl.multi_init() - names - use pycurl.Curl() and pycurl.CurlMulti() instead. - - * WARNING: Removed the deprecated Curl.cleanup() and - CurlMulti.cleanup() methods - use Curl.close() and - CurlMulti.close() instead. - - -Version 7.10.5 --------------- - -2003-05-15 Markus F.X.J. Oberhumer <mfx> - - * Added support for CURLOPT_FTP_USE_EPRT (libcurl-7.10.5). - - * Documentation updates. - -2003-05-07 Eric S. Raymond <esr> - - * Lifted all HTML docs to clean XHTML, verified by tidy. - -2003-05-02 Markus F.X.J. Oberhumer <mfx> - - * Fixed some `int' vs. `long' mismatches that affected 64-bit systems. - - * Fixed wrong pycurl.CAPATH constant. - -2003-05-01 Markus F.X.J. Oberhumer <mfx> - - * Added new method Curl.errstr() which returns the internal - libcurl error buffer string of the handle. - - -Version 7.10.4.2 ----------------- - -2003-04-15 Markus F.X.J. Oberhumer <mfx> - - * Allow compilation against the libcurl-7.10.3 release - some - recent Linux distributions (e.g. Mandrake 9.1) ship with 7.10.3, - and apart from the new CURLOPT_UNRESTRICTED_AUTH option there is - no need that we require libcurl-7.10.4. - - -Version 7.10.4 --------------- - -2003-04-01 Kjetil Jacobsen <kjetilja> - - * Markus added CURLOPT_UNRESTRICTED_AUTH (libcurl-7.10.4). - -2003-02-25 Kjetil Jacobsen <kjetilja> - - * Fixed some broken test code and removed the fileupload test - since it didn't work properly. - -2003-01-28 Kjetil Jacobsen <kjetilja> - - * Some documentation updates by Markus and me. - -2003-01-22 Kjetil Jacobsen <kjetilja> - - * API CHANGE: the CurlMulti.info_read() method now returns - a separate array with handles that failed. Each entry in this array - is a tuple with (curl object, error number, error message). - This addition makes it simpler to do error checking of individual - curl objects when using the multi interface. - - -Version 7.10.3 --------------- - -2003-01-13 Kjetil Jacobsen <kjetilja> - - * PycURL memory usage has been reduced. - -2003-01-10 Kjetil Jacobsen <kjetilja> - - * Added 'examples/retriever-multi.py' which shows how to retrieve - a set of URLs concurrently using the multi interface. - -2003-01-09 Kjetil Jacobsen <kjetilja> - - * Added support for CURLOPT_HTTP200ALIASES. - -2002-11-22 Kjetil Jacobsen <kjetilja> - - * Updated pycurl documentation in the 'doc' directory. - -2002-11-21 Kjetil Jacobsen <kjetilja> - - * Updated and improved 'examples/curl.py'. - - * Added 'tests/test_multi6.py' which shows how to use the - info_read method with CurlMulti. - -2002-11-19 Kjetil Jacobsen <kjetilja> - - * Added new method CurlMulti.info_read(). - - -Version 7.10.2 --------------- - -2002-11-14 Kjetil Jacobsen <kjetilja> - - * Free options set with setopt after cleanup is called, as cleanup - assumes that options are still valid when invoked. This fixes the - bug with COOKIEJAR reported by Bastiaan Naber - <bastiaan at ricardis.tudelft.nl>. - -2002-11-06 Markus F.X.J. Oberhumer <mfx> - - * Install documentation under /usr/share/doc instead of /usr/doc. - Also, start shipping the (unfinished) HTML docs and some - basic test scripts. - -2002-10-30 Markus F.X.J. Oberhumer <mfx> - - * API CHANGE: For integral values, Curl.getinfo() now returns a - Python-int instead of a Python-long. - - -Version 7.10.1 --------------- - -2002-10-03 Markus F.X.J. Oberhumer <mfx> - - * Added new module-level function version_info() from - libcurl-7.10. - - -Version 7.10 ------------- - -2002-09-13 Kjetil Jacobsen <kjetilja> - - * Added commandline options to setup.py for specifying the path to - 'curl-config' (non-windows) and the curl installation directory - (windows). See the 'INSTALL' file for details. - - * Added CURLOPT_ENCODING, CURLOPT_NOSIGNAL and CURLOPT_BUFFERSIZE - from libcurl-7.10 (by Markus Oberhumer). - - -Version 7.9.8.4 ---------------- - -2002-08-28 Kjetil Jacobsen <kjetilja> - - * Added a simple web-browser example based on gtkhtml and pycurl. - See the file 'examples/gtkhtml_demo.py' for details. The example - requires a working installation of gnome-python with gtkhtml - bindings enabled (pass --with-gtkhtml to gnome-python configure). - -2002-08-14 Kjetil Jacobsen <kjetilja> - - * Added new method 'select' on CurlMulti objects. Example usage - in 'tests/test_multi5.py'. This method is just an optimization of - the combined use of fdset and select. - -2002-08-12 Kjetil Jacobsen <kjetilja> - - * Added support for curl_multi_fdset. See the file - 'tests/test_multi4.py' for example usage. Contributed by Conrad - Steenberg <conrad at hep.caltech.edu>. - - * perform() on multi objects now returns a tuple (result, number - of handles) like the libcurl interface does. - -2002-08-08 Kjetil Jacobsen <kjetilja> - - * Added the 'sfquery' script which retrieves a SourceForge XML - export object for a given project. See the file 'examples/sfquery.py' - for details and usage. 'sfquery' was contributed by Eric - S. Raymond <esr at thyrsus.com>. - -2002-07-20 Markus F.X.J. Oberhumer <mfx> - - * API enhancements: added Curl() and CurlMulti() as aliases for - init() and multi_init(), and added close() methods as aliases - for the cleanup() methods. The new names much better match - the actual intended use of the objects, and they also nicely - correspond to Python's file object. - - * Also, all constants for Curl.setopt() and Curl.getinfo() are now - visible from within Curl objects. - - All changes are fully backward-compatible. - - -Version 7.9.8.3 ---------------- - -2002-07-16 Markus F.X.J. Oberhumer <mfx> - - * Under Python 2.2 or better, Curl and CurlMulti objects now - automatically participate in cyclic garbarge collection - (using the gc module). - - -Version 7.9.8.2 ---------------- - -2002-07-05 Markus F.X.J. Oberhumer <mfx> - - * Curl and CurlMulti objects now support standard Python attributes. - See tests/test_multi2.py for an example. - -2002-07-02 Kjetil Jacobsen <kjetilja> - - * Added support for the multi-interface. - - -Version 7.9.8.1 ---------------- - -2002-06-25 Markus F.X.J. Oberhumer <mfx> - - * Fixed a couple of `int' vs. `size_t' mismatches in callbacks - and Py_BuildValue() calls. - -2002-06-25 Kjetil Jacobsen <kjetilja> - - * Use 'double' type instead of 'size_t' for progress callbacks - (by Conrad Steenberg <conrad at hep.caltech.edu>). Also cleaned up - some other type mismatches in the callback interfaces. - -2002-06-24 Kjetil Jacobsen <kjetilja> - - * Added example code on how to upload a file using HTTPPOST in - pycurl (code by Amit Mongia <amit_mongia at hotmail.com>). See the - file 'test_fileupload.py' for details. - - -Version 7.9.8 -------------- - -2002-06-24 Kjetil Jacobsen <kjetilja> - - * Resolved some build problems on Windows (by Markus Oberhumer). - -2002-06-19 Kjetil Jacobsen <kjetilja> - - * Added CURLOPT_CAPATH. - - * Added option constants for CURLOPT_NETRC: CURL_NETRC_OPTIONAL, - CURL_NETRC_IGNORED and CURL_NETRC_REQUIRED. - - * Added option constants for CURLOPT_TIMECONDITION: - TIMECOND_IFMODSINCE and TIMECOND_IFUNMODSINCE. - - * Added an simple example crawler, which downloads documents - listed in a file with a configurable number of worker threads. - See the file 'crawler.py' in the 'tests' directory for details. - - * Removed the redundant 'test_xmlrpc2.py' test script. - - * Disallow recursive callback invocations (by Markus Oberhumer). - -2002-06-18 Kjetil Jacobsen <kjetilja> - - * Made some changes to setup.py which should fix the build - problems on RedHat 7.3 (suggested by Benji <benji at kioza.net>). - - * Use CURLOPT_READDATA instead of CURLOPT_INFILE, and - CURLOPT_WRITEDATA instead of CURLOPT_FILE. Also fixed some - reference counting bugs with file objects. - - * CURLOPT_FILETIME and CURLINFO_FILETIME had a namespace clash - which caused them not to work. Use OPT_FILETIME for setopt() and - INFO_FILETIME for getinfo(). See example usage in - 'test_getinfo.py' for details. - - -Version 7.9.7 -------------- - -2002-05-20 Kjetil Jacobsen <kjetilja> - - * New versioning scheme. Pycurl now has the same version number - as the libcurl version it was built with. The pycurl version - number thus indicates which version of libcurl is required to run. - -2002-05-17 Kjetil Jacobsen <kjetilja> - - * Added CURLINFO_REDIRECT_TIME and CURLINFO_REDIRECT_COUNT. - -2002-04-27 Kjetil Jacobsen <kjetilja> - - * Fixed potential memory leak and thread race (by Markus - Oberhumer). - - -Version 0.4.9 -------------- - -2002-04-15 Kjetil Jacobsen <kjetilja> - - * Added CURLOPT_DEBUGFUNCTION to allow debug callbacks to be - specified (see the file 'test_debug.py' for details on how to use - debug callbacks). - - * Added CURLOPT_DNS_USE_GLOBAL_CACHE and - CURLOPT_DNS_CACHE_TIMEOUT. - - * Fixed a segfault when finalizing curl objects in Python 1.5.2. - - * Now requires libcurl 7.9.6 or greater. - -2002-04-12 Kjetil Jacobsen <kjetilja> - - * Added 'test_post2.py' file which is another example on how to - issue POST requests. - -2002-04-11 Markus F.X.J. Oberhumer <mfx> - - * Added the 'test_post.py' file which demonstrates the use of - POST requests. - - -Version 0.4.8 -------------- - -2002-03-07 Kjetil Jacobsen <kjetilja> - - * Added CURLOPT_PREQUOTE. - - * Now requires libcurl 7.9.5 or greater. - - * Other minor code cleanups and bugfixes. - -2002-03-05 Kjetil Jacobsen <kjetilja> - - * Do not allow WRITEFUNCTION and WRITEHEADER on the same handle. - - -Version 0.4.7 -------------- - -2002-02-27 Kjetil Jacobsen <kjetilja> - - * Abort callback if the thread state of the calling thread cannot - be determined. - - * Check that the installed version of libcurl matches the - requirements of pycurl. - -2002-02-26 Kjetil Jacobsen <kjetilja> - - * Clarence Garnder <clarence at silcom.com> found a bug where string - arguments to setopt sometimes were prematurely deallocated, this - should now be fixed. - -2002-02-21 Kjetil Jacobsen <kjetilja> - - * Added the 'xmlrpc_curl.py' file which implements a transport - for xmlrpclib (xmlrpclib is part of Python 2.2). - - * Added CURLINFO_CONTENT_TYPE. - - * Added CURLOPT_SSLCERTTYPE, CURLOPT_SSLKEY, CURLOPT_SSLKEYTYPE, - CURLOPT_SSLKEYPASSWD, CURLOPT_SSLENGINE and - CURLOPT_SSLENGINE_DEFAULT. - - * When thrown, the pycurl.error exception is now a tuple consisting - of the curl error code and the error message. - - * Now requires libcurl 7.9.4 or greater. - -2002-02-19 Kjetil Jacobsen <kjetilja> - - * Fixed docstring for getopt() function. - -2001-12-18 Kjetil Jacobsen <kjetilja> - - * Updated the INSTALL information for Win32. - -2001-12-12 Kjetil Jacobsen <kjetilja> - - * Added missing link flag to make pycurl build on MacOS X (by Matt - King <matt at gnik.com>). - -2001-12-06 Kjetil Jacobsen <kjetilja> - - * Added CURLINFO_STARTTRANSFER_TIME and CURLOPT_FTP_USE_EPSV from - libcurl 7.9.2. - -2001-12-01 Markus F.X.J. Oberhumer <mfx> - - * Added the 'test_stringio.py' file which demonstrates the use of - StringIO objects as callback. - -2001-12-01 Markus F.X.J. Oberhumer <mfx> - - * setup.py: Do not remove entries from a list while iterating - over it. - -2001-11-29 Kjetil Jacobsen <kjetilja> - - * Added code in setup.py to install on Windows. Requires some - manual configuration (by Tino Lange <Tino.Lange at gmx.de>). - -2001-11-27 Kjetil Jacobsen <kjetilja> - - * Improved detection of where libcurl is installed in setup.py. - Should make it easier to install pycurl when libcurl is not - located in regular lib/include paths. - -2001-11-05 Kjetil Jacobsen <kjetilja> - - * Some of the newer options to setopt were missing, this should - now be fixed. - -2001-11-04 Kjetil Jacobsen <kjetilja> - - * Exception handling has been improved and should no longer throw - spurious exceptions (by Markus F.X.J. Oberhumer - <markus at oberhumer.com>). - -2001-10-15 Kjetil Jacobsen <kjetilja> - - * Refactored the test_gtk.py script to avoid global variables. - -2001-10-12 Kjetil Jacobsen <kjetilja> - - * Added module docstrings, terse perhaps, but better than nothing. - - * Added the 'basicfirst.py' file which is a Python version of the - corresponding Perl script by Daniel. - - * PycURL now works properly under Python 1.5 and 1.6 (by Markus - F.X.J. Oberhumer <markus at oberhumer.com>). - - * Allow C-functions and Python methods as callbacks (by Markus - F.X.J. Oberhumer <markus at oberhumer.com>). - - * Allow None as success result of write, header and progress - callback invocations (by Markus F.X.J. Oberhumer - <markus at oberhumer.com>). - - * Added the 'basicfirst2.py' file which demonstrates the use of a - class method as callback instead of just a function. - -2001-08-21 Kjetil Jacobsen <kjetilja> - - * Cleaned up the script with GNOME/PycURL integration. - -2001-08-20 Kjetil Jacobsen <kjetilja> - - * Added another test script for shipping XML-RPC requests which - uses py-xmlrpc to encode the arguments (tests/test_xmlrpc2.py). - -2001-08-20 Kjetil Jacobsen <kjetilja> - - * Added test script for using PycURL and GNOME (tests/test_gtk.py). - -2001-08-20 Kjetil Jacobsen <kjetilja> - - * Added test script for using XML-RPC (tests/test_xmlrpc.py). - - * Added more comments to the test sources. - -2001-08-06 Kjetil Jacobsen <kjetilja> - - * Renamed module namespace to pycurl instead of curl. - -2001-08-06 Kjetil Jacobsen <kjetilja> - - * Set CURLOPT_VERBOSE to 0 by default. - -2001-06-29 Kjetil Jacobsen <kjetilja> - - * Updated INSTALL, curl version 7.8 or greater is now mandatory to - use pycurl. - -2001-06-13 Kjetil Jacobsen <kjetilja> - - * Set NOPROGRESS to 1 by default. - -2001-06-07 Kjetil Jacobsen <kjetilja> - - * Added global_init/cleanup. - -2001-06-06 Kjetil Jacobsen <kjetilja> - - * Added HEADER/PROGRESSFUNCTION callbacks (see files in tests/). - - * Added PASSWDFUNCTION callback (untested). - - * Added READFUNCTION callback (untested). - -2001-06-05 Kjetil Jacobsen <kjetilja> - - * WRITEFUNCTION callbacks now work (see tests/test_cb.py for details). - - * Preliminary distutils installation. - - * Added CLOSEPOLICY constants to module namespace. - -2001-06-04 Kjetil Jacobsen <kjetilja> - - * Return -1 on error from Python callback in WRITEFUNCTION callback. - -2001-06-01 Kjetil Jacobsen <kjetilja> - - * Moved source to src and tests to tests directory. - -2001-05-31 Kjetil Jacobsen <kjetilja> - - * Added better type checking for setopt. - -2001-05-30 Kjetil Jacobsen <kjetilja> - - * Moved code to sourceforge. - - * Added getinfo support. - - -# vi:ts=8:et diff --git a/www/htdocs/doc/callbacks.html b/www/htdocs/doc/callbacks.html deleted file mode 100644 index 83b1445..0000000 --- a/www/htdocs/doc/callbacks.html +++ /dev/null @@ -1,147 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <title>PyCurl: Callbacks</title> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> - <meta name="revisit-after" content="30 days" /> - <meta name="robots" content="noarchive, index, follow" /> -</head> -<body> - -<h1>Callbacks</h1> - -<p>For more fine-grained control, libcurl allows a -number of callbacks to be associated with each connection. In -pycurl, callbacks are defined using the <code>setopt()</code> method for -Curl objects with options WRITEFUNCTION, READFUNCTION, HEADERFUNCTION, -PROGRESSFUNCTION, IOCTLFUNCTION, or DEBUGFUNCTION. These options -correspond to the libcurl options with CURLOPT_* prefix removed. A -callback in pycurl must be either a regular Python function, a class -method or an extension type function.</p> - -<p>There are some limitations to some of the options which can be used -concurrently with the pycurl callbacks compared to the libcurl callbacks. -This is to allow different callback functions to be associated with -different Curl objects. More specifically, WRITEDATA cannot -be used with WRITEFUNCTION, READDATA cannot be used with READFUNCTION, -WRITEHEADER cannot be used with HEADERFUNCTION, PROGRESSDATA cannot be -used with PROGRESSFUNCTION, IOCTLDATA cannot be used with IOCTLFUNCTION, -and DEBUGDATA cannot be used with DEBUGFUNCTION. -In practice, these limitations can be overcome by having a callback -function be a class instance method and rather use the class instance -attributes to store per object data such as files used in the callbacks. -</p> - -The signature of each callback used in pycurl is as follows:<br/> -<br/> -<code>WRITEFUNCTION(</code><em>string</em><code>) </code><em>-> number of characters written<br/> -</em> -<br/> -<code>READFUNCTION(</code><em>number of characters to read</em><code>)</code><em>-> -string</em><br/> -<br/> -<code>HEADERFUNCTION(</code><em>string</em><code>)</code><em> -> number of characters written<br/> -</em><br/> -<code>PROGRESSFUNCTION(</code><em>download total, downloaded, upload total, uploaded</em><code>) </code><em>-> status</em><br/> -<br/> -<code>DEBUGFUNCTION(</code><em>debug message type, debug message string</em><code>)</code> -<em>-> None<br/></em> -<br/> -<code>IOCTLFUNCTION(</code><em>ioctl cmd</em><code>)</code> -<em>-> status<br/></em> -<br/> - -<p>In addition, <code>READFUNCTION</code> may return -<code>READFUNC_ABORT</code> or <code>READFUNC_PAUSE</code>. See the libcurl -documentation for an explanation of these values. -The <code>WRITEFUNCTION</code> and <code>HEADERFUNCTION</code> callbacks -may return <code>None</code>, which is an alternate way of indicating that -the callback has consumed all of the string passed to it.</p> - -<hr/> - -<h2>Example: Callbacks for document header and body</h2> - -<p>This example prints the header data to stderr and the body data to -stdout. Also note that neither callback returns the number of bytes -written. For WRITEFUNCTION and HEADERFUNCTION callbacks, returning -None implies that all bytes where written.</p> - -<pre> - ## Callback function invoked when body data is ready - def body(buf): - # Print body data to stdout - import sys - sys.stdout.write(buf) - # Returning None implies that all bytes were written - - ## Callback function invoked when header data is ready - def header(buf): - # Print header data to stderr - import sys - sys.stderr.write(buf) - # Returning None implies that all bytes were written - - c = pycurl.Curl() - c.setopt(pycurl.URL, "http://www.python.org/") - c.setopt(pycurl.WRITEFUNCTION, body) - c.setopt(pycurl.HEADERFUNCTION, header) - c.perform() -</pre> - -<h2>Example: Download/upload progress callback</h2> - -<p>This example shows how to use the progress callback. When downloading -a document, the arguments related to uploads are zero, and vice versa.</p> - -<pre> - ## Callback function invoked when download/upload has progress - def progress(download_t, download_d, upload_t, upload_d): - print "Total to download", download_t - print "Total downloaded", download_d - print "Total to upload", upload_t - print "Total uploaded", upload_d - - c.setopt(c.URL, "http://slashdot.org/") - c.setopt(c.NOPROGRESS, 0) - c.setopt(c.PROGRESSFUNCTION, progress) - c.perform() -</pre> - -<h2>Example: Debug callbacks</h2> - -<p>This example shows how to use the debug callback. The debug message -type is an integer indicating the type of debug message. The -VERBOSE option must be enabled for this callback to be invoked.</p> - -<pre> - def test(debug_type, debug_msg): - print "debug(%d): %s" % (debug_type, debug_msg) - - c = pycurl.Curl() - c.setopt(pycurl.URL, "http://curl.haxx.se/") - c.setopt(pycurl.VERBOSE, 1) - c.setopt(pycurl.DEBUGFUNCTION, test) - c.perform() -</pre> - -<h2>Other examples</h2> -<p>The pycurl distribution also contains a number of test scripts and -examples which show how to use the various callbacks in libcurl. -For instance, the file 'examples/file_upload.py' in the distribution contains -example code for using READFUNCTION, 'tests/test_cb.py' shows -WRITEFUNCTION and HEADERFUNCTION, 'tests/test_debug.py' shows DEBUGFUNCTION, -and 'tests/test_getinfo.py' shows PROGRESSFUNCTION.</p> - - -<hr /> -<p> - <a href="http://validator.w3.org/check/referer"><img align="right" - src="http://www.w3.org/Icons/valid-xhtml10" - alt="Valid XHTML 1.0!" height="31" width="88" border="0" /></a> -</p> - -</body> -</html> diff --git a/www/htdocs/doc/curlmultiobject.html b/www/htdocs/doc/curlmultiobject.html deleted file mode 100644 index f14827c..0000000 --- a/www/htdocs/doc/curlmultiobject.html +++ /dev/null @@ -1,135 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <title>PycURL: CurlMulti Objects</title> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> - <meta name="revisit-after" content="30 days" /> - <meta name="robots" content="noarchive, index, follow" /> -</head> -<body> - -<h1>CurlMulti Object</h1> - -<p>CurlMulti objects have the following methods: </p> - -<dl> -<dt><code>close()</code> -> <em>None</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_multi_cleanup.html"><code>curl_multi_cleanup()</code></a> in libcurl. -This method is automatically called by pycurl when a CurlMulti object no -longer has any references to it, but can also be called -explicitly.</p> -</dd> - -<dt><code>perform()</code> -> <em>tuple of status and the number of active Curl objects</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_multi_perform.html"><code>curl_multi_perform()</code></a> in libcurl.</p> -</dd> - -<dt><code>add_handle(</code><em>Curl object</em><code>) </code>-> <em>None</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_multi_add_handle.html"><code>curl_multi_add_handle()</code></a> in libcurl. -This method adds an existing and valid Curl object to the CurlMulti -object.</p> - -<p>IMPORTANT NOTE: add_handle does not implicitly add a Python reference -to the Curl object (and thus does not increase the reference count on the Curl -object).</p> -</dd> - -<dt><code>remove_handle(</code><em>Curl object</em><code>)</code> -> <em>None</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_multi_remove_handle.html"><code>curl_multi_remove_handle()</code></a> in libcurl. -This method removes an existing and valid Curl object from the CurlMulti -object.</p> - -<p>IMPORTANT NOTE: remove_handle does not implicitly remove a Python reference -from the Curl object (and thus does not decrease the reference count on the Curl -object).</p> -</dd> - -<dt><code>fdset()</code> -> -<em>triple of lists with active file descriptors, -readable, writeable, exceptions.</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_multi_fdset.html"><code>curl_multi_fdset()</code></a> in libcurl. -This method extracts the file descriptor information from a CurlMulti object. -The returned lists can be used with the <code>select</code> module to -poll for events.</p> - -<p>Example usage:</p> - -<pre> -import pycurl -c = pycurl.Curl() -c.setopt(pycurl.URL, "http://curl.haxx.se") -m = pycurl.CurlMulti() -m.add_handle(c) -while 1: - ret, num_handles = m.perform() - if ret != pycurl.E_CALL_MULTI_PERFORM: break -while num_handles: - apply(select.select, m.fdset() + (1,)) - while 1: - ret, num_handles = m.perform() - if ret != pycurl.E_CALL_MULTI_PERFORM: break -</pre> -</dd> - -<dt><code>select(</code><em>timeout</em><code>)</code> -> -<em>number of ready file descriptors or -1 on timeout</em></dt> -<dd> -<p>This is a convenience function which simplifies the combined -use of <code>fdset()</code> and the <code>select</code> module.</p> - -<p>Example usage:</p> - -<pre>import pycurl -c = pycurl.Curl() -c.setopt(pycurl.URL, "http://curl.haxx.se") -m = pycurl.CurlMulti() -m.add_handle(c) -while 1: - ret, num_handles = m.perform() - if ret != pycurl.E_CALL_MULTI_PERFORM: break -while num_handles: - ret = m.select(1.0) - if ret == -1: continue - while 1: - ret, num_handles = m.perform() - if ret != pycurl.E_CALL_MULTI_PERFORM: break -</pre> -</dd> - -<dt><code>info_read(</code><em>[max]</em><code>)</code> -> -<em>numberof queued messages, a list of successful objects, a list of -failed objects</em></dt> -<dd> -<p>Corresponds to the -<a href="http://curl.haxx.se/libcurl/c/curl_multi_info_read.html"><code>curl_multi_info_read()</code></a> function in libcurl. -This method extracts at most <em>max</em> messages -from the multi stack and returns them in two lists. The first -list contains the handles which completed successfully and the second -list contains a tuple <em><curl object, curl error number, curl -error message></em> for each failed curl object. The number -of queued messages after this method has been called is also -returned.</p> -</dd> -</dl> - -<hr /> -<p> - <a href="http://validator.w3.org/check/referer"><img align="right" - src="http://www.w3.org/Icons/valid-xhtml10" - alt="Valid XHTML 1.0!" height="31" width="88" border="0" /></a> -</p> - -</body> -</html> diff --git a/www/htdocs/doc/curlobject.html b/www/htdocs/doc/curlobject.html deleted file mode 100644 index 4138e38..0000000 --- a/www/htdocs/doc/curlobject.html +++ /dev/null @@ -1,136 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <title>PycURL: Curl Objects</title> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> - <meta name="revisit-after" content="30 days" /> - <meta name="robots" content="noarchive, index, follow" /> -</head> -<body> - -<h1>Curl Object</h1> - -<p>Curl objects have the following methods:</p> - -<dl> -<dt><code>close()</code> -> <em>None</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_easy_cleanup.html"><code>curl_easy_cleanup</code></a> in libcurl. -This method is automatically called by pycurl when a Curl object no longer has -any references to it, but can also be called explicitly.</p> -</dd> - -<dt><code>perform()</code> -> <em>None</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_easy_perform.html"><code>curl_easy_perform</code></a> in libcurl.</p> -</dd> - -<dt><code>reset()</code> -> <em>None</em></dt> -<dd> -<p>Corresponds to -<a -href="http://curl.haxx.se/libcurl/c/curl_easy_reset.html"><code>curl_easy_reset</code></a> in libcurl.</p> -</dd> - - -<dt><code>setopt(</code><em>option, value</em><code>)</code> -> <em>None</em></dt> -<dd> - -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_easy_setopt.html"><code>curl_easy_setopt</code></a> in libcurl, where -<em>option</em> is specified with the CURLOPT_* constants in libcurl, -except that the CURLOPT_ prefix has been removed. -(See below for exceptions.) -The type for -<em>value</em> depends on the option, and can be either a string, -integer, long integer, file object, list, or function.</p> - -<p>Example usage:</p> - -<pre> -import pycurl -c = pycurl.Curl() -c.setopt(pycurl.URL, "http://www.python.org/") -c.setopt(pycurl.HTTPHEADER, ["Accept:"]) -import StringIO -b = StringIO.StringIO() -c.setopt(pycurl.WRITEFUNCTION, b.write) -c.setopt(pycurl.FOLLOWLOCATION, 1) -c.setopt(pycurl.MAXREDIRS, 5) -c.perform() -print b.getvalue() -... -</pre> -</dd> - -<dt><code>getinfo(</code><em>option</em><code>) </code>-> <em>Result</em></dt> -<dd> - -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_easy_getinfo.html"><code>curl_easy_getinfo</code></a> in libcurl, where -<em>option</em> is the same as the CURLINFO_* constants in libcurl, -except that the CURLINFO_ prefix has been removed. -(See below for exceptions.) -<em>Result</em> contains an integer, float or string, depending on -which option is given. The <code>getinfo</code> method should -not be called unless <code>perform</code> has been called and -finished.</p> - -<p>Example usage:</p> - -<pre> -import pycurl -c = pycurl.Curl() -c.setopt(pycurl.URL, "http://sf.net") -c.setopt(pycurl.FOLLOWLOCATION, 1) -c.perform() -print c.getinfo(pycurl.HTTP_CODE), c.getinfo(pycurl.EFFECTIVE_URL) -... ---> 200 "http://sourceforge.net/" -</pre> -</dd> - -<dt><code>pause(</code><em>bitmask</em><code>) </code>-> <em>None</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_easy_pause.html"><code>curl_easy_pause</code></a> -in libcurl. The argument should be derived from -the <code>PAUSE_RECV</code>, <code>PAUSE_SEND</code>, <code>PAUSE_ALL</code> -and <code>PAUSE_CONT</code> constants.</p> - -<p>The <code>pause()</code> method (and its associated constants) is only -available if the version of libcurl with which pycurl was built is at -least version 7.18.0.</p> - -<dt><code>errstr()</code> -> <em>String</em></dt> -<dd> -<p>Returns the internal libcurl error buffer of this handle as a string.</p> -</dd> -</dl> - -<p>In order to distinguish between similarly-named CURLOPT and -CURLINFO constants, some have <code>OPT_</code> -and <code>INFO_</code> prefixes. These are -<code>INFO_FILETIME</code>, <code>OPT_FILETIME</code>, -<code>INFO_COOKIELIST</code> (but <code>setopt</code> uses <code>COOKIELIST</code>!), -<code>INFO_CERTINFO</code>, and <code>OPT_CERTINFO</code>.</p> - -<p>The value returned by <code>getinfo(INFO_CERTINFO)</code> is a list -with one element per certificate in the chain, starting with the leaf; -each element is a sequence -of <code>(</code><em>key</em><code>, </code><em>value</em><code>)</code> -tuples.</p> - -<hr /> -<p> - <a href="http://validator.w3.org/check/referer"><img align="right" - src="http://www.w3.org/Icons/valid-xhtml10" - alt="Valid XHTML 1.0!" height="31" width="88" border="0" /></a> -</p> - -</body> -</html> diff --git a/www/htdocs/doc/curlshareobject.html b/www/htdocs/doc/curlshareobject.html deleted file mode 100644 index a624f48..0000000 --- a/www/htdocs/doc/curlshareobject.html +++ /dev/null @@ -1,53 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <title>PycURL: CurlShare Objects</title> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> - <meta name="revisit-after" content="30 days" /> - <meta name="robots" content="noarchive, index, follow" /> -</head> -<body> - -<h1>CurlShare Object</h1> - -<p>CurlShare objects have the following methods:</p> - -<dl> -<dt><code>setopt(</code><em>option, value</em><code>)</code> -> <em>None</em></dt> -<dd> - -<p>Corresponds to -<a -href="http://curl.haxx.se/libcurl/c/curl_share_setopt.html"><code>curl_share_setopt</code></a> in libcurl, where -<em>option</em> is specified with the CURLSHOPT_* constants in libcurl, -except that the CURLSHOPT_ prefix has been changed to SH_. Currently, -<em>value</em> must be either LOCK_DATA_COOKIE or LOCK_DATA_DNS.</p> - -<p>Example usage:</p> - -<pre> -import pycurl -curl = pycurl.Curl() -s = pycurl.CurlShare() -s.setopt(pycurl.SH_SHARE, pycurl.LOCK_DATA_COOKIE) -s.setopt(pycurl.SH_SHARE, pycurl.LOCK_DATA_DNS) -curl.setopt(pycurl.URL, 'http://curl.haxx.se') -curl.setopt(pycurl.SHARE, s) -curl.perform() -curl.close() -</pre> -</dd> - -</dl> - -<hr /> -<p> - <a href="http://validator.w3.org/check/referer"><img align="right" - src="http://www.w3.org/Icons/valid-xhtml10" - alt="Valid XHTML 1.0!" height="31" width="88" border="0" /></a> -</p> - -</body> -</html> diff --git a/www/htdocs/doc/files.html b/www/htdocs/doc/files.html deleted file mode 100644 index 88c17d8..0000000 --- a/www/htdocs/doc/files.html +++ /dev/null @@ -1,369 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.11: http://docutils.sourceforge.net/" /> -<title>Files</title> -<style type="text/css"> - -/* -:Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $ -:Copyright: This stylesheet has been placed in the public domain. - -Default cascading style sheet for the HTML output of Docutils. - -See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to -customize this style sheet. -*/ - -/* used to remove borders from tables and images */ -.borderless, table.borderless td, table.borderless th { - border: 0 } - -table.borderless td, table.borderless th { - /* Override padding for "table.docutils td" with "! important". - The right padding separates the table cells. */ - padding: 0 0.5em 0 0 ! important } - -.first { - /* Override more specific margin styles with "! important". */ - margin-top: 0 ! important } - -.last, .with-subtitle { - margin-bottom: 0 ! important } - -.hidden { - display: none } - -a.toc-backref { - text-decoration: none ; - color: black } - -blockquote.epigraph { - margin: 2em 5em ; } - -dl.docutils dd { - margin-bottom: 0.5em } - -object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { - overflow: hidden; -} - -/* Uncomment (and remove this text!) to get bold-faced definition list terms -dl.docutils dt { - font-weight: bold } -*/ - -div.abstract { - margin: 2em 5em } - -div.abstract p.topic-title { - font-weight: bold ; - text-align: center } - -div.admonition, div.attention, div.caution, div.danger, div.error, -div.hint, div.important, div.note, div.tip, div.warning { - margin: 2em ; - border: medium outset ; - padding: 1em } - -div.admonition p.admonition-title, div.hint p.admonition-title, -div.important p.admonition-title, div.note p.admonition-title, -div.tip p.admonition-title { - font-weight: bold ; - font-family: sans-serif } - -div.attention p.admonition-title, div.caution p.admonition-title, -div.danger p.admonition-title, div.error p.admonition-title, -div.warning p.admonition-title, .code .error { - color: red ; - font-weight: bold ; - font-family: sans-serif } - -/* Uncomment (and remove this text!) to get reduced vertical space in - compound paragraphs. -div.compound .compound-first, div.compound .compound-middle { - margin-bottom: 0.5em } - -div.compound .compound-last, div.compound .compound-middle { - margin-top: 0.5em } -*/ - -div.dedication { - margin: 2em 5em ; - text-align: center ; - font-style: italic } - -div.dedication p.topic-title { - font-weight: bold ; - font-style: normal } - -div.figure { - margin-left: 2em ; - margin-right: 2em } - -div.footer, div.header { - clear: both; - font-size: smaller } - -div.line-block { - display: block ; - margin-top: 1em ; - margin-bottom: 1em } - -div.line-block div.line-block { - margin-top: 0 ; - margin-bottom: 0 ; - margin-left: 1.5em } - -div.sidebar { - margin: 0 0 0.5em 1em ; - border: medium outset ; - padding: 1em ; - background-color: #ffffee ; - width: 40% ; - float: right ; - clear: right } - -div.sidebar p.rubric { - font-family: sans-serif ; - font-size: medium } - -div.system-messages { - margin: 5em } - -div.system-messages h1 { - color: red } - -div.system-message { - border: medium outset ; - padding: 1em } - -div.system-message p.system-message-title { - color: red ; - font-weight: bold } - -div.topic { - margin: 2em } - -h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, -h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { - margin-top: 0.4em } - -h1.title { - text-align: center } - -h2.subtitle { - text-align: center } - -hr.docutils { - width: 75% } - -img.align-left, .figure.align-left, object.align-left { - clear: left ; - float: left ; - margin-right: 1em } - -img.align-right, .figure.align-right, object.align-right { - clear: right ; - float: right ; - margin-left: 1em } - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left } - -.align-center { - clear: both ; - text-align: center } - -.align-right { - text-align: right } - -/* reset inner alignment in figures */ -div.align-right { - text-align: inherit } - -/* div.align-center * { */ -/* text-align: left } */ - -ol.simple, ul.simple { - margin-bottom: 1em } - -ol.arabic { - list-style: decimal } - -ol.loweralpha { - list-style: lower-alpha } - -ol.upperalpha { - list-style: upper-alpha } - -ol.lowerroman { - list-style: lower-roman } - -ol.upperroman { - list-style: upper-roman } - -p.attribution { - text-align: right ; - margin-left: 50% } - -p.caption { - font-style: italic } - -p.credits { - font-style: italic ; - font-size: smaller } - -p.label { - white-space: nowrap } - -p.rubric { - font-weight: bold ; - font-size: larger ; - color: maroon ; - text-align: center } - -p.sidebar-title { - font-family: sans-serif ; - font-weight: bold ; - font-size: larger } - -p.sidebar-subtitle { - font-family: sans-serif ; - font-weight: bold } - -p.topic-title { - font-weight: bold } - -pre.address { - margin-bottom: 0 ; - margin-top: 0 ; - font: inherit } - -pre.literal-block, pre.doctest-block, pre.math, pre.code { - margin-left: 2em ; - margin-right: 2em } - -pre.code .ln { color: grey; } /* line numbers */ -pre.code, code { background-color: #eeeeee } -pre.code .comment, code .comment { color: #5C6576 } -pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } -pre.code .literal.string, code .literal.string { color: #0C5404 } -pre.code .name.builtin, code .name.builtin { color: #352B84 } -pre.code .deleted, code .deleted { background-color: #DEB0A1} -pre.code .inserted, code .inserted { background-color: #A3D289} - -span.classifier { - font-family: sans-serif ; - font-style: oblique } - -span.classifier-delimiter { - font-family: sans-serif ; - font-weight: bold } - -span.interpreted { - font-family: sans-serif } - -span.option { - white-space: nowrap } - -span.pre { - white-space: pre } - -span.problematic { - color: red } - -span.section-subtitle { - /* font-size relative to parent (h1..h6 element) */ - font-size: 80% } - -table.citation { - border-left: solid 1px gray; - margin-left: 1px } - -table.docinfo { - margin: 2em 4em } - -table.docutils { - margin-top: 0.5em ; - margin-bottom: 0.5em } - -table.footnote { - border-left: solid 1px black; - margin-left: 1px } - -table.docutils td, table.docutils th, -table.docinfo td, table.docinfo th { - padding-left: 0.5em ; - padding-right: 0.5em ; - vertical-align: top } - -table.docutils th.field-name, table.docinfo th.docinfo-name { - font-weight: bold ; - text-align: left ; - white-space: nowrap ; - padding-left: 0 } - -/* "booktabs" style (no vertical lines) */ -table.docutils.booktabs { - border: 0px; - border-top: 2px solid; - border-bottom: 2px solid; - border-collapse: collapse; -} -table.docutils.booktabs * { - border: 0px; -} -table.docutils.booktabs th { - border-bottom: thin solid; - text-align: left; -} - -h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, -h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { - font-size: 100% } - -ul.auto-toc { - list-style-type: none } - -</style> -</head> -<body> -<div class="document" id="files"> -<h1 class="title">Files</h1> - -<p>In PycURL 7.19.0.3 and below, CURLOPT_READDATA, CURLOPT_WRITEDATA and -CURLOPT_WRITEHEADER options accepted file objects and directly passed -the underlying C library FILE pointers to libcurl.</p> -<p>Python 3 no longer implements files as C library FILE objects. -In PycURL 7.19.3 and above, when running on Python 3, these options -are implemented as calls to CURLOPT_READFUNCTION, CURLOPT_WRITEFUNCTION -and CURLOPT_HEADERFUNCTION, respectively, with the write method of the -Python file object as the parameter. As a result, any Python file-like -object implementing a write method can be passed to CURLOPT_READDATA, -CURLOPT_WRITEDATA or CURLOPT_WRITEHEADER options.</p> -<p>When running PycURL 7.19.3 and above on Python 2, the old behavior of -passing FILE pointers to libcurl remains when a true file object is given -to CURLOPT_READDATA, CURLOPT_WRITEDATA and CURLOPT_WRITEHEADER options. -For consistency with Python 3 behavior these options also accept file-like -objects implementing a write method as arguments, in which case the -Python 3 code path is used converting these options to CURLOPT_*FUNCTION -option calls.</p> -<p>Files given to PycURL as arguments to CURLOPT_READDATA, CURLOPT_WRITEDATA or -CURLOPT_WRITEHEADER must be opened for writing in binary mode. Files opened -in text mode (without "b" flag to open()) expect string objects and writing -to them from PycURL will fail. Similarly when passing f.write method of -an open file to CURLOPT_WRITEFUNCTION or CURLOPT_HEADERFUNCTION, or f.read -to CURLOPT_READFUNCTION, the file must have been be opened in binary mode.</p> -</div> -</body> -</html> diff --git a/www/htdocs/doc/internals.html b/www/htdocs/doc/internals.html deleted file mode 100644 index 81e4878..0000000 --- a/www/htdocs/doc/internals.html +++ /dev/null @@ -1,354 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.11: http://docutils.sourceforge.net/" /> -<title>Internals</title> -<style type="text/css"> - -/* -:Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $ -:Copyright: This stylesheet has been placed in the public domain. - -Default cascading style sheet for the HTML output of Docutils. - -See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to -customize this style sheet. -*/ - -/* used to remove borders from tables and images */ -.borderless, table.borderless td, table.borderless th { - border: 0 } - -table.borderless td, table.borderless th { - /* Override padding for "table.docutils td" with "! important". - The right padding separates the table cells. */ - padding: 0 0.5em 0 0 ! important } - -.first { - /* Override more specific margin styles with "! important". */ - margin-top: 0 ! important } - -.last, .with-subtitle { - margin-bottom: 0 ! important } - -.hidden { - display: none } - -a.toc-backref { - text-decoration: none ; - color: black } - -blockquote.epigraph { - margin: 2em 5em ; } - -dl.docutils dd { - margin-bottom: 0.5em } - -object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { - overflow: hidden; -} - -/* Uncomment (and remove this text!) to get bold-faced definition list terms -dl.docutils dt { - font-weight: bold } -*/ - -div.abstract { - margin: 2em 5em } - -div.abstract p.topic-title { - font-weight: bold ; - text-align: center } - -div.admonition, div.attention, div.caution, div.danger, div.error, -div.hint, div.important, div.note, div.tip, div.warning { - margin: 2em ; - border: medium outset ; - padding: 1em } - -div.admonition p.admonition-title, div.hint p.admonition-title, -div.important p.admonition-title, div.note p.admonition-title, -div.tip p.admonition-title { - font-weight: bold ; - font-family: sans-serif } - -div.attention p.admonition-title, div.caution p.admonition-title, -div.danger p.admonition-title, div.error p.admonition-title, -div.warning p.admonition-title, .code .error { - color: red ; - font-weight: bold ; - font-family: sans-serif } - -/* Uncomment (and remove this text!) to get reduced vertical space in - compound paragraphs. -div.compound .compound-first, div.compound .compound-middle { - margin-bottom: 0.5em } - -div.compound .compound-last, div.compound .compound-middle { - margin-top: 0.5em } -*/ - -div.dedication { - margin: 2em 5em ; - text-align: center ; - font-style: italic } - -div.dedication p.topic-title { - font-weight: bold ; - font-style: normal } - -div.figure { - margin-left: 2em ; - margin-right: 2em } - -div.footer, div.header { - clear: both; - font-size: smaller } - -div.line-block { - display: block ; - margin-top: 1em ; - margin-bottom: 1em } - -div.line-block div.line-block { - margin-top: 0 ; - margin-bottom: 0 ; - margin-left: 1.5em } - -div.sidebar { - margin: 0 0 0.5em 1em ; - border: medium outset ; - padding: 1em ; - background-color: #ffffee ; - width: 40% ; - float: right ; - clear: right } - -div.sidebar p.rubric { - font-family: sans-serif ; - font-size: medium } - -div.system-messages { - margin: 5em } - -div.system-messages h1 { - color: red } - -div.system-message { - border: medium outset ; - padding: 1em } - -div.system-message p.system-message-title { - color: red ; - font-weight: bold } - -div.topic { - margin: 2em } - -h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, -h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { - margin-top: 0.4em } - -h1.title { - text-align: center } - -h2.subtitle { - text-align: center } - -hr.docutils { - width: 75% } - -img.align-left, .figure.align-left, object.align-left { - clear: left ; - float: left ; - margin-right: 1em } - -img.align-right, .figure.align-right, object.align-right { - clear: right ; - float: right ; - margin-left: 1em } - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left } - -.align-center { - clear: both ; - text-align: center } - -.align-right { - text-align: right } - -/* reset inner alignment in figures */ -div.align-right { - text-align: inherit } - -/* div.align-center * { */ -/* text-align: left } */ - -ol.simple, ul.simple { - margin-bottom: 1em } - -ol.arabic { - list-style: decimal } - -ol.loweralpha { - list-style: lower-alpha } - -ol.upperalpha { - list-style: upper-alpha } - -ol.lowerroman { - list-style: lower-roman } - -ol.upperroman { - list-style: upper-roman } - -p.attribution { - text-align: right ; - margin-left: 50% } - -p.caption { - font-style: italic } - -p.credits { - font-style: italic ; - font-size: smaller } - -p.label { - white-space: nowrap } - -p.rubric { - font-weight: bold ; - font-size: larger ; - color: maroon ; - text-align: center } - -p.sidebar-title { - font-family: sans-serif ; - font-weight: bold ; - font-size: larger } - -p.sidebar-subtitle { - font-family: sans-serif ; - font-weight: bold } - -p.topic-title { - font-weight: bold } - -pre.address { - margin-bottom: 0 ; - margin-top: 0 ; - font: inherit } - -pre.literal-block, pre.doctest-block, pre.math, pre.code { - margin-left: 2em ; - margin-right: 2em } - -pre.code .ln { color: grey; } /* line numbers */ -pre.code, code { background-color: #eeeeee } -pre.code .comment, code .comment { color: #5C6576 } -pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } -pre.code .literal.string, code .literal.string { color: #0C5404 } -pre.code .name.builtin, code .name.builtin { color: #352B84 } -pre.code .deleted, code .deleted { background-color: #DEB0A1} -pre.code .inserted, code .inserted { background-color: #A3D289} - -span.classifier { - font-family: sans-serif ; - font-style: oblique } - -span.classifier-delimiter { - font-family: sans-serif ; - font-weight: bold } - -span.interpreted { - font-family: sans-serif } - -span.option { - white-space: nowrap } - -span.pre { - white-space: pre } - -span.problematic { - color: red } - -span.section-subtitle { - /* font-size relative to parent (h1..h6 element) */ - font-size: 80% } - -table.citation { - border-left: solid 1px gray; - margin-left: 1px } - -table.docinfo { - margin: 2em 4em } - -table.docutils { - margin-top: 0.5em ; - margin-bottom: 0.5em } - -table.footnote { - border-left: solid 1px black; - margin-left: 1px } - -table.docutils td, table.docutils th, -table.docinfo td, table.docinfo th { - padding-left: 0.5em ; - padding-right: 0.5em ; - vertical-align: top } - -table.docutils th.field-name, table.docinfo th.docinfo-name { - font-weight: bold ; - text-align: left ; - white-space: nowrap ; - padding-left: 0 } - -/* "booktabs" style (no vertical lines) */ -table.docutils.booktabs { - border: 0px; - border-top: 2px solid; - border-bottom: 2px solid; - border-collapse: collapse; -} -table.docutils.booktabs * { - border: 0px; -} -table.docutils.booktabs th { - border-bottom: thin solid; - text-align: left; -} - -h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, -h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { - font-size: 100% } - -ul.auto-toc { - list-style-type: none } - -</style> -</head> -<body> -<div class="document" id="internals"> -<h1 class="title">Internals</h1> - -<p>Cleanup sequence:</p> -<p>x=curl/multi/share</p> -<p>x.close() -> do_x_close -> util_x_close -del x -> do_x_dealloc -> util_x_close</p> -<p>do_* functions are directly invoked by user code. -They check pycurl object state.</p> -<p>util_* functions are only invoked by other pycurl C functions. -They do not check pycurl object state.</p> -</div> -</body> -</html> diff --git a/www/htdocs/doc/pycurl.html b/www/htdocs/doc/pycurl.html deleted file mode 100644 index a49960a..0000000 --- a/www/htdocs/doc/pycurl.html +++ /dev/null @@ -1,129 +0,0 @@ -<?xml version="1.0" encoding="iso-8859-1"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml"> -<head> - <title>PycURL Documentation</title> - <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> - <meta name="revisit-after" content="30 days" /> - <meta name="robots" content="noarchive, index, follow" /> -</head> -<body> - -<h1><tt>pycurl</tt> — A Python interface to the cURL library</h1> - -<p>The pycurl package is a Python interface to libcurl (<a -href="http://curl.haxx.se/libcurl/">http://curl.haxx.se/libcurl/</a>). pycurl -has been successfully built and tested with Python versions from -2.4 to 2.7.</p> - -<p>libcurl is a client-side URL transfer library supporting FTP, FTPS, -HTTP, HTTPS, GOPHER, TELNET, DICT, FILE and LDAP. libcurl -also supports HTTPS certificates, HTTP POST, HTTP PUT, FTP uploads, proxies, -cookies, basic authentication, file transfer resume of FTP sessions, HTTP -proxy tunneling and more.</p> - -<p>All the functionality provided by libcurl can used through the -pycurl interface. The following subsections describe how to use the -pycurl interface, and assume familiarity with how libcurl works. For -information on how libcurl works, please consult the curl library web pages -(<a href="http://curl.haxx.se/libcurl/c/">http://curl.haxx.se/libcurl/c/</a>).</p> - -<hr/> - -<h1>Module Functionality</h1> - -<dl> -<dt><code>pycurl.global_init(</code><em>option</em><code>)</code> -><em>None</em></dt> - -<dd><p><em>option</em> is one of the constants -pycurl.GLOBAL_SSL, pycurl.GLOBAL_WIN32, pycurl.GLOBAL_ALL, -pycurl.GLOBAL_NOTHING, pycurl.GLOBAL_DEFAULT. Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_global_init.html"><code>curl_global_init()</code></a> in libcurl.</p> -</dd> - -<dt><code>pycurl.global_cleanup()</code> -> <em>None</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_global_cleanup.html"><code>curl_global_cleanup()</code></a> in libcurl.</p> -</dd> - -<dt><code>pycurl.version</code></dt> - -<dd><p>This is a string with version information on libcurl, -corresponding to -<a href="http://curl.haxx.se/libcurl/c/curl_version.html"><code>curl_version()</code></a> in libcurl.</p> - -<p>Example usage:</p> -<pre> ->>> import pycurl ->>> pycurl.version -'libcurl/7.12.3 OpenSSL/0.9.7e zlib/1.2.2.1 libidn/0.5.12' -</pre> -</dd> - -<dt><code>pycurl.version_info()</code> -> <em>Tuple</em></dt> -<dd> -<p>Corresponds to -<a href="http://curl.haxx.se/libcurl/c/curl_version_info.html"><code>curl_version_info()</code></a> in libcurl. -Returns a tuple of information which is similar to the -<code>curl_version_info_data</code> struct returned by -<code>curl_version_info()</code> in libcurl.</p> - -<p>Example usage:</p> -<pre> ->>> import pycurl ->>> pycurl.version_info() -(2, '7.12.3', 461827, 'i586-pc-linux-gnu', 1565, 'OpenSSL/0.9.7e', 9465951, -'1.2.2.1', ('ftp', 'gopher', 'telnet', 'dict', 'ldap', 'http', 'file', -'https', 'ftps'), None, 0, '0.5.12') -</pre> -</dd> - -<dt><code>pycurl.Curl()</code> -> <em>Curl object</em></dt> -<dd> -<p>This function creates a new -<a href="curlobject.html">Curl object</a> which corresponds to a -<code>CURL</code> handle in libcurl. Curl objects automatically -set CURLOPT_VERBOSE to 0, CURLOPT_NOPROGRESS to 1, -provide a default CURLOPT_USERAGENT and setup -CURLOPT_ERRORBUFFER to point to a private error buffer.</p> -</dd> - -<dt><code>pycurl.CurlMulti()</code> -> <em>CurlMulti object</em></dt> -<dd> -<p>This function creates a new -<a href="curlmultiobject.html">CurlMulti object</a> which corresponds to -a <code>CURLM</code> handle in libcurl.</p> -</dd> - -<dt><code>pycurl.CurlShare()</code> -> <em>CurlShare object</em></dt> -<dd> -<p>This function creates a new -<a href="curlshareobject.html">CurlShare object</a> which corresponds to -a <code>CURLSH</code> handle in libcurl. CurlShare objects is what you -pass as an argument to the SHARE option on Curl objects.</p> -</dd> - -</dl> - -<hr/> - -<h1>Subsections</h1> - -<ul> - <li><a href="curlobject.html">Curl objects</a></li> - <li><a href="curlmultiobject.html">CurlMulti objects</a></li> - <li><a href="curlshareobject.html">CurlShare objects</a></li> - <li><a href="callbacks.html">Callbacks</a></li> -</ul> - -<hr /> -<p> - <a href="http://validator.w3.org/check/referer"><img align="right" - src="http://www.w3.org/Icons/valid-xhtml10" - alt="Valid XHTML 1.0!" height="31" width="88" border="0" /></a> -</p> - -</body> -</html> diff --git a/www/htdocs/doc/release-process.html b/www/htdocs/doc/release-process.html deleted file mode 100644 index c9ffbe8..0000000 --- a/www/htdocs/doc/release-process.html +++ /dev/null @@ -1,374 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.11: http://docutils.sourceforge.net/" /> -<title>Release Process</title> -<style type="text/css"> - -/* -:Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $ -:Copyright: This stylesheet has been placed in the public domain. - -Default cascading style sheet for the HTML output of Docutils. - -See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to -customize this style sheet. -*/ - -/* used to remove borders from tables and images */ -.borderless, table.borderless td, table.borderless th { - border: 0 } - -table.borderless td, table.borderless th { - /* Override padding for "table.docutils td" with "! important". - The right padding separates the table cells. */ - padding: 0 0.5em 0 0 ! important } - -.first { - /* Override more specific margin styles with "! important". */ - margin-top: 0 ! important } - -.last, .with-subtitle { - margin-bottom: 0 ! important } - -.hidden { - display: none } - -a.toc-backref { - text-decoration: none ; - color: black } - -blockquote.epigraph { - margin: 2em 5em ; } - -dl.docutils dd { - margin-bottom: 0.5em } - -object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { - overflow: hidden; -} - -/* Uncomment (and remove this text!) to get bold-faced definition list terms -dl.docutils dt { - font-weight: bold } -*/ - -div.abstract { - margin: 2em 5em } - -div.abstract p.topic-title { - font-weight: bold ; - text-align: center } - -div.admonition, div.attention, div.caution, div.danger, div.error, -div.hint, div.important, div.note, div.tip, div.warning { - margin: 2em ; - border: medium outset ; - padding: 1em } - -div.admonition p.admonition-title, div.hint p.admonition-title, -div.important p.admonition-title, div.note p.admonition-title, -div.tip p.admonition-title { - font-weight: bold ; - font-family: sans-serif } - -div.attention p.admonition-title, div.caution p.admonition-title, -div.danger p.admonition-title, div.error p.admonition-title, -div.warning p.admonition-title, .code .error { - color: red ; - font-weight: bold ; - font-family: sans-serif } - -/* Uncomment (and remove this text!) to get reduced vertical space in - compound paragraphs. -div.compound .compound-first, div.compound .compound-middle { - margin-bottom: 0.5em } - -div.compound .compound-last, div.compound .compound-middle { - margin-top: 0.5em } -*/ - -div.dedication { - margin: 2em 5em ; - text-align: center ; - font-style: italic } - -div.dedication p.topic-title { - font-weight: bold ; - font-style: normal } - -div.figure { - margin-left: 2em ; - margin-right: 2em } - -div.footer, div.header { - clear: both; - font-size: smaller } - -div.line-block { - display: block ; - margin-top: 1em ; - margin-bottom: 1em } - -div.line-block div.line-block { - margin-top: 0 ; - margin-bottom: 0 ; - margin-left: 1.5em } - -div.sidebar { - margin: 0 0 0.5em 1em ; - border: medium outset ; - padding: 1em ; - background-color: #ffffee ; - width: 40% ; - float: right ; - clear: right } - -div.sidebar p.rubric { - font-family: sans-serif ; - font-size: medium } - -div.system-messages { - margin: 5em } - -div.system-messages h1 { - color: red } - -div.system-message { - border: medium outset ; - padding: 1em } - -div.system-message p.system-message-title { - color: red ; - font-weight: bold } - -div.topic { - margin: 2em } - -h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, -h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { - margin-top: 0.4em } - -h1.title { - text-align: center } - -h2.subtitle { - text-align: center } - -hr.docutils { - width: 75% } - -img.align-left, .figure.align-left, object.align-left { - clear: left ; - float: left ; - margin-right: 1em } - -img.align-right, .figure.align-right, object.align-right { - clear: right ; - float: right ; - margin-left: 1em } - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left } - -.align-center { - clear: both ; - text-align: center } - -.align-right { - text-align: right } - -/* reset inner alignment in figures */ -div.align-right { - text-align: inherit } - -/* div.align-center * { */ -/* text-align: left } */ - -ol.simple, ul.simple { - margin-bottom: 1em } - -ol.arabic { - list-style: decimal } - -ol.loweralpha { - list-style: lower-alpha } - -ol.upperalpha { - list-style: upper-alpha } - -ol.lowerroman { - list-style: lower-roman } - -ol.upperroman { - list-style: upper-roman } - -p.attribution { - text-align: right ; - margin-left: 50% } - -p.caption { - font-style: italic } - -p.credits { - font-style: italic ; - font-size: smaller } - -p.label { - white-space: nowrap } - -p.rubric { - font-weight: bold ; - font-size: larger ; - color: maroon ; - text-align: center } - -p.sidebar-title { - font-family: sans-serif ; - font-weight: bold ; - font-size: larger } - -p.sidebar-subtitle { - font-family: sans-serif ; - font-weight: bold } - -p.topic-title { - font-weight: bold } - -pre.address { - margin-bottom: 0 ; - margin-top: 0 ; - font: inherit } - -pre.literal-block, pre.doctest-block, pre.math, pre.code { - margin-left: 2em ; - margin-right: 2em } - -pre.code .ln { color: grey; } /* line numbers */ -pre.code, code { background-color: #eeeeee } -pre.code .comment, code .comment { color: #5C6576 } -pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } -pre.code .literal.string, code .literal.string { color: #0C5404 } -pre.code .name.builtin, code .name.builtin { color: #352B84 } -pre.code .deleted, code .deleted { background-color: #DEB0A1} -pre.code .inserted, code .inserted { background-color: #A3D289} - -span.classifier { - font-family: sans-serif ; - font-style: oblique } - -span.classifier-delimiter { - font-family: sans-serif ; - font-weight: bold } - -span.interpreted { - font-family: sans-serif } - -span.option { - white-space: nowrap } - -span.pre { - white-space: pre } - -span.problematic { - color: red } - -span.section-subtitle { - /* font-size relative to parent (h1..h6 element) */ - font-size: 80% } - -table.citation { - border-left: solid 1px gray; - margin-left: 1px } - -table.docinfo { - margin: 2em 4em } - -table.docutils { - margin-top: 0.5em ; - margin-bottom: 0.5em } - -table.footnote { - border-left: solid 1px black; - margin-left: 1px } - -table.docutils td, table.docutils th, -table.docinfo td, table.docinfo th { - padding-left: 0.5em ; - padding-right: 0.5em ; - vertical-align: top } - -table.docutils th.field-name, table.docinfo th.docinfo-name { - font-weight: bold ; - text-align: left ; - white-space: nowrap ; - padding-left: 0 } - -/* "booktabs" style (no vertical lines) */ -table.docutils.booktabs { - border: 0px; - border-top: 2px solid; - border-bottom: 2px solid; - border-collapse: collapse; -} -table.docutils.booktabs * { - border: 0px; -} -table.docutils.booktabs th { - border-bottom: thin solid; - text-align: left; -} - -h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, -h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { - font-size: 100% } - -ul.auto-toc { - list-style-type: none } - -</style> -</head> -<body> -<div class="document" id="release-process"> -<h1 class="title">Release Process</h1> - -<ol class="arabic simple"> -<li>Ensure changelog is up to date with commits in master.</li> -<li>Run <cite>python setup.py manifest</cite>, check that none of the listed files -should be in MANIFEST.in.</li> -<li>Make sure travis is green for master.</li> -<li>Update version numbers in: -- Changelog -- setup.py -- winbuild.py -- www/htdocs/index.php</li> -<li>Copy Changelog to www/htdocs.</li> -<li>Draft release notes.</li> -<li>Rsync doc directory to www/htdocs.</li> -<li><cite>python setup.py sdist</cite>.</li> -<li>Manually test install the built package.</li> -<li>Build windows packages using winbuild.py.</li> -<li>Add windows packages to downloads repo on github.</li> -<li>Tag the new version.</li> -<li>Register new version with pypi - <cite>python setup.py register</cite>.</li> -<li>Upload source distribution to pypi - <cite>python setup.py sdist upload</cite>. -This recreates the source distribution.</li> -<li>Add the source distribution to downloads repo on github.</li> -<li>Rsync downloads repo to sourceforge.</li> -<li>Rsync www/htdocs to sourceforge.</li> -<li>Push tag to github pycurl repo.</li> -<li>Announce release on mailing list.</li> -<li>Link to announcement from website.</li> -</ol> -</div> -</body> -</html> diff --git a/www/htdocs/doc/unicode.html b/www/htdocs/doc/unicode.html deleted file mode 100644 index e72e2aa..0000000 --- a/www/htdocs/doc/unicode.html +++ /dev/null @@ -1,425 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.11: http://docutils.sourceforge.net/" /> -<title>Unicode</title> -<style type="text/css"> - -/* -:Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $ -:Copyright: This stylesheet has been placed in the public domain. - -Default cascading style sheet for the HTML output of Docutils. - -See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to -customize this style sheet. -*/ - -/* used to remove borders from tables and images */ -.borderless, table.borderless td, table.borderless th { - border: 0 } - -table.borderless td, table.borderless th { - /* Override padding for "table.docutils td" with "! important". - The right padding separates the table cells. */ - padding: 0 0.5em 0 0 ! important } - -.first { - /* Override more specific margin styles with "! important". */ - margin-top: 0 ! important } - -.last, .with-subtitle { - margin-bottom: 0 ! important } - -.hidden { - display: none } - -a.toc-backref { - text-decoration: none ; - color: black } - -blockquote.epigraph { - margin: 2em 5em ; } - -dl.docutils dd { - margin-bottom: 0.5em } - -object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { - overflow: hidden; -} - -/* Uncomment (and remove this text!) to get bold-faced definition list terms -dl.docutils dt { - font-weight: bold } -*/ - -div.abstract { - margin: 2em 5em } - -div.abstract p.topic-title { - font-weight: bold ; - text-align: center } - -div.admonition, div.attention, div.caution, div.danger, div.error, -div.hint, div.important, div.note, div.tip, div.warning { - margin: 2em ; - border: medium outset ; - padding: 1em } - -div.admonition p.admonition-title, div.hint p.admonition-title, -div.important p.admonition-title, div.note p.admonition-title, -div.tip p.admonition-title { - font-weight: bold ; - font-family: sans-serif } - -div.attention p.admonition-title, div.caution p.admonition-title, -div.danger p.admonition-title, div.error p.admonition-title, -div.warning p.admonition-title, .code .error { - color: red ; - font-weight: bold ; - font-family: sans-serif } - -/* Uncomment (and remove this text!) to get reduced vertical space in - compound paragraphs. -div.compound .compound-first, div.compound .compound-middle { - margin-bottom: 0.5em } - -div.compound .compound-last, div.compound .compound-middle { - margin-top: 0.5em } -*/ - -div.dedication { - margin: 2em 5em ; - text-align: center ; - font-style: italic } - -div.dedication p.topic-title { - font-weight: bold ; - font-style: normal } - -div.figure { - margin-left: 2em ; - margin-right: 2em } - -div.footer, div.header { - clear: both; - font-size: smaller } - -div.line-block { - display: block ; - margin-top: 1em ; - margin-bottom: 1em } - -div.line-block div.line-block { - margin-top: 0 ; - margin-bottom: 0 ; - margin-left: 1.5em } - -div.sidebar { - margin: 0 0 0.5em 1em ; - border: medium outset ; - padding: 1em ; - background-color: #ffffee ; - width: 40% ; - float: right ; - clear: right } - -div.sidebar p.rubric { - font-family: sans-serif ; - font-size: medium } - -div.system-messages { - margin: 5em } - -div.system-messages h1 { - color: red } - -div.system-message { - border: medium outset ; - padding: 1em } - -div.system-message p.system-message-title { - color: red ; - font-weight: bold } - -div.topic { - margin: 2em } - -h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, -h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { - margin-top: 0.4em } - -h1.title { - text-align: center } - -h2.subtitle { - text-align: center } - -hr.docutils { - width: 75% } - -img.align-left, .figure.align-left, object.align-left { - clear: left ; - float: left ; - margin-right: 1em } - -img.align-right, .figure.align-right, object.align-right { - clear: right ; - float: right ; - margin-left: 1em } - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left } - -.align-center { - clear: both ; - text-align: center } - -.align-right { - text-align: right } - -/* reset inner alignment in figures */ -div.align-right { - text-align: inherit } - -/* div.align-center * { */ -/* text-align: left } */ - -ol.simple, ul.simple { - margin-bottom: 1em } - -ol.arabic { - list-style: decimal } - -ol.loweralpha { - list-style: lower-alpha } - -ol.upperalpha { - list-style: upper-alpha } - -ol.lowerroman { - list-style: lower-roman } - -ol.upperroman { - list-style: upper-roman } - -p.attribution { - text-align: right ; - margin-left: 50% } - -p.caption { - font-style: italic } - -p.credits { - font-style: italic ; - font-size: smaller } - -p.label { - white-space: nowrap } - -p.rubric { - font-weight: bold ; - font-size: larger ; - color: maroon ; - text-align: center } - -p.sidebar-title { - font-family: sans-serif ; - font-weight: bold ; - font-size: larger } - -p.sidebar-subtitle { - font-family: sans-serif ; - font-weight: bold } - -p.topic-title { - font-weight: bold } - -pre.address { - margin-bottom: 0 ; - margin-top: 0 ; - font: inherit } - -pre.literal-block, pre.doctest-block, pre.math, pre.code { - margin-left: 2em ; - margin-right: 2em } - -pre.code .ln { color: grey; } /* line numbers */ -pre.code, code { background-color: #eeeeee } -pre.code .comment, code .comment { color: #5C6576 } -pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } -pre.code .literal.string, code .literal.string { color: #0C5404 } -pre.code .name.builtin, code .name.builtin { color: #352B84 } -pre.code .deleted, code .deleted { background-color: #DEB0A1} -pre.code .inserted, code .inserted { background-color: #A3D289} - -span.classifier { - font-family: sans-serif ; - font-style: oblique } - -span.classifier-delimiter { - font-family: sans-serif ; - font-weight: bold } - -span.interpreted { - font-family: sans-serif } - -span.option { - white-space: nowrap } - -span.pre { - white-space: pre } - -span.problematic { - color: red } - -span.section-subtitle { - /* font-size relative to parent (h1..h6 element) */ - font-size: 80% } - -table.citation { - border-left: solid 1px gray; - margin-left: 1px } - -table.docinfo { - margin: 2em 4em } - -table.docutils { - margin-top: 0.5em ; - margin-bottom: 0.5em } - -table.footnote { - border-left: solid 1px black; - margin-left: 1px } - -table.docutils td, table.docutils th, -table.docinfo td, table.docinfo th { - padding-left: 0.5em ; - padding-right: 0.5em ; - vertical-align: top } - -table.docutils th.field-name, table.docinfo th.docinfo-name { - font-weight: bold ; - text-align: left ; - white-space: nowrap ; - padding-left: 0 } - -/* "booktabs" style (no vertical lines) */ -table.docutils.booktabs { - border: 0px; - border-top: 2px solid; - border-bottom: 2px solid; - border-collapse: collapse; -} -table.docutils.booktabs * { - border: 0px; -} -table.docutils.booktabs th { - border-bottom: thin solid; - text-align: left; -} - -h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, -h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { - font-size: 100% } - -ul.auto-toc { - list-style-type: none } - -</style> -</head> -<body> -<div class="document" id="unicode"> -<h1 class="title">Unicode</h1> - -<div class="section" id="python-2-x"> -<h1>Python 2.x</h1> -<p>Under Python 2, the string type can hold arbitrary encoded byte strings. -PycURL will pass whatever byte strings it is given verbatim to libcurl.</p> -<p>If your application works with encoded byte strings, you should be able to -pass them to PycURL. If your application works with Unicode data, you need to -encode the data to byte strings yourself. Which encoding to use depends on -the protocol you are working with - HTTP headers should be encoded in latin1, -HTTP request bodies are commonly encoded in utf-8 and their encoding is -specified in the Content-Type header value.</p> -<p>Prior to PycURL 7.19.3, PycURL did not accept Unicode data under Python 2. -Even Unicode strings containing only ASCII code points had to be encoded to -byte strings.</p> -<p>As of PycURL 7.19.3, for compatibility with Python 3, PycURL will accept -Unicode strings under Python 2 provided they contain ASCII code points only. -In other words, PycURL will encode Unicode into ASCII for you. If you supply -a Unicode string containing characters that are outside of ASCII, the call will -fail with a UnicodeEncodeError.</p> -<p>PycURL will return data from libcurl, like request bodies and header values, -as byte strings. If the data is ASCII, you can treat it as string data. -Otherwise you will need to decode the byte strings usisng the correct encoding. -What encoding is correct depends on the protocol and potentially returned -data itself - HTTP response headers are supposed to be latin1 encoded but -encoding of response body is specified in the Content-Type header.</p> -</div> -<div class="section" id="python-3-x-from-pycurl-7-19-3-onward"> -<h1>Python 3.x (from PycURL 7.19.3 onward)</h1> -<p>Under Python 3, the rules are as follows:</p> -<p>PycURL will accept bytes for any string data passed to libcurl (e.g. -arguments to curl_easy_setopt).</p> -<p>PycURL will accept (Unicode) strings for string arguments to curl_easy_setopt. -libcurl generally expects the options to be already appropriately encoded -and escaped (e.g. for CURLOPT_URL). Also, Python 2 code dealing with -Unicode values for string options will typically manually encode such values. -Therefore PycURL will attempt to encode Unicode strings with the ascii codec -only, allowing the application to pass ASCII data in a straightforward manner -but requiring Unicode data to be appropriately encoded.</p> -<p>It may be helpful to remember that libcurl operates on byte arrays. -It is a C library and does not do any Unicode encoding or decoding, offloading -that task on the application using it. PycURL, being a thin wrapper around -libcurl, passes the Unicode encoding and decoding responsibilities to you -except for the trivial case of encoding Unicode data containing only ASCII -characters into ASCII.</p> -<p>Caution: when using CURLOPT_READFUNCTION in tandem with CURLOPT_POSTFIELDSIZE, -as would be done for HTTP for example, take care to pass the length of -encoded data to CURLOPT_POSTFIELDSIZE if you are doing the encoding from -Unicode strings. If you pass the number of Unicode characters rather than -encoded bytes to libcurl, the server will receive wrong Content-Length. -Alternatively you can return Unicode strings from a CURLOPT_READFUNCTION -function, if you are certain they will only contain ASCII code points.</p> -<p>If encoding to ASCII fails, PycURL will return an error to libcurl, and -libcurl in turn will fail the request with an exception like -"read function error/data error". You may examine sys.last_value for -information on exception that occurred during encoding in this case.</p> -<p>PycURL will return all data read from the network as bytes. In particular, -this means that BytesIO should be used rather than StringIO for writing the -response to memory. Header function will also receive bytes.</p> -<p>Because PycURL does not perform encoding or decoding, other than to ASCII, -any file objects that PycURL is meant to interact with via CURLOPT_READDATA, -CURLOPT_WRITEDATA, CURLOPT_WRITEHEADER, CURLOPT_READFUNCTION, -CURLOPT_WRITEFUNCTION or CURLOPT_HEADERFUNCTION must be opened in binary -mode ("b" flag to open() call).</p> -</div> -<div class="section" id="python-3-x-before-pycurl-7-19-3"> -<h1>Python 3.x before PycURL 7.19.3</h1> -<p>PycURL did not have official Python 3 support prior to PycURL 7.19.3. -There were two patches on SourceForge (<a class="reference external" href="http://sourceforge.net/p/pycurl/patches/5/">original</a>, <a class="reference external" href="http://sourceforge.net/p/pycurl/patches/12/">revised</a>) -adding Python 3 support, but they did not handle Unicode strings correctly. -Instead of using Python encoding functionality, these patches used -C standard library unicode to multibyte conversion functions, and thus -they can have the same behavior as Python encoding code or behave -entirely differently.</p> -<p>Python 3 support as implemented in PycURL 7.19.3 and documented here -does not, as mentioned, actually perform any encoding other than to convert -from Unicode strings containing ASCII-only bytes to ASCII byte strings.</p> -<p>Linux distributions that offered Python 3 packages of PycURL prior to 7.19.3 -used SourceForge patches and may behave in ways contradictory to what is -described in this document.</p> -</div> -</div> -</body> -</html> diff --git a/www/htdocs/release-notes.html b/www/htdocs/release-notes.html deleted file mode 100644 index 5380269..0000000 --- a/www/htdocs/release-notes.html +++ /dev/null @@ -1,366 +0,0 @@ -<?xml version="1.0" encoding="utf-8" ?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> -<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> -<head> -<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> -<meta name="generator" content="Docutils 0.11: http://docutils.sourceforge.net/" /> -<title>Release Notes</title> -<style type="text/css"> - -/* -:Author: David Goodger (goodger@python.org) -:Id: $Id: html4css1.css 7614 2013-02-21 15:55:51Z milde $ -:Copyright: This stylesheet has been placed in the public domain. - -Default cascading style sheet for the HTML output of Docutils. - -See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to -customize this style sheet. -*/ - -/* used to remove borders from tables and images */ -.borderless, table.borderless td, table.borderless th { - border: 0 } - -table.borderless td, table.borderless th { - /* Override padding for "table.docutils td" with "! important". - The right padding separates the table cells. */ - padding: 0 0.5em 0 0 ! important } - -.first { - /* Override more specific margin styles with "! important". */ - margin-top: 0 ! important } - -.last, .with-subtitle { - margin-bottom: 0 ! important } - -.hidden { - display: none } - -a.toc-backref { - text-decoration: none ; - color: black } - -blockquote.epigraph { - margin: 2em 5em ; } - -dl.docutils dd { - margin-bottom: 0.5em } - -object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { - overflow: hidden; -} - -/* Uncomment (and remove this text!) to get bold-faced definition list terms -dl.docutils dt { - font-weight: bold } -*/ - -div.abstract { - margin: 2em 5em } - -div.abstract p.topic-title { - font-weight: bold ; - text-align: center } - -div.admonition, div.attention, div.caution, div.danger, div.error, -div.hint, div.important, div.note, div.tip, div.warning { - margin: 2em ; - border: medium outset ; - padding: 1em } - -div.admonition p.admonition-title, div.hint p.admonition-title, -div.important p.admonition-title, div.note p.admonition-title, -div.tip p.admonition-title { - font-weight: bold ; - font-family: sans-serif } - -div.attention p.admonition-title, div.caution p.admonition-title, -div.danger p.admonition-title, div.error p.admonition-title, -div.warning p.admonition-title, .code .error { - color: red ; - font-weight: bold ; - font-family: sans-serif } - -/* Uncomment (and remove this text!) to get reduced vertical space in - compound paragraphs. -div.compound .compound-first, div.compound .compound-middle { - margin-bottom: 0.5em } - -div.compound .compound-last, div.compound .compound-middle { - margin-top: 0.5em } -*/ - -div.dedication { - margin: 2em 5em ; - text-align: center ; - font-style: italic } - -div.dedication p.topic-title { - font-weight: bold ; - font-style: normal } - -div.figure { - margin-left: 2em ; - margin-right: 2em } - -div.footer, div.header { - clear: both; - font-size: smaller } - -div.line-block { - display: block ; - margin-top: 1em ; - margin-bottom: 1em } - -div.line-block div.line-block { - margin-top: 0 ; - margin-bottom: 0 ; - margin-left: 1.5em } - -div.sidebar { - margin: 0 0 0.5em 1em ; - border: medium outset ; - padding: 1em ; - background-color: #ffffee ; - width: 40% ; - float: right ; - clear: right } - -div.sidebar p.rubric { - font-family: sans-serif ; - font-size: medium } - -div.system-messages { - margin: 5em } - -div.system-messages h1 { - color: red } - -div.system-message { - border: medium outset ; - padding: 1em } - -div.system-message p.system-message-title { - color: red ; - font-weight: bold } - -div.topic { - margin: 2em } - -h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, -h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { - margin-top: 0.4em } - -h1.title { - text-align: center } - -h2.subtitle { - text-align: center } - -hr.docutils { - width: 75% } - -img.align-left, .figure.align-left, object.align-left { - clear: left ; - float: left ; - margin-right: 1em } - -img.align-right, .figure.align-right, object.align-right { - clear: right ; - float: right ; - margin-left: 1em } - -img.align-center, .figure.align-center, object.align-center { - display: block; - margin-left: auto; - margin-right: auto; -} - -.align-left { - text-align: left } - -.align-center { - clear: both ; - text-align: center } - -.align-right { - text-align: right } - -/* reset inner alignment in figures */ -div.align-right { - text-align: inherit } - -/* div.align-center * { */ -/* text-align: left } */ - -ol.simple, ul.simple { - margin-bottom: 1em } - -ol.arabic { - list-style: decimal } - -ol.loweralpha { - list-style: lower-alpha } - -ol.upperalpha { - list-style: upper-alpha } - -ol.lowerroman { - list-style: lower-roman } - -ol.upperroman { - list-style: upper-roman } - -p.attribution { - text-align: right ; - margin-left: 50% } - -p.caption { - font-style: italic } - -p.credits { - font-style: italic ; - font-size: smaller } - -p.label { - white-space: nowrap } - -p.rubric { - font-weight: bold ; - font-size: larger ; - color: maroon ; - text-align: center } - -p.sidebar-title { - font-family: sans-serif ; - font-weight: bold ; - font-size: larger } - -p.sidebar-subtitle { - font-family: sans-serif ; - font-weight: bold } - -p.topic-title { - font-weight: bold } - -pre.address { - margin-bottom: 0 ; - margin-top: 0 ; - font: inherit } - -pre.literal-block, pre.doctest-block, pre.math, pre.code { - margin-left: 2em ; - margin-right: 2em } - -pre.code .ln { color: grey; } /* line numbers */ -pre.code, code { background-color: #eeeeee } -pre.code .comment, code .comment { color: #5C6576 } -pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } -pre.code .literal.string, code .literal.string { color: #0C5404 } -pre.code .name.builtin, code .name.builtin { color: #352B84 } -pre.code .deleted, code .deleted { background-color: #DEB0A1} -pre.code .inserted, code .inserted { background-color: #A3D289} - -span.classifier { - font-family: sans-serif ; - font-style: oblique } - -span.classifier-delimiter { - font-family: sans-serif ; - font-weight: bold } - -span.interpreted { - font-family: sans-serif } - -span.option { - white-space: nowrap } - -span.pre { - white-space: pre } - -span.problematic { - color: red } - -span.section-subtitle { - /* font-size relative to parent (h1..h6 element) */ - font-size: 80% } - -table.citation { - border-left: solid 1px gray; - margin-left: 1px } - -table.docinfo { - margin: 2em 4em } - -table.docutils { - margin-top: 0.5em ; - margin-bottom: 0.5em } - -table.footnote { - border-left: solid 1px black; - margin-left: 1px } - -table.docutils td, table.docutils th, -table.docinfo td, table.docinfo th { - padding-left: 0.5em ; - padding-right: 0.5em ; - vertical-align: top } - -table.docutils th.field-name, table.docinfo th.docinfo-name { - font-weight: bold ; - text-align: left ; - white-space: nowrap ; - padding-left: 0 } - -/* "booktabs" style (no vertical lines) */ -table.docutils.booktabs { - border: 0px; - border-top: 2px solid; - border-bottom: 2px solid; - border-collapse: collapse; -} -table.docutils.booktabs * { - border: 0px; -} -table.docutils.booktabs th { - border-bottom: thin solid; - text-align: left; -} - -h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, -h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { - font-size: 100% } - -ul.auto-toc { - list-style-type: none } - -</style> -</head> -<body> -<div class="document" id="release-notes"> -<h1 class="title">Release Notes</h1> -<h2 class="subtitle" id="pycurl-7-19-3-2014-01-09">PycURL 7.19.3 - 2014-01-09</h2> - -<p>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.</p> -<p>To summarize the behavior under Python 3, PycURL will accept <tt class="docutils literal">bytes</tt> where -it accepted strings under Python 2, and will also accept Unicode strings -containing ASCII codepoints only for convenience. Please refer to -<a class="reference external" href="doc/unicode.html">Unicode</a> and <a class="reference external" href="doc/files.html">file</a> documentation for further details.</p> -<p>In the interests of compatibility, PycURL will also accept Unicode data on -Python 2 given the same constraints as under Python 3.</p> -<p>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.</p> -<p>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.</p> -</div> -</body> -</html> |