Skip to main content

project renamed ldap3 - please install the ldap3 package instead of python3-ldap

Project description

python3-ldap HAS BEEN RENAMED ldap3 to avoid confusion with the former python-ldap project.



Latest Version TRAVIS-CI build status for master branch License

ldap3 is a strictly RFC 4511 conforming LDAP V3 pure Python client. The same codebase works with Python, Python 3, PyPy and PyPy3.

This project was formerly named python3-ldap. The name has been changed to avoid confusion with the python-ldap library.

Home Page

Project home page is


Documentation is available at


The ldap3 project is open source software released under the LGPL v3 license.

PEP8 Compliance

ldap3 is PEP8 compliant, except for line length.


Package download is available at


Install with pip install ldap3

Git repository

You can download the latest source at

Continuous integration

Continuous integration for testing is at


You can submit support tickets on

Thanks to

  • Ilya Etingof, the author of the pyasn1 package for his excellent work and support.

  • Mark Lutz for his Learning Python and Programming Python excellent books series and John Goerzen and Brandon Rhodes for their book Foundations of Python Network Programming. These books are wonderful tools for learning Python and this project owes a lot to them.

  • JetBrains for donating to this project the Open Source license of PyCharm 3 Professional.

  • GitHub for providing the free source repository space and the tools I use to develop this project.

  • The Python Software Foundation for providing support for the test lab infrastructure.

Contact me

For information and suggestions you can contact me at or you can also a support ticket on


  • 2015.05.19
    • Added EXTENDED log detail level with prettyPrint description of ldap messages

    • fixed logging of IPv6 address description

    • fixed checking of open address when dns returns more than one ip for the same host

    • fixed selection of proper address when failing back from IPv6 to IPv4 and vice-versa

    • when sending controls controlValue is now optional (as stated in RFC 4511), specify None to not send it

  • 2015.05.11
    • Added support for logging

    • Added LDAPInvalidTlsSpecificationError exception

    • Added support for kerberos sasl - needs the gssapi package (thanks sigmaris and pefoley2)

    • Added support for using generator objects in ldap operations (thanks Matt)

    • Fixed bug in collect_usage (thanks Philippe)

    • Changed default server mode from IP_SYSTEM_DEFAULT to IP_V6_PREFERRED

  • 2015.04.08
    • SaslCred returned as raw bytes (thanks Peter)

    • search_paged now properly works in abstract.reader (thanks wazboy)

  • 2015.04.04
    • Added NTLMv2 authentication method

    • extend.standard.who_am_i() now try to decode the authzid as unicode

    • tests for AD (Active Directory) now use tls_before_bind when opening a connection

    • 0.9.8 not working for pypi problems

  • 2015.03.18
    • Fixed missing optional authzid in digestMD5 sasl mechanism (thanks Damiano)

    • Changed unneeded classmethods to staticmethods

  • 2015.03.12
    • Fixed address_info resolution on systems without the IPV4MAPPED flag (thanks Andryi)

  • 2015.02.28
    • Fixed bug in PagedSearch when server has a hard limit on the number of entries returned (thanks Reimar)

    • not working for pypi problems

    • not working for pypi problems

    • not working for pypi problems

    • not working for pypi problems

  • 2015.02.20
    • Fixed exception raised when opening a connection to a server. If there is only one candidate address and there is an error it returns the specific Exception, not a generic LDAPException error

    • Address_info filters out any impossible address to reach

    • Address_info include an IPV4MAPPED address for IPV6 host that try to reach an IPV4 only server

    • Added SyncMock strategy (needs the sldap3 package)

    • Fixed bug when using the aproximation operation in ldap search operations (thanks Laurent)

    • Removed response from exception raised with raise_exceptions=True to avoid very long exceptions message

  • 2015.02.02
    • Added connection.entries property for storing response from search operations as and abstract.Entry collection.

  • 2015.01.25
    • Modify operation type can also be passed as integer

  • 2015.01.16
    • Fixed a bug when resolving IP address with getaddrinfo(). On OSX returned an UDP connection (thanks Hiroshi).

  • 2015.01.05
    • Moved to Github

    • Moved to Travis-CI for continuous integration

    • Moved to ReadTheDocs for documentation

    • Moved testing servers in the cloud, to allow testing from Travis-CI

    • Project renamed from python3-ldap to ldap3 to avoid name clashing with the existing python-ldap library

    • Constant values in ldap3 are now strings. This is helpful in testing and debugging

    • Test suite fully refactored to be used in cloud lab and local development lab

    • Test suite includes options for testing against eDirectory, Active Directory and OpenLDAP

Previous versions changelog is available at

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python3-ldap- (263.9 kB view hashes)

Uploaded source

Built Distributions

python3_ldap- (295.8 kB view hashes)

Uploaded py2 py3 (520.5 kB view hashes)

Uploaded any

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page