{"record":{"id":"425ea1c886142025","repo":"mlflow/mlflow","slug":"created-time-is-required-425ea1","errorCode":null,"errorMessage":"created_time is required","messagePattern":"created_time is required","errorType":"validation","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"mlflow/entities/evaluation_dataset.py","lineNumber":611,"sourceCode":"        })\n        if self.version is not None:\n            result[\"version\"] = self.version\n\n        result[\"records\"] = [record.to_dict() for record in self.records]\n\n        return result\n\n    @classmethod\n    def from_dict(cls, data: dict[str, Any]) -> \"EvaluationDataset\":\n        \"\"\"Create instance from dictionary representation.\"\"\"\n        if \"dataset_id\" not in data:\n            raise ValueError(\"dataset_id is required\")\n        if \"name\" not in data:\n            raise ValueError(\"name is required\")\n        if \"digest\" not in data:\n            raise ValueError(\"digest is required\")\n        if \"created_time\" not in data:\n            raise ValueError(\"created_time is required\")\n        if \"last_update_time\" not in data:\n            raise ValueError(\"last_update_time is required\")\n\n        dataset = cls(\n            dataset_id=data[\"dataset_id\"],\n            name=data[\"name\"],\n            digest=data[\"digest\"],\n            created_time=data[\"created_time\"],\n            last_update_time=data[\"last_update_time\"],\n            tags=data.get(\"tags\"),\n            schema=data.get(\"schema\"),\n            profile=data.get(\"profile\"),\n            created_by=data.get(\"created_by\"),\n            last_updated_by=data.get(\"last_updated_by\"),\n            version=data.get(\"version\"),\n        )\n        if \"experiment_ids\" in data:\n            dataset._experiment_ids = data[\"experiment_ids\"]","sourceCodeStart":593,"sourceCodeEnd":629,"githubUrl":"https://github.com/mlflow/mlflow/blob/6a27f2decc0b76eb1b54af31849784addb357dbc/mlflow/entities/evaluation_dataset.py#L593-L629","documentation":"EvaluationDataset.from_dict() validates that the input dictionary contains every required key before constructing the entity. This error means the 'created_time' key is absent from the dict passed to from_dict. The library requires it because a dataset cannot be reconstructed without its creation timestamp.","triggerScenarios":"Calling mlflow.entities.EvaluationDataset.from_dict(data) where data is a dict with dataset_id, name, digest but no 'created_time' key — e.g. a dict hand-assembled, filtered, or produced by an older server/API version that omitted the field.","commonSituations":"Deserializing datasets serialized by an older MLflow version before created_time was added; manually building the dict and forgetting the timestamp; stripping fields when logging payloads to JSON.","solutions":["Add 'created_time' (epoch milliseconds int) to the dict passed to from_dict.","If the source dict is stale/older format, re-fetch the dataset from the tracking server (MlflowClient.get_logged_model / dataset APIs) instead of deserializing manually.","If the timestamp is genuinely unknown, set it to a sensible default (e.g. int(time.time() * 1000)) before calling from_dict."],"exampleFix":"// before\nEvaluationDataset.from_dict({\"dataset_id\": d.id, \"name\": d.name, \"digest\": d.digest, \"last_update_time\": lu})\n// after\nEvaluationDataset.from_dict({\"dataset_id\": d.id, \"name\": d.name, \"digest\": d.digest, \"created_time\": d.created_time, \"last_update_time\": lu})","handlingStrategy":"validation","validationCode":"required = {\"dataset_id\", \"name\", \"digest\", \"created_time\", \"last_update_time\"}\nmissing = required - data.keys()\nif missing:\n    raise ValueError(f\"dict missing keys: {missing}\")","typeGuard":"def is_dataset_dict(d: object) -> bool:\n    return isinstance(d, dict) and {\"dataset_id\", \"name\", \"digest\", \"created_time\", \"last_update_time\"} <= d.keys()","tryCatchPattern":"try:\n    ds = EvaluationDataset.from_dict(data)\nexcept ValueError as e:\n    logger.error(\"malformed dataset payload: %s\", e)\n    ds = None","preventionTips":["Always serialize datasets via the entity's own to_dict rather than hand-building dicts","Keep client and server MLflow versions aligned so required fields match","Add schema checks on JSON payloads before deserialization in pipelines"],"tags":["python","deserialization","validation","evaluation-dataset"],"backgroundTag":"missing-required-field","analyzedSha":"6a27f2decc0b76eb1b54af31849784addb357dbc","analyzedAt":"2026-08-29T20:54:51.419Z","schemaVersion":2},"datasetVersion":"2026-08-29T22:17:34.462Z"}