Coverage for e2xgrader/extensions/nbextensions.py: 89%
45 statements
« prev ^ index » next coverage.py v7.4.2, created at 2024-03-14 13:22 +0100
« prev ^ index » next coverage.py v7.4.2, created at 2024-03-14 13:22 +0100
1from .base import BaseExtensionManager
2from .utils import discover_nbextensions, get_nbextension_utils
5class NbExtensionManager(BaseExtensionManager):
6 def __init__(self):
7 super().__init__()
8 self.utils = get_nbextension_utils()
9 if self.utils is None:
10 self.log.warn(
11 "Neither notebook<7 or nbclassic found. Won't install nbextensions."
12 )
13 self.modules = ["e2xgrader", "nbgrader"]
15 def enable_nbextensions(
16 self, mode: str, sys_prefix: bool = True, user: bool = False
17 ) -> None:
18 for nbextension in discover_nbextensions(mode):
19 self.utils.enable_nbextension(
20 **nbextension, sys_prefix=sys_prefix, user=user
21 )
23 def deactivate(self, sys_prefix: bool = True, user: bool = False) -> None:
24 if self.utils is None:
25 return
26 for module in self.modules:
27 kwargs = dict(module=module, sys_prefix=sys_prefix, user=user)
28 self.utils.install_nbextension_python(**kwargs)
29 self.utils.disable_nbextension_python(**kwargs)
30 self.utils.uninstall_nbextension_python(**kwargs)
32 def activate_common(self, sys_prefix: bool = True, user: bool = False) -> None:
33 self.deactivate(sys_prefix=sys_prefix, user=user)
34 for module in self.modules:
35 kwargs = dict(module=module, sys_prefix=sys_prefix, user=user)
36 self.utils.install_nbextension_python(**kwargs)
37 self.utils.disable_nbextension_python(**kwargs)
39 def activate_teacher(self, sys_prefix: bool = True, user: bool = False) -> None:
40 if self.utils is None:
41 return
42 self.activate_common(sys_prefix=sys_prefix, user=user)
43 self.enable_nbextensions(mode="teacher", sys_prefix=sys_prefix, user=user)
44 self.utils.enable_nbextension_python(
45 "nbgrader", sys_prefix=sys_prefix, user=user
46 )
47 self.utils.disable_nbextension(
48 require="create_assignment/main",
49 section="notebook",
50 sys_prefix=sys_prefix,
51 user=user,
52 )
54 def activate_student(self, sys_prefix: bool = True, user: bool = False) -> None:
55 if self.utils is None:
56 return
57 self.activate_common(sys_prefix=sys_prefix, user=user)
58 self.enable_nbextensions(mode="student", sys_prefix=sys_prefix, user=user)
59 self.utils.enable_nbextension(
60 require="assignment_list/main",
61 section="tree",
62 sys_prefix=sys_prefix,
63 user=user,
64 )
66 def activate_student_exam(
67 self, sys_prefix: bool = True, user: bool = False
68 ) -> None:
69 if self.utils is None:
70 return
71 self.activate_common(sys_prefix=sys_prefix, user=user)
72 self.enable_nbextensions(mode="student_exam", sys_prefix=sys_prefix, user=user)
73 self.utils.enable_nbextension(
74 require="assignment_list/main",
75 section="tree",
76 sys_prefix=sys_prefix,
77 user=user,
78 )