Skip to main content

laurelin-ldap

https://travis-ci.org/ashafer01/laurelin.svg?branch=master

View documentation on ReadTheDocs. You might also like to read the introduction.

pip install laurelin-ldap or clone the repo to get started.

Please star the repo on GitHub if you like the project!

Named for one of the Two Trees of Valinor in Tolkien lore.

Laurelin, which means ‘Golden-song’ in the Quenya tongue, bore shining golden leaves, the Light from which mingled with the Silver Flowers of the Elder Tree to illuminate the land of the Valar.

Features Overview

  • Fully compliant with RFC 4510 and its children, as well as several other related standards.

  • Tested against CPython 2.7, 3.4 - 3.7, PyPy, and PyPy3.

  • Simplified filter syntax (optional, standard filter syntax is fully supported and used by default)

  • Pythonic attributes input and presentation. It’s just a dictionary.

  • Exceedingly easy relative searching. All objects have a suite of search methods which will automatically pass the object’s DN as the search base. In many cases, you wont have to pass any arguments to search methods.

  • Similarly, all objects have a suite of modify methods which allow you to change attributes on already-queried objects without having to pass their DN again.

  • You never have to type the full absolute DN.

  • Intelligent modification will never send existing attribute values to the server, nor will it request deletion of attribute values that do not exist. This prevents many unnecessary server errors. Laurelin will go as far as to query the object for you before modifying it to ensure you don’t see pointless errors (if you want it to).

  • Full support for configuring laurelin and connecting to a server from a config file

  • Custom validation. You can define validators which check new objects and modify operations for correctness before sending them to the server. Since you control this code, this can be anything from a simple regex check against a particular attribute value, to a complex approval queue mechanism.

  • Highly extensible. New methods can easily and safely be bound to base classes.

  • Seamless integration of controls. Once defined, these are just new keyword arguments on particular methods, and additional attributes on the response object.

  • Includes Python implementations of standard schema elements.

Dependent Info

Laurelin follows SemVer. When you add laurelin-ldap to your requirements, I strongly suggest using the compatible release operator with the major.minor that you use initially. For example:

% pip install laurelin-ldap
...
Successfully installed laurelin-ldap-1.5.0 ...
                                     ^^^

Since 1.5.0 was installed, add the following to your requirements.txt and/or install_requires list:

laurelin-ldap~=1.5

But of course use whatever version you actually installed. You’re also welcome to pip freeze, but patch and minor releases will always be compatible. Patch releases tend to contain important fixes, too. If you’re sure you don’t want new features coming in and only fixes, you can still use the compatible release operator like so (again subbing in your actual installed version):

laurelin-ldap~=1.5.0

Feel free to open a GitHub issue with any questions or concerns.

Public API Definition

  • Everything in laurelin.ldap.__all__ - import directly from laurelin.ldap whenever possible

  • laurelin.ldap.exceptions

  • laurelin.ldap.rfc*

  • laurelin.ldap.protoutils

  • laurelin.ldap.config

Built-in extensions defined in laurelin.extensions are stable insofar as the interfaces they present via their LaurelinExtension, LaurelinLDAPExtension, and LaurelinLDAPObjectExtension instances, control keywords and response attributes, and schema element availability. Importing extensions directly is not recommended, and any other objects in extension modules should not be considered stable.

The stability of any 3rd party extensions with names hard coded into the laurelin source at laurelin.ldap.extensible.base.Extensible.AVAILABLE_EXTENSIONS or any future location cannot be guaranteed. (There are no 3rd party extensions defined at this time). To guarantee no 3rd party extensions are used, and thus a complete stability assurance, set LDAP.DEFAULT_BUILT_IN_EXTENSIONS_ONLY = True or pass built_in_extensions_only=True to your LDAP() constructor.

If the user should venture into other modules outside of the declared public API above, I strongly suggest pinning your version. I also strongly advise against EVER calling a private function or method (with underscore prefix).

Release files for laurelin-ldap 2.0.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for laurelin-ldap 2.0.4
File Size Uploaded Provenance
laurelin-ldap-2.0.4.tar.gz 142.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for laurelin-ldap 2.0.4
File Interpreter ABI Platform
laurelin_ldap-2.0.4-py2.py3-none-any.whl Python 2, Python 3 none any Details

Total release size: 315.9 kB

Release files / laurelin-ldap-2.0.4.tar.gz

Download URL laurelin-ldap-2.0.4.tar.gz
Size 142.2 kB
Tags Source
SHA-256 checksum
How to use checksums
80e8163efd9d442b2f43badb9dedf68b37f0499cf584ac4195b19ed1b52e8fe7
BLAKE2b-256 checksum
How to use checksums
c9e2c47982d1624ea444ad795726e94f16c3942277511b09e324a9aa0802cd1d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.0

Release files / laurelin_ldap-2.0.4-py2.py3-none-any.whl

Download URL laurelin_ldap-2.0.4-py2.py3-none-any.whl
Size 173.7 kB
Tags Python 2 Python 3
SHA-256 checksum
How to use checksums
19ed33cb533a74c98a1418dd7f0b7c98cff0381afe3ada128d146a3da0e43be1
BLAKE2b-256 checksum
How to use checksums
f8db0bbab036d2dad314a9596f8704113671557b18ed9ab2d790a51381b820f5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/1.13.0 pkginfo/1.5.0.1 requests/2.21.0 setuptools/39.0.1 requests-toolbelt/0.9.1 tqdm/4.32.1 CPython/3.7.0

Security for laurelin-ldap 2.0.4

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page