def handle_dupe_set(self, dupe_set): header = [ "Size: {inst_size} Instances: {inst_count} Excess: {excess_size} Names: {name_count}".format( inst_size=units.format_byte_count(dupe_set.instance_size), inst_count=len(dupe_set), excess_size=units.format_byte_count(dupe_set.total_size - dupe_set.instance_size), name_count=dupe_set.entry_count, ) ] # selection is done by entry preferred_entries = set() if self._selector is not None: try: preferred_entries.update(self._selector.pick(dupe_set.all_entries())) except EnvironmentError as env_error: header.append("Skipping selection due to error: %s" % env_error) # but to test uniqueness, we go by content. for example, it's # considered unique if multiple entries are returned, but they # point to the one instance selected_instances = set( instance for instance in dupe_set if any(entry in preferred_entries for entry in instance.entries) ) # if an instance has any of its entries marked, mark the others as well for instance in selected_instances: preferred_entries.update(instance.entries) for line in self._formatter.format_set(dupe_set, preferred_entries, header): print(line, file=self._output_stream)
def progress(self, sets, file_pos, file_size): set_vis_list = [ ] for s in sets: set_len = len(s) if set_len >= len(self._count_glyphs): set_vis_list.append(str(set_len)) else: set_vis_list.append(self._count_glyphs[set_len]) set_vis = "[%s]" % "|".join(set_vis_list) read_size = units.format_byte_count(file_size, 0) progress_room = self._status_line.line_width - (len(set_vis) + len(read_size)) - 2 if progress_room >= 2: if file_size > 0: progress_chars = int(progress_room * file_pos / file_size + 0.5) else: progress_chars = progress_room bar = "".join(( self._progress_glyphs[0] * progress_chars, self._progress_glyphs[1] * (progress_room - progress_chars), )) line = " ".join((set_vis, bar, read_size)) else: line = " ".join((set_vis, read_size)) self._status_line.set_text(line)
def progress(self, sets, file_pos, file_size): set_vis_list = [] for s in sets: set_len = len(s) if set_len >= len(VISUAL_SET_COUNT): set_vis_list.append(str(set_len)) else: set_vis_list.append(VISUAL_SET_COUNT[set_len]) set_vis = "[%s]" % "|".join(set_vis_list) read_size = units.format_byte_count(file_size, 0) progress_room = self._line_width - (len(set_vis) + len(read_size)) - 2 if progress_room >= 2: progress_chars = int(progress_room * file_pos / file_size + 0.5) bar = "".join(("\u2588" * progress_chars, "\u2591" * (progress_room - progress_chars))) line = " ".join((set_vis, bar, read_size)) else: line = " ".join((set_vis, read_size)) self.set_text(line)