PyKubeGrader 0.2.41__tar.gz → 0.3.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.
Files changed (68) hide show
  1. {pykubegrader-0.2.41/src/PyKubeGrader.egg-info → pykubegrader-0.3.0}/PKG-INFO +2 -1
  2. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/setup.cfg +1 -0
  3. {pykubegrader-0.2.41 → pykubegrader-0.3.0/src/PyKubeGrader.egg-info}/PKG-INFO +2 -1
  4. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/PyKubeGrader.egg-info/requires.txt +1 -0
  5. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/build/clean_folder.py +0 -1
  6. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/build/markdown_questions.py +1 -0
  7. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/telemetry.py +2 -2
  8. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/utils.py +1 -3
  9. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/multiple_choice.py +3 -2
  10. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/question_processor.py +0 -1
  11. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets_base/multi_select.py +3 -4
  12. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets_base/select.py +1 -1
  13. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/.coveragerc +0 -0
  14. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/.github/workflows/main.yml +0 -0
  15. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/.gitignore +0 -0
  16. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/.readthedocs.yml +0 -0
  17. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/AUTHORS.rst +0 -0
  18. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/CHANGELOG.rst +0 -0
  19. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/CONTRIBUTING.rst +0 -0
  20. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/LICENSE.txt +0 -0
  21. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/README.rst +0 -0
  22. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/Makefile +0 -0
  23. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/_static/Drexel_blue_Logo_square_Dark.png +0 -0
  24. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/_static/Drexel_blue_Logo_square_Light.png +0 -0
  25. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/_static/custom.css +0 -0
  26. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/authors.rst +0 -0
  27. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/changelog.rst +0 -0
  28. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/conf.py +0 -0
  29. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/contributing.rst +0 -0
  30. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/index.rst +0 -0
  31. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/license.rst +0 -0
  32. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/readme.rst +0 -0
  33. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/docs/requirements.txt +0 -0
  34. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/examples/.responses.json +0 -0
  35. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/examples/true_false.ipynb +0 -0
  36. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/pyproject.toml +0 -0
  37. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/setup.py +0 -0
  38. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/PyKubeGrader.egg-info/SOURCES.txt +0 -0
  39. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/PyKubeGrader.egg-info/dependency_links.txt +0 -0
  40. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/PyKubeGrader.egg-info/entry_points.txt +0 -0
  41. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/PyKubeGrader.egg-info/not-zip-safe +0 -0
  42. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/PyKubeGrader.egg-info/top_level.txt +0 -0
  43. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/__init__.py +0 -0
  44. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/build/__init__.py +0 -0
  45. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/build/api_notebook_builder.py +0 -0
  46. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/build/build_folder.py +0 -0
  47. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/graders/__init__.py +0 -0
  48. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/graders/late_assignments.py +0 -0
  49. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/initialize.py +0 -0
  50. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/log_parser/__init__.py +0 -0
  51. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/log_parser/parse.ipynb +0 -0
  52. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/log_parser/parse.py +0 -0
  53. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/submit/submit_assignment.py +0 -0
  54. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/tokens/tokens.py +0 -0
  55. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/tokens/validate_token.py +0 -0
  56. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/validate.py +0 -0
  57. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/__init__.py +0 -0
  58. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/reading_question.py +0 -0
  59. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/select_many.py +0 -0
  60. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/student_info.py +0 -0
  61. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/style.py +0 -0
  62. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/true_false.py +0 -0
  63. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets/types_question.py +0 -0
  64. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets_base/__init__.py +0 -0
  65. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/src/pykubegrader/widgets_base/reading.py +0 -0
  66. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/tests/conftest.py +0 -0
  67. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/tests/import_test.py +0 -0
  68. {pykubegrader-0.2.41 → pykubegrader-0.3.0}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PyKubeGrader
3
- Version: 0.2.41
3
+ Version: 0.3.0
4
4
  Summary: Add a short description here!
5
5
  Home-page: https://github.com/pyscaffold/pyscaffold/
6
6
  Author: jagar2
@@ -19,6 +19,7 @@ Requires-Dist: mypy
19
19
  Requires-Dist: nbformat
20
20
  Requires-Dist: nest_asyncio
21
21
  Requires-Dist: numpy
22
+ Requires-Dist: pandas-stubs
22
23
  Requires-Dist: panel
23
24
  Requires-Dist: pynacl
24
25
  Requires-Dist: pytest
@@ -29,6 +29,7 @@ install_requires =
29
29
  nbformat
30
30
  nest_asyncio
31
31
  numpy
32
+ pandas-stubs
32
33
  panel
33
34
  pynacl
34
35
  pytest
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: PyKubeGrader
3
- Version: 0.2.41
3
+ Version: 0.3.0
4
4
  Summary: Add a short description here!
5
5
  Home-page: https://github.com/pyscaffold/pyscaffold/
6
6
  Author: jagar2
@@ -19,6 +19,7 @@ Requires-Dist: mypy
19
19
  Requires-Dist: nbformat
20
20
  Requires-Dist: nest_asyncio
21
21
  Requires-Dist: numpy
22
+ Requires-Dist: pandas-stubs
22
23
  Requires-Dist: panel
23
24
  Requires-Dist: pynacl
24
25
  Requires-Dist: pytest
@@ -4,6 +4,7 @@ mypy
4
4
  nbformat
5
5
  nest_asyncio
6
6
  numpy
7
+ pandas-stubs
7
8
  panel
8
9
  pynacl
9
10
  pytest
@@ -5,7 +5,6 @@ import sys
5
5
 
6
6
 
7
7
  class FolderCleaner:
8
-
9
8
  def __init__(self, root_folder: str):
10
9
  """
11
10
  Initializes the FolderCleaner with the root folder to clean.
@@ -1,5 +1,6 @@
1
1
  import argparse
2
2
  import os
3
+
3
4
  import nbformat as nbf
4
5
 
5
6
 
@@ -5,9 +5,9 @@ import logging
5
5
  import os
6
6
  import socket
7
7
  from typing import Any, Optional
8
- import pandas as pd
9
8
 
10
9
  import nacl.public
10
+ import pandas as pd
11
11
  import requests
12
12
  from IPython.core.interactiveshell import ExecutionInfo
13
13
  from requests import Response
@@ -205,7 +205,7 @@ def verify_server(jhub_user: Optional[str] = None) -> str:
205
205
  return message
206
206
 
207
207
 
208
- def get_my_grades() -> dict[str, float]:
208
+ def get_my_grades() -> pd.DataFrame:
209
209
  if not student_user or not student_pw or not api_base_url:
210
210
  raise ValueError("Necessary environment variables not set")
211
211
 
@@ -15,9 +15,7 @@ def list_of_lists(options: list) -> bool:
15
15
 
16
16
  def shuffle_options(options: list[Optional[str]], seed: int) -> list[Optional[str]]:
17
17
  random.seed(seed)
18
-
19
- for inner_list in options:
20
- random.shuffle(inner_list)
18
+ random.shuffle(options)
21
19
 
22
20
  return options
23
21
 
@@ -16,7 +16,6 @@ def MCQ(
16
16
  options: list[str] | list[list[str]],
17
17
  initial_vals: list[str],
18
18
  ) -> Tuple[list[pn.pane.HTML], list[pn.widgets.RadioButtonGroup]]:
19
-
20
19
  # Process descriptions through `process_questions_and_codes`
21
20
  processed_titles, code_blocks = process_questions_and_codes(descriptions)
22
21
 
@@ -29,7 +28,9 @@ def MCQ(
29
28
  )
30
29
  # Add the title and code block in a row
31
30
  if code_block:
32
- desc_widgets.append(pn.Column(title_pane, code_block, sizing_mode="stretch_width"))
31
+ desc_widgets.append(
32
+ pn.Column(title_pane, code_block, sizing_mode="stretch_width")
33
+ )
33
34
  else:
34
35
  desc_widgets.append(pn.Column(title_pane, sizing_mode="stretch_width"))
35
36
 
@@ -4,7 +4,7 @@ from typing import Callable, Tuple
4
4
  import panel as pn
5
5
 
6
6
  from ..telemetry import ensure_responses, score_question, update_responses
7
- from ..utils import shuffle_questions, shuffle_options
7
+ from ..utils import shuffle_questions
8
8
  from ..widgets.style import drexel_colors, raw_css
9
9
 
10
10
  # Pass the custom CSS to Panel
@@ -58,7 +58,7 @@ class MultiSelectQuestion:
58
58
 
59
59
  # # add shuffle options to multi_select.py
60
60
  # options = shuffle_options(options, seed)
61
-
61
+
62
62
  description_widgets, self.widgets = style(
63
63
  descriptions, options, self.initial_vals
64
64
  )
@@ -72,14 +72,13 @@ class MultiSelectQuestion:
72
72
  question_header = pn.pane.HTML(
73
73
  f"<h2>Question {self.question_number}: {title}</h2>"
74
74
  )
75
-
75
+
76
76
  question_body = pn.Column(
77
77
  *[
78
78
  pn.Row(desc_widget, checkbox_set)
79
79
  for desc_widget, checkbox_set in widget_pairs
80
80
  ]
81
81
  )
82
-
83
82
 
84
83
  self.layout = pn.Column(question_header, question_body, self.submit_button)
85
84
 
@@ -4,7 +4,7 @@ from typing import Callable, Tuple
4
4
  import panel as pn
5
5
 
6
6
  from ..telemetry import ensure_responses, score_question, update_responses
7
- from ..utils import shuffle_questions, shuffle_options
7
+ from ..utils import shuffle_questions
8
8
  from ..widgets.style import drexel_colors
9
9
 
10
10
  # Pass custom CSS to Panel
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes