1. 26 Sep, 2024 10 commits
    • Jérome Perrin's avatar
      erp5_data_notebook: python3 support. · 275f280d
      Jérome Perrin authored
      Jupyter integration is more or less abandoned. Just do the minimum to make tests pass.
      275f280d
    • Jérome Perrin's avatar
      py3: Fix pylint/SyntaxWarning warnings. · 4d030f53
      Jérome Perrin authored
      Also, remove `if True/1/False/0` statement raising pylint warnings.
      Co-authored-by: Arnaud Fontaine's avatarArnaud Fontaine <arnaud.fontaine@nexedi.com>
      4d030f53
    • Jérome Perrin's avatar
      py2/py3: Make Products code compatible with both python2 and python3. · 6c8aba0e
      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's avatarKazuhiko SHIOZAKI <kazuhiko@nexedi.com>
      Co-Authored-by: Arnaud Fontaine's avatarArnaud Fontaine <arnaud.fontaine@nexedi.com>
      Co-Authored-by: Carlos Ramos Carreño's avatarCarlos Ramos Carreño <carlos.ramos@nexedi.com>
      Co-Authored-by: Emmy Vouriot's avatarEmmeline Vouriot <emmeline.vouriot@nexedi.com>
      6c8aba0e
    • Jérome Perrin's avatar
    • Jérome Perrin's avatar
      base/conversion: setContentType before converting to base format · 1cae40dc
      Jérome Perrin authored
      some conversion (TextDocument) depend on the content type, so it's
      necessary to first update the content type before trying to convert to
      base format
      1cae40dc
    • Arnaud Fontaine's avatar
      Remove unused code. · ea649e1b
      Arnaud Fontaine authored
      ea649e1b
    • Arnaud Fontaine's avatar
      48ccc6a6
    • Arnaud Fontaine's avatar
    • Arnaud Fontaine's avatar
      zope5: Since 5.8.1 missing Content-Type HTTP header is interpreted as... · 86dd451e
      Arnaud Fontaine authored
      zope5: Since 5.8.1 missing Content-Type HTTP header is interpreted as application/x-www-form-urlencoded.
      
      Zope.git:
        commit 5b324f6c461f5ea1cc069739b6c32a1a5ff59df9
        Date:   Thu Jan 19 07:15:18 2023 +0100
          replace `cgi.FieldStorage` by `multipart` (#1094)
          * interpret a missing `CONTENT_TYPE` as `application/x-www-form-urlencoded`
      
      With cgi.FieldStorage, it was interpretated as text/plain so Content-Type has to
      be provided now (even for WebDAV despite RFC 4918 stating that it *SHOULD* be
      provided).
      
      Some Unit Tests did not provide such header at all but this was wrong (such as
      erp5_stripe:testStripe where the real request has application/json as
      Content-Type and not text/plain).
      86dd451e
    • Jérome Perrin's avatar
      core: fix Flags not at the start of the expression warnings with new mimetypes_registry · b819f8da
      Jérome Perrin authored
      This is follow up of commit 0000dee0 (erp5_core: update
      mimetypes_registry with shared-mime-info_2.4-5 and media-types_10.1.0.,
      2024-09-17), after this change, Products.MimetypesRegistry build regular
      expressions with fnmatch.translate, which on python2 produces regular
      expressions like:
      
           >>> fnmatch.translate('*.aaa')
           '.*\\.aaa\\Z(?ms)
      
      such expressions cause a warning in python3:
      
          >>> re.compile('.*\\.aaa\\Z(?ms)')
          ...
          re.error: global flags not at the start of the expression at position 9
      
      Running this on python3 would be incompatible with python2, because
      `fnmatch.translate` on python3 generates regular expressions that are not
      valid on python2.
      
      To solve this mimetypes_registry.xml was edited by hand to move the
      flags at the beginning, replacing for example '.*\\.aaa\\Z(?ms)' by
      '(?ms).*\\.aaa\\Z'
      b819f8da
  2. 25 Sep, 2024 1 commit
  3. 24 Sep, 2024 3 commits
  4. 23 Sep, 2024 12 commits
  5. 20 Sep, 2024 1 commit
  6. 19 Sep, 2024 4 commits
  7. 18 Sep, 2024 3 commits
  8. 17 Sep, 2024 6 commits