• Kirill Smelkov's avatar
    X golang_str: Add ustr.decode for symmetry with bstr.decode and because gpy2 breaks without it · 93e9c25a
    Kirill Smelkov authored
    Without working unicode.decode gpy2 fails when running ERP5 as follows:
    
        $ /srv/slapgrid/slappart49/t/ekg/i/5/bin/runTestSuite --help
        No handlers could be found for logger "SecurityInfo"
        Traceback (most recent call last):
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/bin/.runTestSuite.pyexe", line 296, in <module>
            main()
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/parts/pygolang/gpython/__init__.py", line 484, in main
            pymain(argv, init)
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/parts/pygolang/gpython/__init__.py", line 292, in pymain
            run(mmain)
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/parts/pygolang/gpython/__init__.py", line 192, in run
            _execfile(filepath, mmain.__dict__)
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/parts/pygolang/gpython/__init__.py", line 339, in _execfile
            six.exec_(code, globals, locals)
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/eggs/six-1.16.0-py2.7.egg/six.py", line 735, in exec_
            exec("""exec _code_ in _globs_, _locs_""")
          File "<string>", line 1, in <module>
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/bin/runTestSuite", line 10, in <module>
            from Products.ERP5Type.tests.runTestSuite import main; sys.exit(main())
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/parts/erp5/product/ERP5Type/__init__.py", line 96, in <module>
            from . import ZopePatch
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/parts/erp5/product/ERP5Type/ZopePatch.py", line 75, in <module>
            from Products.ERP5Type.patches import ZopePageTemplateUtils
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/parts/erp5/product/ERP5Type/patches/ZopePageTemplateUtils.py", line 58, in <module>
            convertToUnicode(u'', 'text/xml', ())
          File "/srv/slapgrid/slappart49/t/ekg/soft/b5048b47894a7612651c7fe81c2c8636/eggs/Zope-4.8.9+slapospatched002-py2.7.egg/Products/PageTemplates/utils.py", line 73, in convertToUnicode
            return source.decode(encoding), encoding
        AttributeError: unreadable attribute
    
    and in general if we treat both bstr ans ustr being two different
    representations of the same entity, if we have bstr.decode, having
    ustr.decode is also needed for symmetry with both operations converting
    bytes representation of the string into unicode.
    
    Now there is full symmetry in between bstr/ustr and encode/decode. Quoting updated encode/decode text:
    
        Encode encodes unicode representation of the string into bytes, leaving string domain.
        Decode decodes bytes   representation of the string into ustr, staying inside string domain.
    
        Both bstr and ustr are accepted by encode and decode treating them as two
        different representations of the same entity.
    
        On encoding, for bstr, the string representation is first converted to
        unicode and encoded to bytes from there. For ustr unicode representation
        of the string is directly encoded.
    
        On decoding, for ustr, the string representation is first converted to
        bytes and decoded to unicode from there. For bstr bytes representation of
        the string is directly decoded.
    93e9c25a
_golang_str.pyx 106 KB