def iter_artifacts(self):
        con = self.connect_to_database()
        try:
            cur = con.cursor()
            cur.execute('''
                select distinct artifact from artifacts order by artifact
            ''')
            rows = cur.fetchall()
            con.close()
            for artifact_name, in rows:
                path = self.get_destination_filename(artifact_name)
                info = FileInfo(self.builder.env, path)
                if info.exists:
                    yield artifact_name, info
        finally:
            con.close()
A context manager which ensures it takes at least time_s to execute.
dataset/ETHPy150Open lektor/lektor/lektor/builder.py/BuildState.iter_artifacts--crossover with--dataset/ETHPy150Open google/openhtf/openhtf/util/timeouts.py/TakeAtLeastNSeconds