QuizGenerator 0.10.0__py3-none-any.whl → 0.10.1__py3-none-any.whl
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/__init__.py +2 -1
- QuizGenerator/canvas/canvas_interface.py +3 -4
- QuizGenerator/canvas/classes.py +0 -1
- QuizGenerator/generate.py +7 -2
- QuizGenerator/logging.yaml +3 -3
- QuizGenerator/misc.py +0 -8
- QuizGenerator/premade_questions/cst334/memory_questions.py +2 -3
- QuizGenerator/premade_questions/cst334/process.py +0 -1
- QuizGenerator/premade_questions/cst463/gradient_descent/__init__.py +10 -1
- QuizGenerator/premade_questions/cst463/gradient_descent/gradient_calculation.py +0 -1
- QuizGenerator/premade_questions/cst463/gradient_descent/gradient_descent_questions.py +2 -4
- QuizGenerator/premade_questions/cst463/gradient_descent/loss_calculations.py +1 -2
- QuizGenerator/premade_questions/cst463/gradient_descent/misc.py +1 -1
- QuizGenerator/premade_questions/cst463/math_and_data/__init__.py +11 -1
- QuizGenerator/premade_questions/cst463/math_and_data/matrix_questions.py +0 -1
- QuizGenerator/premade_questions/cst463/math_and_data/vector_questions.py +0 -1
- QuizGenerator/premade_questions/cst463/models/attention.py +1 -4
- QuizGenerator/premade_questions/cst463/models/cnns.py +1 -4
- QuizGenerator/premade_questions/cst463/models/rnns.py +1 -4
- QuizGenerator/premade_questions/cst463/models/text.py +1 -4
- QuizGenerator/premade_questions/cst463/models/weight_counting.py +0 -2
- QuizGenerator/premade_questions/cst463/neural-network-basics/__init__.py +7 -0
- QuizGenerator/premade_questions/cst463/neural-network-basics/neural_network_questions.py +1 -9
- QuizGenerator/premade_questions/cst463/tensorflow-intro/__init__.py +7 -0
- QuizGenerator/premade_questions/cst463/tensorflow-intro/tensorflow_questions.py +0 -4
- QuizGenerator/qrcode_generator.py +0 -1
- QuizGenerator/question.py +0 -10
- QuizGenerator/quiz.py +1 -6
- {quizgenerator-0.10.0.dist-info → quizgenerator-0.10.1.dist-info}/METADATA +1 -1
- {quizgenerator-0.10.0.dist-info → quizgenerator-0.10.1.dist-info}/RECORD +33 -33
- {quizgenerator-0.10.0.dist-info → quizgenerator-0.10.1.dist-info}/WHEEL +0 -0
- {quizgenerator-0.10.0.dist-info → quizgenerator-0.10.1.dist-info}/entry_points.txt +0 -0
- {quizgenerator-0.10.0.dist-info → quizgenerator-0.10.1.dist-info}/licenses/LICENSE +0 -0
QuizGenerator/__init__.py
CHANGED
|
@@ -5,6 +5,7 @@ import os
|
|
|
5
5
|
import re
|
|
6
6
|
|
|
7
7
|
def setup_logging() -> None:
|
|
8
|
+
os.makedirs(os.path.join("out", "logs"), exist_ok=True)
|
|
8
9
|
config_path = os.path.join(os.path.dirname(__file__), 'logging.yaml')
|
|
9
10
|
if os.path.exists(config_path):
|
|
10
11
|
with open(config_path, 'r') as f:
|
|
@@ -24,4 +25,4 @@ def setup_logging() -> None:
|
|
|
24
25
|
logging.basicConfig(level=logging.INFO)
|
|
25
26
|
|
|
26
27
|
# Call this once when your application starts
|
|
27
|
-
setup_logging()
|
|
28
|
+
setup_logging()
|
|
@@ -16,17 +16,16 @@ import canvasapi.submission
|
|
|
16
16
|
import canvasapi.exceptions
|
|
17
17
|
import dotenv, os
|
|
18
18
|
import requests
|
|
19
|
-
from canvasapi.util import combine_kwargs
|
|
20
19
|
|
|
21
20
|
try:
|
|
22
|
-
|
|
21
|
+
pass # urllib3 v2
|
|
23
22
|
except Exception:
|
|
24
|
-
|
|
23
|
+
pass # urllib3 v1 fallback
|
|
25
24
|
|
|
26
25
|
import os
|
|
27
26
|
import dotenv
|
|
28
27
|
|
|
29
|
-
from .classes import LMSWrapper, Student, Submission,
|
|
28
|
+
from .classes import LMSWrapper, Student, Submission, FileSubmission__Canvas, TextSubmission__Canvas, QuizSubmission
|
|
30
29
|
|
|
31
30
|
import logging
|
|
32
31
|
|
QuizGenerator/canvas/classes.py
CHANGED
QuizGenerator/generate.py
CHANGED
|
@@ -6,6 +6,7 @@ import random
|
|
|
6
6
|
import shutil
|
|
7
7
|
import subprocess
|
|
8
8
|
import tempfile
|
|
9
|
+
from datetime import datetime
|
|
9
10
|
import traceback
|
|
10
11
|
import re
|
|
11
12
|
from pathlib import Path
|
|
@@ -296,7 +297,9 @@ def generate_latex(latex_text, remove_previous=False, name_prefix=None):
|
|
|
296
297
|
tmp_tex.write(latex_text)
|
|
297
298
|
|
|
298
299
|
tmp_tex.flush()
|
|
299
|
-
|
|
300
|
+
os.makedirs(os.path.join("out", "debug"), exist_ok=True)
|
|
301
|
+
debug_name = f"debug-{datetime.now().strftime('%Y%m%d-%H%M%S')}.tex"
|
|
302
|
+
shutil.copy(f"{tmp_tex.name}", os.path.join("out", "debug", debug_name))
|
|
300
303
|
p = subprocess.Popen(
|
|
301
304
|
f"latexmk -pdf -output-directory={os.path.join(os.getcwd(), 'out')} {tmp_tex.name}",
|
|
302
305
|
shell=True,
|
|
@@ -369,7 +372,9 @@ def generate_typst(typst_text, remove_previous=False, name_prefix=None):
|
|
|
369
372
|
tmp_typ.close()
|
|
370
373
|
|
|
371
374
|
# Save debug copy
|
|
372
|
-
|
|
375
|
+
os.makedirs(os.path.join("out", "debug"), exist_ok=True)
|
|
376
|
+
debug_name = f"debug-{datetime.now().strftime('%Y%m%d-%H%M%S')}.typ"
|
|
377
|
+
shutil.copy(tmp_typ.name, os.path.join("out", "debug", debug_name))
|
|
373
378
|
|
|
374
379
|
# Compile with typst
|
|
375
380
|
output_pdf = os.path.join(os.getcwd(), 'out', os.path.basename(tmp_typ.name).replace('.typ', '.pdf'))
|
QuizGenerator/logging.yaml
CHANGED
|
@@ -24,14 +24,14 @@ handlers:
|
|
|
24
24
|
class: logging.FileHandler
|
|
25
25
|
level: INFO
|
|
26
26
|
formatter: detailed
|
|
27
|
-
filename: ${LOG_FILE:-teachingtools.log}
|
|
27
|
+
filename: ${LOG_FILE:-out/logs/teachingtools.log}
|
|
28
28
|
mode: a
|
|
29
29
|
|
|
30
30
|
error_file:
|
|
31
31
|
class: logging.FileHandler
|
|
32
32
|
level: ERROR
|
|
33
33
|
formatter: detailed
|
|
34
|
-
filename: ${ERROR_LOG_FILE:-teachingtools_errors.log}
|
|
34
|
+
filename: ${ERROR_LOG_FILE:-out/logs/teachingtools_errors.log}
|
|
35
35
|
mode: a
|
|
36
36
|
|
|
37
37
|
loggers:
|
|
@@ -52,4 +52,4 @@ loggers:
|
|
|
52
52
|
|
|
53
53
|
root:
|
|
54
54
|
level: INFO
|
|
55
|
-
handlers: [console, file, error_file]
|
|
55
|
+
handlers: [console, file, error_file]
|
QuizGenerator/misc.py
CHANGED
|
@@ -1,17 +1,9 @@
|
|
|
1
1
|
#!env python
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
|
-
import decimal
|
|
5
|
-
import enum
|
|
6
|
-
import itertools
|
|
7
4
|
import logging
|
|
8
|
-
import math
|
|
9
|
-
import numpy as np
|
|
10
|
-
from typing import List, Dict, Tuple, Any
|
|
11
5
|
|
|
12
|
-
import fractions
|
|
13
6
|
|
|
14
|
-
import QuizGenerator.contentast as ca
|
|
15
7
|
|
|
16
8
|
log = logging.getLogger(__name__)
|
|
17
9
|
|
|
@@ -8,7 +8,7 @@ import enum
|
|
|
8
8
|
import logging
|
|
9
9
|
import random
|
|
10
10
|
import math
|
|
11
|
-
from typing import List
|
|
11
|
+
from typing import List
|
|
12
12
|
|
|
13
13
|
import QuizGenerator.contentast as ca
|
|
14
14
|
from QuizGenerator.question import Question, QuestionRegistry, RegenerableChoiceMixin
|
|
@@ -57,8 +57,7 @@ class VirtualAddressParts(MemoryQuestion, TableQuestionMixin):
|
|
|
57
57
|
@classmethod
|
|
58
58
|
def _build_body(cls, context):
|
|
59
59
|
"""Build question body and collect answers."""
|
|
60
|
-
|
|
61
|
-
|
|
60
|
+
|
|
62
61
|
# Create table data with one blank cell
|
|
63
62
|
table_data = [{}]
|
|
64
63
|
for target in list(cls.Target):
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
from .gradient_descent_questions import GradientDescentWalkthrough
|
|
2
2
|
from .gradient_calculation import DerivativeBasic, DerivativeChain
|
|
3
|
-
from .loss_calculations import LossQuestion_Linear, LossQuestion_Logistic, LossQuestion_MulticlassLogistic
|
|
3
|
+
from .loss_calculations import LossQuestion_Linear, LossQuestion_Logistic, LossQuestion_MulticlassLogistic
|
|
4
|
+
|
|
5
|
+
__all__ = [
|
|
6
|
+
"GradientDescentWalkthrough",
|
|
7
|
+
"DerivativeBasic",
|
|
8
|
+
"DerivativeChain",
|
|
9
|
+
"LossQuestion_Linear",
|
|
10
|
+
"LossQuestion_Logistic",
|
|
11
|
+
"LossQuestion_MulticlassLogistic",
|
|
12
|
+
]
|
|
@@ -58,7 +58,6 @@ class DerivativeQuestion(Question, abc.ABC):
|
|
|
58
58
|
|
|
59
59
|
# Create answer for each partial derivative
|
|
60
60
|
for i in range(context.num_variables):
|
|
61
|
-
answer_key = f"partial_derivative_{i}"
|
|
62
61
|
# Evaluate the partial derivative and convert to float
|
|
63
62
|
partial_value = context.gradient_function[i].subs(subs_map)
|
|
64
63
|
try:
|
|
@@ -2,8 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
import logging
|
|
5
|
-
import
|
|
6
|
-
from typing import List, Tuple, Callable, Union, Any
|
|
5
|
+
from typing import List, Tuple
|
|
7
6
|
|
|
8
7
|
import sympy
|
|
9
8
|
import sympy as sp
|
|
@@ -151,8 +150,7 @@ class GradientDescentWalkthrough(GradientDescentQuestion, TableQuestionMixin, Bo
|
|
|
151
150
|
|
|
152
151
|
# Introduction
|
|
153
152
|
objective = "minimize" if self.minimize else "maximize"
|
|
154
|
-
|
|
155
|
-
|
|
153
|
+
|
|
156
154
|
body.add_element(
|
|
157
155
|
ca.Paragraph(
|
|
158
156
|
[
|
|
@@ -3,8 +3,7 @@ from __future__ import annotations
|
|
|
3
3
|
import abc
|
|
4
4
|
import logging
|
|
5
5
|
import math
|
|
6
|
-
import
|
|
7
|
-
from typing import List, Tuple, Dict, Any
|
|
6
|
+
from typing import List, Tuple
|
|
8
7
|
|
|
9
8
|
import QuizGenerator.contentast as ca
|
|
10
9
|
from QuizGenerator.question import Question, QuestionRegistry
|
|
@@ -1,2 +1,12 @@
|
|
|
1
1
|
from .matrix_questions import MatrixAddition, MatrixScalarMultiplication, MatrixMultiplication
|
|
2
|
-
from .vector_questions import VectorAddition, VectorScalarMultiplication, VectorDotProduct, VectorMagnitude
|
|
2
|
+
from .vector_questions import VectorAddition, VectorScalarMultiplication, VectorDotProduct, VectorMagnitude
|
|
3
|
+
|
|
4
|
+
__all__ = [
|
|
5
|
+
"MatrixAddition",
|
|
6
|
+
"MatrixScalarMultiplication",
|
|
7
|
+
"MatrixMultiplication",
|
|
8
|
+
"VectorAddition",
|
|
9
|
+
"VectorScalarMultiplication",
|
|
10
|
+
"VectorDotProduct",
|
|
11
|
+
"VectorMagnitude",
|
|
12
|
+
]
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import abc
|
|
2
1
|
import logging
|
|
3
|
-
import math
|
|
4
2
|
import numpy as np
|
|
5
3
|
from typing import List, Tuple
|
|
6
4
|
|
|
7
|
-
from QuizGenerator.question import
|
|
5
|
+
from QuizGenerator.question import QuestionRegistry
|
|
8
6
|
import QuizGenerator.contentast as ca
|
|
9
|
-
from QuizGenerator.constants import MathRanges
|
|
10
7
|
from QuizGenerator.mixins import TableQuestionMixin
|
|
11
8
|
|
|
12
9
|
from .matrices import MatrixQuestion
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
-
import abc
|
|
2
1
|
import logging
|
|
3
|
-
import math
|
|
4
2
|
import numpy as np
|
|
5
3
|
from typing import List, Tuple
|
|
6
4
|
|
|
7
|
-
from QuizGenerator.question import
|
|
5
|
+
from QuizGenerator.question import QuestionRegistry
|
|
8
6
|
import QuizGenerator.contentast as ca
|
|
9
|
-
from QuizGenerator.constants import MathRanges
|
|
10
7
|
from .matrices import MatrixQuestion
|
|
11
8
|
|
|
12
9
|
log = logging.getLogger(__name__)
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import abc
|
|
2
1
|
import logging
|
|
3
|
-
import math
|
|
4
2
|
import numpy as np
|
|
5
3
|
from typing import List, Tuple
|
|
6
4
|
|
|
7
5
|
from .matrices import MatrixQuestion
|
|
8
|
-
from QuizGenerator.question import
|
|
6
|
+
from QuizGenerator.question import QuestionRegistry
|
|
9
7
|
import QuizGenerator.contentast as ca
|
|
10
|
-
from QuizGenerator.constants import MathRanges
|
|
11
8
|
from QuizGenerator.mixins import TableQuestionMixin
|
|
12
9
|
|
|
13
10
|
log = logging.getLogger(__name__)
|
|
@@ -1,13 +1,10 @@
|
|
|
1
|
-
import abc
|
|
2
1
|
import logging
|
|
3
|
-
import math
|
|
4
2
|
import numpy as np
|
|
5
3
|
from typing import List, Tuple
|
|
6
4
|
|
|
7
5
|
from QuizGenerator.premade_questions.cst463.models.matrices import MatrixQuestion
|
|
8
|
-
from QuizGenerator.question import
|
|
6
|
+
from QuizGenerator.question import QuestionRegistry
|
|
9
7
|
import QuizGenerator.contentast as ca
|
|
10
|
-
from QuizGenerator.constants import MathRanges
|
|
11
8
|
from QuizGenerator.mixins import TableQuestionMixin
|
|
12
9
|
|
|
13
10
|
log = logging.getLogger(__name__)
|
|
@@ -2,7 +2,6 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import abc
|
|
4
4
|
import logging
|
|
5
|
-
import math
|
|
6
5
|
import random
|
|
7
6
|
try:
|
|
8
7
|
import keras
|
|
@@ -16,7 +15,6 @@ from typing import List, Tuple
|
|
|
16
15
|
|
|
17
16
|
from QuizGenerator.question import Question, QuestionRegistry
|
|
18
17
|
import QuizGenerator.contentast as ca
|
|
19
|
-
from QuizGenerator.constants import MathRanges
|
|
20
18
|
|
|
21
19
|
log = logging.getLogger(__name__)
|
|
22
20
|
|
|
@@ -3,18 +3,13 @@ from __future__ import annotations
|
|
|
3
3
|
import abc
|
|
4
4
|
import io
|
|
5
5
|
import logging
|
|
6
|
-
import math
|
|
7
6
|
import numpy as np
|
|
8
|
-
import uuid
|
|
9
|
-
import os
|
|
10
7
|
from typing import List, Tuple
|
|
11
8
|
|
|
12
9
|
import matplotlib.pyplot as plt
|
|
13
|
-
import matplotlib.patches as mpatches
|
|
14
10
|
|
|
15
11
|
import QuizGenerator.contentast as ca
|
|
16
12
|
from QuizGenerator.question import Question, QuestionRegistry
|
|
17
|
-
from QuizGenerator.mixins import TableQuestionMixin, BodyTemplatesMixin
|
|
18
13
|
from ..models.matrices import MatrixQuestion
|
|
19
14
|
|
|
20
15
|
log = logging.getLogger(__name__)
|
|
@@ -843,8 +838,7 @@ class BackpropGradientQuestion(SimpleNeuralNetworkBase):
|
|
|
843
838
|
# Compute intermediate values
|
|
844
839
|
dz2_da1 = self.W2[0, 0]
|
|
845
840
|
da1_dz1 = self._activation_derivative(self.z1[0])
|
|
846
|
-
|
|
847
|
-
|
|
841
|
+
|
|
848
842
|
grad = self._compute_gradient_W1(0, j)
|
|
849
843
|
|
|
850
844
|
if self.activation_function == self.ACTIVATION_SIGMOID:
|
|
@@ -1131,7 +1125,6 @@ class EndToEndTrainingQuestion(SimpleNeuralNetworkBase):
|
|
|
1131
1125
|
]))
|
|
1132
1126
|
|
|
1133
1127
|
# Hidden layer
|
|
1134
|
-
z1_0 = self.W1[0, 0] * self.X[0] + self.W1[0, 1] * self.X[1] + self.b1[0]
|
|
1135
1128
|
explanation.add_element(ca.Equation(
|
|
1136
1129
|
f"z_1 = w_{{11}} x_1 + w_{{12}} x_2 + b_1 = {self.W1[0,0]:.{self.param_digits}f} \\cdot {self.X[0]:.1f} + {self.W1[0,1]:.{self.param_digits}f} \\cdot {self.X[1]:.1f} + {self.b1[0]:.{self.param_digits}f} = {self.z1[0]:.4f}",
|
|
1137
1130
|
inline=False
|
|
@@ -1149,7 +1142,6 @@ class EndToEndTrainingQuestion(SimpleNeuralNetworkBase):
|
|
|
1149
1142
|
))
|
|
1150
1143
|
|
|
1151
1144
|
# Output (pre-activation)
|
|
1152
|
-
z2 = self.W2[0, 0] * self.a1[0] + self.W2[0, 1] * self.a1[1] + self.b2[0]
|
|
1153
1145
|
explanation.add_element(ca.Equation(
|
|
1154
1146
|
f"z_{{out}} = w_3 h_1 + w_4 h_2 + b_2 = {self.W2[0,0]:.{self.param_digits}f} \\cdot {self.a1[0]:.4f} + {self.W2[0,1]:.{self.param_digits}f} \\cdot {self.a1[1]:.4f} + {self.b2[0]:.{self.param_digits}f} = {self.z2[0]:.4f}",
|
|
1155
1147
|
inline=False
|
|
@@ -4,3 +4,10 @@ from .tensorflow_questions import (
|
|
|
4
4
|
RegularizationCalculationQuestion,
|
|
5
5
|
MomentumOptimizerQuestion
|
|
6
6
|
)
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"ParameterCountingQuestion",
|
|
10
|
+
"ActivationFunctionComputationQuestion",
|
|
11
|
+
"RegularizationCalculationQuestion",
|
|
12
|
+
"MomentumOptimizerQuestion",
|
|
13
|
+
]
|
|
@@ -1,9 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
import abc
|
|
4
|
-
import io
|
|
5
3
|
import logging
|
|
6
|
-
import re
|
|
7
4
|
import numpy as np
|
|
8
5
|
import sympy as sp
|
|
9
6
|
from typing import List, Tuple
|
|
@@ -900,7 +897,6 @@ class MomentumOptimizerQuestion(Question, TableQuestionMixin, BodyTemplatesMixin
|
|
|
900
897
|
# Show calculation for each component
|
|
901
898
|
digits = ca.Answer.DEFAULT_ROUNDING_DIGITS
|
|
902
899
|
for i in range(context.num_variables):
|
|
903
|
-
var_name = f"x_{i}"
|
|
904
900
|
# Round all intermediate values to avoid floating point precision issues
|
|
905
901
|
beta_times_v = round(context.momentum_beta * context.prev_velocity[i], digits)
|
|
906
902
|
one_minus_beta = round(1 - context.momentum_beta, digits)
|
QuizGenerator/question.py
CHANGED
|
@@ -11,16 +11,12 @@ import itertools
|
|
|
11
11
|
import os
|
|
12
12
|
import pathlib
|
|
13
13
|
import pkgutil
|
|
14
|
-
import pprint
|
|
15
14
|
import random
|
|
16
|
-
import re
|
|
17
15
|
import uuid
|
|
18
16
|
import types
|
|
19
17
|
import inspect
|
|
20
18
|
from types import MappingProxyType
|
|
21
19
|
|
|
22
|
-
import pypandoc
|
|
23
|
-
import yaml
|
|
24
20
|
from typing import List, Dict, Any, Tuple, Optional, Mapping, MutableMapping
|
|
25
21
|
import canvasapi.course, canvasapi.quiz
|
|
26
22
|
|
|
@@ -622,12 +618,6 @@ class Question(abc.ABC):
|
|
|
622
618
|
}
|
|
623
619
|
self.config_params = {k: v for k, v in kwargs.items() if k not in framework_params}
|
|
624
620
|
|
|
625
|
-
@classmethod
|
|
626
|
-
def from_yaml(cls, path_to_yaml):
|
|
627
|
-
with open(path_to_yaml) as fid:
|
|
628
|
-
question_dicts = yaml.safe_load_all(fid)
|
|
629
|
-
|
|
630
|
-
|
|
631
621
|
def instantiate(self, **kwargs) -> QuestionInstance:
|
|
632
622
|
"""
|
|
633
623
|
Instantiate a question once, returning content, answers, and regeneration metadata.
|
QuizGenerator/quiz.py
CHANGED
|
@@ -2,15 +2,10 @@
|
|
|
2
2
|
from __future__ import annotations
|
|
3
3
|
|
|
4
4
|
import collections
|
|
5
|
-
import itertools
|
|
6
5
|
import logging
|
|
7
|
-
import os.path
|
|
8
6
|
import random
|
|
9
|
-
import shutil
|
|
10
|
-
import subprocess
|
|
11
|
-
import tempfile
|
|
12
7
|
from datetime import datetime
|
|
13
|
-
from typing import List
|
|
8
|
+
from typing import List
|
|
14
9
|
import re
|
|
15
10
|
|
|
16
11
|
import yaml
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: QuizGenerator
|
|
3
|
-
Version: 0.10.
|
|
3
|
+
Version: 0.10.1
|
|
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
|
|
@@ -1,52 +1,52 @@
|
|
|
1
1
|
QuizGenerator/README.md,sha256=4n16gKyhIAKRBX4VKlpfcK0pyUYJ6Ht08MUsnwgxrZo,145
|
|
2
|
-
QuizGenerator/__init__.py,sha256=
|
|
2
|
+
QuizGenerator/__init__.py,sha256=jXz4y_PFbjJlz-f7r-2_PicyNnocFo7hIQcT7itaFmI,899
|
|
3
3
|
QuizGenerator/__main__.py,sha256=Dd9w4R0Unm3RiXztvR4Y_g9-lkWp6FHg-4VN50JbKxU,151
|
|
4
4
|
QuizGenerator/constants.py,sha256=AO-UWwsWPLb1k2JW6KP8rl9fxTcdT0rW-6XC6zfnDOs,4386
|
|
5
5
|
QuizGenerator/contentast.py,sha256=NY6Y9gWbdinXaVGdgwN61UBF2nz_L2urqr-IPfR6tV0,88475
|
|
6
|
-
QuizGenerator/generate.py,sha256=
|
|
7
|
-
QuizGenerator/logging.yaml,sha256=
|
|
8
|
-
QuizGenerator/misc.py,sha256=
|
|
6
|
+
QuizGenerator/generate.py,sha256=sIbu3RAV9vDT4GeS3NwseiUt9OlRCAhMteEa8yWyL-k,17715
|
|
7
|
+
QuizGenerator/logging.yaml,sha256=4igWpXaRbTJiRL_It9NkmVQT4KtQ_jxiGgFXDn8siQU,1133
|
|
8
|
+
QuizGenerator/misc.py,sha256=L9TiTFD9KppLoRzrmdAqCD_u8QIQk5XGO2pbwsh00eE,282
|
|
9
9
|
QuizGenerator/mixins.py,sha256=zXj2U94qNbIEusbwTnzRM1Z_zSybpvozWhveq-t5q2Q,15771
|
|
10
10
|
QuizGenerator/performance.py,sha256=CM3zLarJXN5Hfrl4-6JRBqD03j4BU1B2QW699HAr1Ds,7002
|
|
11
|
-
QuizGenerator/qrcode_generator.py,sha256=
|
|
12
|
-
QuizGenerator/question.py,sha256=
|
|
13
|
-
QuizGenerator/quiz.py,sha256=
|
|
11
|
+
QuizGenerator/qrcode_generator.py,sha256=Re7Hjp2Vx9hPpkNNuwKjbdWyeTQ27CxhvnCgcUpjuRc,13363
|
|
12
|
+
QuizGenerator/question.py,sha256=OrGfmTfIbGPKUNyScXhmfTjld1urh6fFMiP_g7z69fs,38009
|
|
13
|
+
QuizGenerator/quiz.py,sha256=kNHkjVCmLgXKpxrsCjGtK_tnhu1i1ToV7_eysMQOWX4,21525
|
|
14
14
|
QuizGenerator/regenerate.py,sha256=cDYZ9LwOSkX9P7W72O0c6RI8ORzS-DFnYhAdC5-7UrI,20375
|
|
15
15
|
QuizGenerator/typst_utils.py,sha256=JGQn_u5bEHd8HAtjAHuZoVJwLkx-Rd4ZCBWffwFZa3o,3136
|
|
16
16
|
QuizGenerator/canvas/__init__.py,sha256=TwFP_zgxPIlWtkvIqQ6mcvBNTL9swIH_rJl7DGKcvkQ,286
|
|
17
|
-
QuizGenerator/canvas/canvas_interface.py,sha256=
|
|
18
|
-
QuizGenerator/canvas/classes.py,sha256=
|
|
17
|
+
QuizGenerator/canvas/canvas_interface.py,sha256=07k28kZkPn-I_M84JAqlw6bQQnUbPlw6KwUytWl16gE,24678
|
|
18
|
+
QuizGenerator/canvas/classes.py,sha256=wopGDHl5Wqr02TqATuT99MwV2aJXj01Mg9w73Cq74-A,7584
|
|
19
19
|
QuizGenerator/premade_questions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
20
20
|
QuizGenerator/premade_questions/basic.py,sha256=u6Viv__5HYWjLOknYt_jsBJTej5-cPd9FM1xsuwUQcQ,4613
|
|
21
21
|
QuizGenerator/premade_questions/cst334/__init__.py,sha256=BTz-Os1XbwIRKqAilf2UIva2NlY0DbA_XbSIggO2Tdk,36
|
|
22
22
|
QuizGenerator/premade_questions/cst334/languages.py,sha256=ctemEAMkI8C6ASMIf59EHAW1ndFWi7hXzdEt-zOByUE,14114
|
|
23
23
|
QuizGenerator/premade_questions/cst334/math_questions.py,sha256=aUYbQxneL5MXE7Xo3tZX9-xcg71CXwvG3rrxcoh0l7A,8638
|
|
24
|
-
QuizGenerator/premade_questions/cst334/memory_questions.py,sha256=
|
|
24
|
+
QuizGenerator/premade_questions/cst334/memory_questions.py,sha256=hPaFvcwh0DAPG-mbKaakitWq4e_xNb9wG4mwM_2bqGs,50980
|
|
25
25
|
QuizGenerator/premade_questions/cst334/ostep13_vsfs.py,sha256=d9jjrynEw44vupAH_wKl57UoHooCNEJXaC5DoNYualk,16163
|
|
26
26
|
QuizGenerator/premade_questions/cst334/persistence_questions.py,sha256=9mgsX-3oWDQgm_n2YwmFSil0QPyzsruHzuqB-hfGMuA,16220
|
|
27
|
-
QuizGenerator/premade_questions/cst334/process.py,sha256=
|
|
27
|
+
QuizGenerator/premade_questions/cst334/process.py,sha256=sTFrTbXNNp9JeyOdkYht1HBajpWUibcI0DugHclyrmo,37210
|
|
28
28
|
QuizGenerator/premade_questions/cst463/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/__init__.py,sha256=
|
|
30
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_calculation.py,sha256=
|
|
31
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_descent_questions.py,sha256=
|
|
32
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/loss_calculations.py,sha256=
|
|
33
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/misc.py,sha256=
|
|
34
|
-
QuizGenerator/premade_questions/cst463/math_and_data/__init__.py,sha256=
|
|
35
|
-
QuizGenerator/premade_questions/cst463/math_and_data/matrix_questions.py,sha256=
|
|
36
|
-
QuizGenerator/premade_questions/cst463/math_and_data/vector_questions.py,sha256=
|
|
29
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/__init__.py,sha256=j8OGeRggbfGK-a99WC-6xi7NkI1Cya7bOxYIsC4AQig,419
|
|
30
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_calculation.py,sha256=N1u6t62HOp0NbSfqagq3HXFCS7aMycVkSb3pu9oKlos,13795
|
|
31
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_descent_questions.py,sha256=7F8dkHxVowPUjMhKhkB_9RtMvOwuooQC-0TcFIB97u4,11454
|
|
32
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/loss_calculations.py,sha256=glP5f5jUG1qWR7Y_3b3bDRlx7-sLlLGcTPSt9PlrLGU,24246
|
|
33
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/misc.py,sha256=wmqQ9kfFYyIbOC7lIvW0k8PG0ropbG9YQXQwBOS7vTs,2633
|
|
34
|
+
QuizGenerator/premade_questions/cst463/math_and_data/__init__.py,sha256=44fUtAVCe4wS9UPuy7kMlcrUVmh28PTETrCCcDbe_ss,391
|
|
35
|
+
QuizGenerator/premade_questions/cst463/math_and_data/matrix_questions.py,sha256=lJW9lpdW40BFbdASNQLaRto2oK3iCf5s9vhw9L7B6s4,15554
|
|
36
|
+
QuizGenerator/premade_questions/cst463/math_and_data/vector_questions.py,sha256=tqcKlsa5kQtvXau0c3FXZUKkoiosrTQDAjrNzgGcmdY,12644
|
|
37
37
|
QuizGenerator/premade_questions/cst463/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
38
|
-
QuizGenerator/premade_questions/cst463/models/attention.py,sha256=
|
|
39
|
-
QuizGenerator/premade_questions/cst463/models/cnns.py,sha256=
|
|
38
|
+
QuizGenerator/premade_questions/cst463/models/attention.py,sha256=b4kD-HR7xDnBILpycXoxvxDX1NnwIkyiaJNMf63wKXI,5350
|
|
39
|
+
QuizGenerator/premade_questions/cst463/models/cnns.py,sha256=XmZa6Cfsf8rRiO5Gtsf_tFgHcWEvBt-FGJjLRoY-Vr0,5937
|
|
40
40
|
QuizGenerator/premade_questions/cst463/models/matrices.py,sha256=21eNXUcIjFNZTGH18oH-x3MbCa4buNGQGer3a5yL85c,1938
|
|
41
|
-
QuizGenerator/premade_questions/cst463/models/rnns.py,sha256=
|
|
42
|
-
QuizGenerator/premade_questions/cst463/models/text.py,sha256=
|
|
43
|
-
QuizGenerator/premade_questions/cst463/models/weight_counting.py,sha256=
|
|
44
|
-
QuizGenerator/premade_questions/cst463/neural-network-basics/__init__.py,sha256=
|
|
45
|
-
QuizGenerator/premade_questions/cst463/neural-network-basics/neural_network_questions.py,sha256=
|
|
46
|
-
QuizGenerator/premade_questions/cst463/tensorflow-intro/__init__.py,sha256=
|
|
47
|
-
QuizGenerator/premade_questions/cst463/tensorflow-intro/tensorflow_questions.py,sha256=
|
|
48
|
-
quizgenerator-0.10.
|
|
49
|
-
quizgenerator-0.10.
|
|
50
|
-
quizgenerator-0.10.
|
|
51
|
-
quizgenerator-0.10.
|
|
52
|
-
quizgenerator-0.10.
|
|
41
|
+
QuizGenerator/premade_questions/cst463/models/rnns.py,sha256=geGi3UExkgEh9ZjwUuLlV11c3TnAJ7KQyB71GiJVgUU,6580
|
|
42
|
+
QuizGenerator/premade_questions/cst463/models/text.py,sha256=XIePl8V6fCXI0rVjenzhxY7adKWsheZNEy9ndNASSD8,6512
|
|
43
|
+
QuizGenerator/premade_questions/cst463/models/weight_counting.py,sha256=dvhtNXrwL3d9hRcqQLskq9508-Jymy6U9_-LHzCY6CA,7343
|
|
44
|
+
QuizGenerator/premade_questions/cst463/neural-network-basics/__init__.py,sha256=apDpyovepTXVFqvdPMfp9GL9N6O16XPvhCP3xNReC_E,280
|
|
45
|
+
QuizGenerator/premade_questions/cst463/neural-network-basics/neural_network_questions.py,sha256=ys4xozliPZzUNSHzdppaA6M6uqZeimXxtUjPSjRMe7A,42669
|
|
46
|
+
QuizGenerator/premade_questions/cst463/tensorflow-intro/__init__.py,sha256=qA4bTge41K2txGESt8ZWm-oqq5e0s7cC7OzgHcKuas4,332
|
|
47
|
+
QuizGenerator/premade_questions/cst463/tensorflow-intro/tensorflow_questions.py,sha256=grKgpJvUXQMw2T_YRRcb4SbYM11dT1znlt4q84RrGaA,31252
|
|
48
|
+
quizgenerator-0.10.1.dist-info/METADATA,sha256=cMuNUFvOTWGEie7nfrhLTnNqEaLkGvMKl3f1248NK1M,8483
|
|
49
|
+
quizgenerator-0.10.1.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
50
|
+
quizgenerator-0.10.1.dist-info/entry_points.txt,sha256=aOIdRdw26xY8HkxOoKHBnUPe2mwGv5Ti3U1zojb6zxQ,98
|
|
51
|
+
quizgenerator-0.10.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
52
|
+
quizgenerator-0.10.1.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|