e2xauthoring 0.3.0.dev0__tar.gz → 0.3.0.dev1__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 (105) hide show
  1. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/PKG-INFO +1 -1
  2. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/conf.py +1 -1
  3. e2xauthoring-0.3.0.dev1/e2xauthoring/__version__.py +1 -0
  4. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/taskmanager.py +25 -5
  5. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/taskpoolmanager.py +16 -3
  6. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/package-lock.json +6 -6
  7. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/package.json +1 -1
  8. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/pyproject.toml +1 -1
  9. e2xauthoring-0.3.0.dev0/e2xauthoring/__version__.py +0 -1
  10. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/.github/workflows/black.yml +0 -0
  11. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/.github/workflows/ruff.yml +0 -0
  12. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/.github/workflows/sonarcloud.yml +0 -0
  13. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/.gitignore +0 -0
  14. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/.pre-commit-config.yaml +0 -0
  15. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/.readthedocs.yaml +0 -0
  16. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/LICENSE +0 -0
  17. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/MANIFEST.in +0 -0
  18. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/README.md +0 -0
  19. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/Makefile +0 -0
  20. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/make.bat +0 -0
  21. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/requirements.txt +0 -0
  22. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/index.rst +0 -0
  23. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/setup/index.rst +0 -0
  24. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/setup/installation.rst +0 -0
  25. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/add_files.png +0 -0
  26. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/add_question.png +0 -0
  27. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/add_tasks.png +0 -0
  28. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/assignment_worksheets.drawio +0 -0
  29. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/assignment_worksheets.png +0 -0
  30. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/assignments.png +0 -0
  31. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/attachment_editor.png +0 -0
  32. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/autograded_code_question.png +0 -0
  33. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/choose_tasks_1.png +0 -0
  34. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/diagram_question.png +0 -0
  35. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/diagram_question_rendered.png +0 -0
  36. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/freetext_question.png +0 -0
  37. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/make_worksheet.drawio +0 -0
  38. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/make_worksheet.png +0 -0
  39. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/manual_code_question.png +0 -0
  40. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/multiple_choice_question.png +0 -0
  41. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/multiple_choice_question_rendered.png +0 -0
  42. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/new_task.png +0 -0
  43. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/sample_template.png +0 -0
  44. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/sample_template_variables.png +0 -0
  45. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/single_choice_question.png +0 -0
  46. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/single_choice_question_rendered.png +0 -0
  47. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/tasks.png +0 -0
  48. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/templates.png +0 -0
  49. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/upload_question_rendered.png +0 -0
  50. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/worksheet.png +0 -0
  51. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/worksheet_options.png +0 -0
  52. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/worksheets.drawio +0 -0
  53. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/img/worksheets.png +0 -0
  54. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/index.rst +0 -0
  55. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/pool.rst +0 -0
  56. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/questions.rst +0 -0
  57. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/task.rst +0 -0
  58. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/template.rst +0 -0
  59. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/docs/source/user_docs/worksheet.rst +0 -0
  60. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/__init__.py +0 -0
  61. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/__init__.py +0 -0
  62. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/authoring.py +0 -0
  63. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/handlers/apihandlers.py +0 -0
  64. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/handlers/base.py +0 -0
  65. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/handlers/handlers.py +0 -0
  66. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/templates/authoring/asset-manifest.json +0 -0
  67. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/templates/authoring/index.html +0 -0
  68. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/templates/authoring/static/js/main.4c8c48b6.js +0 -0
  69. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/templates/authoring/static/js/main.4c8c48b6.js.LICENSE.txt +0 -0
  70. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/app/templates/authoring/static/js/main.4c8c48b6.js.map +0 -0
  71. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/assets/.gitignore +0 -0
  72. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/converters/__init__.py +0 -0
  73. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/converters/converter.py +0 -0
  74. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/converters/generateexercise.py +0 -0
  75. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/__init__.py +0 -0
  76. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/assignmentmanager.py +0 -0
  77. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/base.py +0 -0
  78. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/dataclasses/__init__.py +0 -0
  79. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presetmanager.py +0 -0
  80. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/questions/Code (Autograded).ipynb +0 -0
  81. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/questions/Code (Manual).ipynb +0 -0
  82. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/questions/Diagram.ipynb +0 -0
  83. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/questions/Freetext.ipynb +0 -0
  84. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/questions/Multiple Choice.ipynb +0 -0
  85. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/questions/Single Choice.ipynb +0 -0
  86. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/questions/Upload Files.ipynb +0 -0
  87. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/template/Footer.ipynb +0 -0
  88. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/template/Group Info.ipynb +0 -0
  89. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/template/Header.ipynb +0 -0
  90. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/presets/template/Student Info.ipynb +0 -0
  91. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/templatemanager.py +0 -0
  92. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/managers/worksheetmanager.py +0 -0
  93. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/__init__.py +0 -0
  94. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/addtaskheader.py +0 -0
  95. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/copyfiles.py +0 -0
  96. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/copynotebooks.py +0 -0
  97. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/filltemplate.py +0 -0
  98. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/generatetaskids.py +0 -0
  99. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/makeexercise.py +0 -0
  100. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/preprocessor.py +0 -0
  101. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/preprocessors/removeexercise.py +0 -0
  102. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/utils/__init__.py +0 -0
  103. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/utils/gitutils.py +0 -0
  104. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/e2xauthoring/utils/notebookvariableextractor.py +0 -0
  105. {e2xauthoring-0.3.0.dev0 → e2xauthoring-0.3.0.dev1}/lerna.json +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: e2xauthoring
3
- Version: 0.3.0.dev0
3
+ Version: 0.3.0.dev1
4
4
  Summary: Authoring app for e2xgrader
5
5
  Project-URL: Source, https://github.com/Digiklausur/e2xauthoring
6
6
  Project-URL: Documentation, https://e2xauthoring.readthedocs.io/en/latest/
@@ -9,7 +9,7 @@
9
9
  project = "e2xauthoring"
10
10
  copyright = "2023, Tim Metzler"
11
11
  author = "Tim Metzler"
12
- release = "0.3.0-dev0"
12
+ release = "0.3.0-dev1"
13
13
  github_project_url = "https://github.com/Digiklausur/e2xauthoring"
14
14
 
15
15
  # -- General configuration ---------------------------------------------------
@@ -0,0 +1 @@
1
+ __version__ = "0.3.0-dev1"
@@ -128,12 +128,23 @@ class TaskManager(BaseManager):
128
128
  tasks = []
129
129
  path = os.path.join(self.base_path, pool)
130
130
  assert os.path.exists(path), f"No pool with the name {pool} exists."
131
- for task_dir in self.listdir(os.path.join(self.base_path, pool)):
132
- points, n_questions = await self.__get_task_info(task_dir, pool)
133
- git_status = await asyncio.to_thread(self.git_status, pool, task_dir)
131
+
132
+ coroutines = []
133
+ task_dirs = self.listdir(os.path.join(self.base_path, pool))
134
+
135
+ for task_dir in task_dirs:
136
+ coroutines.append(self.__get_task_info(task_dir, pool))
137
+ coroutines.append(asyncio.to_thread(self.git_status, pool, task_dir))
138
+
139
+ results = await asyncio.gather(*coroutines)
140
+
141
+ for i, task_dir in enumerate(task_dirs):
142
+ points, n_questions = results[i * 2]
143
+ git_status = results[i * 2 + 1]
134
144
 
135
145
  if "repo" in git_status:
136
146
  del git_status["repo"]
147
+
137
148
  tasks.append(
138
149
  Task(
139
150
  name=task_dir,
@@ -143,15 +154,24 @@ class TaskManager(BaseManager):
143
154
  git_status=git_status,
144
155
  )
145
156
  )
157
+
146
158
  return tasks
147
159
 
148
160
  async def list_all(self):
149
161
  pool_manager = TaskPoolManager(self.coursedir)
150
162
  tasks = []
151
163
  pool_list = await pool_manager.list()
152
- for pool in pool_list:
153
- pool_tasks = await self.list(pool.name)
164
+
165
+ # Collect all coroutines
166
+ coroutines = [self.list(pool.name) for pool in pool_list]
167
+
168
+ # Run them concurrently
169
+ results = await asyncio.gather(*coroutines)
170
+
171
+ # Flatten the list of results
172
+ for pool_tasks in results:
154
173
  tasks.extend(pool_tasks)
174
+
155
175
  return tasks
156
176
 
157
177
  def copy(self, old_name: str, new_name: str, pool: str = ""):
@@ -61,13 +61,25 @@ class TaskPoolManager(BaseManager):
61
61
  if not os.path.exists(self.base_path):
62
62
  self.log.warning("The pool directory does not exist.")
63
63
  os.makedirs(self.base_path, exist_ok=True)
64
+
64
65
  pool_dirs = await asyncio.to_thread(self.listdir, self.base_path)
65
66
  tasks = []
67
+ coroutines = []
68
+
66
69
  for pool_dir in pool_dirs:
67
- n_tasks = await self.__get_n_tasks(pool_dir)
68
- is_repo = await asyncio.to_thread(
69
- is_version_controlled, os.path.join(self.base_path, pool_dir)
70
+ coroutines.append(self.__get_n_tasks(pool_dir))
71
+ coroutines.append(
72
+ asyncio.to_thread(
73
+ is_version_controlled, os.path.join(self.base_path, pool_dir)
74
+ )
70
75
  )
76
+
77
+ results = await asyncio.gather(*coroutines)
78
+
79
+ for i, pool_dir in enumerate(pool_dirs):
80
+ n_tasks = results[i * 2]
81
+ is_repo = results[i * 2 + 1]
82
+
71
83
  tasks.append(
72
84
  TaskPool(
73
85
  name=pool_dir,
@@ -75,4 +87,5 @@ class TaskPoolManager(BaseManager):
75
87
  is_repo=is_repo,
76
88
  )
77
89
  )
90
+
78
91
  return tasks
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "e2xauthoring",
3
- "version": "0.3.0-dev0",
3
+ "version": "0.3.0-dev1",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "e2xauthoring",
9
- "version": "0.3.0-dev0",
9
+ "version": "0.3.0-dev1",
10
10
  "hasInstallScript": true,
11
11
  "license": "MIT",
12
12
  "workspaces": [
@@ -24431,7 +24431,7 @@
24431
24431
  },
24432
24432
  "packages/api": {
24433
24433
  "name": "@e2xauthoring/api",
24434
- "version": "0.3.0-dev0",
24434
+ "version": "0.3.0-dev1",
24435
24435
  "license": "MIT",
24436
24436
  "devDependencies": {
24437
24437
  "webpack": "^5.73.0",
@@ -24440,9 +24440,9 @@
24440
24440
  },
24441
24441
  "packages/app": {
24442
24442
  "name": "@e2xauthoring/app",
24443
- "version": "0.3.0-dev0",
24443
+ "version": "0.3.0-dev1",
24444
24444
  "dependencies": {
24445
- "@e2xauthoring/api": "0.3.0-dev0",
24445
+ "@e2xauthoring/api": "0.3.0-dev1",
24446
24446
  "@emotion/react": "^11.10.0",
24447
24447
  "@emotion/styled": "^11.10.0",
24448
24448
  "@fontsource/roboto": "^4.5.8",
@@ -25836,7 +25836,7 @@
25836
25836
  "@e2xauthoring/app": {
25837
25837
  "version": "file:packages/app",
25838
25838
  "requires": {
25839
- "@e2xauthoring/api": "0.3.0-dev0",
25839
+ "@e2xauthoring/api": "0.3.0-dev1",
25840
25840
  "@emotion/react": "^11.10.0",
25841
25841
  "@emotion/styled": "^11.10.0",
25842
25842
  "@fontsource/roboto": "^4.5.8",
@@ -4,7 +4,7 @@
4
4
  "workspaces": [
5
5
  "packages/*"
6
6
  ],
7
- "version": "0.3.0-dev0",
7
+ "version": "0.3.0-dev1",
8
8
  "description": "An app for e2xgrader",
9
9
  "scripts": {
10
10
  "install": "lerna run bootstrap",
@@ -58,7 +58,7 @@ artifacts = [
58
58
  github_url = "https://github.com/Digiklausur/e2xauthoring/"
59
59
 
60
60
  [tool.tbump.version]
61
- current = "0.3.0-dev0"
61
+ current = "0.3.0-dev1"
62
62
 
63
63
  regex = '''
64
64
  (?P<major>\d+)
@@ -1 +0,0 @@
1
- __version__ = "0.3.0-dev0"