3.0.0
Notable changes since 2.4.45 (please see detailed logs below):
- Python 3 support and bytes_mode
see: https://python-ldap.readthedocs.io/en/latest/bytes_mode.html - The module
ldap.async
is renamed toldap.asyncsearch
- New dependencies: pyasn1, pyasn1_modules
- Dropped support for Python 2.6 and 3.3
Released 3.0.0 2018-03-12
Changes since 3.0.0b4:
Lib/
- Add bytes_strictness to allow configuring behavior on bytes/text mismatch
Modules/
- Add argument name to bytes mode TypeError
- Use correct integer types for BER encode/decode (fix for big endian machines)
Test/
- Set $LDAPNOINIT in all tests
- Add test for secure TLS default
- Ignore SASL methods in DSE test (fix for restricted environments)
- Remove filterstr workaround from syncrepl test
- Explicitly set TLS_REQUIRE_CERT option to TLS_HARD in test_tls_ext_noca
Doc/
- Link to bytes mode from text-string arguments in the ldap module
Infrastructure:
- Include lber in list of libraries in setup.cfg
Released 3.0.0b4 2018-01-10
Changes since 3.0.0b3:
Removed support for Python 3.3, which reached its end-of-life 2017-09-29.
Lib/
- Make default argument values work under bytes_mode
- Update use of map() to use list/set comprehensions instead
Test/
- Refactor syncrepl tests to run with bytes_mode
Doc/
- Document all_records attribute of LDIFRecordList
Released 3.0.0b3 2017-12-20
Changes since 3.0.0b2:
The functions ldap.open()
, ldap.init()
, ldif.CreateLDIF()
and ldif.ParseLDIF()
, which were deprecated for over a decade,
are scheduled for removal in python-ldap 3.1.
Infrastructure:
- Require setuptools to build
- Start running automatic tests on PyPy
Lib/
- When raising LDAPBytesWarning, give helpful code locations
- Use modern Python idioms in several places
- Avoid reimplementing UserDict.get() in cidict and models.Entry
Doc/
- Use https links
Test/
- Add reproducer for openldap's NSS shutdown/restart issue
- Make testing on non-Linux platforms easier
Released 3.0.0b2 2017-12-11
Changes since 3.0.0b1:
The module ldap.async
is renamed to ldap.asyncsearch
, due to
async
becoming a keyword in Python 3.7.
The old module name is deprecated, but will be available as long
as Python 3.6 is supported.
Lib/
- Use custom ldap.LDAPBytesWarning class
- Rename ldap.async to ldap.asyncsearch
Modules/
- Support None for set_option(OPT_TIMEOUT) and OPT_NETWORK_TIMEOUT
- Fix error reporting of LDAPObject.set_option()
- Change memory handling in attrs_from_List()
Test/
- Remove workaround for OpenLDAP NSS issue
Demo/
- Use uniform shebang in all demos
Doc/
- Provide build deps for Alpine and CentOS
- Move sample workflow out of the main Contributing guide
Infrastructure:
- Add valgrind target to check for memory leaks
- Minimal configuration for pytest
Released 3.0.0b1 2017-12-04
Changes since 2.4.45:
(this list includes changes from 2.5.x)
New dependencies (automatically installed when using pip):
- pyasn1 0.3.7+
- pyasn1_modules 0.1.5+
Python 3 support and bytes_mode:
- merged from the pyldap fork (https://github.com/pyldap)
- please see documentation on bytes_mode and text/bytes handling:
https://python-ldap.readthedocs.io/en/latest/bytes_mode.html
Removed support for Python 2.6.
Infrastructure:
- Move to Git
- Don't define search path for includes and libs in the default setup.cfg
- Include sasl/sasl.h from the standard path
- Re-format README to ReStructured Text
- Setup for automatic testing using Travis CI
- Add coverage reporting for Python and C
- Add install requires into setup.py
- Remove distclean.sh in favor of make clean
- Use
package
,depends
,install_requires
in setup.py - Add make target for scan-build (static analysis using clang)
- Add make target and suppression file for Valgrind (memory checker)
Modules/
- Remove unused LDAPberval helper functions
- Fix type conversion in page control
- Fix multiple ref leaks in error-handling code
- Fix reference leak in result4
- Fix several compiler warnings
- Fix memory leak in whoami
- Fix internal error handling of LDAPControl_to_List()
- Fix two memory leaks and release GIL in encode_assertion_control
- Allow set_option() to set timeouts to infinity
and, thanks to Michael Ströder: - removed unused code schema.c
- moved code from version.c to ldapmodule.c
- removed obsolete back-ward compability constants from common.h
- build checks whether LDAP_API_VERSION is OpenLDAP 2.4.x
- _ldap.author and _ldap.license also set from ldap.pkginfo
- assume C extension API for Python 2.7+
Lib/
- Avoid eval() for getting module-level variables to fix running under pytest
- Compability changes for pyasn1 0.3 or newer
and, thanks to Michael Ströder: - 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 - The methods SSSResponseControl.decodeControlValue() and
VLVResponseControl.decodeControlValue() now follow the coding
convention to use camel-cased ASN.1 name as class attribute name.
The old class names are still set for back-ward compability
but should not be used in new code because they might be removed
in a later release. - removed SSSRequestControl from ldap.controls.KNOWN_RESPONSE_CONTROLS
- removed all dependencies on modules string and types
- removed use of .has_key()
- removed class ldap.ldapobject.NonblockingLDAPObject
- new global constant ldap.LIBLDAP_API_INFO
- right after importing _ldap there is a call into libldap to initialize it
- method .decodeControlValue() of SSSResponseControl and VLVResponseControl
does not set class attribute result_code anymore - always use bytes() for UUID() constructor in ldap.syncrepl
- module ldif now uses functions b64encode() and b64decode()
- fixed pickling and restoring of ReconnectLDAPObject
Lib/slapdtest
- Automatically try some common locations for SCHEMADIR
- Ensure server is stopped when the process exits
- Check for LDAP schema and slapd binaries
- slapdtest is now a package and includes testing certificates
Tests/
- Expand cidict membership test
- Add test suite for binds
- Add test suite for edits
- Add a smoke-check for listall() and attribute_types()
- Add test case for SASL EXTERNAL auth
- Add tests for start_tls
- In CI, treat compiler warnings as fatal errors
- Added tests for ldap.syncrepl
and, thanks to Michael Ströder: - added explicit reconnect tests for ReconnectLDAPObject
- scripts do not directly call SlapdTestCase.setUpClass() anymore
- added LDIF test with folded, base64-encoded attribute
- added more tests for sub-module ldap.dn
Doc/
- Build documentation without the compiled C extension
- Merge contents from python-ldap.org
- Move reference documentation in its own section
- Document return value of {modify,add,delete}_ext_s() as a tuple
- Add tests for documentation (build & spelling)
- Link to documentation of old versions
- Add a contributing guide