- FIRST RELEASE OF LDAP3 V2
- changed signature of ldap3.abstract.Reader object
- removed search_size_limit(), search_time_limit() and search_types_only in the Reader cursor
- fixed SASL in progress error (thanks Styleex)
- fixed ALL_ATTRIBUTES in MOCK_SYNC strategy (thanks Belgarion)
- ncorrect attribute type error message now includes the name of the attribute (Thanks Andrej)
- relaxed dn checking for Active Directory UserPrincipalName
- relaxed dn checking for Active Directory SamAccountName
- added checking of attribute name in add, compare and search operations
- added checking of class name in add operation
- renamed exception LDAPTypeError to LDAPAttributeError
- in sync strategies LDAP operations populate the last_error attribute of the connection in case of not RESULT_SUCCESS
- connection.return_empty_attributes defaults to True
- escaped filter by default
- fixed escaping of filter
- add move and rename to abstraction layer entry
- ldap3 namespace decluttered
- RESULT_CODES moved to ldap3.core.results
- compatibility constants removed
- exceptions removed from ldap3 namespace, defined in ldap3.core.exceptions only
- ADDRESS_INFO_REFRESH_TIME is now configurable via set_config_parameter
- Operational attribute prefix set to 'OA_'
- Allows cert and key file in the same file (thanks Jan-Philip)
- Removed logging info when logging is disabled (thanks Dan)
- Updated copyright notice
- Refactored abstraction layer with full support for CRUD (Create, Read, Update, Delete) abstract operations
- Added WritableEntry and WritableAttribute to abstraction layer
- Added standard validators for attribute types and syntaxes defined in the standard LDAP schema
- Added custom validators for attribute values
- Added update capability to abstraction layer
- Fixed typo in docs (thanks Gerardwx)
- Fixed Object and Attribute representation in schema (superior class not shown)
- ObjectDef automatically populates attributes from schema, following object_class hierarchy
- Added attributes parameter to search* methods of Cursor, so that only needed attributes are read even if attr_defs defines more
- Fixed connect_timeout not honored while wrapping socket in tls (thanks Kyle)
- Added 'set' to SEQUENCE_TYPES (thanks Christian)
- Entries returned by search are now writable via the abstraction layer
- LDAPReaderError exception renamed to LDAPCursorError
- auto_range parameter in Connection defaults to True (thanks Ashley)
- get_info defaults to SCHEMA while defining Server object
- Included ordereddict 1.1 ( Copyright (c) 2009 Raymond Hettinger) in ldap3.utils.ordDict for backporting OrderedDict in Python 2.6
- Added config parameter RESET_AVAILABILITY_TIMEOUT to reinsert invalid address in candidate_addresses while checking connection, defaults to 5 seconds
- Fixed inability to connect to a server if the connection starts when the server is unavailable and then it becomes available again
- All DNs are sanitized if connection.check_names is True
- LDAPControlsError exception renamed to LDAPControlError
- LDAPChangesError exception renamed to LDAPChangeError
- The following older constants in ldap3 have been removed, please use the suggested ones:
- AUTH_ANONYMOUS = ANONYMOUS
- AUTH_SIMPLE = SIMPLE
- AUTH_SASL = SASL
- SEARCH_SCOPE_BASE_OBJECT = BASE
- SEARCH_SCOPE_SINGLE_LEVEL = LEVEL
- SEARCH_SCOPE_WHOLE_SUBTREE = SUBTREE
- SEARCH_NEVER_DEREFERENCE_ALIASES = DEREF_NEVER
- SEARCH_DEREFERENCE_IN_SEARCHING = DEREF_SEARCH
- SEARCH_DEREFERENCE_FINDING_BASE_OBJECT = DEREF_BASE
- SEARCH_DEREFERENCE_ALWAYS = DEREF_ALWAYS
- STRATEGY_SYNC = SYNC
- STRATEGY_ASYNC_THREADED = ASYNC
- STRATEGY_LDIF_PRODUCER = LDIF
- STRATEGY_SYNC_RESTARTABLE = RESTARTABLE
- STRATEGY_REUSABLE_THREADED = REUSABLE
- STRATEGY_MOCK_SYNC = MOCK_SYNC
- STRATEGY_MOCK_ASYNC = MOCK_ASYNC
- POOLING_STRATEGY_FIRST = FIRST
- POOLING_STRATEGY_ROUND_ROBIN = ROUND_ROBIN
- POOLING_STRATEGY_RANDOM = RANDOM
- GET_NO_INFO = NONE
- GET_DSA_INFO = DSA
- GET_SCHEMA_INFO = SCHEMA
- GET_ALL_INFO = ALL