{"record":{"id":"76cdef538365dfd3","repo":"microsoft/qlib","slug":"this-type-of-input-is-not-supported-76cdef","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/model/meta/dataset.py","lineNumber":66,"sourceCode":"                train_meta_tasks, test_meta_tasks = meta_dataset.prepare_tasks([\"train\", \"test\"])\n\n        Parameters\n        ----------\n        segments: Union[List[Text], Tuple[Text], Text]\n            the info to select data\n\n        Returns\n        -------\n        list:\n            A list of the prepared data of each meta-task for training the meta-model. For multiple segments [seg1, seg2, ... , segN], the returned list will be [[tasks in seg1], [tasks in seg2], ... , [tasks in segN]].\n            Each task is a meta task\n        \"\"\"\n        if isinstance(segments, (list, tuple)):\n            return [self._prepare_seg(seg) for seg in segments]\n        elif isinstance(segments, str):\n            return self._prepare_seg(segments)\n        else:\n            raise NotImplementedError(f\"This type of input is not supported\")\n\n    @abc.abstractmethod\n    def _prepare_seg(self, segment: Text):\n        \"\"\"\n        prepare a single segment of data for training data\n\n        Parameters\n        ----------\n        seg : Text\n            the name of the segment\n        \"\"\"\n","sourceCodeStart":48,"sourceCodeEnd":78,"githubUrl":"https://github.com/microsoft/qlib/blob/79633dd9506ea689e5400dea0197717b5b3d74b7/qlib/model/meta/dataset.py#L48-L78","documentation":"MetaDataset.prepare (qlib/model/meta/dataset.py:66) accepts segments either as a single segment name (str) or a list/tuple of segment names, dispatching to _prepare_seg. Any other type (None, dict, int, a segments object) raises NotImplementedError('This type of input is not supported'). This enforces that meta-task preparation is keyed by named segments defined in the task.","triggerScenarios":"Calling meta_dataset.prepare(segments) with None, a dict like {'train': (...), 'valid': (...)}, or a qlib segments tuple-of-tuples format instead of segment name strings; passing the full task object instead of segment names.","commonSituations":"Confusing the meta-dataset segments convention (segment name strings like 'train') with qlib's normal expression-based segments; migrating regular workflow code into the meta-learning workflow; passing None expecting all segments to be prepared.","solutions":["Pass a segment name string or list of segment names, e.g. prepare('train') or prepare(['train', 'valid'])","Confirm the segment names exist in the task template's dataset segments definition","If you need custom segment handling, subclass MetaDataset and implement _prepare_seg for your type"],"exampleFix":"# before\nmeta_dataset.prepare({'train': ('2008-01-01', '2014-12-31')})  # NotImplementedError\n\n# after\nmeta_dataset.prepare(['train', 'valid'])","handlingStrategy":"validation","validationCode":"if not isinstance(segments, (str, list, tuple)):\n    raise TypeError(f'segments must be str or list/tuple of str, got {type(segments)}')\nsegments = [segments] if isinstance(segments, str) else list(segments)","typeGuard":"def is_valid_segments(segments) -> bool:\n    return isinstance(segments, str) or (isinstance(segments, (list, tuple)) and all(isinstance(s, str) for s in segments))","tryCatchPattern":"try:\n    data = meta_dataset.prepare(segments)\nexcept NotImplementedError as e:\n    raise ValueError(\"pass segment names like 'train' or ['train','valid']\") from e","preventionTips":["Remember meta datasets take segment *names*, not date-range tuples","Validate segment names against the task template's segments keys"],"tags":["qlib","meta-learning","segments","not-implemented","dataset"],"backgroundTag":null,"analyzedSha":"79633dd9506ea689e5400dea0197717b5b3d74b7","analyzedAt":"2026-08-15T07:01:27.511Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}