Source code for grader_convert.converters.generate_assignment



from sys import path
from textwrap import dedent
from typing import Any

from grader_convert.converters.base import BaseConverter
from grader_convert.converters.baseapp import ConverterApp
from grader_convert.preprocessors import (
    CheckCellMetadata,
    ClearHiddenTests,
    ClearMarkScheme,
    ClearOutput,
    ClearSolutions,
    ComputeChecksums,
    IncludeHeaderFooter,
    LockCells,
    SaveCells,
)
from traitlets import Bool, List, default
from traitlets.config.loader import Config


[docs]class GenerateAssignment(BaseConverter): create_assignment = Bool( True, help=dedent( """ Whether to create the assignment at runtime if it does not already exist. """ ), ).tag(config=True) @default("permissions") def _permissions_default(self) -> int: return 664 preprocessors = List( [ IncludeHeaderFooter, LockCells, ClearSolutions, ClearOutput, CheckCellMetadata, ComputeChecksums, SaveCells, ClearHiddenTests, ClearMarkScheme, ComputeChecksums, CheckCellMetadata, ] ).tag(config=True) # NB: ClearHiddenTests must come after ComputeChecksums and SaveCells. # ComputerChecksums must come again after ClearHiddenTests. def _load_config(self, cfg: Config, **kwargs: Any) -> None: super(GenerateAssignment, self)._load_config(cfg, **kwargs) def __init__( self, input_dir: str, output_dir: str, file_pattern: str, **kwargs: Any ) -> None: super(GenerateAssignment, self).__init__( input_dir, output_dir, file_pattern, **kwargs ) self.force = True # always overwrite generated assignments
[docs] def start(self) -> None: super(GenerateAssignment, self).start()
[docs]class GenerateAssignmentApp(ConverterApp): version = ConverterApp.__version__
[docs] def start(self): GenerateAssignment( input_dir=self.input_directory, output_dir=self.output_directory, file_pattern=self.file_pattern, config=self.config ).start()