hgext/fsmonitor/pywatchman/pybser.py
changeset 49848 139f713010ea
parent 49537 f58f955adad4
child 51863 f4733654f144
equal deleted inserted replaced
49847:31bbf7a28a75 49848:139f713010ea
    49 BSER_NULL = b"\x0a"
    49 BSER_NULL = b"\x0a"
    50 BSER_TEMPLATE = b"\x0b"
    50 BSER_TEMPLATE = b"\x0b"
    51 BSER_SKIP = b"\x0c"
    51 BSER_SKIP = b"\x0c"
    52 BSER_UTF8STRING = b"\x0d"
    52 BSER_UTF8STRING = b"\x0d"
    53 
    53 
    54 if compat.PYTHON3:
    54 STRING_TYPES = (str, bytes)
    55     STRING_TYPES = (str, bytes)
    55 unicode = str
    56     unicode = str
    56 
    57 
    57 
    58     def tobytes(i):
    58 def tobytes(i):
    59         return str(i).encode("ascii")
    59     return str(i).encode("ascii")
    60 
    60 
    61     long = int
    61 
    62 else:
    62 long = int
    63     STRING_TYPES = (unicode, str)
       
    64     tobytes = bytes
       
    65 
    63 
    66 # Leave room for the serialization header, which includes
    64 # Leave room for the serialization header, which includes
    67 # our overall length.  To make things simpler, we'll use an
    65 # our overall length.  To make things simpler, we'll use an
    68 # int32 for the header
    66 # int32 for the header
    69 EMPTY_HEADER = b"\x00\x01\x05\x00\x00\x00\x00"
    67 EMPTY_HEADER = b"\x00\x01\x05\x00\x00\x00\x00"
    85 
    83 
    86 
    84 
    87 def _buf_pos(buf, pos):
    85 def _buf_pos(buf, pos):
    88     ret = buf[pos]
    86     ret = buf[pos]
    89     # Normalize the return type to bytes
    87     # Normalize the return type to bytes
    90     if compat.PYTHON3 and not isinstance(ret, bytes):
    88     if not isinstance(ret, bytes):
    91         ret = bytes((ret,))
    89         ret = bytes((ret,))
    92     return ret
    90     return ret
    93 
    91 
    94 
    92 
    95 class _bser_buffer:
    93 class _bser_buffer:
   248                     val_len,
   246                     val_len,
   249                 )
   247                 )
   250             else:
   248             else:
   251                 raise RuntimeError("Cannot represent this mapping value")
   249                 raise RuntimeError("Cannot represent this mapping value")
   252             self.wpos += needed
   250             self.wpos += needed
   253             if compat.PYTHON3:
   251             iteritems = val.items()
   254                 iteritems = val.items()
       
   255             else:
       
   256                 iteritems = val.iteritems()  # noqa: B301 Checked version above
       
   257             for k, v in iteritems:
   252             for k, v in iteritems:
   258                 self.append_string(k)
   253                 self.append_string(k)
   259                 self.append_recursive(v)
   254                 self.append_recursive(v)
   260         elif isinstance(val, abc.Iterable) and isinstance(val, abc.Sized):
   255         elif isinstance(val, abc.Iterable) and isinstance(val, abc.Sized):
   261             val_len = len(val)
   256             val_len = len(val)