QuizGenerator 0.3.1__tar.gz → 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/PKG-INFO +1 -1
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/misc.py +2 -2
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/languages.py +9 -13
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/cnns.py +1 -1
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/text.py +4 -2
- quizgenerator-0.3.1/pyproject_prev.toml → quizgenerator-0.4.0/pyproject.toml +2 -1
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/uv.lock +1 -1
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/.envrc +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/.github/pull_request_template.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/.github/workflows/release.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/.gitignore +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/CLAUDE.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/CODEOWNERS +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/LICENSE +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/README.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/__main__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/canvas/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/canvas/canvas_interface.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/canvas/classes.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/constants.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/contentast.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/generate.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/logging.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/mixins.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/performance.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/basic.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/math_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/memory_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/ostep13_vsfs.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/persistence_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/process.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/gradient_descent/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/gradient_descent/gradient_calculation.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/gradient_descent/gradient_descent_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/gradient_descent/loss_calculations.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/gradient_descent/misc.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/math_and_data/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/math_and_data/matrix_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/math_and_data/vector_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/attention.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/matrices.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/rnns.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/weight_counting.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/neural-network-basics/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/neural-network-basics/neural_network_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/tensorflow-intro/__init__.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/tensorflow-intro/tensorflow_questions.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/qrcode_generator.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/question.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/quiz.py +0 -0
- /quizgenerator-0.3.1/grade_from_qr.py → /quizgenerator-0.4.0/QuizGenerator/regenerate.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/typst_utils.py +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/README.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/documentation/GRADING_GUIDE.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/documentation/LESSONS_LEARNED-adding_questions.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/documentation/PARAMETER_STANDARDS.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/documentation/README.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/documentation/WEB_UI_INTEGRATION.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/all_classes.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/cst334.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/cst463.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/exam_generation.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/scratch.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/specific_generators/cst334.caching.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/specific_generators/cst334.lab-address_translation.yaml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/examples/README.md +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/examples/web_ui_integration_example.py +0 -0
- /quizgenerator-0.3.1/pyproject.toml → /quizgenerator-0.4.0/pyproject_prev.toml +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/scripts/generate_practice_yaml.sh +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/scripts/print.sh +0 -0
- {quizgenerator-0.3.1 → quizgenerator-0.4.0}/scripts/vendor_lms_interface.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: QuizGenerator
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.4.0
|
|
4
4
|
Summary: Generate randomized quiz questions for Canvas LMS and PDF exams
|
|
5
5
|
Project-URL: Homepage, https://github.com/OtterDen-Lab/QuizGenerator
|
|
6
6
|
Project-URL: Documentation, https://github.com/OtterDen-Lab/QuizGenerator/tree/main/documentation
|
|
@@ -564,9 +564,9 @@ class MatrixAnswer(Answer):
|
|
|
564
564
|
value=self.value[i,j]
|
|
565
565
|
)
|
|
566
566
|
)
|
|
567
|
-
for
|
|
567
|
+
for j in range(self.value.shape[1])
|
|
568
568
|
]
|
|
569
|
-
for
|
|
569
|
+
for i in range(self.value.shape[0])
|
|
570
570
|
]
|
|
571
571
|
table = ContentAST.Table(data)
|
|
572
572
|
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/languages.py
RENAMED
|
@@ -60,11 +60,9 @@ class BNF:
|
|
|
60
60
|
|
|
61
61
|
def get_grammar_string(self):
|
|
62
62
|
lines = []
|
|
63
|
-
lines.append('```')
|
|
64
63
|
for symbol in self.symbols:
|
|
65
64
|
lines.append(f"{symbol.get_full_str()}")
|
|
66
|
-
|
|
67
|
-
lines.append('```')
|
|
65
|
+
|
|
68
66
|
return '\n'.join(lines)
|
|
69
67
|
|
|
70
68
|
class Symbol:
|
|
@@ -342,25 +340,23 @@ class ValidStringsInLanguageQuestion(LanguageQuestion):
|
|
|
342
340
|
def get_body(self, *args, **kwargs) -> ContentAST.Section:
|
|
343
341
|
body = ContentAST.Section()
|
|
344
342
|
|
|
345
|
-
body.
|
|
343
|
+
body.add_elements([
|
|
346
344
|
ContentAST.Paragraph([
|
|
347
|
-
ContentAST.OnlyHtml(
|
|
345
|
+
ContentAST.OnlyHtml([
|
|
348
346
|
ContentAST.Text("Given the following grammar, which of the below strings are part of the language?")
|
|
349
|
-
),
|
|
350
|
-
ContentAST.OnlyLatex(
|
|
347
|
+
]),
|
|
348
|
+
ContentAST.OnlyLatex([
|
|
351
349
|
ContentAST.Text(
|
|
352
350
|
"Given the following grammar "
|
|
353
351
|
"please circle any provided strings that are part of the language (or indicate clearly if there are none), "
|
|
354
352
|
"and on each blank line provide generate a new, unique string that is part of the language."
|
|
355
353
|
)
|
|
356
|
-
)
|
|
354
|
+
])
|
|
357
355
|
])
|
|
358
|
-
)
|
|
356
|
+
])
|
|
359
357
|
|
|
360
358
|
body.add_element(
|
|
361
|
-
ContentAST.
|
|
362
|
-
self.grammar_good.get_grammar_string()
|
|
363
|
-
])
|
|
359
|
+
ContentAST.Code(self.grammar_good.get_grammar_string())
|
|
364
360
|
)
|
|
365
361
|
|
|
366
362
|
# Add in some answers as latex-only options to be circled
|
|
@@ -374,7 +370,7 @@ class ValidStringsInLanguageQuestion(LanguageQuestion):
|
|
|
374
370
|
# For Latex-only, ask students to generate some more.
|
|
375
371
|
body.add_element(
|
|
376
372
|
ContentAST.OnlyLatex([
|
|
377
|
-
ContentAST.AnswerBlock([ContentAST.Answer() for
|
|
373
|
+
ContentAST.AnswerBlock([ContentAST.Answer(Answer.string(f"blank_line_{i}", f"blank_line_{i}"), label=f"blank_line_{i}") for i in range(self.num_answer_blanks)])
|
|
378
374
|
])
|
|
379
375
|
)
|
|
380
376
|
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/cnns.py
RENAMED
|
@@ -28,7 +28,7 @@ class ConvolutionCalculation(MatrixQuestion):
|
|
|
28
28
|
|
|
29
29
|
# Add padding
|
|
30
30
|
if padding > 0:
|
|
31
|
-
image = np.pad(image, ((padding, padding), (padding, padding)
|
|
31
|
+
image = np.pad(image, ((padding, padding), (padding, padding)), mode='constant')
|
|
32
32
|
H, W = H + 2 * padding, W + 2 * padding
|
|
33
33
|
|
|
34
34
|
# Output dimensions
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/text.py
RENAMED
|
@@ -60,7 +60,9 @@ class word2vec__skipgram(MatrixQuestion, TableQuestionMixin):
|
|
|
60
60
|
## Answers:
|
|
61
61
|
# center_word, center_emb, context_words, context_embs, logits, probs
|
|
62
62
|
self.answers["logits"] = Answer.vector_value(key="logits", value=self.logits)
|
|
63
|
-
|
|
63
|
+
most_likely_idx = np.argmax(self.probs)
|
|
64
|
+
most_likely_word = self.context_words[most_likely_idx]
|
|
65
|
+
self.answers["center_word"] = Answer.string(key="center_word", value=most_likely_word)
|
|
64
66
|
|
|
65
67
|
|
|
66
68
|
return True
|
|
@@ -81,7 +83,7 @@ class word2vec__skipgram(MatrixQuestion, TableQuestionMixin):
|
|
|
81
83
|
ContentAST.LineBreak(),
|
|
82
84
|
self.answers["logits"].get_ast_element("Logits"),
|
|
83
85
|
ContentAST.LineBreak(),
|
|
84
|
-
self.answers["center_word"].get_ast_element("
|
|
86
|
+
self.answers["center_word"].get_ast_element("Most likely context word")
|
|
85
87
|
])
|
|
86
88
|
|
|
87
89
|
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "QuizGenerator"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.4.0"
|
|
8
8
|
description = "Generate randomized quiz questions for Canvas LMS and PDF exams"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "GPL-3.0-or-later"}
|
|
@@ -51,6 +51,7 @@ Repository = "https://github.com/OtterDen-Lab/QuizGenerator"
|
|
|
51
51
|
|
|
52
52
|
[project.scripts]
|
|
53
53
|
quizgen = "QuizGenerator.generate:main"
|
|
54
|
+
quizregen = "QuizGenerator.regenerate:main"
|
|
54
55
|
|
|
55
56
|
[project.optional-dependencies]
|
|
56
57
|
grading = [
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/__init__.py
RENAMED
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/math_questions.py
RENAMED
|
File without changes
|
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/ostep13_vsfs.py
RENAMED
|
File without changes
|
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst334/process.py
RENAMED
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/QuizGenerator/premade_questions/cst463/models/rnns.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/documentation/LESSONS_LEARNED-adding_questions.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{quizgenerator-0.3.1 → quizgenerator-0.4.0}/example_files/specific_generators/cst334.caching.yaml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|