def __init__( self, db_name, db_ext=None, read_only=False, clear=False, cache_size=10 * 1024, immutable_vals=False, stringify_keys=False, cache_misses=True, database_default_func=None, read_pool_size=0, **kwargs ): self._db_name = db_name self._db_ext = db_ext if db_ext != None else get_default_file_ext() abs_dir_path = os.path.dirname(os.path.abspath(db_name)) dir_present = os.path.exists(abs_dir_path) if not dir_present: try: os.makedirs(abs_dir_path) except OSError: pass self._db_full_path = ".".join((os.path.abspath(db_name), self._db_ext)) file_present = os.path.exists(self._db_full_path) self.flag = "n" if clear else "r" if read_only and file_present else "c" self._database = shelve.open(self._db_full_path, flag=self.flag) self.closed = False UnorderedCachedDict.__init__( self, self._database, cache_size=cache_size, database_default_func=database_default_func, read_only=read_only, immutable_vals=immutable_vals, stringify_keys=stringify_keys, cache_misses=cache_misses, read_pool_size=read_pool_size, **kwargs )
def _add_init_kwargs(self, kwargs): kwargs["db_name"] = self._db_name kwargs["db_ext"] = self._db_ext UnorderedCachedDict._add_init_kwargs(self, kwargs)