def _generate_schemas(app_config: AppConfig, event_name: str) -> dict: """ Generate all schemas for a given event, based on steps signatures """ module = find_event_handler(app_config=app_config, event_name=event_name) steps = extract_module_steps(module) schemas: dict = {} for _, step_info in steps: _update_step_schemas(schemas, step_info) step_info = extract_postprocess_handler(module) _update_step_schemas(schemas, step_info) step_info = extract_preprocess_handler(module) _update_step_schemas(schemas, step_info) return schemas
def load_modules(self, effective_events: Dict[str, EventDescriptor]): for event_name, event_info in effective_events.items(): base_event, _ = event_and_step(event_name) module = find_event_handler(app_config=self.app_config, event_name=base_event) steps = extract_module_steps(module) self.modules[base_event] = (module, False, steps) self.preprocess_handlers[base_event] = extract_preprocess_handler( module) self.postprocess_handlers[ base_event] = extract_postprocess_handler(module) setup_app_logger(module, app_config=self.app_config, name=base_event, event_info=event_info) self.steps[event_name] = effective_steps(event_name, steps)
def load_modules(self, effective_events: Dict[str, EventDescriptor]): """ Load and setup event implementation modules. Set logger and load settings. """ for event_name, event_info in effective_events.items(): base_event, _ = event_and_step(event_name) module = find_event_handler(app_config=self.app_config, event_name=base_event, event_info=event_info) steps = extract_module_steps(module) self.modules[base_event] = (module, False, steps) self.preprocess_handlers[base_event] = extract_preprocess_handler( module) self.postprocess_handlers[ base_event] = extract_postprocess_handler(module) event_settings = get_event_settings(self.settings, event_name) setup_app_logger(module, app_config=self.app_config, name=base_event, event_settings=event_settings) self.steps[event_name] = effective_steps(event_name, steps)
def test_extract_postprocess_handler(): impl = importlib.import_module('mock_app.mock_event') f1 = getattr(impl, '__postprocess__') pp_handler = extract_postprocess_handler(impl) assert pp_handler == (f1, str, str, False)