(data, position, obj_end, opts, dummy1)
return value, end
Decode a BSON binary to bson.binary.Binary or python UUID.
Decode a BSON binary to bson.binary.Binary or python UUID.
Decode a BSON binary to bson . binary . Binary or python UUID .
def _get_binary(data, position, obj_end, opts, dummy1):
    """Decode a BSON binary to bson.binary.Binary or python UUID."""
    length, subtype = _UNPACK_LENGTH_SUBTYPE(data[position:position + 5])
    position += 5
    if subtype == 2:
        length2 = _UNPACK_INT(data[position:position + 4])[0]
        position += 4
        if length2 != length - 4:
            raise InvalidBSON("invalid binary (st 2) - lengths don't match!")
        length = length2
    end = position + length
    if length < 0 or end > obj_end:
        raise InvalidBSON('bad binary object length')
    if subtype in (3, 4):
        # Java Legacy
        uuid_representation = opts.uuid_representation
        if uuid_representation == JAVA_LEGACY:
            java = data[position:end]
            value = uuid.UUID(bytes=java[0:8][::-1] + java[8:16][::-1])
        # C# legacy
        elif uuid_representation == CSHARP_LEGACY:
            value = uuid.UUID(bytes_le=data[position:end])
        # Python
        else:
            value = uuid.UUID(bytes=data[position:end])
        return value, end
    # Python3 special case. Decode subtype 0 to 'bytes'.
    if PY3 and subtype == 0:
        value = data[position:end]
    else:
        value = Binary(data[position:end], subtype)
    return value, end
def _get_binary ( data , position , obj_end , opts , dummy1 ) : length , subtype = _UNPACK_LENGTH_SUBTYPE ( data [ position : position + 5 ] ) position += 5 if subtype == 2 : length2 = _UNPACK_INT ( data [ position : position + 4 ] ) [ 0 ] position += 4 if length2 != length - 4 : raise InvalidBSON ( "invalid binary (st 2) - lengths don't match!" ) length = length2 end = position + length if length < 0 or end > obj_end : raise InvalidBSON ( 'bad binary object length' ) if subtype in ( 3 , 4 ) : # Java Legacy uuid_representation = opts . uuid_representation if uuid_representation == JAVA_LEGACY : java = data [ position : end ] value = uuid . UUID ( bytes = java [ 0 : 8 ] [ : : - 1 ] + java [ 8 : 16 ] [ : : - 1 ] ) # C# legacy elif uuid_representation == CSHARP_LEGACY : value = uuid . UUID ( bytes_le = data [ position : end ] ) # Python else : value = uuid . UUID ( bytes = data [ position : end ] ) return value , end # Python3 special case. Decode subtype 0 to 'bytes'. if PY3 and subtype == 0 : value = data [ position : end ] else : value = Binary ( data [ position : end ] , subtype ) return value , end