-
Jérome Perrin authored
* Zope API changes: + publish(): - stdin is now BytesIO rather than StringIO. - Returned value of a script is passed to str() in python2, not in python3 anymore. + HTTPResponse `body` property is now bytes(). + OFS.Image.File file parameter is bytes(). + zope.interface implements() is now @implementer decorator. + Python standard logging module recommended instead of zLOG. * Python3 API changes: + builtin reduce() was removed. + urlnorm is now available. + Use BytesIO rather than StringIO to follow py3 API. + hmac.new() requires digestmod argument from Python 3.8. + Use six.moves library to handle moved objects from py2 to py3. + `modernize -f xrange_six` then slightly adjusted manually to just use range where it does not make a significant difference (for example in test). + base64.b64encode() now expects bytes(). + UserDict() interface changed: - New parameter in update() and pop(). - `failobj` setdefault parameter renamed to `default`. + ensure_list() on dict.{values,items}() and list(dict) for dict.keys() when we really need a list and not an iterable (Python3). + Make dict iteration works on both version of Python. - Use six.iter{items,values,keys}(). - has_key() has been removed. - Make sure that dict.{items,values,keys}() returns a real list when modified (ensure_list()). + Comparisons between int and NoneType raises TypeError. + BTrees key must be str() not int() (_getOb()). + No more unbound methods in python3 so use six.get_unbound_function(). + Exceptions: - No longer behave as sequences. Using `args` attribute instead. - When an exception has been assigned using `as target`, it is cleared at the end of the except clause. + file: py2 was returning `str` upon reading, now it returns text strings. Also, opening mode is text strings by default. + Data strings are bytes(). - Replace str() by bytes(). + iterators no longer have next() method, instead there is next() builtin. + New ConnectionError exception so rename existing one to not clash. + Integer division is now with //. + __nonzero__ is now __bool__. + apply() does not exist anymore. + Deprecated threading.Thread isAlive() has been removed. + im_func replaced by __func__. + Use six.with_metaclass() to define metaclass in a cross-compatible way with py2 and py3. + Only test method can be marked as expectedFailure(), not assert statement anymore. + os.path.walk() removed. + HTMLParser never fails: no strict mode nor HTMLParseError anymore (Python #15114). + Unpickler.find_global() is now Unpickler.find_class(). Co-Authored-by: Kazuhiko SHIOZAKI <kazuhiko@nexedi.com> Co-Authored-by: Arnaud Fontaine <arnaud.fontaine@nexedi.com> Co-Authored-by: Carlos Ramos Carreño <carlos.ramos@nexedi.com> Co-Authored-by: Emmeline Vouriot <emmeline.vouriot@nexedi.com>
e7b9cbbd