From 299a1fa9398f6f9a4e97ab08d0d32dce8ac8cea8 Mon Sep 17 00:00:00 2001 From: Melany Estevez Camata <63152500+Mademoisellefou@users.noreply.github.com> Date: Sun, 5 Feb 2023 14:51:34 -0400 Subject: [PATCH] changing the function a bit (#314) * changing the function a bit using regex * fixing path fixing path to get README.md * os module removing os module * Update question_utils.py running flake8 --- scripts/question_utils.py | 102 ++++++++++++++++++-------------------- 1 file changed, 49 insertions(+), 53 deletions(-) diff --git a/scripts/question_utils.py b/scripts/question_utils.py index 1c1c4ec..765ad91 100644 --- a/scripts/question_utils.py +++ b/scripts/question_utils.py @@ -5,89 +5,85 @@ Question utils functions import pathlib from random import choice from typing import List +import re -p = pathlib.Path(__file__).parent.parent.joinpath('README.md') +p = pathlib.Path(__file__).parent.parent.joinpath("README.md") def get_file_list(): - with open(p, 'rb') as f: - file_list = [line.rstrip() for line in f.readlines()] + file_list = "" + with open(p, "rb") as f: + for line in f.readlines(): + file_list += line.rstrip().decode() return file_list -def get_question_list(file_list: List[bytes]) -> list: - +def get_question_list(file_list: List[str]) -> list: + file_list = re.findall("
(.*?)
", file_list) questions_list = [] - temp = [] - after_summary_tag = False - - for line in file_list: - if line.startswith(b'
'): - temp.append(line) - after_summary_tag = True - - elif after_summary_tag and line != b'' and b'
' not in line: - temp.append(line) - - elif after_summary_tag and b'' in line: - temp.append(line) - after_summary_tag = False - - questions_list.append(temp) - temp = [] - + for i in file_list: + q = re.findall(r"(.*?)", i)[0] + questions_list.append(q) return questions_list -def get_answered_questions(question_list: List[List[bytes]]) -> list: - """Dont let the type hint confuse you, problem of not using classes. - - It takes the result of get_question_list(file_list) - - Returns a list of questions that are answered. - """ - +def get_answered_questions(question_list: List[str]) -> list: t = [] - - for q in question_list: - - index = 0 - - for i in q: - if b'' in i: - index = q.index(i) - - if q[index+1: len(q) - 1]: - t.append(q) - + question_list = re.findall("
(.*?)
", question_list) + for i in question_list: + q = re.findall(r"(.*?)", i) + if q and q[0] == "": + continue + a = re.findall(r"(.*?)", i) + if a and a[0] == "": + continue + else: + t.append(q[0]) return t +def get_answers_count() -> List: + """ + Return [answer_questions,all_questions] ,PASS complete. FAIL incomplete. + >>> get_answers_count() + [463, 463] + """ + ans_questions = get_answered_questions(get_file_list()) + len_ans_questions = len(ans_questions) + all_questions = get_question_list(get_file_list()) + len_all_questions = len(all_questions) + return [len_ans_questions, len_all_questions] + + def get_challenges_count() -> int: - challenges_path = pathlib.Path(__file__).parent.parent.joinpath('exercises').glob('*.md') + challenges_path = ( + pathlib.Path(__file__).parent.parent.joinpath("exercises").glob("*.md") + ) return len(list(challenges_path)) # WIP WAITING FEEDBACK -def get_random_question(question_list: List[List[bytes]], with_answer=False): +def get_random_question(question_list: List[str], with_answer=False): if with_answer: return choice(get_answered_questions(question_list)) - return choice(question_list) + return choice(get_question_list(question_list)) """Use this question_list. Unless you have already opened/worked/need the file, then don't or you will end up doing the same thing twice. - eg: - #my_dir/main.py - from scripts import question_utils - print(question_utils.get_answered_questions(question_utils.question_list) - >> 123 - + # noqa: E501 """ -question_list = get_question_list(get_file_list()) +if __name__ == "__main__": + import doctest + + doctest.testmod() + # print(get_question_list(get_file_list())) + # print(get_answered_questions(get_file_list())) + # print(get_random_question(get_file_list(),True)) + # print(get_random_question(get_file_list(),False))