def get_collection(self, name, codec_options=None, read_preference=None, write_concern=None, read_concern=None): if read_concern: raise NotImplementedError( 'Mongomock does not handle read_concern yet') if read_preference is not None: read_preferences.ensure_read_preference_type( 'read_preference', read_preference) mongomock_codec_options.is_supported(codec_options) try: return self._collection_accesses[name].with_options( codec_options=codec_options or self._codec_options, read_preference=read_preference or self.read_preference, read_concern=read_concern, write_concern=write_concern) except KeyError: self._ensure_valid_collection_name(name) collection = self._collection_accesses[name] = Collection( self, name=name, read_concern=read_concern, write_concern=write_concern, read_preference=read_preference or self.read_preference, codec_options=codec_options or self._codec_options, _db_store=self._store, ) return collection
def get_collection(self, name, codec_options=None, read_preference=None, write_concern=None, read_concern=None): if read_concern: raise NotImplementedError('Mongomock does not handle read_concern yet') if read_preference is not None: read_preferences.ensure_read_preference_type('read_preference', read_preference) if codec_options and codec_options != self._codec_options: if not bson_codec_options: raise NotImplementedError( 'The codec options are not implemented in mongomock alone, you need to import ' 'the pymongo library as well.') if codec_options != self._codec_options: raise NotImplementedError('The codec options are not implemented yet') try: return self._collection_accesses[name].with_options( codec_options=codec_options or self._codec_options, read_preference=read_preference or self.read_preference, read_concern=read_concern, write_concern=write_concern) except KeyError: self._ensure_valid_collection_name(name) collection = self._collection_accesses[name] = Collection( self, name=name, write_concern=write_concern, read_preference=read_preference or self.read_preference, codec_options=codec_options or self._codec_options, _db_store=self._store, ) return collection
def __init__(self, host=None, port=None, document_class=dict, tz_aware=False, connect=True, _store=None, read_preference=None, **kwargs): if host: self.host = host[0] if isinstance(host, (list, tuple)) else host else: self.host = self.HOST self.port = port or self.PORT self._tz_aware = tz_aware self._database_accesses = {} self._store = _store or ServerStore() self._id = next(self._CONNECTION_ID) self._document_class = document_class if read_preference is not None: read_preferences.ensure_read_preference_type('read_preference', read_preference) self._read_preference = read_preference or _READ_PREFERENCE_PRIMARY dbase = None if '://' in self.host: res = parse_uri(self.host, default_port=self.port, warn=True) self.host, self.port = res['nodelist'][0] dbase = res['database'] else: self.host, self.port = split_hosts(self.host, default_port=self.port)[0] self.__default_datebase_name = dbase
def get_collection(self, name, codec_options=None, read_preference=None, write_concern=None, read_concern=None): if read_concern: raise NotImplementedError( 'Mongomock does not handle read_concern yet') if read_preference is not None: read_preferences.ensure_read_preference_type( 'read_preference', read_preference) try: return self._collection_accesses[name] except KeyError: collection = self._collection_accesses[name] = Collection( self, write_concern=write_concern, read_preference=read_preference or self.read_preference, _store=self._store[name]) return collection