示例#1
0
	def _open_shelve(self, db_file, db_desc):
		if self.options.dry_run:
			open_flag = "r"
		else:
			open_flag = "c"

		if self.options.dry_run and not os.path.exists(db_file):
			db = {}
		else:
			try:
				db = shelve.open(db_file, flag=open_flag)
			except ImportError as e:
				# ImportError has different attributes for python2 vs. python3
				if (getattr(e, 'name', None) == 'bsddb' or
					getattr(e, 'message', None) == 'No module named bsddb'):
					from bsddb3 import dbshelve
					db = dbshelve.open(db_file, flags=open_flag)

			if sys.hexversion < 0x3000000:
				db = ShelveUnicodeWrapper(db)

		if self.options.dry_run:
			logging.warning("dry-run: %s db opened in readonly mode" % db_desc)
			if not isinstance(db, dict):
				volatile_db = dict((k, db[k]) for k in db)
				db.close()
				db = volatile_db
		else:
			self._open_files.append(db)

		return db
示例#2
0
文件: Config.py 项目: tclh123/portage
    def _open_shelve(self, db_file, db_desc):
        if self.options.dry_run:
            open_flag = "r"
        else:
            open_flag = "c"

        if self.options.dry_run and not os.path.exists(db_file):
            db = {}
        else:
            try:
                db = shelve.open(db_file, flag=open_flag)
            except ImportError as e:
                # ImportError has different attributes for python2 vs. python3
                if (getattr(e, 'name', None) == 'bsddb' or getattr(
                        e, 'message', None) == 'No module named bsddb'):
                    from bsddb3 import dbshelve
                    db = dbshelve.open(db_file, flags=open_flag)

            if sys.hexversion < 0x3000000:
                db = ShelveUnicodeWrapper(db)

        if self.options.dry_run:
            logging.warning("dry-run: %s db opened in readonly mode" % db_desc)
            if not isinstance(db, dict):
                volatile_db = dict((k, db[k]) for k in db)
                db.close()
                db = volatile_db
        else:
            self._open_files.append(db)

        return db
示例#3
0
文件: Config.py 项目: ezc/portage
    def _open_shelve(self, db_file, db_desc):
        if self.options.dry_run:
            open_flag = "r"
        else:
            open_flag = "c"

        if self.options.dry_run and not os.path.exists(db_file):
            db = {}
        else:
            db = shelve.open(db_file, flag=open_flag)
            if sys.hexversion < 0x3000000:
                db = ShelveUnicodeWrapper(db)

        if self.options.dry_run:
            logging.warn("dry-run: %s db opened in readonly mode" % db_desc)
            if not isinstance(db, dict):
                volatile_db = dict((k, db[k]) for k in db)
                db.close()
                db = volatile_db
        else:
            self._open_files.append(db)

        return db
示例#4
0
	def _open_shelve(self, db_file, db_desc):
		if self.options.dry_run:
			open_flag = "r"
		else:
			open_flag = "c"

		if self.options.dry_run and not os.path.exists(db_file):
			db = {}
		else:
			db = shelve.open(db_file, flag=open_flag)
			if sys.hexversion < 0x3000000:
				db = ShelveUnicodeWrapper(db)

		if self.options.dry_run:
			logging.warn("dry-run: %s db opened in readonly mode" % db_desc)
			if not isinstance(db, dict):
				volatile_db = dict((k, db[k]) for k in db)
				db.close()
				db = volatile_db
		else:
			self._open_files.append(db)

		return db