(data, position, obj_end, opts, dummy)
return obj, position
Decode a BSON subdocument to opts.document_class or bson.dbref.DBRef.
Decode a BSON subdocument to opts.document_class or bson.dbref.DBRef.
Decode a BSON subdocument to opts . document_class or bson . dbref . DBRef .
def _get_object(data, position, obj_end, opts, dummy):
    """Decode a BSON subdocument to opts.document_class or bson.dbref.DBRef."""
    obj_size = _UNPACK_INT(data[position:position + 4])[0]
    end = position + obj_size - 1
    if data[end:position + obj_size] != b"\x00":
        raise InvalidBSON("bad eoo")
    if end >= obj_end:
        raise InvalidBSON("invalid object length")
    if _raw_document_class(opts.document_class):
        return (opts.document_class(data[position:end + 1], opts),
                position + obj_size)

    obj = _elements_to_dict(data, position + 4, end, opts)

    position += obj_size
    if "$ref" in obj:
        return (DBRef(obj.pop("$ref"), obj.pop("$id", None),
                      obj.pop("$db", None), obj), position)
    return obj, position
def _get_object ( data , position , obj_end , opts , dummy ) : obj_size = _UNPACK_INT ( data [ position : position + 4 ] ) [ 0 ] end = position + obj_size - 1 if data [ end : position + obj_size ] != b"\x00" : raise InvalidBSON ( "bad eoo" ) if end >= obj_end : raise InvalidBSON ( "invalid object length" ) if _raw_document_class ( opts . document_class ) : return ( opts . document_class ( data [ position : end + 1 ] , opts ) , position + obj_size ) obj = _elements_to_dict ( data , position + 4 , end , opts ) position += obj_size if "$ref" in obj : return ( DBRef ( obj . pop ( "$ref" ) , obj . pop ( "$id" , None ) , obj . pop ( "$db" , None ) , obj ) , position ) return obj , position