QuizGenerator 0.6.2__py3-none-any.whl → 0.7.0__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/contentast.py +2198 -2213
- QuizGenerator/misc.py +1 -1
- QuizGenerator/mixins.py +64 -64
- QuizGenerator/premade_questions/basic.py +16 -16
- QuizGenerator/premade_questions/cst334/languages.py +26 -26
- QuizGenerator/premade_questions/cst334/math_questions.py +42 -42
- QuizGenerator/premade_questions/cst334/memory_questions.py +124 -124
- QuizGenerator/premade_questions/cst334/persistence_questions.py +48 -48
- QuizGenerator/premade_questions/cst334/process.py +38 -38
- QuizGenerator/premade_questions/cst463/gradient_descent/gradient_calculation.py +45 -45
- QuizGenerator/premade_questions/cst463/gradient_descent/gradient_descent_questions.py +34 -34
- QuizGenerator/premade_questions/cst463/gradient_descent/loss_calculations.py +53 -53
- QuizGenerator/premade_questions/cst463/gradient_descent/misc.py +2 -2
- QuizGenerator/premade_questions/cst463/math_and_data/matrix_questions.py +65 -65
- QuizGenerator/premade_questions/cst463/math_and_data/vector_questions.py +39 -39
- QuizGenerator/premade_questions/cst463/models/attention.py +36 -36
- QuizGenerator/premade_questions/cst463/models/cnns.py +26 -26
- QuizGenerator/premade_questions/cst463/models/rnns.py +36 -36
- QuizGenerator/premade_questions/cst463/models/text.py +32 -32
- QuizGenerator/premade_questions/cst463/models/weight_counting.py +15 -15
- QuizGenerator/premade_questions/cst463/neural-network-basics/neural_network_questions.py +124 -124
- QuizGenerator/premade_questions/cst463/tensorflow-intro/tensorflow_questions.py +161 -161
- QuizGenerator/question.py +41 -41
- QuizGenerator/quiz.py +7 -7
- QuizGenerator/typst_utils.py +2 -2
- {quizgenerator-0.6.2.dist-info → quizgenerator-0.7.0.dist-info}/METADATA +1 -1
- {quizgenerator-0.6.2.dist-info → quizgenerator-0.7.0.dist-info}/RECORD +30 -30
- {quizgenerator-0.6.2.dist-info → quizgenerator-0.7.0.dist-info}/WHEEL +0 -0
- {quizgenerator-0.6.2.dist-info → quizgenerator-0.7.0.dist-info}/entry_points.txt +0 -0
- {quizgenerator-0.6.2.dist-info → quizgenerator-0.7.0.dist-info}/licenses/LICENSE +0 -0
QuizGenerator/question.py
CHANGED
|
@@ -21,7 +21,7 @@ import yaml
|
|
|
21
21
|
from typing import List, Dict, Any, Tuple, Optional
|
|
22
22
|
import canvasapi.course, canvasapi.quiz
|
|
23
23
|
|
|
24
|
-
|
|
24
|
+
import QuizGenerator.contentast as ca
|
|
25
25
|
from QuizGenerator.performance import timer, PerformanceTracker
|
|
26
26
|
|
|
27
27
|
import logging
|
|
@@ -31,9 +31,9 @@ log = logging.getLogger(__name__)
|
|
|
31
31
|
@dataclasses.dataclass
|
|
32
32
|
class QuestionComponents:
|
|
33
33
|
"""Bundle of question parts generated during construction."""
|
|
34
|
-
body:
|
|
35
|
-
answers: List[
|
|
36
|
-
explanation:
|
|
34
|
+
body: ca.Element
|
|
35
|
+
answers: List[ca.Answer]
|
|
36
|
+
explanation: ca.Element
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
# Spacing presets for questions
|
|
@@ -344,15 +344,15 @@ class Question(abc.ABC):
|
|
|
344
344
|
"""
|
|
345
345
|
Base class for all quiz questions with cross-format rendering support.
|
|
346
346
|
|
|
347
|
-
CRITICAL: When implementing Question subclasses, ALWAYS use
|
|
347
|
+
CRITICAL: When implementing Question subclasses, ALWAYS use content AST elements
|
|
348
348
|
for all content in get_body() and get_explanation() methods.
|
|
349
349
|
|
|
350
|
-
NEVER create manual LaTeX, HTML, or Markdown strings. The
|
|
350
|
+
NEVER create manual LaTeX, HTML, or Markdown strings. The content AST system
|
|
351
351
|
ensures consistent rendering across PDF/LaTeX and Canvas/HTML formats.
|
|
352
352
|
|
|
353
353
|
Required Methods:
|
|
354
|
-
- _get_body(): Return Tuple[
|
|
355
|
-
- _get_explanation(): Return Tuple[
|
|
354
|
+
- _get_body(): Return Tuple[ca.Section, List[ca.Answer]] with body and answers
|
|
355
|
+
- _get_explanation(): Return Tuple[ca.Section, List[ca.Answer]] with explanation
|
|
356
356
|
|
|
357
357
|
Note: get_body() and get_explanation() are provided for backward compatibility
|
|
358
358
|
and call the _get_* methods, returning just the first element of the tuple.
|
|
@@ -361,28 +361,28 @@ class Question(abc.ABC):
|
|
|
361
361
|
- VERSION (str): Question version number (e.g., "1.0")
|
|
362
362
|
Increment when RNG logic changes to ensure reproducibility
|
|
363
363
|
|
|
364
|
-
|
|
364
|
+
Content AST Usage Examples:
|
|
365
365
|
def _get_body(self):
|
|
366
|
-
body =
|
|
366
|
+
body = ca.Section()
|
|
367
367
|
answers = []
|
|
368
|
-
body.add_element(
|
|
368
|
+
body.add_element(ca.Paragraph(["Calculate the matrix:"]))
|
|
369
369
|
|
|
370
|
-
# Use
|
|
370
|
+
# Use ca.Matrix for math, NOT manual LaTeX
|
|
371
371
|
matrix_data = [[1, 2], [3, 4]]
|
|
372
|
-
body.add_element(
|
|
372
|
+
body.add_element(ca.Matrix(data=matrix_data, bracket_type="b"))
|
|
373
373
|
|
|
374
|
-
# Answer extends
|
|
375
|
-
ans =
|
|
374
|
+
# Answer extends ca.Leaf - add directly to body
|
|
375
|
+
ans = ca.Answer.integer("result", 42, label="Result")
|
|
376
376
|
answers.append(ans)
|
|
377
377
|
body.add_element(ans)
|
|
378
378
|
return body, answers
|
|
379
379
|
|
|
380
|
-
Common
|
|
381
|
-
-
|
|
382
|
-
-
|
|
383
|
-
-
|
|
384
|
-
-
|
|
385
|
-
-
|
|
380
|
+
Common Content AST Elements:
|
|
381
|
+
- ca.Paragraph: Text blocks
|
|
382
|
+
- ca.Equation: Mathematical expressions
|
|
383
|
+
- ca.Matrix: Matrices and vectors (use instead of manual LaTeX!)
|
|
384
|
+
- ca.Table: Data tables
|
|
385
|
+
- ca.OnlyHtml/OnlyLatex: Platform-specific content
|
|
386
386
|
|
|
387
387
|
Versioning Guidelines:
|
|
388
388
|
- Increment VERSION when changing:
|
|
@@ -473,7 +473,7 @@ class Question(abc.ABC):
|
|
|
473
473
|
self.points_value = points_value
|
|
474
474
|
self.topic = topic
|
|
475
475
|
self.spacing = parse_spacing(kwargs.get("spacing", 0))
|
|
476
|
-
self.answer_kind =
|
|
476
|
+
self.answer_kind = ca.Answer.CanvasAnswerKind.BLANK
|
|
477
477
|
|
|
478
478
|
# Support for multi-part questions (defaults to 1 for normal questions)
|
|
479
479
|
self.num_subquestions = kwargs.get("num_subquestions", 1)
|
|
@@ -504,11 +504,11 @@ class Question(abc.ABC):
|
|
|
504
504
|
with open(path_to_yaml) as fid:
|
|
505
505
|
question_dicts = yaml.safe_load_all(fid)
|
|
506
506
|
|
|
507
|
-
def get_question(self, **kwargs) ->
|
|
507
|
+
def get_question(self, **kwargs) -> ca.Question:
|
|
508
508
|
"""
|
|
509
509
|
Gets the question in AST format
|
|
510
510
|
:param kwargs:
|
|
511
|
-
:return: (
|
|
511
|
+
:return: (ca.Question) Containing question.
|
|
512
512
|
"""
|
|
513
513
|
# Generate the question, retrying with incremented seeds until we get an interesting one
|
|
514
514
|
with timer("question_refresh", question_name=self.name, question_type=self.__class__.__name__):
|
|
@@ -553,7 +553,7 @@ class Question(abc.ABC):
|
|
|
553
553
|
|
|
554
554
|
# Store the actual seed used and question metadata for QR code generation
|
|
555
555
|
actual_seed = None if base_seed is None else base_seed + backoff_counter - 1
|
|
556
|
-
question_ast =
|
|
556
|
+
question_ast = ca.Question(
|
|
557
557
|
body=body,
|
|
558
558
|
explanation=explanation,
|
|
559
559
|
value=self.points_value,
|
|
@@ -575,31 +575,31 @@ class Question(abc.ABC):
|
|
|
575
575
|
return question_ast
|
|
576
576
|
|
|
577
577
|
@abc.abstractmethod
|
|
578
|
-
def get_body(self, **kwargs) ->
|
|
578
|
+
def get_body(self, **kwargs) -> ca.Section:
|
|
579
579
|
"""
|
|
580
580
|
Gets the body of the question during generation
|
|
581
581
|
:param kwargs:
|
|
582
|
-
:return: (
|
|
582
|
+
:return: (ca.Section) Containing question body
|
|
583
583
|
"""
|
|
584
584
|
pass
|
|
585
585
|
|
|
586
|
-
def get_explanation(self, **kwargs) ->
|
|
586
|
+
def get_explanation(self, **kwargs) -> ca.Section:
|
|
587
587
|
"""
|
|
588
588
|
Gets the body of the question during generation (backward compatible wrapper).
|
|
589
589
|
Calls _get_explanation() and returns just the explanation.
|
|
590
590
|
:param kwargs:
|
|
591
|
-
:return: (
|
|
591
|
+
:return: (ca.Section) Containing question explanation or None
|
|
592
592
|
"""
|
|
593
593
|
# Try new pattern first
|
|
594
594
|
if hasattr(self, '_get_explanation') and callable(getattr(self, '_get_explanation')):
|
|
595
595
|
explanation, _ = self._get_explanation()
|
|
596
596
|
return explanation
|
|
597
597
|
# Fallback: default explanation
|
|
598
|
-
return
|
|
599
|
-
[
|
|
598
|
+
return ca.Section(
|
|
599
|
+
[ca.Text("[Please reach out to your professor for clarification]")]
|
|
600
600
|
)
|
|
601
601
|
|
|
602
|
-
def _get_body(self) -> Tuple[
|
|
602
|
+
def _get_body(self) -> Tuple[ca.Element, List[ca.Answer]]:
|
|
603
603
|
"""
|
|
604
604
|
Build question body and collect answers (new pattern).
|
|
605
605
|
Questions should override this to return (body, answers) tuple.
|
|
@@ -611,7 +611,7 @@ class Question(abc.ABC):
|
|
|
611
611
|
body = self.get_body()
|
|
612
612
|
return body, []
|
|
613
613
|
|
|
614
|
-
def _get_explanation(self) -> Tuple[
|
|
614
|
+
def _get_explanation(self) -> Tuple[ca.Element, List[ca.Answer]]:
|
|
615
615
|
"""
|
|
616
616
|
Build question explanation and collect answers (new pattern).
|
|
617
617
|
Questions can override this to include answers in explanations.
|
|
@@ -619,8 +619,8 @@ class Question(abc.ABC):
|
|
|
619
619
|
Returns:
|
|
620
620
|
Tuple of (explanation_ast, answers_list)
|
|
621
621
|
"""
|
|
622
|
-
return
|
|
623
|
-
[
|
|
622
|
+
return ca.Section(
|
|
623
|
+
[ca.Text("[Please reach out to your professor for clarification]")]
|
|
624
624
|
), []
|
|
625
625
|
|
|
626
626
|
def build_question_components(self, **kwargs) -> QuestionComponents:
|
|
@@ -645,7 +645,7 @@ class Question(abc.ABC):
|
|
|
645
645
|
explanation=explanation
|
|
646
646
|
)
|
|
647
647
|
|
|
648
|
-
def get_answers(self, *args, **kwargs) -> Tuple[
|
|
648
|
+
def get_answers(self, *args, **kwargs) -> Tuple[ca.Answer.CanvasAnswerKind, List[Dict[str,Any]]]:
|
|
649
649
|
"""
|
|
650
650
|
Return answers from cached components (new pattern) or self.answers dict (old pattern).
|
|
651
651
|
"""
|
|
@@ -663,7 +663,7 @@ class Question(abc.ABC):
|
|
|
663
663
|
answers = self._components.answers
|
|
664
664
|
if self.can_be_numerical():
|
|
665
665
|
return (
|
|
666
|
-
|
|
666
|
+
ca.Answer.CanvasAnswerKind.NUMERICAL_QUESTION,
|
|
667
667
|
list(itertools.chain(*[a.get_for_canvas(single_answer=True) for a in answers]))
|
|
668
668
|
)
|
|
669
669
|
return (
|
|
@@ -675,7 +675,7 @@ class Question(abc.ABC):
|
|
|
675
675
|
if len(self.answers.values()) > 0:
|
|
676
676
|
if self.can_be_numerical():
|
|
677
677
|
return (
|
|
678
|
-
|
|
678
|
+
ca.Answer.CanvasAnswerKind.NUMERICAL_QUESTION,
|
|
679
679
|
list(itertools.chain(*[a.get_for_canvas(single_answer=True) for a in self.answers.values()]))
|
|
680
680
|
)
|
|
681
681
|
return (
|
|
@@ -683,7 +683,7 @@ class Question(abc.ABC):
|
|
|
683
683
|
list(itertools.chain(*[a.get_for_canvas() for a in self.answers.values()]))
|
|
684
684
|
)
|
|
685
685
|
|
|
686
|
-
return (
|
|
686
|
+
return (ca.Answer.CanvasAnswerKind.ESSAY, [])
|
|
687
687
|
|
|
688
688
|
def refresh(self, rng_seed=None, *args, **kwargs):
|
|
689
689
|
"""If it is necessary to regenerate aspects between usages, this is the time to do it.
|
|
@@ -750,7 +750,7 @@ class Question(abc.ABC):
|
|
|
750
750
|
|
|
751
751
|
def can_be_numerical(self):
|
|
752
752
|
if (len(self.answers.values()) == 1
|
|
753
|
-
and isinstance(list(self.answers.values())[0], AnswerTypes.Float)
|
|
753
|
+
and isinstance(list(self.answers.values())[0], ca.AnswerTypes.Float)
|
|
754
754
|
):
|
|
755
755
|
return True
|
|
756
756
|
return False
|
|
@@ -806,4 +806,4 @@ class QuestionGroup():
|
|
|
806
806
|
return attr(*args, **kwargs)
|
|
807
807
|
return wrapped_method
|
|
808
808
|
|
|
809
|
-
return attr
|
|
809
|
+
return attr
|
QuizGenerator/quiz.py
CHANGED
|
@@ -15,7 +15,7 @@ import re
|
|
|
15
15
|
|
|
16
16
|
import yaml
|
|
17
17
|
|
|
18
|
-
|
|
18
|
+
import QuizGenerator.contentast as ca
|
|
19
19
|
from QuizGenerator.question import Question, QuestionRegistry, QuestionGroup
|
|
20
20
|
|
|
21
21
|
log = logging.getLogger(__name__)
|
|
@@ -34,12 +34,12 @@ class Quiz:
|
|
|
34
34
|
self.questions = questions
|
|
35
35
|
self.instructions = kwargs.get("instructions", "")
|
|
36
36
|
|
|
37
|
-
# Parse description with
|
|
37
|
+
# Parse description with content AST if provided
|
|
38
38
|
raw_description = kwargs.get("description", None)
|
|
39
39
|
if raw_description:
|
|
40
|
-
# Create a
|
|
41
|
-
desc_doc =
|
|
42
|
-
desc_doc.add_element(
|
|
40
|
+
# Create a content AST document from the description text
|
|
41
|
+
desc_doc = ca.Document()
|
|
42
|
+
desc_doc.add_element(ca.Paragraph([raw_description]))
|
|
43
43
|
self.description = desc_doc.render("html")
|
|
44
44
|
else:
|
|
45
45
|
self.description = None
|
|
@@ -418,8 +418,8 @@ class Quiz:
|
|
|
418
418
|
|
|
419
419
|
return optimized_questions
|
|
420
420
|
|
|
421
|
-
def get_quiz(self, **kwargs) ->
|
|
422
|
-
quiz =
|
|
421
|
+
def get_quiz(self, **kwargs) -> ca.Document:
|
|
422
|
+
quiz = ca.Document(title=self.name)
|
|
423
423
|
|
|
424
424
|
# Extract master RNG seed (if provided) and remove from kwargs
|
|
425
425
|
master_seed = kwargs.pop('rng_seed', None)
|
QuizGenerator/typst_utils.py
CHANGED
|
@@ -12,7 +12,7 @@ import tempfile
|
|
|
12
12
|
import textwrap
|
|
13
13
|
from pathlib import Path
|
|
14
14
|
from typing import Optional
|
|
15
|
-
|
|
15
|
+
import QuizGenerator.contentast as ca
|
|
16
16
|
|
|
17
17
|
import logging
|
|
18
18
|
log = logging.getLogger(__name__)
|
|
@@ -31,7 +31,7 @@ def measure_typst_content(typst_content: str, page_width_cm: float = 18.0) -> Op
|
|
|
31
31
|
"""
|
|
32
32
|
|
|
33
33
|
# Get the Typst header which includes fillline and other helper functions
|
|
34
|
-
typst_header =
|
|
34
|
+
typst_header = ca.Document.TYPST_HEADER
|
|
35
35
|
|
|
36
36
|
# Create temporary Typst file with measurement wrapper
|
|
37
37
|
typst_code = textwrap.dedent(f"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: QuizGenerator
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.7.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
|
|
@@ -1,50 +1,50 @@
|
|
|
1
1
|
QuizGenerator/__init__.py,sha256=8EV-k90A3PNC8Cm2-ZquwNyVyvnwW1gs6u-nGictyhs,840
|
|
2
2
|
QuizGenerator/__main__.py,sha256=Dd9w4R0Unm3RiXztvR4Y_g9-lkWp6FHg-4VN50JbKxU,151
|
|
3
3
|
QuizGenerator/constants.py,sha256=AO-UWwsWPLb1k2JW6KP8rl9fxTcdT0rW-6XC6zfnDOs,4386
|
|
4
|
-
QuizGenerator/contentast.py,sha256=
|
|
4
|
+
QuizGenerator/contentast.py,sha256=8i7iF3cxcYbrVkpK89WdwhNtH4Bo25_rqDCxrSc0z8s,86281
|
|
5
5
|
QuizGenerator/generate.py,sha256=AWzNL0QTYDTcJFKaYfHIoRHvhx9MYRAbsD6z7E5_c9k,15733
|
|
6
|
-
QuizGenerator/misc.py,sha256=
|
|
7
|
-
QuizGenerator/mixins.py,sha256=
|
|
6
|
+
QuizGenerator/misc.py,sha256=MXrguUhhdrWSV4Hqdl4G21ktowODu1AcKy6-5mvy3aI,454
|
|
7
|
+
QuizGenerator/mixins.py,sha256=aFn2573APCh-XKn6U7Xy95Iyj1a-BsRXnorjpN1FT6E,18711
|
|
8
8
|
QuizGenerator/performance.py,sha256=CM3zLarJXN5Hfrl4-6JRBqD03j4BU1B2QW699HAr1Ds,7002
|
|
9
9
|
QuizGenerator/qrcode_generator.py,sha256=S3mzZDk2UiHiw6ipSCpWPMhbKvSRR1P5ordZJUTo6ug,10776
|
|
10
|
-
QuizGenerator/question.py,sha256=
|
|
11
|
-
QuizGenerator/quiz.py,sha256=
|
|
10
|
+
QuizGenerator/question.py,sha256=CqKq_-HDzETrgEr-E8fQu1sRiMZv6ZoBAjig6gy34vw,31395
|
|
11
|
+
QuizGenerator/quiz.py,sha256=4W_3xZMLx-pMzB5mn8GOhbmE-7bYiIqYLtsVYxJSdVc,21463
|
|
12
12
|
QuizGenerator/regenerate.py,sha256=Uh4B9aKQvL3zD7PT-uH-GvrcSuUygV1BimvPVuErc-g,16525
|
|
13
|
-
QuizGenerator/typst_utils.py,sha256=
|
|
13
|
+
QuizGenerator/typst_utils.py,sha256=JGQn_u5bEHd8HAtjAHuZoVJwLkx-Rd4ZCBWffwFZa3o,3136
|
|
14
14
|
QuizGenerator/canvas/__init__.py,sha256=TwFP_zgxPIlWtkvIqQ6mcvBNTL9swIH_rJl7DGKcvkQ,286
|
|
15
15
|
QuizGenerator/canvas/canvas_interface.py,sha256=StMcdXgLvTA1EayQ44m_le2GXGQpDQnduYXVeUYsqW0,24618
|
|
16
16
|
QuizGenerator/canvas/classes.py,sha256=v_tQ8t_JJplU9sv2p4YctX45Fwed1nQ2HC1oC9BnDNw,7594
|
|
17
17
|
QuizGenerator/premade_questions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
QuizGenerator/premade_questions/basic.py,sha256=
|
|
18
|
+
QuizGenerator/premade_questions/basic.py,sha256=hZCZHZxyTAQSDr-Hwo3xIMlU3L0-tyzfEZqvz7B-P64,3317
|
|
19
19
|
QuizGenerator/premade_questions/cst334/__init__.py,sha256=BTz-Os1XbwIRKqAilf2UIva2NlY0DbA_XbSIggO2Tdk,36
|
|
20
|
-
QuizGenerator/premade_questions/cst334/languages.py,sha256=
|
|
21
|
-
QuizGenerator/premade_questions/cst334/math_questions.py,sha256=
|
|
22
|
-
QuizGenerator/premade_questions/cst334/memory_questions.py,sha256=
|
|
20
|
+
QuizGenerator/premade_questions/cst334/languages.py,sha256=t4LEfVeJei0xqOHjUb9vV4yG1Oyp-LE-wmF4AY_oMbk,14909
|
|
21
|
+
QuizGenerator/premade_questions/cst334/math_questions.py,sha256=TW4VR6kmcYC8qMOn5vNwe1_7OCUKjPeOqJbwoKOWZ-s,9930
|
|
22
|
+
QuizGenerator/premade_questions/cst334/memory_questions.py,sha256=S_Fndsq-RqWoFeIuKmMmCrdO7R1dFeQ0HrGWu93RRiE,53749
|
|
23
23
|
QuizGenerator/premade_questions/cst334/ostep13_vsfs.py,sha256=d9jjrynEw44vupAH_wKl57UoHooCNEJXaC5DoNYualk,16163
|
|
24
|
-
QuizGenerator/premade_questions/cst334/persistence_questions.py,sha256=
|
|
25
|
-
QuizGenerator/premade_questions/cst334/process.py,sha256=
|
|
24
|
+
QuizGenerator/premade_questions/cst334/persistence_questions.py,sha256=eyCIwfy3pmSm-XEwIV-7i9uU0-kZcuq1D0Apm0m2SfA,17163
|
|
25
|
+
QuizGenerator/premade_questions/cst334/process.py,sha256=YrtrLZA8Uk63adpD2WOuXyIaJsFKoO5xZ0yYDzMFWqs,39593
|
|
26
26
|
QuizGenerator/premade_questions/cst463/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
27
27
|
QuizGenerator/premade_questions/cst463/gradient_descent/__init__.py,sha256=sH2CUV6zK9FT3jWTn453ys6_JTrUKRtZnU8hK6RmImU,240
|
|
28
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_calculation.py,sha256=
|
|
29
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_descent_questions.py,sha256=
|
|
30
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/loss_calculations.py,sha256=
|
|
31
|
-
QuizGenerator/premade_questions/cst463/gradient_descent/misc.py,sha256=
|
|
28
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_calculation.py,sha256=6TzPi-NMI5CILcd3gbzRpEs3T_280SzA1kauTZMXC_g,13607
|
|
29
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/gradient_descent_questions.py,sha256=fEpYB4jFOJfyDdli0oh-zpsarC_w8fIGZBOXCkMOIGQ,10604
|
|
30
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/loss_calculations.py,sha256=Tq_-EVaVmuVz6-V9Wbcp-oIlc2BJ5ehN4MdCx8G_Dk4,21824
|
|
31
|
+
QuizGenerator/premade_questions/cst463/gradient_descent/misc.py,sha256=0R-nFeD3zsqJyde5CXWrF6Npjmpx6_HbzfCbThLi3os,2657
|
|
32
32
|
QuizGenerator/premade_questions/cst463/math_and_data/__init__.py,sha256=EbIaUrx7_aK9j3Gd8Mk08h9GocTq_0OoNu2trfNwaU8,202
|
|
33
|
-
QuizGenerator/premade_questions/cst463/math_and_data/matrix_questions.py,sha256=
|
|
34
|
-
QuizGenerator/premade_questions/cst463/math_and_data/vector_questions.py,sha256=
|
|
33
|
+
QuizGenerator/premade_questions/cst463/math_and_data/matrix_questions.py,sha256=_oODuW4WMEVLuEJFmVjMWYTZn3RiE2MqlJSEIwRXNMo,28740
|
|
34
|
+
QuizGenerator/premade_questions/cst463/math_and_data/vector_questions.py,sha256=nNu4Pqvy-zXO2Ly9UtqXIbx-gw2fUC40yii-PhuK-_c,12927
|
|
35
35
|
QuizGenerator/premade_questions/cst463/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
36
|
-
QuizGenerator/premade_questions/cst463/models/attention.py,sha256=
|
|
37
|
-
QuizGenerator/premade_questions/cst463/models/cnns.py,sha256=
|
|
36
|
+
QuizGenerator/premade_questions/cst463/models/attention.py,sha256=i49u_bTbc_x0uLkmO-w7zQtLeoBpejVd78opVUnP9sg,5803
|
|
37
|
+
QuizGenerator/premade_questions/cst463/models/cnns.py,sha256=yFqZJ-sKInGaFButUEuYiRRZkALqx8Tpv8I-fTfvQcU,6109
|
|
38
38
|
QuizGenerator/premade_questions/cst463/models/matrices.py,sha256=H61_8cF1DGCt4Z4Ssoi4SMClf6tD5wHkOqY5bMdsSt4,699
|
|
39
|
-
QuizGenerator/premade_questions/cst463/models/rnns.py,sha256=
|
|
40
|
-
QuizGenerator/premade_questions/cst463/models/text.py,sha256=
|
|
41
|
-
QuizGenerator/premade_questions/cst463/models/weight_counting.py,sha256=
|
|
39
|
+
QuizGenerator/premade_questions/cst463/models/rnns.py,sha256=CXoXHMNIhJRD2MEZ0WNemTKQLQRV7ahTnGVRjOe77vU,6903
|
|
40
|
+
QuizGenerator/premade_questions/cst463/models/text.py,sha256=vf9Lp9dvYs4Eok_ljt5MEw94O7YdhpP0JaDfDaPL0Vs,6705
|
|
41
|
+
QuizGenerator/premade_questions/cst463/models/weight_counting.py,sha256=wz63jKluW3sFYOWUePgtcNQVpFJykyG3BxJzt0djrvY,7133
|
|
42
42
|
QuizGenerator/premade_questions/cst463/neural-network-basics/__init__.py,sha256=pmyCezO-20AFEQC6MR7KnAsaU9TcgZYsGQOMVkRZ-U8,149
|
|
43
|
-
QuizGenerator/premade_questions/cst463/neural-network-basics/neural_network_questions.py,sha256=
|
|
43
|
+
QuizGenerator/premade_questions/cst463/neural-network-basics/neural_network_questions.py,sha256=LTsUZqdP5zdG8VB10u5FYkQMm2Q1wvlaFAOOVQQesmg,45176
|
|
44
44
|
QuizGenerator/premade_questions/cst463/tensorflow-intro/__init__.py,sha256=G1gEHtG4KakYgi8ZXSYYhX6bQRtnm2tZVGx36d63Nmo,173
|
|
45
|
-
QuizGenerator/premade_questions/cst463/tensorflow-intro/tensorflow_questions.py,sha256=
|
|
46
|
-
quizgenerator-0.
|
|
47
|
-
quizgenerator-0.
|
|
48
|
-
quizgenerator-0.
|
|
49
|
-
quizgenerator-0.
|
|
50
|
-
quizgenerator-0.
|
|
45
|
+
QuizGenerator/premade_questions/cst463/tensorflow-intro/tensorflow_questions.py,sha256=KcYSDQQfbZcwNJQrBbcAmqIp69pYro8bJAWa1djDGsE,32263
|
|
46
|
+
quizgenerator-0.7.0.dist-info/METADATA,sha256=BlnX3Luo-JjyqIyyduHlYlW5CAqnOpuDR2qVsDnc0fI,7212
|
|
47
|
+
quizgenerator-0.7.0.dist-info/WHEEL,sha256=WLgqFyCfm_KASv4WHyYy0P3pM_m7J5L9k2skdKLirC8,87
|
|
48
|
+
quizgenerator-0.7.0.dist-info/entry_points.txt,sha256=aOIdRdw26xY8HkxOoKHBnUPe2mwGv5Ti3U1zojb6zxQ,98
|
|
49
|
+
quizgenerator-0.7.0.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
|
|
50
|
+
quizgenerator-0.7.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|