• Alex Kerfoot's avatar
    Fix CreateString with already-encoded string or bytearray in Python 2.7. · 1e7310e6
    Alex Kerfoot authored
    There was no way to pass an already-encoded string to 
    `builder.CreateString` in Python 2.7:
    
    - Passing a `bytearray` raised a TypeError because `bytearray` was not
      recognized as an instance of `compat.binary_type`.
    - Passing a utf-8 encoded `str` would cause the string to be
      double-encoded, because `compat.string_types = (basestring,)` and
      `basestring` is the base class of `str` and `unicode`, so the logic
      would never reach the `elif isinstance(s, compat.binary_type)` case.
    - Converting a utf-8 encoded bytearray to `bytes` like
      `builder.CreateString(bytes(encoded_string))` does not work because
      in Python 2.7, bytes is just an alias for `str` so it behaves as
      above.
    
    This change allows either `bytes` or `bytearray` as an already-encoded
    string to be passed to `CreateString` in versions of Python that support
    `bytearray`, and falls back to `str` in older versions.
    
    In Python 2, it restricts unencoded string types to `unicode`, so `str`
    can be used as an encoded, binary representaiton.
    1e7310e6
Name
Last commit
Last update
CMake Loading commit data...
android Loading commit data...
biicode Loading commit data...
build_ide Loading commit data...
docs Loading commit data...
go Loading commit data...
include/flatbuffers Loading commit data...
java Loading commit data...
js Loading commit data...
net/FlatBuffers Loading commit data...
php Loading commit data...
python Loading commit data...
reflection Loading commit data...
samples Loading commit data...
src Loading commit data...
tests Loading commit data...
.gitattributes Loading commit data...
.gitignore Loading commit data...
.travis.yml Loading commit data...
CMakeLists.txt Loading commit data...
CONTRIBUTING Loading commit data...
LICENSE.txt Loading commit data...
biicode.conf Loading commit data...
composer.json Loading commit data...
readme.md Loading commit data...