LDAP3
=====
.. image:: https://img.shields.io/pypi/v/ldap3.svg
:target: https://pypi.python.org/pypi/ldap3/
:alt: Latest Version
.. image:: https://img.shields.io/pypi/l/ldap3.svg
:target: https://pypi.python.org/pypi/ldap3/
:alt: License
.. image:: https://img.shields.io/travis/cannatag/ldap3/master.svg
:target: https://travis-ci.org/cannatag/ldap3
:alt: TRAVIS-CI build status for master branch
ldap3 is a strictly RFC 4510 conforming **LDAP V3 pure Python client** library. The same codebase runs in Python 2, Python 3, PyPy and PyPy3.
⚠️ WARNING ⚠️
This is a bleeding edge version. This version includes:
* https://github.com/cannatag/ldap3/pull/1139: fix requirements.txt
* https://github.com/cannatag/ldap3/pull/1150: adding microsoft fastbind extended operation
* https://github.com/cannatag/ldap3/pull/1151: fix CBT computing when cert digest algo is not MD5, SHA1 or SHA256
* https://github.com/cannatag/ldap3/pull/1153: [DOC] Fix grammar and sentence structure
* https://github.com/cannatag/ldap3/pull/1155: [DOC] Fix `Unexpected indentation` error within the doc
* https://github.com/cannatag/ldap3/pull/1156: Correctly handle GSSAPI SASL negotiated max buffer size as per RFC4752
A more pythonic LDAP
--------------------
LDAP operations look clumsy and hard-to-use because they reflect the old-age idea that time-consuming operations should be performed client-side
to not hog the server with heavy elaborations. To alleviate this ldap3 includes a fully functional **Abstraction Layer** that lets you
interact with the LDAP server in a modern and *pythonic* way. With the Abstraction Layer you don't need to directly issue any LDAP operation at all.
Thread safe strategies
----------------------
In multithreaded programs you must use one of **SAFE_SYNC** (synchronous connection strategy), **SAFE_RESTARTABLE** (restartable syncronous connection strategy) or **ASYNC** (asynchronous connection strategy).
Each LDAP operation with SAFE_SYNC or SAFE_RESTARTABLE strategies returns a tuple of four elements: status, result, response and request.
* status: states if the operation was successful
* result: the LDAP result of the operation
* response: the response of a LDAP Search Operation
A more pythonic LDAP
--------------------
LDAP operations look clumsy and hard-to-use because they reflect the old-age idea that time-consuming operations should be performed client-side
to not hog the server with heavy elaborations. To alleviate this ldap3 includes a fully functional **Abstraction Layer** that lets you
interact with the LDAP server in a modern and *pythonic* way. With the Abstraction Layer you don't need to directly issue any LDAP operation at all.
Thread safe strategies
----------------------
In multithreaded programs you must use one of **SAFE_SYNC** (synchronous connection strategy), **SAFE_RESTARTABLE** (restartable syncronous connection strategy) or **ASYNC** (asynchronous connection strategy).
Each LDAP operation with SAFE_SYNC or SAFE_RESTARTABLE strategies returns a tuple of four elements: status, result, response and request.
* status: states if the operation was successful
* result: the LDAP result of the operation
* response: the response of a LDAP Search Operation
* request: the original request of the operation
The SafeSync strategy can be used with the Abstract Layer, but the Abstract Layer currently is NOT thread safe.
For example, to use *SAFE_SYNC*::
from ldap3 import Server, Connection, SAFE_SYNC
server = Server('my_server')
conn = Connection(server, 'my_user', 'my_password', client_strategy=SAFE_SYNC, auto_bind=True)
status, result, response, _ = conn.search('o=test', '(objectclass=*)') # usually you don't need the original request (4th element of the returned tuple)
With *ASYNC* you must request the response with the *get_response()* method.
Home Page
---------
The home page of the ldap3 project is https://github.com/cannatag/ldap3
Documentation
-------------
Documentation is available at http://ldap3.readthedocs.io
License
-------
The ldap3 project is open source software released under the **LGPL v3 license**.
Copyright 2013 - 2020 Giovanni Cannata
PEP8 Compliance
---------------
ldap3 is PEP8 compliant, except for line length.
Download
--------
Package download is available at https://pypi.python.org/pypi/ldap3.
Install
-------
Install with **pip install ldap3**
Git repository
--------------
You can download the latest source at https://github.com/cannatag/ldap3
Continuous integration
----------------------
Continuous integration for testing is at https://travis-ci.org/cannatag/ldap3
Support & Development
---------------------
You can submit support tickets on https://github.com/cannatag/ldap3/issues/new
You can submit pull request on the **dev** branch at https://github.com/cannatag/ldap3/tree/dev
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 Professional*.
* **GitHub** for providing the *free source repository space and the tools* I use to develop this project.
* The **FreeIPA** team for letting me use their demo LDAP server in the ldap3 tutorial.
Contact me
----------
For information and suggestions you can contact me at cannatag@gmail.com. You can also open a support ticket on https://github.com/cannatag/ldap3/issues/new
Donate
------
If you want to keep this project up and running you can send me an Amazon gift card. I will use it to improve my skills in Information and Communication technologies.
Changelog
---------
Updated changelog at https://ldap3.readthedocs.io/changelog.html
Raw data
{
"_id": null,
"home_page": "https://github.com/ThePirateWhoSmellsOfSunflowers/ldap3/tree/bleeding_edge",
"name": "ldap3-bleeding-edge",
"maintainer": null,
"docs_url": null,
"requires_python": null,
"maintainer_email": null,
"keywords": "python3 python2 ldap",
"author": "Giovanni Cannata / ThePirateWhoSmellsOfSunflowers",
"author_email": "cannatag@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/b6/72/1f50f58d90ebc3900159db6b313f600b08460300543dab20f4087aa81eee/ldap3_bleeding_edge-2.10.1.1337.tar.gz",
"platform": null,
"description": "LDAP3\n=====\n\n.. image:: https://img.shields.io/pypi/v/ldap3.svg\n :target: https://pypi.python.org/pypi/ldap3/\n :alt: Latest Version\n\n.. image:: https://img.shields.io/pypi/l/ldap3.svg\n :target: https://pypi.python.org/pypi/ldap3/\n :alt: License\n\n.. image:: https://img.shields.io/travis/cannatag/ldap3/master.svg\n :target: https://travis-ci.org/cannatag/ldap3\n :alt: TRAVIS-CI build status for master branch\n\n\nldap3 is a strictly RFC 4510 conforming **LDAP V3 pure Python client** library. The same codebase runs in Python 2, Python 3, PyPy and PyPy3.\n\n\u26a0\ufe0f WARNING \u26a0\ufe0f\n\nThis is a bleeding edge version. This version includes:\n * https://github.com/cannatag/ldap3/pull/1139: fix requirements.txt\n * https://github.com/cannatag/ldap3/pull/1150: adding microsoft fastbind extended operation\n * https://github.com/cannatag/ldap3/pull/1151: fix CBT computing when cert digest algo is not MD5, SHA1 or SHA256\n * https://github.com/cannatag/ldap3/pull/1153: [DOC] Fix grammar and sentence structure\n * https://github.com/cannatag/ldap3/pull/1155: [DOC] Fix `Unexpected indentation` error within the doc\n * https://github.com/cannatag/ldap3/pull/1156: Correctly handle GSSAPI SASL negotiated max buffer size as per RFC4752\n\nA more pythonic LDAP\n--------------------\n\nLDAP operations look clumsy and hard-to-use because they reflect the old-age idea that time-consuming operations should be performed client-side\nto not hog the server with heavy elaborations. To alleviate this ldap3 includes a fully functional **Abstraction Layer** that lets you\ninteract with the LDAP server in a modern and *pythonic* way. With the Abstraction Layer you don't need to directly issue any LDAP operation at all.\n\n\nThread safe strategies\n----------------------\n\nIn multithreaded programs you must use one of **SAFE_SYNC** (synchronous connection strategy), **SAFE_RESTARTABLE** (restartable syncronous connection strategy) or **ASYNC** (asynchronous connection strategy).\n Each LDAP operation with SAFE_SYNC or SAFE_RESTARTABLE strategies returns a tuple of four elements: status, result, response and request.\n\n * status: states if the operation was successful\n\n * result: the LDAP result of the operation\n\n * response: the response of a LDAP Search Operation\n\n\nA more pythonic LDAP\n--------------------\n\nLDAP operations look clumsy and hard-to-use because they reflect the old-age idea that time-consuming operations should be performed client-side\nto not hog the server with heavy elaborations. To alleviate this ldap3 includes a fully functional **Abstraction Layer** that lets you\ninteract with the LDAP server in a modern and *pythonic* way. With the Abstraction Layer you don't need to directly issue any LDAP operation at all.\n\n\nThread safe strategies\n----------------------\n\nIn multithreaded programs you must use one of **SAFE_SYNC** (synchronous connection strategy), **SAFE_RESTARTABLE** (restartable syncronous connection strategy) or **ASYNC** (asynchronous connection strategy).\n Each LDAP operation with SAFE_SYNC or SAFE_RESTARTABLE strategies returns a tuple of four elements: status, result, response and request.\n\n * status: states if the operation was successful\n\n * result: the LDAP result of the operation\n\n * response: the response of a LDAP Search Operation\n\n * request: the original request of the operation\n\n The SafeSync strategy can be used with the Abstract Layer, but the Abstract Layer currently is NOT thread safe.\n For example, to use *SAFE_SYNC*::\n\n from ldap3 import Server, Connection, SAFE_SYNC\n server = Server('my_server')\n conn = Connection(server, 'my_user', 'my_password', client_strategy=SAFE_SYNC, auto_bind=True)\n status, result, response, _ = conn.search('o=test', '(objectclass=*)') # usually you don't need the original request (4th element of the returned tuple)\n\n\n With *ASYNC* you must request the response with the *get_response()* method.\n\nHome Page\n---------\n\nThe home page of the ldap3 project is https://github.com/cannatag/ldap3\n\n\nDocumentation\n-------------\n\nDocumentation is available at http://ldap3.readthedocs.io\n\n\nLicense\n-------\n\nThe ldap3 project is open source software released under the **LGPL v3 license**.\nCopyright 2013 - 2020 Giovanni Cannata\n\n\nPEP8 Compliance\n---------------\n\nldap3 is PEP8 compliant, except for line length.\n\n\nDownload\n--------\n\nPackage download is available at https://pypi.python.org/pypi/ldap3.\n\n\nInstall\n-------\n\nInstall with **pip install ldap3**\n\n\nGit repository\n--------------\n\nYou can download the latest source at https://github.com/cannatag/ldap3\n\n\nContinuous integration\n----------------------\n\nContinuous integration for testing is at https://travis-ci.org/cannatag/ldap3\n\n\nSupport & Development\n---------------------\n\nYou can submit support tickets on https://github.com/cannatag/ldap3/issues/new\nYou can submit pull request on the **dev** branch at https://github.com/cannatag/ldap3/tree/dev\n\n\nThanks to\n---------\n\n* **Ilya Etingof**, the author of the *pyasn1* package for his excellent work and support.\n\n* **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.\n\n* **JetBrains** for donating to this project the Open Source license of *PyCharm Professional*.\n\n* **GitHub** for providing the *free source repository space and the tools* I use to develop this project.\n\n* The **FreeIPA** team for letting me use their demo LDAP server in the ldap3 tutorial.\n\n\nContact me\n----------\n\nFor information and suggestions you can contact me at cannatag@gmail.com. You can also open a support ticket on https://github.com/cannatag/ldap3/issues/new\n\n\nDonate\n------\n\nIf you want to keep this project up and running you can send me an Amazon gift card. I will use it to improve my skills in Information and Communication technologies.\n\n\nChangelog\n---------\n\nUpdated changelog at https://ldap3.readthedocs.io/changelog.html\n\n",
"bugtrack_url": null,
"license": "LGPL v3",
"summary": "A strictly RFC 4510 conforming LDAP V3 pure Python client library (bleeding edge)",
"version": "2.10.1.1337",
"project_urls": {
"Homepage": "https://github.com/ThePirateWhoSmellsOfSunflowers/ldap3/tree/bleeding_edge"
},
"split_keywords": [
"python3",
"python2",
"ldap"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "b0a6e197e5b9b511c3591a4df4f0300ad770d69981bcc3e7e16548abc19be072",
"md5": "ffc7f07ec1c6f2c5a95b19725c9a496d",
"sha256": "d2741bf1598980da0fc08d0e7a5c6ce190fd1651fafad3311bb138e699e794cb"
},
"downloads": -1,
"filename": "ldap3_bleeding_edge-2.10.1.1337-py3-none-any.whl",
"has_sig": false,
"md5_digest": "ffc7f07ec1c6f2c5a95b19725c9a496d",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 488564,
"upload_time": "2024-09-04T13:01:13",
"upload_time_iso_8601": "2024-09-04T13:01:13.303879Z",
"url": "https://files.pythonhosted.org/packages/b0/a6/e197e5b9b511c3591a4df4f0300ad770d69981bcc3e7e16548abc19be072/ldap3_bleeding_edge-2.10.1.1337-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "b6721f50f58d90ebc3900159db6b313f600b08460300543dab20f4087aa81eee",
"md5": "8440e169a5793c48d4adc78aff4f981f",
"sha256": "8f887372ac0e38da25e98a98f4b773f58a618cf99a705a15caa5273075b56999"
},
"downloads": -1,
"filename": "ldap3_bleeding_edge-2.10.1.1337.tar.gz",
"has_sig": false,
"md5_digest": "8440e169a5793c48d4adc78aff4f981f",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 452296,
"upload_time": "2024-09-04T13:01:15",
"upload_time_iso_8601": "2024-09-04T13:01:15.568511Z",
"url": "https://files.pythonhosted.org/packages/b6/72/1f50f58d90ebc3900159db6b313f600b08460300543dab20f4087aa81eee/ldap3_bleeding_edge-2.10.1.1337.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-09-04 13:01:15",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "ThePirateWhoSmellsOfSunflowers",
"github_project": "ldap3",
"travis_ci": true,
"coveralls": false,
"github_actions": false,
"requirements": [],
"lcname": "ldap3-bleeding-edge"
}