CHANGES 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808
  1. ----------------------------------------------------------------
  2. Released 2.3.11 2010-02-26
  3. Changes since 2.3.10:
  4. Lib/
  5. * Fixed LDAP URL parsing with four ? but no real extensions
  6. * ldap.ldapobject.LDAPObject.rename_s() now also accepts arguments
  7. serverctrls and clientctrls
  8. * Removed untested and undocumented class ldap.ldapobject.SmartLDAPObject
  9. * Removed broken method ldap.ldapobject.LDAPObject.manage_dsa_it()
  10. Modules/
  11. * Make use of LDAP_OPT_X_TLS_NEWCTX only if available in
  12. OpenLDAP libs used for the build
  13. * Fixed #ifdef-statements for OPT_X_TLS_PROTOCOL_MIN
  14. Doc/
  15. * Some updates and corrections regarding description of use of
  16. LDAPv3 controls
  17. * Some more descriptions for constants
  18. * Removed comments related to old LaTeX-based documentation system
  19. ----------------------------------------------------------------
  20. Released 2.3.10 2009-10-30
  21. Changes since 2.3.9:
  22. Lib/
  23. * The diagnosticMessage returned by a server is written to the trace
  24. output also for successful operations.
  25. * Fixed handling of LDAP URL extensions with implicit value None which are
  26. mapped to class attributes of LDAPUrl.
  27. * Fixed handling of LDAP URLs with ? being part of extensions.
  28. * Fixed exceptions raised by get_option/set_option (SF#1964993)
  29. * ldap.functions: Fixed import trace-related variables from base-module ldap
  30. * Fixed ldap.resiter missing in RPMs built with python setup.py bdist_rpm
  31. * Fix in class ldap.schema.models.SchemaElement:
  32. repr() was liberally used in methods key_attr() and key_list() to enclose
  33. values in quotes.
  34. Modules/
  35. * Changed internal API List_to_LDAPControls() to LDAPControls_from_object()
  36. * Supported was added for retrieving the SASL username during SASL bind with
  37. ldap_get_option(LDAP_OPT_X_SASL_USERNAME) if available in libldap.
  38. * New LDAP option constant ldap.OPT_X_TLS_NEWCTX supported
  39. in LDAPObject.set_option()
  40. * New LDAP option constants supported in LDAPObject.get/set_option():
  41. ldap.OPT_X_TLS_PROTOCOL_MIN, ldap.OPT_CONNECT_ASYNC, ldap.OPT_X_TLS_DHFILE
  42. * Fixed setting _ldap.OPT_ON and _ldap.OPT_OFF
  43. * l_ldap_result3(): controls are now parsed for all response types (SF#2829057)
  44. Doc/
  45. * Added example for ldap.resiter
  46. ----------------------------------------------------------------
  47. Released 2.3.9 2009-07-26
  48. Changes since 2.3.8:
  49. Lib/
  50. * All modules (ldap, ldif, dsml and ldapurl) have common version number now
  51. * Non-exported function ldif.needs_base64() was abandoned and is now
  52. implemented as method LDIFWriter._needs_base64_encoding().
  53. This allows sub-classes of LDIFWriter to implement determining whether
  54. attribute values have to be base64-encoded in a different manner and is
  55. the same approach like in class dsml.DSMLWriter.
  56. * LDAPUrlExtension._parse() now gracefully handles LDAP URL extensions
  57. without explicit exvalue as being set with implicit value None.
  58. Modules/
  59. * New LDAP option constant ldap.OPT_X_SASL_NOCANON supported
  60. in LDAPObject.get/set_option()
  61. ----------------------------------------------------------------
  62. Released 2.3.8 2009-04-30
  63. Changes since 2.3.7:
  64. Lib/
  65. * ldap.schema.models: More fault-tolerant parsing of SYNTAX in
  66. AttributeTypeDescription
  67. * ldap.schema.tokenizer.split_tokens():
  68. More tolerant parsing of items separated only with a DOLLAR without
  69. surrounding white-spaces (because WSP is declared as zero or more spaces
  70. in RFC 4512)
  71. ----------------------------------------------------------------
  72. Released 2.3.7 2009-04-09
  73. Changes since 2.3.6:
  74. Lib/
  75. * urllib.quote() is now used in LDAPUrlExtension.unparse() to quote
  76. all special URL characters in extension values
  77. Modules/
  78. * Fixed ldapcontrol.c not to raise ldap.ENCODING_ERROR in
  79. function encode_rfc2696() on 64-bit systems
  80. * Fixed seg fault if error code in a LDAP response was outside
  81. the known error codes and could not be mapped to a specific
  82. exception class (thanks to Sean)
  83. * errors.c: LDAP_ERROR_MAX set to LDAP_PROXIED_AUTHORIZATION_DENIED
  84. if available in OpenLDAP header
  85. * new exception class ldap.PROXIED_AUTHORIZATION_DENIED
  86. if available in OpenLDAP header
  87. * Fixed functions.c not to raise ldap.ENCODING_ERROR in
  88. function l_ldap_str2dn() on 64-bit systems (see SF#2725356)
  89. ----------------------------------------------------------------
  90. Released 2.3.6 2009-02-22
  91. Changes since 2.3.5:
  92. Lib/
  93. * Importing ldap.str2dn() which directly imported _ldap.str2dn()
  94. is prohibited now (see SF#2181141)
  95. Modules/
  96. * get_option(): Added support for reading more SASL options.
  97. (OPT_X_SASL_MECH, OPT_X_SASL_REALM, OPT_X_SASL_AUTHCID and
  98. OPT_X_SASL_AUTHZID)
  99. * Added some explicit type casts to fix issues while building
  100. with SunStudio
  101. * Fixed compiling issue with GCC 4.4
  102. (see SF#2555793, thanks to Matej and Martin)
  103. Doc/
  104. * Clarified not to use ldap_get_dn() directly
  105. * Fixed description of ldap.SASL_AVAIL and ldap.TLS_AVAIL
  106. (see SF#2555804, thanks to Matej and Martin)
  107. ----------------------------------------------------------------
  108. Released 2.3.5 2008-07-06
  109. Changes since 2.3.4:
  110. Lib/
  111. * Fixed methods ldap.cidict.__contains__() and
  112. ldap.schema.models.Entry.__contains__()
  113. * FWIW method LDAPObject.cancel_s() returns a result now
  114. * Fixed ldap.schema.models.NameForm: Class attribute oc is now
  115. of type string, not tuple to be compliant with RFC 4512
  116. ----------------------------------------------------------------
  117. Released 2.3.4 2008-03-29
  118. Changes since 2.3.3:
  119. Modules/
  120. * Fixed seg fault when calling LDAPObject.get_option()
  121. (see SF#1926507, thanks to Matej)
  122. ----------------------------------------------------------------
  123. Released 2.3.3 2008-03-26
  124. Changes since 2.3.2:
  125. Fixed backward-compability when building with OpenLDAP 2.3.x libs.
  126. ----------------------------------------------------------------
  127. Released 2.3.2 2008-03-26
  128. Changes since 2.3.1:
  129. Lib/
  130. * ldap.dn.escape_dn_chars() now really adheres to
  131. RFC 4514 section 2.4 by escaping null characters and a
  132. space occurring at the beginning of the string
  133. * New method ldap.cidict.cidict.__contains__()
  134. * ldap.dn.explode_dn() and ldap.dn.explode_rdn()
  135. have a new optional key-word argument flags which is
  136. passed to ldap.dn.str2dn().
  137. Modules/
  138. * Removed unused OPT_PRIVATE_EXTENSION_BASE from constants.c
  139. Doc/
  140. * Various additions, updates, polishing (thanks to James).
  141. ----------------------------------------------------------------
  142. Released 2.3.1 2007-07-25
  143. Changes since 2.3.0:
  144. * Support for setuptools (building .egg, thanks to Torsten)
  145. * Support for matched values control (RFC 3876, thanks to Andreas)
  146. Lib/
  147. * Fixed ldif (see SF#1709111, thanks to Dmitry)
  148. * ldap.schema.models:
  149. SUP now separated by $ (method __str__() of classes
  150. AttributeType, ObjectClass and DITStructureRule, thanks to Stefan)
  151. Modules/
  152. * Added constant MOD_INCREMENT to support
  153. modify+increment extension (see RFC 4525, thanks to Andreas)
  154. ----------------------------------------------------------------
  155. Released 2.3.0 2007-03-27
  156. Changes since 2.2.1:
  157. * OpenLDAP 2.3+ required now to build.
  158. * Added support for Cancel operation ext. op. if supported
  159. in OpenLDAP API of the libs used for the build.
  160. Modules/
  161. * Removed deprecated code for setting options by name
  162. * Added l_ldap_cancel()
  163. * Some modifications related to PEP 353 for
  164. Python 2.5 on 64-bit platforms (see SF#1467529, thanks to Matej)
  165. * Added new function l_ldap_str2dn(), removed functions
  166. l_ldap_explode_dn() and l_ldap_explode_rdn()
  167. (see SF#1657848, thanks to David)
  168. Lib/
  169. * Added method ldapobject.LDAPObject.cancel()
  170. * ldap.schema.subentry.urlfetch() now can do non-anonymous
  171. simple bind if the LDAP URL provided contains extensions
  172. 'bindname' and 'X-BINDPW'. (see SF#1589206)
  173. * ldap.filter.escape_filter_chars() has new a key-word argument
  174. escape_mode now which defines which chars to be escaped
  175. (see SF#1193271).
  176. * Various important fixes to ldapobject.ReconnectLDAPObject
  177. * Moved all DN-related functions to sub-module ldap.dn,
  178. import them in ldap.functions for backward compability
  179. * ldap.dn.explode_dn() and ldap.dn.explode_rdn() use the new
  180. wrapper function ldap.dn.str2dn() (related to SF#1657848)
  181. * changetype issue partially fixed (see SF#1683746)
  182. ----------------------------------------------------------------
  183. Released 2.2.1 2006-11-15
  184. Changes since 2.2.0:
  185. Modules/
  186. * Fix for Python 2.5 free(): invalid pointer (see SF#1575329)
  187. * passwd() accepts None for arguments user, oldpw, newpw
  188. (see SF#1440151)
  189. Lib/
  190. * ldif.LDIFWriter.unparse() now accepts instances of
  191. derived dict and list classes (see SF#1489898)
  192. ----------------------------------------------------------------
  193. Released 2.2.0 2006-04-10
  194. Changes since 2.0.11:
  195. * OpenLDAP 2.2+ required now to build.
  196. Modules/
  197. * Dropped all occurences of '#ifdef #LDAP_VENDOR_VERSION'.
  198. * Fixed wrong tuple size in l_ldap_result3() (see SF#1368108)
  199. * Fixed get_option(ldap.OPT_API_INFO) (see SF#1440165)
  200. * Fixed memory leak in l_ldap_result3() when all=0
  201. (see SF#1457325)
  202. * Fixed memory leak in l_ldap_result3() in error cases
  203. (see SF#1464085)
  204. Lib/
  205. * Fixed ldap.schema.models.DITStructureRule.__str__() to
  206. separate SUP rule-ids with a single space instead of ' $ '
  207. * Fixed ldap.async.Dict
  208. * Added ldap.async.IndexedDict
  209. * ldap.schema.subentry.SubSchema.attribute_types() has new
  210. key-word argument ignore_dit_content_rule
  211. ----------------------------------------------------------------
  212. Released 2.0.11 2005-11-07
  213. Changes since 2.0.10:
  214. Lib/
  215. * Class ldap.ldapobject.LDAPObject:
  216. Each method returns a result now
  217. * Class ldap.ldapobject.ReconnectLDAPObject:
  218. Some methods called the wrong methods of LDAPObject. Fixed.
  219. * Added new class ldap.async.Dict
  220. * Slightly cleaned up ldap.schema.subentry.attribute_types()
  221. * New sub-module ldap.resiter which simply provides a mix-in
  222. class for ldap.ldapobject.LDAPObject with a generator method
  223. allresults().
  224. Obviously this only works with Python 2.3+. And
  225. it's still experimental.
  226. ----------------------------------------------------------------
  227. Released 2.0.10 2005-09-23
  228. Changes since 2.0.9:
  229. Lib/
  230. * Switched back to old implementation of
  231. ldap.schema.tokenizer.split_tokens() since the new one
  232. had a bug which deletes the spaces from DESC
  233. * ldap.INSUFFICIENT_ACCESS is now ignored in
  234. ldap.ldapobject.LDAPObject.search_subschemasubentry_s()
  235. ----------------------------------------------------------------
  236. Released 2.0.9 2005-07-28
  237. Changes since 2.0.8:
  238. Modules/
  239. * Removed __doc__ strings from ldapcontrol.c to "fix"
  240. build problems with Python versions 2.2 and earlier.
  241. ----------------------------------------------------------------
  242. Released 2.0.8 2005-06-22 at Linuxtag 2005, Karlsruhe, Germany
  243. Changes since 2.0.7:
  244. * Preliminary support for receiving LDAP controls added.
  245. Contributor:
  246. - Andreas Ames
  247. Lib/
  248. - Added classes in module ldif to ldif.__all__ to fix
  249. from ldif import *
  250. - Removed BitString syntax from
  251. ldap.schema.models.NOT_HUMAN_READABLE_LDAP_SYNTAXES
  252. since the LDAP encoding is in fact human-readable
  253. - ldapurl.LDAPUrlExtension.unparse() outputs empty string
  254. if LDAPUrlExtension.exvalue is None
  255. - Added ldap.controls.SimplePagedResultsControl
  256. ----------------------------------------------------------------
  257. Released 2.0.7 2005-04-29
  258. Changes since 2.0.6:
  259. * Added preliminary support for sending LDAP controls
  260. with a request.
  261. Contributors:
  262. - Deepak Giridharagopal
  263. - Ingo Steuwer
  264. (Receiving controls in LDAP results still not supported.)
  265. Modules:
  266. * LDAPObject.c: removed l_ldap_manage_dsa_it()
  267. * LDAPObject.c: Added missing #ifdef around l_ldap_passwd()
  268. for compability with older OpenLDAP libs.
  269. Lib/
  270. * New algorithm in ldap.schema.tokenizer.split_tokens()
  271. contributed by Wido Depping which is more robust
  272. when parsing very broken schema elements
  273. (e.g. Oracle's OID).
  274. * Fixed argument list (position of timeout) when calling
  275. LDAPObject.search_ext_s() from search_st() and search_s().
  276. * LDAPObject.search_ext_s() correctly calls search_ext_s() now.
  277. * Re-implemented LDAPObject.manage_dsa_it() without calling _ldap.
  278. ----------------------------------------------------------------
  279. Released 2.0.6 2004-12-03
  280. Changes since 2.0.5:
  281. Lib/
  282. * Added sub-module ldap.dn
  283. * Added function ldap.dn.escape_dn_chars()
  284. * Special check when implicitly setting SUP 'top' to
  285. structural object classes without SUP defined to avoid
  286. a loop in the super class chain.
  287. ----------------------------------------------------------------
  288. Released 2.0.5 2004-11-11
  289. Changes since 2.0.4:
  290. Some small improvements for SASL:
  291. The noisy output during SASL bind is avoided now. Interaction
  292. with output on stderr can be enabled by the calling application
  293. by explicitly defining SASL flags.
  294. Removed obsolete directory Win32/.
  295. Lib/
  296. * Make sure that ldap.sasl.sasl.cb_value_dict is a dictionary
  297. even when the caller passes in None to argument cb_value_dict
  298. * Added new key-word arg sasl_flags to method
  299. LDAPObject.sasl_interactive_bind_s()
  300. Modules/
  301. * l_ldap_sasl_interactive_bind_s():
  302. New key-word arg sasl_flags passed to
  303. ldap_sasl_interactive_bind_s()
  304. ----------------------------------------------------------------
  305. Released 2.0.4 2004-10-27
  306. Changes since 2.0.3:
  307. Modules/
  308. * Applied some fixes for 64-bit platforms to LDAPObject.c
  309. * Constants ldap.TLS_AVAIL and ldap.SASL_AVAIL will indicate
  310. whether python-ldap was built with support for SSL/TLS
  311. and/or SASL
  312. setup.py and Modules/
  313. * Applied some fixes for building under Win32
  314. ----------------------------------------------------------------
  315. Released 2.0.3 2004-10-06
  316. Changes since 2.0.2:
  317. * Added support for LDAP Password Modify Extended Operation
  318. (see RFC 3062)
  319. Demo/:
  320. * Added passwd_ext_op.py
  321. Modules/
  322. * Added l_ldap_passwd() in LDAPObject.c
  323. Lib/
  324. * Added methods passwd() and passwd_s() to
  325. ldap.ldapobject.LDAPObject
  326. ----------------------------------------------------------------
  327. Released 2.0.2 2004-07-29
  328. Changes since 2.0.1:
  329. Modules/
  330. * Fixed detecting appropriate OpenLDAP libs version for
  331. determining whether ldap_whoami_s() is available or not.
  332. This fixes build problems with OpenLDAP libs 2.1.0 up
  333. to 2.1.12.
  334. ----------------------------------------------------------------
  335. Released 2.0.1 2004-06-29
  336. Changes since 2.0.0:
  337. dsml:
  338. * Fixed wrong exception message format string
  339. ldap.schema.models:
  340. * Fixed Entry.__delitem__() to delete really everything
  341. when deleting an attribute dictionary item.
  342. ----------------------------------------------------------------
  343. Released 2.0.0 2004-05-18
  344. Changes since 2.0.0pre21:
  345. ldif:
  346. * Empty records are simply ignored in ldif.LDIFWriter.unparse()
  347. Modules/
  348. * New method result2() returns 3-tuple containing the msgid
  349. of the outstanding operation.
  350. ldap.ldapobject:
  351. * New _ldap wrapper method LDAPObject.result2() (see above)
  352. which is now used by LDAPObject.result().
  353. ----------------------------------------------------------------
  354. Released 2.0.0pre21 2004-03-29
  355. Changes since 2.0.0pre20:
  356. setup.py:
  357. * runtime_library_dirs is set
  358. Modules/
  359. * (Hopefully) fixed building with OpenLDAP 2.2 libs in errors.c
  360. * Removed meaningless repr() function from LDAPObject.c
  361. * Removed setting LDAP_OPT_PROTOCOL_VERSION in l_ldap_sasl_bind_s()
  362. * Modified string handling via berval instead of *char
  363. in l_ldap_compare_ext() makes it possible to compare attribute
  364. values with null chars.
  365. * Wrapped ldap_sasl_bind() for simple binds instead of ldap_bind()
  366. since 1. the latter is marked deprecated and 2. ldap_sasl_bind()
  367. allows password credentials with null chars.
  368. * Removed unused sources linkedlist.c and linkedlist.h
  369. * Function l_ldap_whoami_s() only added if built against
  370. OpenLDAP 2.1.x+ libs (should preserve compability with 2.0 libs)
  371. ldap.ldapobject:
  372. * LDAPObject.bind() only allows simple binds since Kerberos V4
  373. binds of LDAPv2 are not supported anymore. An assert statement
  374. was added to make the coder aware of that.
  375. * Renamed former LDAPObject.sasl_bind_s() to
  376. LDAPObject.sasl_interactive_bind_s() since it wraps OpenLDAP's
  377. ldap_sasl_interactive_bind_s()
  378. ----------------------------------------------------------------
  379. Released 2.0.0pre20 2004-03-19
  380. Changes since 2.0.0pre19:
  381. Modules/
  382. * Removed doc strings from functions.c
  383. * Removed probably unused wrapper function l_ldap_dn2ufn() since
  384. ldap_dn2ufn() is deprecated in OpenLDAP 2.1+
  385. * Removed wrapper function l_ldap_is_ldap_url().
  386. * Removed macro add_int_r() from constants.c since it caused
  387. incompability issues with OpenLDAP 2.2 libs
  388. (Warning: all result types are Integers now! Use the constants!)
  389. * New wrapper function l_ldap_whoami_s()
  390. ldap.ldapobject:
  391. * New wrapper method LDAPObject.whoami_s()
  392. ldap.functions:
  393. * Removed is_ldap_url(). The more general function
  394. ldapurl.isLDAPUrl() should be used instead.
  395. ldap.sasl:
  396. * Added class cram_md5 (for SASL mech CRAM-MD5)
  397. ldap.async:
  398. * Use constants for search result types (see note about
  399. add_int_r() above).
  400. ----------------------------------------------------------------
  401. Released 2.0.0pre19 2004-01-22
  402. Changes since 2.0.0pre18:
  403. Modules/
  404. * LDAPObject.c:
  405. Most deprecated functions of OpenLDAP C API are not used anymore.
  406. * functions.c:
  407. Removed unused default_ldap_port().
  408. * constants.c:
  409. Removed unused or silly constants
  410. AUTH_KRBV4, AUTH_KRBV41, AUTH_KRBV42, URL_ERR_BADSCOPE, URL_ERR_MEM
  411. * errors.c:
  412. Fixed building with OpenLDAP 2.2.x
  413. (errors caused by negative error constants in ldap.h)
  414. ldap.ldapobject.LDAPObject:
  415. * Removed unused wrapper methods uncache_entry(), uncache_request(),
  416. url_search(), url_search_st() and url_search_s()
  417. * New wrapper methods for all the _ext() methods in _ldap.LDAPObject.
  418. ldap.modlist:
  419. * Some performance optimizations and simplifications
  420. in function modifyModlist()
  421. ----------------------------------------------------------------
  422. Released 2.0.0pre18 2003-12-09
  423. Changes since 2.0.0pre17:
  424. ldap.ldapobject:
  425. * Fixed missing ldap._ldap_function_call() in
  426. ReconnectLDAPObject.reconnect()
  427. ----------------------------------------------------------------
  428. Released 2.0.0pre17 2003-12-03
  429. Changes since 2.0.0pre16:
  430. ldap.functions:
  431. * Fixed ImportError when running python -O
  432. ----------------------------------------------------------------
  433. Released 2.0.0pre16 2003-12-02
  434. Changes since 2.0.0pre15:
  435. Modules/
  436. * Removed definition of unused constant RES_EXTENDED_PARTIAL since
  437. the corresponding symbol LDAP_RES_EXTENDED_PARTIAL seems to not
  438. be available in OpenLDAP-HEAD (pre 2.2) anymore.
  439. All in Lib/
  440. * Fixed some subtle bugs/oddities mentioned by pychecker.
  441. dsml:
  442. * Renamed DSMLWriter._f to DSMLWriter._output_file
  443. * Added wrapper method DSMLWriter.unparse() which simply
  444. calls DSMLWriter.writeRecord()
  445. ldap.ldapobject:
  446. * Simplified LDAPObject.search_subschemasubentry_s()
  447. ldap.functions:
  448. * Moved ldap._ldap_function_call() into ldap.functions.
  449. * apply() is not used anymore since it seems deprecated
  450. ldap.async:
  451. * Added class DSMLWriter
  452. ldap.schema:
  453. * Removed unused key-word argument strict from
  454. ldap.schema.subentry.SubSchema.attribute_types()
  455. * Fixed backward compability issue (for Python prior to 2.2) in
  456. ldap.schema.subentry.SubSchema.listall()
  457. ----------------------------------------------------------------
  458. Released 2.0.0pre15 2003-11-11
  459. Changes since 2.0.0pre14:
  460. Modules/
  461. Follow rule "Always include Python.h first"
  462. ldap.schema.subentry:
  463. * Added new method SubSchema.get_structural_oc()
  464. * Added new method SubSchema.get_applicable_aux_classes()
  465. * Methods SubSchema.listall() and SubSchema.tree() have
  466. new key-word argument schema_element_filters
  467. * Support for DIT content rules in SubSchema.attribute_types()
  468. ----------------------------------------------------------------
  469. Released 2.0.0pre14 2003-10-03
  470. Changes since 2.0.0pre13:
  471. setup.py:
  472. * Some modifications to ease building for Win32
  473. * Added directory Build/ mainly intended for platform-specific
  474. examples of setup.cfg
  475. * Fixed installing ldap.filter
  476. ldap.ldapobject:
  477. * Added class attribute LDAPObject.network_timeout mapped to
  478. set_option(ldap.OPT_NETWORK_TIMEOUT,..)
  479. * LDAPObject.search_ext(): Pass arguments serverctrls,clientctrls
  480. to _ldap.search_ext()
  481. ldap.sasl:
  482. * Added class ldap.sasl.external for handling
  483. the SASL mechanism EXTERNAL
  484. * Dictionary ldap.sasl.saslmech_handler_class built during import
  485. for all the known SASL mechanisms derived from class definitions
  486. ldap.schema:
  487. * More graceful handling of KeyError in SubSchema.attribute_types()
  488. * New method SubSchema.get_inheritedattr() for retrieving inherited
  489. class attributes
  490. * New method SubSchema.get_inheritedobj() for retrieving a
  491. schema element instance including all inherited class attributes
  492. ----------------------------------------------------------------
  493. Released 2.0.0pre13 2003-06-02
  494. Changes since 2.0.0pre12:
  495. ldap.async:
  496. * Checking type of argument writer_obj relaxed in
  497. LDIFWriter.__init__() since file-like objects are
  498. not necessarily an instance of file.
  499. ldap.schema:
  500. * ldap.schema.subentry.SubSchema.attribute_types() now correctly
  501. handles attribute types without NAME set
  502. * If SUP is not defined for a structural object class 'top' is
  503. assumed to be the only super-class by default
  504. * '_' is now the abstract top node in SubSchema.tree() for all
  505. schema element classes since ABSTRACT and AUXILIARY object
  506. classes are not derived from 'top' by default
  507. ----------------------------------------------------------------
  508. Released 2.0.0pre12 2003-05-27
  509. Changes since 2.0.0pre11:
  510. New sub-module ldap.filter:
  511. * Added functions escape_filter_chars() and filter_format()
  512. ldap.ldapobject:
  513. * Trace log writes LDAP URI of connection instead of module name
  514. * search_s() passes self.timeout as argument timeout when
  515. calling search_ext_s()
  516. * Key-word arguments for simple_bind() and simple_bind_s()
  517. with defaults for anonymous bind.
  518. * LDAPObject.protocol_version is set to LDAPv3 as default
  519. (this might make code changes necessary in a real LDAPv2
  520. environment)
  521. * Default for key-word argument trace_stack_limit passed to
  522. __init__() is 5
  523. * Updated __doc__ strings
  524. * Aligned and tested ReconnectLDAPObject and SmartLDAPObject
  525. ldap.async:
  526. * LDIFWriter uses ldif.LDIFWriter instead of calling
  527. function ldif.CreateLDIF
  528. * LDIFWriter accepts either file-like object or ldif.LDIFWriter
  529. instance as argument for specifying the output
  530. ldif:
  531. * Abandoned argument all_records of LDIFRecordList.__init__()
  532. ldapurl:
  533. * urllib.unquote() used instead of urllib.unquote_plus()
  534. ----------------------------------------------------------------
  535. Released 2.0.0pre11 2003-05-02
  536. Changes since 2.0.0pre10:
  537. ldap.ldapobject:
  538. * Cosmetic change: Named argument list for LDAPObject.compare()
  539. instead of *args,**kwargs.
  540. * Fixed bug in ReconnectLDAPObject._apply_method_s() affecting
  541. compability with Python 2.0. The bug was introduced with
  542. 2.0.0pre09 by dropping use of apply().
  543. ldap.modlist:
  544. * modifyModlist(): Only None is filtered from attribute value lists,
  545. '' is preserved as valid attribute value. But filtering applies
  546. to old_value and new_value now.
  547. ldap.schema:
  548. * Zero-length attribute values for schema elements are ignored
  549. (needed on e.g. Active Directory)
  550. dsml:
  551. Added support for parsing and generating DSMLv1.
  552. Still experimental though.
  553. ----------------------------------------------------------------
  554. Released 2.0.0pre10 2003-04-19
  555. Changes since 2.0.0pre09:
  556. ldap.schema:
  557. * Emulate BooleanType for compability with Python2.3 in assert
  558. statements
  559. ----------------------------------------------------------------
  560. Released 2.0.0pre09 2003-04-19
  561. Changes since 2.0.0pre08:
  562. Modified setup.py to support Cyrus-SASL 2.x.
  563. ldap.ldapobject:
  564. * apply() is not used anymore since it seems deprecated
  565. * Fixed __setstate__() and __getstate__() of ReconnectLDAPObject
  566. ldap.schema:
  567. * Completed classes for nameForms, dITStructureRules and
  568. dITContentRules
  569. ----------------------------------------------------------------
  570. Released 2.0.0pre08 2003-04-11
  571. Changes since 2.0.0pre07:
  572. ldap.schema:
  573. * For backward compability with Python versions prior to 2.2
  574. Lib/ldap/schema/tokenizer.py and Lib/ldap/schema/models.py use
  575. (()) instead of tuple() for creating empty tuples.
  576. ----------------------------------------------------------------
  577. Released 2.0.0pre07 2003-04-03
  578. Changes since 2.0.0pre06:
  579. LDAPObject.c:
  580. * Wrapped OpenLDAP's ldap_search_ext()
  581. * Removed empty __doc__ strings
  582. * Removed fileno
  583. * Removed all stuff related to caching in OpenLDAP libs
  584. ldap.ldapobject:
  585. * Fixed SASL rebind in ldap.ldapobject.ReconnectLDAPObject
  586. * use search_ext() instead ldap_search()
  587. * new class attribute timeout for setting a global time-out
  588. value for all synchronous operations
  589. ldap.schema:
  590. * Fixed two typos in ldap.schema.models
  591. * Some attempts to improve performance of parser/tokenizer
  592. * Completely reworked to have separate OID dictionaries for
  593. the different schema element classes
  594. * Fixed the Demo/schema*.py to reflect changes to ldap.schema
  595. Documentation updates and various __doc__ string modifications.
  596. ldapurl:
  597. * Removed all Unicode stuff from module ldapurl
  598. * Consistent URL encoding in module ldapurl
  599. ldif:
  600. * Removed ldif.FileWriter
  601. * Proper handling of FILL (see RFC 2849)
  602. ----------------------------------------------------------------
  603. Released 2.0.0pre06 2002-09-23
  604. Changes since 2.0.0pre05:
  605. - Fine-grained locking when linking against libldap_r
  606. - New wrapper class ldap.ReconnectLDAPObject
  607. - Security fix to module ldapurl
  608. - Other fixes and improvements to whole package
  609. - LDAPv3 schema support
  610. (still somewhat premature and undocumented)
  611. ----------------------------------------------------------------
  612. Released 2.0.0pre05 2002-07-20
  613. ----------------------------------------------------------------
  614. Released 2.0.0pre04 2002-02-09
  615. ----------------------------------------------------------------
  616. Released 2.0.0pre02 2002-02-01
  617. ----------------------------------------------------------------
  618. Released 1.10alpha3 2000-09-19
  619. $Id: CHANGES,v 1.225 2010/02/26 09:30:52 stroeder Exp $