Unimplemented Options And Constants =================================== PycURL intentionally does not expose some of the libcurl options and constants. This document explains libcurl symbols that were omitted from PycURL. ``*DATA`` options ----------------- In libcurl, the ``*aDATA`` options set *client data* for various callbacks. Each callback has a corresponding ``*DATA`` option. In Python - a language with closures - such options are unnecessary. For example, the following code invokes an instance's ``write`` method which has full access to its class instance:: class Writer(object): def __init__(self): self.foo = True def write(chunk): # can use self.foo writer = Writer() curl = pycurl.Curl() curl.setopt(curl.WRITEFUNCTION, writer.write) As of version 7.19.3, PycURL does implement three ``*DATA`` options for convenience: ``WRITEDATA``, ``HEADERDATA`` and ``READDATA``. These are equivalent to setting the respective callback option with either a ``write`` or ``read`` method, as appropriate:: # equivalent pairs: curl.setopt(curl.WRITEDATA, writer) curl.setopt(curl.WRITEFUNCTION, writer.write) curl.setopt(curl.HEADERDATA, writer) curl.setopt(curl.HEADERFUNCTION, writer.write) curl.setopt(curl.READDATA, reader) curl.setopt(curl.READFUNCTION, reader.read) ``CURLINFO_TLS_SESSION`` ------------------------ It is unclear how the SSL context should be exposed to Python code. This option can be implemented if it finds a use case. Undocumented symbols -------------------- Some symbols are present in libcurl's `symbols in versions`_ document but are not documented by libcurl. These symbols are not implemented by PycURL. As of this writing, the following symbols are thusly omitted: - ``CURLPAUSE_RECV_CONT`` - ``CURLPAUSE_SEND_CONT`` .. _symbols in versions: https://curl.haxx.se/libcurl/c/symbols-in-versions.html