diff --git a/CHANGES b/CHANGES index ed9eb14..b64b782 100644 --- a/CHANGES +++ b/CHANGES @@ -13,6 +13,8 @@ Modules/ Lib/ * ldap.__version__, ldap.__author__ and ldap.__license__ now imported from new sub-module ldap.pkginfo also to setup.py +* Added safety assertion when importing _ldap: + ldap.pkginfo.__version__ must match _ldap.__version__ * removed stand-alone module dsml * slapdtest.SlapdObject.restart() just restarts slapd without cleaning any data diff --git a/Lib/ldap/__init__.py b/Lib/ldap/__init__.py index e679de5..c1c5ef1 100644 --- a/Lib/ldap/__init__.py +++ b/Lib/ldap/__init__.py @@ -17,7 +17,11 @@ _trace_file = sys.stderr _trace_stack_limit = None +from ldap.pkginfo import __version__ + import _ldap +assert _ldap.__version__==__version__, \ + ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__)) from _ldap import * OPT_NAMES_DICT = {} diff --git a/Lib/ldap/controls/__init__.py b/Lib/ldap/controls/__init__.py index d504d49..56d611b 100644 --- a/Lib/ldap/controls/__init__.py +++ b/Lib/ldap/controls/__init__.py @@ -9,7 +9,19 @@ Each class provides support for a certain control. """ -from ldap import __version__ +from ldap.pkginfo import __version__ + +import _ldap +assert _ldap.__version__==__version__, \ + ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__)) + +import ldap + +try: + from pyasn1.error import PyAsn1Error +except ImportError: + PyAsn1Error = None + __all__ = [ 'KNOWN_RESPONSE_CONTROLS', @@ -32,13 +44,6 @@ # response control OID to class registry KNOWN_RESPONSE_CONTROLS = {} -import _ldap,ldap - -try: - from pyasn1.error import PyAsn1Error -except ImportError: - PyAsn1Error = None - class RequestControl: """ diff --git a/Lib/ldap/controls/libldap.py b/Lib/ldap/controls/libldap.py index 53a02a4..f6ea42c 100644 --- a/Lib/ldap/controls/libldap.py +++ b/Lib/ldap/controls/libldap.py @@ -6,7 +6,14 @@ See https://www.python-ldap.org/ for details. """ -import _ldap,ldap +from ldap.pkginfo import __version__ + +import _ldap +assert _ldap.__version__==__version__, \ + ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__)) + +import ldap + from ldap.controls import RequestControl,LDAPControl,KNOWN_RESPONSE_CONTROLS diff --git a/Lib/ldap/dn.py b/Lib/ldap/dn.py index 75465ed..daab8ab 100644 --- a/Lib/ldap/dn.py +++ b/Lib/ldap/dn.py @@ -7,10 +7,11 @@ - Tested with Python 2.0+ """ -from ldap import __version__ - +from ldap.pkginfo import __version__ import _ldap +assert _ldap.__version__==__version__, \ + ImportError('ldap %s and _ldap %s version mismatch!' % (__version__,_ldap.__version__)) import ldap.functions