diff --git a/bson.py b/bson.py index c67318bdf..71db76676 100644 --- a/bson.py +++ b/bson.py @@ -12,6 +12,7 @@ import time import logging from test import test_data, qcheck +from objectid import ObjectId _logger = logging.getLogger("mongo.bson") # _logger.setLevel(logging.DEBUG) @@ -213,6 +214,10 @@ def _get_binary(data): (length, data) = _get_int(data) return (data[:length], data[length:]) +def _get_oid(data): + _logger.debug("unpacking oid") + return (ObjectId(data[:12]), data[12:]) + def _get_boolean(data): _logger.debug("unpacking boolean") return (data[0] == "\x01", data[1:]) @@ -244,7 +249,7 @@ _element_getter = { "\x04": _get_array, "\x05": _get_binary, "\x06": _get_null, # undefined -# "\x07": _get_oid, + "\x07": _get_oid, "\x08": _get_boolean, "\x09": _get_date, "\x0A": _get_null, @@ -283,7 +288,7 @@ def _int_64_to_bson(int): _RE_TYPE = type(_valid_array_name) def _value_to_bson(value): if isinstance(value, types.FloatType): - _logger.debug("packing float") + _logger.debug("packing number") return ("\x01", struct.pack(" 0: choices.append(gen_mongo_list(depth)) @@ -112,10 +118,8 @@ def check(predicate, generator): case = generator() try: if not predicate(case): - print "FAIL" counter_examples.append(repr(case)) except: - print "FAIL" counter_examples.append("%r : %s" % (case, traceback.format_exc())) return counter_examples