# pycurl Module Functionality

pycurl.global_init(option) → None

  Initialize curl environment.

  option is one of the constants pycurl.GLOBAL_SSL, pycurl.GLOBAL_WIN32, pycurl.GLOBAL_ALL, pycurl.GLOBAL_NOTHING, pycurl.GLOBAL_DEFAULT.

  Corresponds to curl_global_init in libcurl.

pycurl.global_cleanup() → None

  Cleanup curl environment.

  Corresponds to curl_global_cleanup in libcurl.

pycurl.version

  This is a string with version information on libcurl, corresponding to curl_version in libcurl.

  Example usage:

      >>> import pycurl
      >>> pycurl.version
      'PycURL/7.19.3 libcurl/7.33.0 OpenSSL/0.9.8x zlib/1.2.7'

pycurl.version_info() → tuple

  Returns a 12-tuple with the version info.

  Corresponds to curl_version_info in libcurl. Returns a tuple of information which is similar to the `curl_version_info_data` struct returned by `curl_version_info()` in libcurl.

  Example usage:

      >>> import pycurl
      >>> pycurl.version_info()
      (3, '7.33.0', 467200, 'amd64-portbld-freebsd9.1', 33436, 'OpenSSL/0.9.8x',
      0, '1.2.7', ('dict', 'file', 'ftp', 'ftps', 'gopher', 'http', 'https',
      'imap', 'imaps', 'pop3', 'pop3s', 'rtsp', 'smtp', 'smtps', 'telnet',
      'tftp'), None, 0, None)

pycurl.easy_strerror(errornum) → str

  Return a string describing a libcurl easy-interface error code.

  errornum is a `CURLcode`, usually exposed by PycURL as a `pycurl.E_*` constant.

  Corresponds to curl_easy_strerror in libcurl.

pycurl.multi_strerror(errornum) → str

  Return a string describing a libcurl multi-interface error code.

  errornum is a `CURLMcode`, usually exposed by PycURL as a `pycurl.E_MULTI_*` constant.

  Corresponds to curl_multi_strerror in libcurl.

pycurl.share_strerror(errornum) → str

  Return a string describing a libcurl share-interface error code.

  errornum is a `CURLSHcode` as returned by share-handle operations.

  Corresponds to curl_share_strerror in libcurl.

pycurl.url_strerror(errornum) → str

  Return a string describing a libcurl URL-API error code.

  errornum is a `CURLUcode` as returned by `curl_url_*` functions.

  Requires libcurl 7.80.0 or later; not exposed on older builds.

  Corresponds to curl_url_strerror in libcurl.

class pycurl.Curl → New Curl object

  Creates a new Curl Object which corresponds to a `CURL` 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.

  Implicitly calls `pycurl.global_init()` if the latter has not yet been called.

  The `Curl` object can be used as a context manager. Exiting the context calls `close()`.

  Example:

      with pycurl.Curl() as c:
          # perform operations

class pycurl.CurlMulti(close_handles=False) → New CurlMulti object

  Creates a new CurlMulti Object which corresponds to a `CURLM` handle in libcurl.

  The `CurlMulti` object can be used as a context manager. Exiting the context calls `close()`.

  Example:

      with pycurl.CurlMulti(close_handles=True) as m:
          m.add_handle(curl)
          # perform multi operations
      # easy handles have been removed and closed

  Parameters:

    close_handles (bool) –

    If `False` (default), easy handles added to the multi handle are removed from the multi handle when `close()` is called or when exiting the context manager, but remain open and must be managed by the caller.

    If `True`, easy handles are removed from the multi handle when `close()` is called or when exiting the context manager, and are then automatically closed.

    In all cases, easy handles are not closed when they are removed individually from the multi handle.

class pycurl.CurlShare(detach_on_close=True) → New CurlShare object

  Creates a new CurlShare Object which corresponds to a `CURLSH` handle in libcurl. CurlShare objects is what you pass as an argument to the SHARE option on Curl objects.

  The `CurlShare` object can be used as a context manager. Exiting the context calls `close()`.

  When a `CurlShare` is closed, its behavior depends on the value of `detach_on_close`.

  Example:

      with pycurl.CurlShare(detach_on_close=True) as s:
          curl.setopt(pycurl.SHARE, s)
          # perform operations
      # the CurlShare is closed and the Curl object has been detached

  Parameters:

    detach_on_close (bool) –

    Controls how associated Curl objects are handled when the `CurlShare` is closed.

    If `True` (default), all live `Curl` objects associated with the share are automatically detached when `close()` is called or when exiting the context manager. Detaching clears the `SHARE` option on each `Curl` object, but does not close them. The caller remains responsible for managing the lifetime of the `Curl` objects.

    If `False`, calling `close()` (or exiting the context manager) while there are still `Curl` objects associated with the share raises an exception. In this mode, the caller must explicitly remove or close all associated `Curl` objects before closing the `CurlShare`.

  See `close()` for the rules `close()` enforces when associated `Curl` handles are still in use.

class pycurl.CurlMime

  Python wrapper for libcurl MIME API.

class pycurl.CurlMimePart

  A MIME part belonging to a CurlMime object.