Installation and configuration ############################## Installation is straightforward and can be done via a package manager or from the source. Installation with a package manager ----------------------------------- You need the **pip** package (or another package manager that can download and install from pyPI) to install ldap3. Then you can download and install the ldap3 library directly from pyPI:: pip install ldap3 This library has only one dependence on the *pyasn1* module, You can install it or let the installer do it for you. If you need to access a server with the Kerberos SASL authentication mechanism you must install the *gssapi* package. ldap3 includes a backport (from Python 3.4.3) of ``ssl.check_hostnames`` to be used on older (version < 2.7.10) Python version. If you want to use a more up to date version of the check_hostnames feature you can install the *backports.ssl_check_hostnames* package that should be kept updated with the Standard Library of the latest Python release by its maintainers. Installation from the source ---------------------------- You can download the latest source from https://github.com/cannatag/ldap3 then you can install the library with:: python setup.py install Global configuration -------------------- in the **ldap3.utils.config** package there are some configurable settings: * POOLING_LOOP_TIMEOUT = 10 # number of seconds to wait before restarting a cycle to find an active server in the pool * RESPONSE_SLEEPTIME = 0.05 # seconds to wait while waiting for a response in asynchronous strategies * RESPONSE_WAITING_TIMEOUT = 3 # waiting timeout for receiving a response in asynchronous strategies * SOCKET_SIZE = 4096 # socket byte size * CHECK_AVAILABILITY_TIMEOUT = 2.5 # default timeout for socket connect when checking availability * RESET_AVAILABILITY_TIMEOUT = 5 # default timeout for resetting the availability status when checking candidate addresses * RESTARTABLE_SLEEPTIME = 2 # time to wait in a restartable strategy before retrying the request * RESTARTABLE_TRIES = 30 # number of times to retry in a restartable strategy before giving up. Set to True for unlimited retries * REUSABLE_THREADED_POOL_SIZE = 5 * REUSABLE_THREADED_LIFETIME = 3600 # 1 hour * DEFAULT_THREADED_POOL_NAME = 'REUSABLE_DEFAULT_POOL' * ADDRESS_INFO_REFRESH_TIME = 300 # seconds to wait before refreshing address info from dns * ADDITIONAL_ENCODINGS = ['latin-1'] # some broken LDAP implementation may have different encoding than those expected by RFCs * IGNORE_MALFORMED_SCHEMA = False # some flaky LDAP servers returns malformed schema. If True no expection is raised and schema is thrown away This parameters are library-wide and usually you should keep the default values. You can use the ``get_config_parameter()`` and ``set_config_parameter()`` functions in the ldap3 namespace to get and set the configurable parameters at runtime. Importing objects and constants ------------------------------- All objects and constants needed to use the ldap3 library can be imported from the **ldap3** namespace:: from ldap3 import Connection, Server, ANONYMOUS, SIMPLE, SYNC, ASYNC Library errors -------------- You can deal with errors in two different ways. By default in synchronous strategies each LDAP operation returns a True/False value that specify if the operation has been successful or not. In case of failures you can check the error description in the ```last_error``` attribute of the Connection object. In some cases an exception of the custom hierarchy starting from the ```LDAPExceptionError``` class is raised with a description of the error condition in the *args* attribute. If you prefer to deal always with Exceptions you can set the ``raise_exceptions`` attribute to ``True`` in the Connection object definition. From now on the Connection will raise exceptions for all operations that return result codes different from ``RESULT_SUCCESS``, ``RESULT_COMPARE_FALSE``, ``RESULT_COMPARE_TRUE``, ``RESULT_REFERRAL``. Communication exceptions have multiple inheritance either from ```LDAPCommunicationError``` and the specific socket exception. Exceptions are defined in the **ldap3.core.exceptions** package.