{"record":{"id":"661097a4963b4c0f","repo":"microsoft/qlib","slug":"this-type-of-input-is-not-supported-661097","errorCode":null,"errorMessage":"This type of input is not supported","messagePattern":"This type of input is not supported","errorType":"exception","errorClass":"NotImplementedError","httpStatus":null,"severity":"error","filePath":"qlib/data/dataset/handler.py","lineNumber":603,"sourceCode":"        # data for inference\n        # 1) assign\n        _infer_df = _shared_df\n        if not self._is_proc_readonly(self.infer_processors):  # avoid modifying the original data\n            _infer_df = _infer_df.copy()\n        # 2) process\n        _infer_df = self._run_proc_l(_infer_df, self.infer_processors, with_fit=with_fit, check_for_infer=True)\n\n        self._infer = _infer_df\n\n        # data for learning\n        # 1) assign\n        if self.process_type == DataHandlerLP.PTYPE_I:\n            _learn_df = _shared_df\n        elif self.process_type == DataHandlerLP.PTYPE_A:\n            # based on `infer_df` and append the processor\n            _learn_df = _infer_df\n        else:\n            raise NotImplementedError(f\"This type of input is not supported\")\n        if not self._is_proc_readonly(self.learn_processors):  # avoid modifying the original  data\n            _learn_df = _learn_df.copy()\n        # 2) process\n        _learn_df = self._run_proc_l(_learn_df, self.learn_processors, with_fit=with_fit, check_for_infer=False)\n\n        self._learn = _learn_df\n\n        if self.drop_raw:\n            del self._data\n\n    def config(self, processor_kwargs: dict = None, **kwargs):\n        \"\"\"\n        configuration of data.\n        # what data to be loaded from data source\n\n        This method will be used when loading pickled handler from dataset.\n        The data will be initialized with different time range.\n","sourceCodeStart":585,"sourceCodeEnd":621,"githubUrl":"https://github.com/microsoft/qlib/blob/79633dd9506ea689e5400dea0197717b5b3d74b7/qlib/data/dataset/handler.py#L585-L621","documentation":"DataHandlerLP supports two process types: PTYPE_I ('independent', learn data processed independently from raw) and PTYPE_A ('append', learn processors appended on top of the infer output). Any other `process_type` value in the handler config reaches this NotImplementedError.","triggerScenarios":"Setting `process_type: 'i'`, `process_type: 0`, or a typo like `'append '` in data_handler_config; passing a string where the constants `DataHandlerLP.PTYPE_I`/`PTYPE_A` are expected.","commonSituations":"Hand-written YAML configs using lowercase/abbreviated values; configs migrated from other frameworks where a third mode existed.","solutions":["Use the constants: `process_type: append` or `process_type: independent` (exact strings 'append' and 'independent').","Prefer referencing `DataHandlerLP.PTYPE_A` / `DataHandlerLP.PTYPE_I` in Python configs."],"exampleFix":"# before\ndata_handler_config = {'process_type': 'seq', ...}\n\n# after\ndata_handler_config = {'process_type': DataHandlerLP.PTYPE_A, ...}  # 'append'\n# or 'independent'","handlingStrategy":"validation","validationCode":"from qlib.data.dataset.handler import DataHandlerLP\n\ndef valid_process_type(v) -> bool:\n    return v in (DataHandlerLP.PTYPE_A, DataHandlerLP.PTYPE_I)","typeGuard":"from qlib.data.dataset.handler import DataHandlerLP\n\ndef is_valid_process_type(v: str) -> bool:\n    return v in (DataHandlerLP.PTYPE_A, DataHandlerLP.PTYPE_I)","tryCatchPattern":null,"preventionTips":["Use DataHandlerLP.PTYPE_* constants instead of raw strings.","Validate handler config dicts against the constants at construction time."],"tags":["processors","config","data-handler"],"backgroundTag":null,"analyzedSha":"79633dd9506ea689e5400dea0197717b5b3d74b7","analyzedAt":"2026-08-15T07:01:27.511Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}