@@ -462,26 +462,27 @@ The module defines the following exceptions:
462462 are instead turned into exceptions, raised as soon an the error condition
463463 is detected.
464464
465- The exceptions are accompanied by a dictionary possibly
466- containing an string value for the key :py:const: `desc `
467- (giving an English description of the error class)
468- and/or a string value for the key :py:const: `info `
469- (giving a string containing more information that the server may have sent).
470-
471- A third possible field of this dictionary is :py:const: `matched ` and
472- is set to a truncated form of the name provided or alias dereferenced
473- for the lowest entry (object or alias) that was matched.
474-
475- The field :py:const: `msgid ` is set in the dictionary where the
476- exception can be associated with an asynchronous request.
477- This can be used in asynchronous code where :py:meth: `result() ` raises the
478- result of an operation as an exception. For example, this is the case for
479- :py:meth: `compare() `, always raises the boolean result as an exception
480- (:py:exc: `COMPARE_TRUE ` or :py:exc: `COMPARE_FALSE `).
481-
482- Most exceptions from protocol results also carry the :py:attr: `errnum `
483- attribute.
484-
465+ The exceptions are accompanied by a dictionary with additional information.
466+ All fields are optional and more fields may be added in the future.
467+ Currently, ``python-ldap `` may set the following fields:
468+
469+ * ``'result' ``: a numeric code of the error class.
470+ * ``'desc' ``: string giving a description of the error class, as provided
471+ by calling OpenLDAP's ``ldap_err2string `` on the ``result ``.
472+ * ``'info' ``: string containing more information that the server may
473+ have sent. The value is server-specific: for example, the OpenLDAP server
474+ may send different info messages than Active Directory or 389-DS.
475+ * ``'matched' ``: truncated form of the name provided or alias.
476+ dereferenced for the lowest entry (object or alias) that was matched.
477+ * ``'msgid' ``: ID of the matching asynchronous request.
478+ This can be used in asynchronous code where :py:meth: `result() ` raises the
479+ result of an operation as an exception. For example, this is the case for
480+ :py:meth: `~LDAPObject.compare() `, always raises the boolean result as an
481+ exception (:py:exc: `COMPARE_TRUE ` or :py:exc: `COMPARE_FALSE `).
482+ * ``'ctrls' ``: list of :py:class: `ldap.controls.LDAPControl ` instances
483+ attached to the error.
484+ * ``'errno' ``: the C ``errno ``, usually set by system calls or ``libc ``
485+ rather than the LDAP libraries.
485486
486487.. py :exception :: ADMINLIMIT_EXCEEDED
487488
@@ -515,14 +516,14 @@ The module defines the following exceptions:
515516 .. py :exception :: COMPARE_FALSE
516517
517518 A compare operation returned false.
518- (This exception should never be seen because :py:meth: ` compare() ` returns
519- a boolean result.)
519+ (This exception should only be seen asynchronous operations, because
520+ :py:meth: ` ~LDAPObject.compare_s() ` returns a boolean result.)
520521
521522.. py :exception :: COMPARE_TRUE
522523
523524 A compare operation returned true.
524- (This exception should never be seen because :py:meth: ` compare() ` returns
525- a boolean result.)
525+ (This exception should only be seen asynchronous operations, because
526+ :py:meth: ` ~LDAPObject.compare_s() ` returns a boolean result.)
526527
527528.. py :exception :: CONFIDENTIALITY_REQUIRED
528529
0 commit comments