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

1from .base import BaseExtensionManager 

2from .utils import discover_nbextensions, get_nbextension_utils 

3 

4 

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"] 

14 

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 ) 

22 

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) 

31 

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) 

38 

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 ) 

53 

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 ) 

65 

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 )