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.
In libcurl, the
*aDATA options set client data for various callbacks.
Each callback has a corresponding
In Python - a language with closures - such options are unnecessary.
For example, the following code invokes an instance’s
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
READDATA. These are equivalent to
setting the respective callback option with either a
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)
It is unclear how the SSL context should be exposed to Python code. This option can be implemented if it finds a use case.
Some symbols are present in libcurl’s symbols in versions document but are not documented by libcurl. These symbols are not impemented by PycURL.
As of this writing, the following symbols are thusly omitted: