Spaces:
Runtime error
Runtime error
| import time | |
| import streamlit as st | |
| from os import environ | |
| class Timer(): | |
| total = 0 | |
| place_holder = None | |
| expander = None | |
| timer_list = [] | |
| def __init__(self, pt_name, en_name): | |
| self.pt_name = pt_name | |
| self.en_name = en_name | |
| if environ['PORTUGUESE'] == 'true': | |
| self.portuguese = True | |
| elif environ['PORTUGUESE'] == 'false': | |
| self.portuguese = False | |
| else: | |
| raise EnvironmentError | |
| if not Timer.place_holder: | |
| if self.portuguese: | |
| Timer.place_holder = st.empty() | |
| Timer.expander = Timer.place_holder.expander('Ver progresso') | |
| else: | |
| Timer.place_holder = st.empty() | |
| Timer.expander = Timer.place_holder.expander('See progress') | |
| self.display = Timer.expander.empty() | |
| Timer.timer_list.append(self) | |
| def __enter__(self): | |
| if self.portuguese: | |
| self.display.info(f'Executando "{self.pt_name}"...') | |
| else: | |
| self.display.info(f'Running "{self.en_name}"...') | |
| self.start_time = time.time() | |
| def __exit__(self, type, value, traceback): | |
| end_time = time.time() | |
| elapsed_time = end_time - self.start_time | |
| Timer.total += elapsed_time | |
| self.display.empty() | |
| if self.portuguese: | |
| Timer.expander.info(f'"{self.pt_name}" terminou em {elapsed_time:.2f} s') | |
| else: | |
| Timer.expander.info(f'"{self.en_name}" finished in {elapsed_time:.2f} s') | |
| # for manually starting the timer | |
| def start(self): | |
| if self.portuguese: | |
| self.display.warning(f'Executando "{self.pt_name}"...') | |
| else: | |
| self.display.warning(f'Running "{self.en_name}"...') | |
| self.start_time = time.time() | |
| # for manually stopping the timer | |
| def stop(self): | |
| end_time = time.time() | |
| elapsed_time = end_time - self.start_time | |
| Timer.total += elapsed_time | |
| self.display.empty() | |
| if self.portuguese: | |
| Timer.expander.warning(f'"{self.pt_name}" terminou em {elapsed_time:.2f} s') | |
| else: | |
| Timer.expander.warning(f'"{self.en_name}" finished in {elapsed_time:.2f} s') | |
| def reset(): | |
| Timer.total = 0 | |
| if Timer.place_holder: | |
| Timer.place_holder.empty() | |
| Timer.place_holder = None | |
| Timer.expander = None | |
| def show_total(): | |
| if environ['PORTUGUESE'] == 'true': | |
| Timer.expander.success(f'Tempo de execução total: {Timer.total:.2f} s') | |
| elif environ['PORTUGUESE'] == 'false': | |
| Timer.expander.success(f'Total elapsed time: {Timer.total:.2f} s') | |
| def time_it(pt_name, en_name): | |
| def decorator(func): | |
| def wrapper(*args, **kwargs): | |
| timer = Timer(pt_name, en_name) | |
| timer.start() | |
| result = func(*args, **kwargs) | |
| timer.stop() | |
| return result | |
| return wrapper | |
| return decorator |