(name, value, check_keys, opts)
Encode a single name, value pair.
Encode a single name, value pair.
Encode a single name value pair .
def _name_value_to_bson(name, value, check_keys, opts):
    """Encode a single name, value pair."""

    # First see if the type is already cached. KeyError will only ever
    # happen once per subtype.
    try:
        return _ENCODERS[type(value)](name, value, check_keys, opts)
    except KeyError:
        pass

    # Second, fall back to trying _type_marker. This has to be done
    # before the loop below since users could subclass one of our
    # custom types that subclasses a python built-in (e.g. Binary)
    marker = getattr(value, "_type_marker", None)
    if isinstance(marker, int) and marker in _MARKERS:
        func = _MARKERS[marker]
        # Cache this type for faster subsequent lookup.
        _ENCODERS[type(value)] = func
        return func(name, value, check_keys, opts)

    # If all else fails test each base type. This will only happen once for
    # a subtype of a supported base type.
    for base in _ENCODERS:
        if isinstance(value, base):
            func = _ENCODERS[base]
            # Cache this type for faster subsequent lookup.
            _ENCODERS[type(value)] = func
            return func(name, value, check_keys, opts)

    raise InvalidDocument("cannot convert value of type %s to bson" %
                          type(value))
def _name_value_to_bson ( name , value , check_keys , opts ) : # First see if the type is already cached. KeyError will only ever # happen once per subtype. try : return _ENCODERS [ type ( value ) ] ( name , value , check_keys , opts ) except KeyError : pass # Second, fall back to trying _type_marker. This has to be done # before the loop below since users could subclass one of our # custom types that subclasses a python built-in (e.g. Binary) marker = getattr ( value , "_type_marker" , None ) if isinstance ( marker , int ) and marker in _MARKERS : func = _MARKERS [ marker ] # Cache this type for faster subsequent lookup. _ENCODERS [ type ( value ) ] = func return func ( name , value , check_keys , opts ) # If all else fails test each base type. This will only happen once for # a subtype of a supported base type. for base in _ENCODERS : if isinstance ( value , base ) : func = _ENCODERS [ base ] # Cache this type for faster subsequent lookup. _ENCODERS [ type ( value ) ] = func return func ( name , value , check_keys , opts ) raise InvalidDocument ( "cannot convert value of type %s to bson" % type ( value ) )