{
    "mode": "pydoc",
    "parameter": "pycurl",
    "section": "",
    "url": "https://www.chedong.com/phpMan.php/pydoc/pycurl/json",
    "generated": "2026-06-02T13:22:20Z",
    "sections": {
        "NAME": {
            "content": "pycurl - This module implements an interface to the cURL library.\n",
            "subsections": []
        },
        "DESCRIPTION": {
            "content": "Types:\n\nCurl() -> New object.  Create a new curl object.\nCurlMulti() -> New object.  Create a new curl multi object.\nCurlShare() -> New object.  Create a new curl share object.\n\nFunctions:\n",
            "subsections": [
                {
                    "name": "global_init",
                    "content": ""
                },
                {
                    "name": "global_cleanup",
                    "content": ""
                },
                {
                    "name": "version_info",
                    "content": ""
                }
            ]
        },
        "CLASSES": {
            "content": "builtins.Exception(builtins.BaseException)\nerror\nbuiltins.object\nCurl\nCurlMulti\nCurlShare\n",
            "subsections": [
                {
                    "name": "class Curl",
                    "content": "|  Curl() -> New Curl object\n|\n|  Creates a new :ref:`curlobject` which corresponds to a\n|  ``CURL`` handle in libcurl. Curl objects automatically set\n|  CURLOPTVERBOSE to 0, CURLOPTNOPROGRESS to 1, provide a default\n|  CURLOPTUSERAGENT and setup CURLOPTERRORBUFFER to point to a\n|  private error buffer.\n|\n|  Implicitly calls :py:func:`pycurl.globalinit` if the latter has not yet been called.\n|\n|  Methods defined here:\n|\n|  delattr(self, name, /)\n|      Implement delattr(self, name).\n|\n|  getattribute(self, name, /)\n|      Return getattr(self, name).\n|\n|  getstate(...)\n|\n|  setattr(self, name, value, /)\n|      Implement setattr(self, name, value).\n|\n|  setstate(...)\n|\n|  close(...)\n|      close() -> None\n|\n|      Close handle and end curl session.\n|\n|      Corresponds to `curleasycleanup` in libcurl. This method is\n|      automatically called by pycurl when a Curl object no longer has any\n|      references to it, but can also be called explicitly.\n|\n|      .. curleasycleanup:\n|          https://curl.haxx.se/libcurl/c/curleasycleanup.html\n|\n|  errstr(...)\n|      errstr() -> string\n|\n|      Return the internal libcurl error buffer of this handle as a string.\n|\n|      Return value is a ``str`` instance on all Python versions.\n|      On Python 3, error buffer data is decoded using Python's default encoding\n|      at the time of the call. If this decoding fails, ``UnicodeDecodeError`` is\n|      raised. Use :ref:`errstrraw <errstrraw>` to retrieve the error buffer\n|      as a byte string in this case.\n|\n|      On Python 2, ``errstr`` and ``errstrraw`` behave identically.\n|\n|  errstrraw(...)\n|      errstrraw() -> byte string\n|\n|      Return the internal libcurl error buffer of this handle as a byte string.\n|\n|      Return value is a ``str`` instance on Python 2 and ``bytes`` instance\n|      on Python 3. Unlike :ref:`errstrraw <errstrraw>`, ``errstrraw``\n|      allows reading libcurl error buffer in Python 3 when its contents is not\n|      valid in Python's default encoding.\n|\n|      On Python 2, ``errstr`` and ``errstrraw`` behave identically.\n|\n|      *Added in version 7.43.0.2.*\n|\n|  getinfo(...)\n|      getinfo(option) -> Result\n|\n|      Extract and return information from a curl session,\n|      decoding string data in Python's default encoding at the time of the call.\n|      Corresponds to `curleasygetinfo` in libcurl.\n|      The ``getinfo`` method should not be called unless\n|      ``perform`` has been called and finished.\n|\n|      *option* is a constant corresponding to one of the\n|      ``CURLINFO*`` constants in libcurl. Most option constant names match\n|      the respective ``CURLINFO*`` constant names with the ``CURLINFO`` prefix\n|      removed, for example ``CURLINFOCONTENTTYPE`` is accessible as\n|      ``pycurl.CONTENTTYPE``. Exceptions to this rule are as follows:\n|\n|      - ``CURLINFOFILETIME`` is mapped as ``pycurl.INFOFILETIME``\n|      - ``CURLINFOCOOKIELIST`` is mapped as ``pycurl.INFOCOOKIELIST``\n|      - ``CURLINFOCERTINFO`` is mapped as ``pycurl.INFOCERTINFO``\n|      - ``CURLINFORTSPCLIENTCSEQ`` is mapped as ``pycurl.INFORTSPCLIENTCSEQ``\n|      - ``CURLINFORTSPCSEQRECV`` is mapped as ``pycurl.INFORTSPCSEQRECV``\n|      - ``CURLINFORTSPSERVERCSEQ`` is mapped as ``pycurl.INFORTSPSERVERCSEQ``\n|      - ``CURLINFORTSPSESSIONID`` is mapped as ``pycurl.INFORTSPSESSIONID``\n|\n|      The type of return value depends on the option, as follows:\n|\n|      - Options documented by libcurl to return an integer value return a\n|        Python integer (``long`` on Python 2, ``int`` on Python 3).\n|      - Options documented by libcurl to return a floating point value\n|        return a Python ``float``.\n|      - Options documented by libcurl to return a string value\n|        return a Python string (``str`` on Python 2 and Python 3).\n|        On Python 2, the string contains whatever data libcurl returned.\n|        On Python 3, the data returned by libcurl is decoded using the\n|        default string encoding at the time of the call.\n|        If the data cannot be decoded using the default encoding, ``UnicodeDecodeError``\n|        is raised. Use :ref:`getinforaw <getinforaw>`\n|        to retrieve the data as ``bytes`` in these\n|        cases.\n|      - ``SSLENGINES`` and ``INFOCOOKIELIST`` return a list of strings.\n|        The same encoding caveats apply; use :ref:`getinforaw <getinforaw>`\n|        to retrieve the\n|        data as a list of byte strings.\n|      - ``INFOCERTINFO`` returns a list with one element\n|        per certificate in the chain, starting with the leaf; each element is a\n|        sequence of *(key, value)* tuples where both ``key`` and ``value`` are\n|        strings. String encoding caveats apply; use :ref:`getinforaw <getinforaw>`\n|        to retrieve\n|        certificate data as byte strings.\n|\n|      On Python 2, ``getinfo`` and ``getinforaw`` behave identically.\n|\n|      Example usage::\n|\n|          import pycurl\n|          c = pycurl.Curl()\n|          c.setopt(pycurl.OPTCERTINFO, 1)\n|          c.setopt(pycurl.URL, \"https://python.org\")\n|          c.setopt(pycurl.FOLLOWLOCATION, 1)\n|          c.perform()\n|          print(c.getinfo(pycurl.HTTPCODE))\n|          # --> 200\n|          print(c.getinfo(pycurl.EFFECTIVEURL))\n|          # --> \"https://www.python.org/\"\n|          certinfo = c.getinfo(pycurl.INFOCERTINFO)\n|          print(certinfo)\n|          # --> [(('Subject', 'C = AU, ST = Some-State, O = PycURL test suite,\n|                   CN = localhost'), ('Issuer', 'C = AU, ST = Some-State,\n|                   O = PycURL test suite, OU = localhost, CN = localhost'),\n|                  ('Version', '0'), ...)]\n|\n|\n|      Raises pycurl.error exception upon failure.\n|\n|      .. curleasygetinfo:\n|          https://curl.haxx.se/libcurl/c/curleasygetinfo.html\n|\n|  getinforaw(...)\n|      getinforaw(option) -> Result\n|\n|      Extract and return information from a curl session,\n|      returning string data as byte strings.\n|      Corresponds to `curleasygetinfo` in libcurl.\n|      The ``getinforaw`` method should not be called unless\n|      ``perform`` has been called and finished.\n|\n|      *option* is a constant corresponding to one of the\n|      ``CURLINFO*`` constants in libcurl. Most option constant names match\n|      the respective ``CURLINFO*`` constant names with the ``CURLINFO`` prefix\n|      removed, for example ``CURLINFOCONTENTTYPE`` is accessible as\n|      ``pycurl.CONTENTTYPE``. Exceptions to this rule are as follows:\n|\n|      - ``CURLINFOFILETIME`` is mapped as ``pycurl.INFOFILETIME``\n|      - ``CURLINFOCOOKIELIST`` is mapped as ``pycurl.INFOCOOKIELIST``\n|      - ``CURLINFOCERTINFO`` is mapped as ``pycurl.INFOCERTINFO``\n|      - ``CURLINFORTSPCLIENTCSEQ`` is mapped as ``pycurl.INFORTSPCLIENTCSEQ``\n|      - ``CURLINFORTSPCSEQRECV`` is mapped as ``pycurl.INFORTSPCSEQRECV``\n|      - ``CURLINFORTSPSERVERCSEQ`` is mapped as ``pycurl.INFORTSPSERVERCSEQ``\n|      - ``CURLINFORTSPSESSIONID`` is mapped as ``pycurl.INFORTSPSESSIONID``\n|\n|      The type of return value depends on the option, as follows:\n|\n|      - Options documented by libcurl to return an integer value return a\n|        Python integer (``long`` on Python 2, ``int`` on Python 3).\n|      - Options documented by libcurl to return a floating point value\n|        return a Python ``float``.\n|      - Options documented by libcurl to return a string value\n|        return a Python byte string (``str`` on Python 2, ``bytes`` on Python 3).\n|        The string contains whatever data libcurl returned.\n|        Use :ref:`getinfo <getinfo>` to retrieve this data as a Unicode string on Python 3.\n|      - ``SSLENGINES`` and ``INFOCOOKIELIST`` return a list of byte strings.\n|        The same encoding caveats apply; use :ref:`getinfo <getinfo>` to retrieve the\n|        data as a list of potentially Unicode strings.\n|      - ``INFOCERTINFO`` returns a list with one element\n|        per certificate in the chain, starting with the leaf; each element is a\n|        sequence of *(key, value)* tuples where both ``key`` and ``value`` are\n|        byte strings. String encoding caveats apply; use :ref:`getinfo <getinfo>`\n|        to retrieve\n|        certificate data as potentially Unicode strings.\n|\n|      On Python 2, ``getinfo`` and ``getinforaw`` behave identically.\n|\n|      Example usage::\n|\n|          import pycurl\n|          c = pycurl.Curl()\n|          c.setopt(pycurl.OPTCERTINFO, 1)\n|          c.setopt(pycurl.URL, \"https://python.org\")\n|          c.setopt(pycurl.FOLLOWLOCATION, 1)\n|          c.perform()\n|          print(c.getinforaw(pycurl.HTTPCODE))\n|          # --> 200\n|          print(c.getinforaw(pycurl.EFFECTIVEURL))\n|          # --> b\"https://www.python.org/\"\n|          certinfo = c.getinforaw(pycurl.INFOCERTINFO)\n|          print(certinfo)\n|          # --> [((b'Subject', b'C = AU, ST = Some-State, O = PycURL test suite,\n|                   CN = localhost'), (b'Issuer', b'C = AU, ST = Some-State,\n|                   O = PycURL test suite, OU = localhost, CN = localhost'),\n|                  (b'Version', b'0'), ...)]\n|\n|\n|      Raises pycurl.error exception upon failure.\n|\n|      *Added in version 7.43.0.2.*\n|\n|      .. curleasygetinfo:\n|          https://curl.haxx.se/libcurl/c/curleasygetinfo.html\n|\n|  pause(...)\n|      pause(bitmask) -> None\n|\n|      Pause or unpause a curl handle. Bitmask should be a value such as\n|      PAUSERECV or PAUSECONT.\n|\n|      Corresponds to `curleasypause` in libcurl. The argument should be\n|      derived from the ``PAUSERECV``, ``PAUSESEND``, ``PAUSEALL`` and\n|      ``PAUSECONT`` constants.\n|\n|      Raises pycurl.error exception upon failure.\n|\n|      .. curleasypause: https://curl.haxx.se/libcurl/c/curleasypause.html\n|\n|  perform(...)\n|      perform() -> None\n|\n|      Perform a file transfer.\n|\n|      Corresponds to `curleasyperform` in libcurl.\n|\n|      Raises pycurl.error exception upon failure.\n|\n|      .. curleasyperform:\n|          https://curl.haxx.se/libcurl/c/curleasyperform.html\n|\n|  performrb(...)\n|      performrb() -> responsebody\n|\n|      Perform a file transfer and return response body as a byte string.\n|\n|      This method arranges for response body to be saved in a StringIO\n|      (Python 2) or BytesIO (Python 3) instance, then invokes :ref:`perform <perform>`\n|      to perform the file transfer, then returns the value of the StringIO/BytesIO\n|      instance which is a ``str`` instance on Python 2 and ``bytes`` instance\n|      on Python 3. Errors during transfer raise ``pycurl.error`` exceptions\n|      just like in :ref:`perform <perform>`.\n|\n|      Use :ref:`performrs <performrs>` to retrieve response body as a string\n|      (``str`` instance on both Python 2 and 3).\n|\n|      Raises ``pycurl.error`` exception upon failure.\n|\n|      *Added in version 7.43.0.2.*\n|\n|  performrs(...)\n|      performrs() -> responsebody\n|\n|      Perform a file transfer and return response body as a string.\n|\n|      On Python 2, this method arranges for response body to be saved in a StringIO\n|      instance, then invokes :ref:`perform <perform>`\n|      to perform the file transfer, then returns the value of the StringIO instance.\n|      This behavior is identical to :ref:`performrb <performrb>`.\n|\n|      On Python 3, this method arranges for response body to be saved in a BytesIO\n|      instance, then invokes :ref:`perform <perform>`\n|      to perform the file transfer, then decodes the response body in Python's\n|      default encoding and returns the decoded body as a Unicode string\n|      (``str`` instance). *Note:* decoding happens after the transfer finishes,\n|      thus an encoding error implies the transfer/network operation succeeded.\n|\n|      Any transfer errors raise ``pycurl.error`` exception,\n|      just like in :ref:`perform <perform>`.\n|\n|      Use :ref:`performrb <performrb>` to retrieve response body as a byte\n|      string (``bytes`` instance on Python 3) without attempting to decode it.\n|\n|      Raises ``pycurl.error`` exception upon failure.\n|\n|      *Added in version 7.43.0.2.*\n|\n|  reset(...)\n|      reset() -> None\n|\n|      Reset all options set on curl handle to default values, but preserves\n|      live connections, session ID cache, DNS cache, cookies, and shares.\n|\n|      Corresponds to `curleasyreset` in libcurl.\n|\n|      .. curleasyreset: https://curl.haxx.se/libcurl/c/curleasyreset.html\n|\n|  setopt(...)\n|      setopt(option, value) -> None\n|\n|      Set curl session option. Corresponds to `curleasysetopt` in libcurl.\n|\n|      *option* specifies which option to set. PycURL defines constants\n|      corresponding to ``CURLOPT*`` constants in libcurl, except that\n|      the ``CURLOPT`` prefix is removed. For example, ``CURLOPTURL`` is\n|      exposed in PycURL as ``pycurl.URL``, with some exceptions as detailed below.\n|      For convenience, ``CURLOPT*``\n|      constants are also exposed on the Curl objects themselves::\n|\n|          import pycurl\n|          c = pycurl.Curl()\n|          c.setopt(pycurl.URL, \"http://www.python.org/\")\n|          # Same as:\n|          c.setopt(c.URL, \"http://www.python.org/\")\n|\n|      The following are exceptions to option constant naming convention:\n|\n|      - ``CURLOPTFILETIME`` is mapped as ``pycurl.OPTFILETIME``\n|      - ``CURLOPTCERTINFO`` is mapped as ``pycurl.OPTCERTINFO``\n|      - ``CURLOPTCOOKIELIST`` is mapped as ``pycurl.COOKIELIST``\n|        and, as of PycURL 7.43.0.2, also as ``pycurl.OPTCOOKIELIST``\n|      - ``CURLOPTRTSPCLIENTCSEQ`` is mapped as ``pycurl.OPTRTSPCLIENTCSEQ``\n|      - ``CURLOPTRTSPREQUEST`` is mapped as ``pycurl.OPTRTSPREQUEST``\n|      - ``CURLOPTRTSPSERVERCSEQ`` is mapped as ``pycurl.OPTRTSPSERVERCSEQ``\n|      - ``CURLOPTRTSPSESSIONID`` is mapped as ``pycurl.OPTRTSPSESSIONID``\n|      - ``CURLOPTRTSPSTREAMURI`` is mapped as ``pycurl.OPTRTSPSTREAMURI``\n|      - ``CURLOPTRTSPTRANSPORT`` is mapped as ``pycurl.OPTRTSPTRANSPORT``\n|\n|      *value* specifies the value to set the option to. Different options accept\n|      values of different types:\n|\n|      - Options specified by `curleasysetopt` as accepting ``1`` or an\n|        integer value accept Python integers, long integers (on Python 2.x) and\n|        booleans::\n|\n|          c.setopt(pycurl.FOLLOWLOCATION, True)\n|          c.setopt(pycurl.FOLLOWLOCATION, 1)\n|          # Python 2.x only:\n|          c.setopt(pycurl.FOLLOWLOCATION, 1L)\n|\n|      - Options specified as accepting strings by ``curleasysetopt`` accept\n|        byte strings (``str`` on Python 2, ``bytes`` on Python 3) and\n|        Unicode strings with ASCII code points only.\n|        For more information, please refer to :ref:`unicode`. Example::\n|\n|          c.setopt(pycurl.URL, \"http://www.python.org/\")\n|          c.setopt(pycurl.URL, u\"http://www.python.org/\")\n|          # Python 3.x only:\n|          c.setopt(pycurl.URL, b\"http://www.python.org/\")\n|\n|      - ``HTTP200ALIASES``, ``HTTPHEADER``, ``POSTQUOTE``, ``PREQUOTE``,\n|        ``PROXYHEADER`` and\n|        ``QUOTE`` accept a list or tuple of strings. The same rules apply to these\n|        strings as do to string option values. Example::\n|\n|          c.setopt(pycurl.HTTPHEADER, [\"Accept:\"])\n|          c.setopt(pycurl.HTTPHEADER, (\"Accept:\",))\n|\n|      - ``READDATA`` accepts a file object or any Python object which has\n|        a ``read`` method. On Python 2, a file object will be passed directly\n|        to libcurl and may result in greater transfer efficiency, unless\n|        PycURL has been compiled with ``AVOIDSTDIO`` option.\n|        On Python 3 and on Python 2 when the value is not a true file object,\n|        ``READDATA`` is emulated in PycURL via ``READFUNCTION``.\n|        The file should generally be opened in binary mode. Example::\n|\n|          f = open('file.txt', 'rb')\n|          c.setopt(c.READDATA, f)\n|\n|      - ``WRITEDATA`` and ``WRITEHEADER`` accept a file object or any Python\n|        object which has a ``write`` method. On Python 2, a file object will\n|        be passed directly to libcurl and may result in greater transfer efficiency,\n|        unless PycURL has been compiled with ``AVOIDSTDIO`` option.\n|        On Python 3 and on Python 2 when the value is not a true file object,\n|        ``WRITEDATA`` is emulated in PycURL via ``WRITEFUNCTION``.\n|        The file should generally be opened in binary mode. Example::\n|\n|          f = open('/dev/null', 'wb')\n|          c.setopt(c.WRITEDATA, f)\n|\n|      - ``*FUNCTION`` options accept a function. Supported callbacks are documented\n|        in :ref:`callbacks`. Example::\n|\n|          # Python 2\n|          import StringIO\n|          b = StringIO.StringIO()\n|          c.setopt(pycurl.WRITEFUNCTION, b.write)\n|\n|      - ``SHARE`` option accepts a :ref:`curlshareobject`.\n|\n|      It is possible to set integer options - and only them - that PycURL does\n|      not know about by using the numeric value of the option constant directly.\n|      For example, ``pycurl.VERBOSE`` has the value 42, and may be set as follows::\n|\n|          c.setopt(42, 1)\n|\n|      *setopt* can reset some options to their default value, performing the job of\n|      :py:meth:`pycurl.Curl.unsetopt`, if ``None`` is passed\n|      for the option value. The following two calls are equivalent::\n|\n|          c.setopt(c.URL, None)\n|          c.unsetopt(c.URL)\n|\n|      Raises TypeError when the option value is not of a type accepted by the\n|      respective option, and pycurl.error exception when libcurl rejects the\n|      option or its value.\n|\n|      .. curleasysetopt: https://curl.haxx.se/libcurl/c/curleasysetopt.html\n|\n|  setoptstring(...)\n|      setoptstring(option, value) -> None\n|\n|      Set curl session option to a string value.\n|\n|      This method allows setting string options that are not officially supported\n|      by PycURL, for example because they did not exist when the version of PycURL\n|      being used was released.\n|      :py:meth:`pycurl.Curl.setopt` should be used for setting options that\n|      PycURL knows about.\n|\n|      Warning: No checking is performed that *option* does, in fact,\n|      expect a string value. Using this method incorrectly can crash the program\n|      and may lead to a security vulnerability.\n|      Furthermore, it is on the application to ensure that the *value* object\n|      does not get garbage collected while libcurl is using it.\n|      libcurl copies most string options but not all; one option whose value\n|      is not copied by libcurl is `CURLOPTPOSTFIELDS`.\n|\n|      *option* would generally need to be given as an integer literal rather than\n|      a symbolic constant.\n|\n|      *value* can be a binary string or a Unicode string using ASCII code points,\n|      same as with string options given to PycURL elsewhere.\n|\n|      Example setting URL via ``setoptstring``::\n|\n|          import pycurl\n|          c = pycurl.Curl()\n|          c.setoptstring(10002, \"http://www.python.org/\")\n|\n|      .. CURLOPTPOSTFIELDS: https://curl.haxx.se/libcurl/c/CURLOPTPOSTFIELDS.html\n|\n|  unsetopt(...)\n|      unsetopt(option) -> None\n|\n|      Reset curl session option to its default value.\n|\n|      Only some curl options may be reset via this method.\n|\n|      libcurl does not provide a general way to reset a single option to its default value;\n|      :py:meth:`pycurl.Curl.reset` resets all options to their default values,\n|      otherwise :py:meth:`pycurl.Curl.setopt` must be called with whatever value\n|      is the default. For convenience, PycURL provides this unsetopt method\n|      to reset some of the options to their default values.\n|\n|      Raises pycurl.error exception on failure.\n|\n|      ``c.unsetopt(option)`` is equivalent to ``c.setopt(option, None)``.\n|\n|  ----------------------------------------------------------------------\n|  Static methods defined here:\n|\n|  new(*args, kwargs) from builtins.type\n|      Create and return a new object.  See help(type) for accurate signature.\n"
                },
                {
                    "name": "class CurlMulti",
                    "content": "|  CurlMulti() -> New CurlMulti object\n|\n|  Creates a new :ref:`curlmultiobject` which corresponds to\n|  a ``CURLM`` handle in libcurl.\n|\n|  Methods defined here:\n|\n|  delattr(self, name, /)\n|      Implement delattr(self, name).\n|\n|  getattribute(self, name, /)\n|      Return getattr(self, name).\n|\n|  getstate(...)\n|\n|  setattr(self, name, value, /)\n|      Implement setattr(self, name, value).\n|\n|  setstate(...)\n|\n|  addhandle(...)\n|      addhandle(Curl object) -> None\n|\n|      Corresponds to `curlmultiaddhandle` in libcurl. This method adds an\n|      existing and valid Curl object to the CurlMulti object.\n|\n|      *Changed in version 7.43.0.2:* addhandle now ensures that the Curl object\n|      is not garbage collected while it is being used by a CurlMulti object.\n|      Previously application had to maintain an outstanding reference to the Curl\n|      object to keep it from being garbage collected.\n|\n|      .. curlmultiaddhandle:\n|          https://curl.haxx.se/libcurl/c/curlmultiaddhandle.html\n|\n|  assign(...)\n|      assign(sockfd, object) -> None\n|\n|      Creates an association in the multi handle between the given socket and\n|      a private object in the application.\n|      Corresponds to `curlmultiassign` in libcurl.\n|\n|      .. curlmultiassign: https://curl.haxx.se/libcurl/c/curlmultiassign.html\n|\n|  close(...)\n|      close() -> None\n|\n|      Corresponds to `curlmulticleanup` in libcurl. This method is\n|      automatically called by pycurl when a CurlMulti object no longer has any\n|      references to it, but can also be called explicitly.\n|\n|      .. curlmulticleanup:\n|          https://curl.haxx.se/libcurl/c/curlmulticleanup.html\n|\n|  fdset(...)\n|      fdset() -> tuple of lists with active file descriptors, readable, writeable, exceptions\n|\n|      Returns a tuple of three lists that can be passed to the select.select() method.\n|\n|      Corresponds to `curlmultifdset` in libcurl. This method extracts the\n|      file descriptor information from a CurlMulti object. The returned lists can\n|      be used with the ``select`` module to poll for events.\n|\n|      Example usage::\n|\n|          import pycurl\n|          c = pycurl.Curl()\n|          c.setopt(pycurl.URL, \"https://curl.haxx.se\")\n|          m = pycurl.CurlMulti()\n|          m.addhandle(c)\n|          while 1:\n|              ret, numhandles = m.perform()\n|              if ret != pycurl.ECALLMULTIPERFORM: break\n|          while numhandles:\n|              apply(select.select, m.fdset() + (1,))\n|              while 1:\n|                  ret, numhandles = m.perform()\n|                  if ret != pycurl.ECALLMULTIPERFORM: break\n|\n|      .. curlmultifdset:\n|          https://curl.haxx.se/libcurl/c/curlmultifdset.html\n|\n|  inforead(...)\n|      inforead([maxobjects]) -> tuple(number of queued messages, a list of successful objects, a list of failed objects)\n|\n|      Corresponds to the `curlmultiinforead` function in libcurl.\n|\n|      This method extracts at most *max* messages from the multi stack and returns\n|      them in two lists. The first list contains the handles which completed\n|      successfully and the second list contains a tuple *(curl object, curl error\n|      number, curl error message)* for each failed curl object. The curl error\n|      message is returned as a Python string which is decoded from the curl error\n|      string using the `surrogateescape` error handler. The number of\n|      queued messages after this method has been called is also returned.\n|\n|      .. curlmultiinforead:\n|          https://curl.haxx.se/libcurl/c/curlmultiinforead.html\n|\n|      .. surrogateescape:\n|          https://www.python.org/dev/peps/pep-0383/\n|\n|  perform(...)\n|      perform() -> tuple of status and the number of active Curl objects\n|\n|      Corresponds to `curlmultiperform` in libcurl.\n|\n|      .. curlmultiperform:\n|          https://curl.haxx.se/libcurl/c/curlmultiperform.html\n|\n|  removehandle(...)\n|      removehandle(Curl object) -> None\n|\n|      Corresponds to `curlmultiremovehandle` in libcurl. This method\n|      removes an existing and valid Curl object from the CurlMulti object.\n|\n|      .. curlmultiremovehandle:\n|          https://curl.haxx.se/libcurl/c/curlmultiremovehandle.html\n|\n|  select(...)\n|      select([timeout]) -> number of ready file descriptors or -1 on timeout\n|\n|      Returns result from doing a select() on the curl multi file descriptor\n|      with the given timeout.\n|\n|      This is a convenience function which simplifies the combined use of\n|      ``fdset()`` and the ``select`` module.\n|\n|      Example usage::\n|\n|          import pycurl\n|          c = pycurl.Curl()\n|          c.setopt(pycurl.URL, \"https://curl.haxx.se\")\n|          m = pycurl.CurlMulti()\n|          m.addhandle(c)\n|          while 1:\n|              ret, numhandles = m.perform()\n|              if ret != pycurl.ECALLMULTIPERFORM: break\n|          while numhandles:\n|              ret = m.select(1.0)\n|              if ret == -1:  continue\n|              while 1:\n|                  ret, numhandles = m.perform()\n|                  if ret != pycurl.ECALLMULTIPERFORM: break\n|\n|  setopt(...)\n|      setopt(option, value) -> None\n|\n|      Set curl multi option. Corresponds to `curlmultisetopt` in libcurl.\n|\n|      *option* specifies which option to set. PycURL defines constants\n|      corresponding to ``CURLMOPT*`` constants in libcurl, except that\n|      the ``CURLMOPT`` prefix is replaced with ``M`` prefix.\n|      For example, ``CURLMOPTPIPELINING`` is\n|      exposed in PycURL as ``pycurl.MPIPELINING``. For convenience, ``CURLMOPT*``\n|      constants are also exposed on CurlMulti objects::\n|\n|          import pycurl\n|          m = pycurl.CurlMulti()\n|          m.setopt(pycurl.MPIPELINING, 1)\n|          # Same as:\n|          m.setopt(m.MPIPELINING, 1)\n|\n|      *value* specifies the value to set the option to. Different options accept\n|      values of different types:\n|\n|      - Options specified by `curlmultisetopt` as accepting ``1`` or an\n|        integer value accept Python integers, long integers (on Python 2.x) and\n|        booleans::\n|\n|          m.setopt(pycurl.MPIPELINING, True)\n|          m.setopt(pycurl.MPIPELINING, 1)\n|          # Python 2.x only:\n|          m.setopt(pycurl.MPIPELINING, 1L)\n|\n|      - ``*FUNCTION`` options accept a function. Supported callbacks are\n|        ``CURLMOPTSOCKETFUNCTION`` AND ``CURLMOPTTIMERFUNCTION``. Please refer to\n|        the PycURL test suite for examples on using the callbacks.\n|\n|      Raises TypeError when the option value is not of a type accepted by the\n|      respective option, and pycurl.error exception when libcurl rejects the\n|      option or its value.\n|\n|      .. curlmultisetopt: https://curl.haxx.se/libcurl/c/curlmultisetopt.html\n|\n|  socketaction(...)\n|      socketaction(sockfd, evbitmask) -> (result, numrunninghandles)\n|\n|      Returns result from doing a socketaction() on the curl multi file descriptor\n|      with the given timeout.\n|      Corresponds to `curlmultisocketaction` in libcurl.\n|\n|      The return value is a two-element tuple. The first element is the return\n|      value of the underlying ``curlmultisocketaction`` function, and it is\n|      always zero (``CURLEOK``) because any other return value would cause\n|      ``socketaction`` to raise an exception. The second element is the number of\n|      running easy handles within this multi handle. When the number of running\n|      handles reaches zero, all transfers have completed. Note that if the number\n|      of running handles has decreased by one compared to the previous invocation,\n|      this is not mean the handle corresponding to the ``sockfd`` provided as\n|      the argument to this function was the completed handle.\n|\n|      .. curlmultisocketaction: https://curl.haxx.se/libcurl/c/curlmultisocketaction.html\n|\n|  socketall(...)\n|      socketall() -> tuple\n|\n|      Returns result from doing a socketall() on the curl multi file descriptor\n|      with the given timeout.\n|\n|  timeout(...)\n|      timeout() -> int\n|\n|      Returns how long to wait for action before proceeding.\n|      Corresponds to `curlmultitimeout` in libcurl.\n|\n|      .. curlmultitimeout: https://curl.haxx.se/libcurl/c/curlmultitimeout.html\n|\n|  ----------------------------------------------------------------------\n|  Static methods defined here:\n|\n|  new(*args, kwargs) from builtins.type\n|      Create and return a new object.  See help(type) for accurate signature.\n"
                },
                {
                    "name": "class CurlShare",
                    "content": "|  CurlShare() -> New CurlShare object\n|\n|  Creates a new :ref:`curlshareobject` which corresponds to a\n|  ``CURLSH`` handle in libcurl. CurlShare objects is what you pass as an\n|  argument to the SHARE option on :ref:`Curl objects <curlobject>`.\n|\n|  Methods defined here:\n|\n|  delattr(self, name, /)\n|      Implement delattr(self, name).\n|\n|  getattribute(self, name, /)\n|      Return getattr(self, name).\n|\n|  getstate(...)\n|\n|  setattr(self, name, value, /)\n|      Implement setattr(self, name, value).\n|\n|  setstate(...)\n|\n|  close(...)\n|      close() -> None\n|\n|      Close shared handle.\n|\n|      Corresponds to `curlsharecleanup` in libcurl. This method is\n|      automatically called by pycurl when a CurlShare object no longer has\n|      any references to it, but can also be called explicitly.\n|\n|      .. curlsharecleanup:\n|          https://curl.haxx.se/libcurl/c/curlsharecleanup.html\n|\n|  setopt(...)\n|      setopt(option, value) -> None\n|\n|      Set curl share option.\n|\n|      Corresponds to `curlsharesetopt` in libcurl, where *option* is\n|      specified with the ``CURLSHOPT*`` constants in libcurl, except that the\n|      ``CURLSHOPT`` prefix has been changed to ``SH``. Currently, *value* must be\n|      one of: ``LOCKDATACOOKIE``, ``LOCKDATADNS``, ``LOCKDATASSLSESSION`` or\n|      ``LOCKDATACONNECT``.\n|\n|      Example usage::\n|\n|          import pycurl\n|          curl = pycurl.Curl()\n|          s = pycurl.CurlShare()\n|          s.setopt(pycurl.SHSHARE, pycurl.LOCKDATACOOKIE)\n|          s.setopt(pycurl.SHSHARE, pycurl.LOCKDATADNS)\n|          curl.setopt(pycurl.URL, 'https://curl.haxx.se')\n|          curl.setopt(pycurl.SHARE, s)\n|          curl.perform()\n|          curl.close()\n|\n|      Raises pycurl.error exception upon failure.\n|\n|      .. curlsharesetopt:\n|          https://curl.haxx.se/libcurl/c/curlsharesetopt.html\n|\n|  ----------------------------------------------------------------------\n|  Static methods defined here:\n|\n|  new(*args, kwargs) from builtins.type\n|      Create and return a new object.  See help(type) for accurate signature.\n"
                },
                {
                    "name": "class error",
                    "content": "|  Method resolution order:\n|      error\n|      builtins.Exception\n|      builtins.BaseException\n|      builtins.object\n|\n|  Data descriptors defined here:\n|\n|  weakref\n|      list of weak references to the object (if defined)\n|\n|  ----------------------------------------------------------------------\n|  Methods inherited from builtins.Exception:\n|\n|  init(self, /, *args, kwargs)\n|      Initialize self.  See help(type(self)) for accurate signature.\n|\n|  ----------------------------------------------------------------------\n|  Static methods inherited from builtins.Exception:\n|\n|  new(*args, kwargs) from builtins.type\n|      Create and return a new object.  See help(type) for accurate signature.\n|\n|  ----------------------------------------------------------------------\n|  Methods inherited from builtins.BaseException:\n|\n|  delattr(self, name, /)\n|      Implement delattr(self, name).\n|\n|  getattribute(self, name, /)\n|      Return getattr(self, name).\n|\n|  reduce(...)\n|      Helper for pickle.\n|\n|  repr(self, /)\n|      Return repr(self).\n|\n|  setattr(self, name, value, /)\n|      Implement setattr(self, name, value).\n|\n|  setstate(...)\n|\n|  str(self, /)\n|      Return str(self).\n|\n|  withtraceback(...)\n|      Exception.withtraceback(tb) --\n|      set self.traceback to tb and return self.\n|\n|  ----------------------------------------------------------------------\n|  Data descriptors inherited from builtins.BaseException:\n|\n|  cause\n|      exception cause\n|\n|  context\n|      exception context\n|\n|  dict\n|\n|  suppresscontext\n|\n|  traceback\n|\n|  args\n"
                }
            ]
        },
        "FUNCTIONS": {
            "content": "",
            "subsections": [
                {
                    "name": "global_cleanup",
                    "content": "globalcleanup() -> None\n\nCleanup curl environment.\n\nCorresponds to `curlglobalcleanup` in libcurl.\n\n.. curlglobalcleanup: https://curl.haxx.se/libcurl/c/curlglobalcleanup.html\n"
                },
                {
                    "name": "global_init",
                    "content": "globalinit(option) -> None\n\nInitialize curl environment.\n\n*option* is one of the constants pycurl.GLOBALSSL, pycurl.GLOBALWIN32,\npycurl.GLOBALALL, pycurl.GLOBALNOTHING, pycurl.GLOBALDEFAULT.\n\nCorresponds to `curlglobalinit` in libcurl.\n\n.. curlglobalinit: https://curl.haxx.se/libcurl/c/curlglobalinit.html\n"
                },
                {
                    "name": "version_info",
                    "content": "versioninfo() -> tuple\n\nReturns a 12-tuple with the version info.\n\nCorresponds to `curlversioninfo` in libcurl. Returns a tuple of\ninformation which is similar to the ``curlversioninfodata`` struct\nreturned by ``curlversioninfo()`` in libcurl.\n\nExample usage::\n\n>>> import pycurl\n>>> pycurl.versioninfo()\n(3, '7.33.0', 467200, 'amd64-portbld-freebsd9.1', 33436, 'OpenSSL/0.9.8x',\n0, '1.2.7', ('dict', 'file', 'ftp', 'ftps', 'gopher', 'http', 'https',\n'imap', 'imaps', 'pop3', 'pop3s', 'rtsp', 'smtp', 'smtps', 'telnet',\n'tftp'), None, 0, None)\n\n.. curlversioninfo: https://curl.haxx.se/libcurl/c/curlversioninfo.html\n"
                }
            ]
        },
        "DATA": {
            "content": "ACCEPTTIMEOUTMS = 212\nACCEPTENCODING = 10102\nADDRESSSCOPE = 171\nAPPCONNECTTIME = 3145761\nAPPEND = 50\nAUTOREFERER = 58\nBUFFERSIZE = 98\nCAINFO = 10065\nCAPATH = 10097\nCLOSESOCKETFUNCTION = 20208\nCOMPILELIBCURLVERSIONNUM = 479488\nCOMPILEPYVERSIONHEX = 50988016\nCONDITIONUNMET = 2097187\nCONNECTTIMEOUT = 78\nCONNECTTIMEOUTMS = 156\nCONNECTONLY = 141\nCONNECTTIME = 3145733\nCONNECTTO = 10243\nCONTENTLENGTHDOWNLOAD = 3145743\nCONTENTLENGTHUPLOAD = 3145744\nCONTENTTYPE = 1048594\nCOOKIE = 10022\nCOOKIEFILE = 10031\nCOOKIEJAR = 10082\nCOOKIELIST = 10135\nCOOKIESESSION = 96\nCOPYPOSTFIELDS = 10165\nCRLF = 27\nCRLFILE = 10169\nCSELECTERR = 4\nCSELECTIN = 1\nCSELECTOUT = 2\nCURLHTTPVERSION10 = 1\nCURLHTTPVERSION11 = 2\nCURLHTTPVERSION2 = 3\nCURLHTTPVERSION2TLS = 4\nCURLHTTPVERSION20 = 3\nCURLHTTPVERSION2PRIORKNOWLEDGE = 5\nCURLHTTPVERSIONLAST = 31\nCURLHTTPVERSIONNONE = 0\nCURLVERSIONALTSVC = 16777216\nCURLVERSIONBROTLI = 8388608\nCURLVERSIONGSASL = 536870912\nCURLVERSIONHSTS = 268435456\nCURLVERSIONHTTP3 = 33554432\nCURLVERSIONHTTPSPROXY = 2097152\nCURLVERSIONMULTISSL = 4194304\nCURLVERSIONUNICODE = 134217728\nCURLVERSIONZSTD = 67108864\nCUSTOMREQUEST = 10036\nDEBUGFUNCTION = 20094\nDEFAULTPROTOCOL = 10238\nDIRLISTONLY = 48\nDNSCACHETIMEOUT = 92\nDNSSERVERS = 10211\nDNSUSEGLOBALCACHE = 91\nDOHURL = 10279\nEFFECTIVEURL = 1048577\nEGDSOCKET = 10077\nENCODING = 10102\nEXPECT100TIMEOUTMS = 227\nEABORTEDBYCALLBACK = 42\nEAGAIN = 81\nEALREADYCOMPLETE = 99999\nEBADCALLINGORDER = 44\nEBADCONTENTENCODING = 61\nEBADDOWNLOADRESUME = 36\nEBADFUNCTIONARGUMENT = 43\nEBADPASSWORDENTERED = 46\nECALLMULTIPERFORM = -1\nECHUNKFAILED = 88\nECONVFAILED = 75\nECONVREQD = 76\nECOULDNTCONNECT = 7\nECOULDNTRESOLVEHOST = 6\nECOULDNTRESOLVEPROXY = 5\nEFAILEDINIT = 2\nEFILESIZEEXCEEDED = 63\nEFILECOULDNTREADFILE = 37\nEFTPACCEPTFAILED = 10\nEFTPACCEPTTIMEOUT = 12\nEFTPACCESSDENIED = 9\nEFTPBADDOWNLOADRESUME = 36\nEFTPBADFILELIST = 87\nEFTPCANTGETHOST = 15\nEFTPCANTRECONNECT = 16\nEFTPCOULDNTGETSIZE = 32\nEFTPCOULDNTRETRFILE = 19\nEFTPCOULDNTSETASCII = 29\nEFTPCOULDNTSETBINARY = 17\nEFTPCOULDNTSETTYPE = 17\nEFTPCOULDNTSTORFILE = 25\nEFTPCOULDNTUSEREST = 31\nEFTPPARTIALFILE = 18\nEFTPPORTFAILED = 30\nEFTPPRETFAILED = 84\nEFTPQUOTEERROR = 21\nEFTPSSLFAILED = 64\nEFTPUSERPASSWORDINCORRECT = 10\nEFTPWEIRD227FORMAT = 14\nEFTPWEIRDPASSREPLY = 11\nEFTPWEIRDPASVREPLY = 13\nEFTPWEIRDSERVERREPLY = 8\nEFTPWEIRDUSERREPLY = 12\nEFTPWRITEERROR = 20\nEFUNCTIONNOTFOUND = 41\nEGOTNOTHING = 52\nEHTTP2 = 16\nEHTTPNOTFOUND = 22\nEHTTPPORTFAILED = 45\nEHTTPPOSTERROR = 34\nEHTTPRANGEERROR = 33\nEHTTPRETURNEDERROR = 22\nEINTERFACEFAILED = 45\nELDAPCANNOTBIND = 38\nELDAPINVALIDURL = 62\nELDAPSEARCHFAILED = 39\nELIBRARYNOTFOUND = 40\nELOGINDENIED = 67\nEMALFORMATUSER = 24\nEMULTIADDEDALREADY = 7\nEMULTIBADEASYHANDLE = 2\nEMULTIBADHANDLE = 1\nEMULTIBADSOCKET = 5\nEMULTICALLMULTIPERFORM = -1\nEMULTICALLMULTISOCKET = -1\nEMULTIINTERNALERROR = 4\nEMULTIOK = 0\nEMULTIOUTOFMEMORY = 3\nEMULTIUNKNOWNOPTION = 6\nENOTBUILTIN = 4\nENOCONNECTIONAVAILABLE = 89\nEOK = 0\nEOPERATIONTIMEDOUT = 28\nEOPERATIONTIMEOUTED = 28\nEOUTOFMEMORY = 27\nEPARTIALFILE = 18\nEPEERFAILEDVERIFICATION = 60\nEQUOTEERROR = 21\nERANGEERROR = 33\nEREADERROR = 26\nERECVERROR = 56\nEREMOTEACCESSDENIED = 9\nEREMOTEDISKFULL = 70\nEREMOTEFILEEXISTS = 73\nEREMOTEFILENOTFOUND = 78\nERTSPCSEQERROR = 85\nERTSPSESSIONERROR = 86\nESENDERROR = 55\nESENDFAILREWIND = 65\nESHAREINUSE = 57\nESSH = 79\nESSLCACERT = 60\nESSLCACERTBADFILE = 77\nESSLCERTPROBLEM = 58\nESSLCIPHER = 59\nESSLCONNECTERROR = 35\nESSLCRLBADFILE = 82\nESSLENGINEINITFAILED = 66\nESSLENGINENOTFOUND = 53\nESSLENGINESETFAILED = 54\nESSLINVALIDCERTSTATUS = 91\nESSLISSUERERROR = 83\nESSLPEERCERTIFICATE = 60\nESSLPINNEDPUBKEYNOTMATCH = 90\nESSLSHUTDOWNFAILED = 80\nETELNETOPTIONSYNTAX = 49\nETFTPDISKFULL = 70\nETFTPEXISTS = 73\nETFTPILLEGAL = 71\nETFTPNOSUCHUSER = 74\nETFTPNOTFOUND = 68\nETFTPPERM = 69\nETFTPUNKNOWNID = 72\nETOOMANYREDIRECTS = 47\nEUNKNOWNOPTION = 48\nEUNKNOWNTELNETOPTION = 48\nEUNSUPPORTEDPROTOCOL = 1\nEUPLOADFAILED = 25\nEURLMALFORMAT = 3\nEURLMALFORMATUSER = 4\nEUSESSLFAILED = 64\nEWRITEERROR = 23\nFAILONERROR = 45\nFILE = 10001\nFOLLOWLOCATION = 52\nFORBIDREUSE = 75\nFORMBUFFER = 11\nFORMBUFFERPTR = 12\nFORMCONTENTS = 4\nFORMCONTENTTYPE = 14\nFORMFILE = 10\nFORMFILENAME = 16\nFRESHCONNECT = 74\nFTPAPPEND = 50\nFTPAUTHDEFAULT = 0\nFTPAUTHSSL = 1\nFTPAUTHTLS = 2\nFTPLISTONLY = 48\nFTPMETHODDEFAULT = 0\nFTPMETHODMULTICWD = 1\nFTPMETHODNOCWD = 2\nFTPMETHODSINGLECWD = 3\nFTPPORT = 10017\nFTPSSLAUTH = 129\nFTPSSLALL = 3\nFTPSSLCONTROL = 2\nFTPSSLNONE = 0\nFTPSSLTRY = 1\nFTPACCOUNT = 10134\nFTPALTERNATIVETOUSER = 10147\nFTPCREATEMISSINGDIRS = 110\nFTPENTRYPATH = 1048606\nFTPFILEMETHOD = 138\nFTPRESPONSETIMEOUT = 112\nFTPSKIPPASVIP = 137\nFTPSSL = 119\nFTPSSLCCC = 154\nFTPUSEEPRT = 106\nFTPUSEEPSV = 85\nFTPUSEPRET = 188\nGLOBALACKEINTR = 4\nGLOBALALL = 3\nGLOBALDEFAULT = 3\nGLOBALNOTHING = 0\nGLOBALSSL = 1\nGLOBALWIN32 = 2\nGSSAPIDELEGATION = 210\nGSSAPIDELEGATIONFLAG = 2\nGSSAPIDELEGATIONNONE = 0\nGSSAPIDELEGATIONPOLICYFLAG = 1\nHAPROXYPROTOCOL = 274\nHEADER = 42\nHEADERFUNCTION = 20079\nHEADEROPT = 229\nHEADERSEPARATE = 1\nHEADERSIZE = 2097163\nHEADERUNIFIED = 0\nHTTP200ALIASES = 10104\nHTTPAUTH = 107\nHTTPAUTHANY = -17\nHTTPAUTHANYSAFE = -18\nHTTPAUTHAVAIL = 2097175\nHTTPAUTHBASIC = 1\nHTTPAUTHDIGEST = 2\nHTTPAUTHDIGESTIE = 16\nHTTPAUTHGSSNEGOTIATE = 4\nHTTPAUTHNEGOTIATE = 4\nHTTPAUTHNONE = 0\nHTTPAUTHNTLM = 8\nHTTPAUTHNTLMWB = 32\nHTTPAUTHONLY = 2147483648\nHTTPGET = 80\nHTTPHEADER = 10023\nHTTPPOST = 10024\nHTTPPROXYTUNNEL = 61\nHTTPCODE = 2097154\nHTTPCONNECTCODE = 2097174\nHTTPCONTENTDECODING = 158\nHTTPTRANSFERDECODING = 157\nHTTPVERSION = 84\nIGNORECONTENTLENGTH = 136\nINFILE = 10009\nINFILESIZE = 30115\nINFILESIZELARGE = 30115\nINFOTYPEDATAIN = 3\nINFOTYPEDATAOUT = 4\nINFOTYPEHEADERIN = 1\nINFOTYPEHEADEROUT = 2\nINFOTYPESSLDATAIN = 5\nINFOTYPESSLDATAOUT = 6\nINFOTYPETEXT = 0\nINFOCERTINFO = 4194338\nINFOCOOKIELIST = 4194332\nINFOFILETIME = 2097166\nINFOHTTPVERSION = 2097198\nINFORTSPCLIENTCSEQ = 2097189\nINFORTSPCSEQRECV = 2097191\nINFORTSPSERVERCSEQ = 2097190\nINFORTSPSESSIONID = 1048612\nINTERFACE = 10062\nIOCMDNOP = 0\nIOCMDRESTARTREAD = 1\nIOCTLFUNCTION = 20130\nIOEFAILRESTART = 2\nIOEOK = 0\nIOEUNKNOWNCMD = 1\nIPRESOLVE = 113\nIPRESOLVEV4 = 1\nIPRESOLVEV6 = 2\nIPRESOLVEWHATEVER = 0\nISSUERCERT = 10170\nKEYPASSWD = 10026\nKHMATCHMISMATCH = 1\nKHMATCHMISSING = 2\nKHMATCHOK = 0\nKHSTATDEFER = 3\nKHSTATFINE = 1\nKHSTATFINEADDTOFILE = 0\nKHSTATREJECT = 2\nKHTYPEDSS = 3\nKHTYPERSA = 2\nKHTYPERSA1 = 1\nKHTYPEUNKNOWN = 0\nKRB4LEVEL = 10063\nKRBLEVEL = 10063\nLASTSOCKET = 2097181\nLOCALPORT = 139\nLOCALPORTRANGE = 140\nLOCALIP = 1048617\nLOCALPORT = 2097194\nLOCKDATACONNECT = 5\nLOCKDATACOOKIE = 2\nLOCKDATADNS = 3\nLOCKDATASSLSESSION = 4\nLOGINOPTIONS = 10224\nLOWSPEEDLIMIT = 19\nLOWSPEEDTIME = 20\nMAILAUTH = 10217\nMAILFROM = 10186\nMAILRCPT = 10187\nMAXAGECONN = 288\nMAXCONNECTS = 71\nMAXFILESIZE = 30117\nMAXFILESIZELARGE = 30117\nMAXREDIRS = 68\nMAXRECVSPEEDLARGE = 30146\nMAXSENDSPEEDLARGE = 30145\nMCHUNKLENGTHPENALTYSIZE = 30010\nMCONTENTLENGTHPENALTYSIZE = 30009\nMMAXCONNECTS = 6\nMMAXCONCURRENTSTREAMS = 16\nMMAXHOSTCONNECTIONS = 7\nMMAXPIPELINELENGTH = 8\nMMAXTOTALCONNECTIONS = 13\nMPIPELINING = 3\nMPIPELININGSERVERBL = 10012\nMPIPELININGSITEBL = 10011\nMSOCKETFUNCTION = 20001\nMTIMERFUNCTION = 20004\nNAMELOOKUPTIME = 3145732\nNETRC = 51\nNETRCFILE = 10118\nNETRCIGNORED = 0\nNETRCOPTIONAL = 1\nNETRCREQUIRED = 2\nNEWDIRECTORYPERMS = 160\nNEWFILEPERMS = 159\nNOBODY = 44\nNOPROGRESS = 43\nNOPROXY = 10177\nNOSIGNAL = 99\nNUMCONNECTS = 2097178\nOPENSOCKETFUNCTION = 20163\nOPTCERTINFO = 172\nOPTCOOKIELIST = 10135\nOPTFILETIME = 69\nOPTRTSPCLIENTCSEQ = 193\nOPTRTSPREQUEST = 189\nOPTRTSPSERVERCSEQ = 194\nOPTRTSPSESSIONID = 10190\nOPTRTSPSTREAMURI = 10191\nOPTRTSPTRANSPORT = 10192\nOSERRNO = 2097177\nPASSWORD = 10174\nPATHASIS = 234\nPAUSEALL = 5\nPAUSECONT = 0\nPAUSERECV = 1\nPAUSESEND = 4\nPINNEDPUBLICKEY = 10230\nPIPEWAIT = 237\nPIPEHTTP1 = 1\nPIPEMULTIPLEX = 2\nPIPENOTHING = 0\nPOLLIN = 1\nPOLLINOUT = 3\nPOLLNONE = 0\nPOLLOUT = 2\nPOLLREMOVE = 4\nPORT = 3\nPOST = 47\nPOST301 = 161\nPOSTFIELDS = 10015\nPOSTFIELDSIZE = 30120\nPOSTFIELDSIZELARGE = 30120\nPOSTQUOTE = 10039\nPOSTREDIR = 161\nPREQUOTE = 10093\nPRETRANSFERTIME = 3145734\nPREPROXY = 10262\nPRIMARYIP = 1048608\nPRIMARYPORT = 2097192\nPROGRESSFUNCTION = 20056\nPROTOCOLS = 181\nPROTOALL = -1\nPROTODICT = 512\nPROTOFILE = 1024\nPROTOFTP = 4\nPROTOFTPS = 8\nPROTOGOPHER = 33554432\nPROTOHTTP = 1\nPROTOHTTPS = 2\nPROTOIMAP = 4096\nPROTOIMAPS = 8192\nPROTOLDAP = 128\nPROTOLDAPS = 256\nPROTOPOP3 = 16384\nPROTOPOP3S = 32768\nPROTORTMP = 524288\nPROTORTMPE = 2097152\nPROTORTMPS = 8388608\nPROTORTMPT = 1048576\nPROTORTMPTE = 4194304\nPROTORTMPTS = 16777216\nPROTORTSP = 262144\nPROTOSCP = 16\nPROTOSFTP = 32\nPROTOSMB = 67108864\nPROTOSMBS = 134217728\nPROTOSMTP = 65536\nPROTOSMTPS = 131072\nPROTOTELNET = 64\nPROTOTFTP = 2048\nPROXY = 10004\nPROXYAUTH = 111\nPROXYAUTHAVAIL = 2097176\nPROXYHEADER = 10228\nPROXYPASSWORD = 10176\nPROXYPORT = 59\nPROXYTYPE = 101\nPROXYTYPEHTTP = 0\nPROXYTYPEHTTP10 = 1\nPROXYTYPESOCKS4 = 4\nPROXYTYPESOCKS4A = 6\nPROXYTYPESOCKS5 = 5\nPROXYTYPESOCKS5HOSTNAME = 7\nPROXYUSERNAME = 10175\nPROXYUSERPWD = 10006\nPROXYCAINFO = 10246\nPROXYCAPATH = 10247\nPROXYSERVICENAME = 10235\nPROXYSSLCERT = 10254\nPROXYSSLCERTTYPE = 10255\nPROXYSSLKEY = 10256\nPROXYSSLKEYTYPE = 10257\nPROXYSSLVERIFYHOST = 249\nPROXYSSLVERIFYPEER = 248\nPROXYTRANSFERMODE = 166\nPUT = 54\nQUOTE = 10028\nRANDOMFILE = 10076\nRANGE = 10007\nREADDATA = 10009\nREADFUNCTION = 20012\nREADFUNCABORT = 268435456\nREADFUNCPAUSE = 268435457\nREDIRECTCOUNT = 2097172\nREDIRECTTIME = 3145747\nREDIRECTURL = 1048607\nREDIRPOST301 = 1\nREDIRPOST302 = 2\nREDIRPOST303 = 4\nREDIRPOSTALL = 7\nREDIRPROTOCOLS = 182\nREFERER = 10016\nREQUESTSIZE = 2097164\nRESOLVE = 10203\nRESPONSECODE = 2097154\nRESUMEFROM = 30116\nRESUMEFROMLARGE = 30116\nRTSPREQANNOUNCE = 3\nRTSPREQDESCRIBE = 2\nRTSPREQGETPARAMETER = 8\nRTSPREQLAST = 12\nRTSPREQNONE = 0\nRTSPREQOPTIONS = 1\nRTSPREQPAUSE = 6\nRTSPREQPLAY = 5\nRTSPREQRECEIVE = 11\nRTSPREQRECORD = 10\nRTSPREQSETUP = 4\nRTSPREQSETPARAMETER = 9\nRTSPREQTEARDOWN = 7\nSASLIR = 218\nSEEKFUNCTION = 20167\nSEEKFUNCCANTSEEK = 2\nSEEKFUNCFAIL = 1\nSEEKFUNCOK = 0\nSERVICENAME = 10236\nSHARE = 10100\nSHSHARE = 1\nSHUNSHARE = 2\nSIZEDOWNLOAD = 3145736\nSIZEUPLOAD = 3145735\nSOCKETBAD = -1\nSOCKETTIMEOUT = -1\nSOCKOPTFUNCTION = 20148\nSOCKOPTALREADYCONNECTED = 2\nSOCKOPTERROR = 1\nSOCKOPTOK = 0\nSOCKS5GSSAPINEC = 180\nSOCKS5GSSAPISERVICE = 10179\nSOCKTYPEACCEPT = 1\nSOCKTYPEIPCXN = 0\nSPEEDDOWNLOAD = 3145737\nSPEEDUPLOAD = 3145738\nSSHAUTHAGENT = 16\nSSHAUTHANY = -1\nSSHAUTHDEFAULT = -1\nSSHAUTHHOST = 4\nSSHAUTHKEYBOARD = 8\nSSHAUTHNONE = 0\nSSHAUTHPASSWORD = 2\nSSHAUTHPUBLICKEY = 1\nSSHAUTHTYPES = 151\nSSHHOSTPUBLICKEYMD5 = 10162\nSSHKEYFUNCTION = 20184\nSSHKNOWNHOSTS = 10183\nSSHPRIVATEKEYFILE = 10153\nSSHPUBLICKEYFILE = 10152\nSSLCERT = 10025\nSSLCERTPASSWD = 10026\nSSLCERTTYPE = 10086\nSSLENGINE = 10089\nSSLENGINEDEFAULT = 90\nSSLKEY = 10087\nSSLKEYPASSWD = 10026\nSSLKEYTYPE = 10088\nSSLOPTALLOWBEAST = 1\nSSLOPTNOREVOKE = 2\nSSLVERSION = 32\nSSLVERSIONDEFAULT = 0\nSSLVERSIONMAXDEFAULT = 65536\nSSLVERSIONMAXTLSv10 = 262144\nSSLVERSIONMAXTLSv11 = 327680\nSSLVERSIONMAXTLSv12 = 393216\nSSLVERSIONMAXTLSv13 = 458752\nSSLVERSIONSSLv2 = 2\nSSLVERSIONSSLv3 = 3\nSSLVERSIONTLSv1 = 1\nSSLVERSIONTLSv10 = 4\nSSLVERSIONTLSv11 = 5\nSSLVERSIONTLSv12 = 6\nSSLVERSIONTLSv13 = 7\nSSLCIPHERLIST = 10083\nSSLENABLEALPN = 226\nSSLENABLENPN = 225\nSSLENGINES = 4194331\nSSLFALSESTART = 233\nSSLOPTIONS = 216\nSSLSESSIONIDCACHE = 150\nSSLVERIFYHOST = 81\nSSLVERIFYPEER = 64\nSSLVERIFYRESULT = 2097165\nSSLVERIFYSTATUS = 232\nSTARTTRANSFERTIME = 3145745\nSTDERR = 10037\nTCPFASTOPEN = 244\nTCPKEEPALIVE = 213\nTCPKEEPIDLE = 214\nTCPKEEPINTVL = 215\nTCPNODELAY = 121\nTELNETOPTIONS = 10070\nTFTPBLKSIZE = 178\nTIMECONDITION = 33\nTIMECONDITIONIFMODSINCE = 1\nTIMECONDITIONIFUNMODSINCE = 2\nTIMECONDITIONLASTMOD = 3\nTIMECONDITIONNONE = 0\nTIMEOUT = 13\nTIMEOUTMS = 155\nTIMEVALUE = 34\nTLSAUTHPASSWORD = 10205\nTLSAUTHTYPE = 10206\nTLSAUTHUSERNAME = 10204\nTOTALTIME = 3145731\nTRANSFERTEXT = 53\nTRANSFERENCODING = 207\nUNIXSOCKETPATH = 10231\nUNRESTRICTEDAUTH = 105\nUPLOAD = 46\nUPLOADBUFFERSIZE = 280\nURL = 10002\nUSERAGENT = 10018\nUSERNAME = 10173\nUSERPWD = 10005\nUSESSLALL = 3\nUSESSLCONTROL = 2\nUSESSLNONE = 0\nUSESSLTRY = 1\nUSESSL = 119\nVERBOSE = 41\nVERSIONASYNCHDNS = 128\nVERSIONCONV = 4096\nVERSIONCURLDEBUG = 8192\nVERSIONDEBUG = 64\nVERSIONGSSAPI = 131072\nVERSIONGSSNEGOTIATE = 32\nVERSIONHTTP2 = 65536\nVERSIONIDN = 1024\nVERSIONIPV6 = 1\nVERSIONKERBEROS4 = 2\nVERSIONKERBEROS5 = 262144\nVERSIONLARGEFILE = 512\nVERSIONLIBZ = 8\nVERSIONNTLM = 16\nVERSIONNTLMWB = 32768\nVERSIONPSL = 1048576\nVERSIONSPNEGO = 256\nVERSIONSSL = 4\nVERSIONSSPI = 2048\nVERSIONTLSAUTHSRP = 16384\nVERSIONUNIXSOCKETS = 524288\nWILDCARDMATCH = 197\nWRITEDATA = 10001\nWRITEFUNCTION = 20011\nWRITEFUNCPAUSE = 268435457\nWRITEHEADER = 10029\nXFERINFOFUNCTION = 20219\nXOAUTH2BEARER = 10220\nversion = 'PycURL/7.44.1 libcurl/7.81.0 GnuTLS/3.7.3 zlib/1...l/zlib n...\n",
            "subsections": []
        },
        "FILE": {
            "content": "/usr/lib/python3/dist-packages/pycurl.cpython-310-x8664-linux-gnu.so\n\n",
            "subsections": []
        }
    },
    "summary": "pycurl - This module implements an interface to the cURL library.",
    "flags": [],
    "examples": [],
    "see_also": []
}