def request_paragraph(topics=None): """Return a random paragraph.""" paragraphs = cats.lines_from_file(PARAGRAPH_PATH) random.shuffle(paragraphs) select = cats.about(topics) if topics else lambda x: True return cats.choose(paragraphs, select, 0)
import base64 import json import os import random import time from functools import wraps from queue import Queue from threading import Thread import cats fernet = None COMMON_WORDS_SET = set(cats.lines_from_file('data/common_words.txt')) CAPTCHA_QUEUE_LEN = 200 CAPTCHA_LENGTH = 10 CAPTCHA_WORD_LEN = 6 captcha_queue = Queue() def require_fernet(f): @wraps(f) def wrapped(*args, **kwargs): global fernet if not fernet: from cryptography.fernet import Fernet fernet = Fernet(os.environ.get("FERNET_KEY", Fernet.generate_key())) return f(*args, **kwargs) return wrapped
"""Web server for the typing GUI.""" import base64 import os import random import string import cats from gui_files.common_server import Server, route, sendto, start from gui_files import multiplayer PORT = 31415 DEFAULT_SERVER = 'https://cats.cs61a.org' GUI_FOLDER = "gui_files/" PARAGRAPH_PATH = "./data/sample_paragraphs.txt" WORDS_LIST = cats.lines_from_file('data/words.txt') WORDS_SET = set(WORDS_LIST) LETTER_SETS = [(w, set(w)) for w in WORDS_LIST] SIMILARITY_LIMIT = 2 @route def request_paragraph(topics=None): """Return a random paragraph.""" paragraphs = cats.lines_from_file(PARAGRAPH_PATH) random.shuffle(paragraphs) select = cats.about(topics) if topics else lambda x: True return cats.choose(paragraphs, select, 0) @route def analyze(prompted_text, typed_text, start_time, end_time):