def get_comp_dict(self, comp_list, session=False):
        """
        Function to get complete queue information

        Arguments
        ---------
        comp_list: list
            list of job IDs in complete queue
        session: string
            session ID to reduce returned dictionary to jobs owned by user.

        Returns
        -------
        comp_dict: dictionary
            dict containing high-level info for jobs in complete queue
        """
        comp_dict = {}
        for job_id in comp_list:
            if session:
                if check_jobid(job_id):
                    job = self.q.fetch_job(job_id)
                else:
                    job = None
            ###***remove below?
            else:
                job = self.q.fetch_job(job_id)
            if job:
                comp_dict[job_id] = {}
                job_deets = get_jobdetails(job.description)
                try:
                    if isinstance(job.meta['HC State'], dict):
                        cracked = str(job.meta['HC State']['Cracked Hashes'])
                        total = str(job.meta['HC State']['Total Hashes'])
                        comp_dict[job_id]['Cracked'] = '{}/{}'.format(cracked, total)
                        comp_dict[job_id]['Running Time'] = job.meta['HC State']['Running Time']
                        try:
                            comp_dict[job_id]['Name'] = get_jobdetails(job.description)['name']
                        except KeyError:
                            comp_dict[job_id]['Name'] = 'No name'
                        except AttributeError:
                            comp_dict[job_id]['Name'] = 'No name'
                except KeyError:
                    logger.debug('No HC state, checking state file')
                    job_file = valid.val_filepath(path_string=self.log_dir,
                                                  file_string='{}.json'.format(job_id))
                    try:
                        with open(job_file, 'r') as jobfile_fh:
                            job_deets = json.loads(jobfile_fh.read().strip())
                            comp_dict[job_id]['Name'] = job_deets['name']
                            cracked = job_deets['Cracked Hashes']
                            total = job_deets['Total Hashes']
                            comp_dict[job_id]['Cracked'] = '{}/{}'.format(cracked, total)
                            comp_dict[job_id]['Running Time'] = '0'
                    except FileNotFoundError as err:
                        logger.debug('Failed to open job file: {}'.format(err))
                except Exception as err:
                    logger.debug('Failed to open job file: {}'.format(err))
            else:
                logger.error('Job is missing: {}'.format(job_id))
        return comp_dict

        Function to get complete queue information

        Arguments
        ---------
        comp_list: list
            list of job IDs in complete queue
        session: string
            session ID to reduce returned dictionary to jobs owned by user.

        Returns
        -------
        comp_dict: dictionary
            dict containing high-level info for jobs in complete queue
        
crackq/cq_api.py