mcqpy.question.question_bank
Definition of the QuestionBank class for managing multiple-choice questions.
Classes:
-
QuestionBank–A collection of multiple-choice questions with filtering and retrieval capabilities.
QuestionBank
A collection of multiple-choice questions with filtering and retrieval capabilities.
Methods:
-
add_filter–Add a filter to the question bank.
-
from_directories–Create a QuestionBank by loading questions from specified directories.
-
from_questions–Create a QuestionBank from a list of Question objects.
-
get_all_questions–Retrieve all questions in the bank.
-
get_all_tags–Retrieve all tags in the question bank along with their counts.
-
get_by_qid–Retrieve a question by its QID.
-
get_by_slug–Retrieve a question by its slug.
-
get_filtered_questions–Retrieve questions after applying all added filters.
add_filter
add_filter(filter: BaseFilter)
Add a filter to the question bank.
Parameters:
-
(filterBaseFilter) –An instance of BaseFilter to apply when retrieving questions
from_directories
classmethod
from_directories(
directories: list[str], glob_pattern="*.yaml", **kwargs
)
Create a QuestionBank by loading questions from specified directories. Ensures no duplicate slugs are present.
Parameters:
-
(directorieslist[str]) –List of directory paths to load questions from
-
–glob_patternGlob pattern to match question files (default: '*.yaml')
from_questions
classmethod
Create a QuestionBank from a list of Question objects.
Parameters:
-
(questionslist[Question]) –List of Question instances to include in the bank
get_all_tags
Retrieve all tags in the question bank along with their counts.
get_by_qid
Retrieve a question by its QID.
Parameters:
-
(qidstr) –The QID identifier of the question
get_by_slug
Retrieve a question by its slug.
Parameters:
-
(slugstr) –The slug identifier of the question
get_filtered_questions
get_filtered_questions(
number_of_questions: int | None = None,
shuffle: bool = False,
sorting: Literal["none", "slug"] = "none",
) -> list[Question]
Retrieve questions after applying all added filters.
Parameters:
-
(number_of_questionsint | None, default:None) –Maximum number of questions to return (None for all)
-
(shufflebool, default:False) –If True, shuffle the questions before returning
-
(sortingLiteral['none', 'slug'], default:'none') –Sorting method: 'none' for no sorting, 'slug' to sort by slug