@@ -415,24 +415,28 @@ def get_task(
415415 if not isinstance (task_id , int ):
416416 raise TypeError (f"Task id should be integer, is { type (task_id )} " )
417417
418- cache_key_dir = openml .utils ._create_cache_directory_for_id (TASKS_CACHE_DIR_NAME , task_id )
419- tid_cache_dir = cache_key_dir / str (task_id )
420- tid_cache_dir_existed = tid_cache_dir .exists ()
418+ task_cache_directory = openml .utils ._create_cache_directory_for_id (
419+ TASKS_CACHE_DIR_NAME , task_id
420+ )
421+ task_cache_directory_existed = task_cache_directory .exists ()
421422 try :
422423 task = _get_task_description (task_id )
423424 dataset = get_dataset (task .dataset_id , ** get_dataset_kwargs )
424425 # List of class labels available in dataset description
425426 # Including class labels as part of task meta data handles
426427 # the case where data download was initially disabled
427428 if isinstance (task , (OpenMLClassificationTask , OpenMLLearningCurveTask )):
429+ assert task .target_name is not None , (
430+ "Supervised tasks must define a target feature before retrieving class labels."
431+ )
428432 task .class_labels = dataset .retrieve_class_labels (task .target_name )
429433 # Clustering tasks do not have class labels
430434 # and do not offer download_split
431435 if download_splits and isinstance (task , OpenMLSupervisedTask ):
432436 task .download_split ()
433437 except Exception as e :
434- if not tid_cache_dir_existed :
435- openml .utils ._remove_cache_dir_for_id (TASKS_CACHE_DIR_NAME , tid_cache_dir )
438+ if not task_cache_directory_existed :
439+ openml .utils ._remove_cache_dir_for_id (TASKS_CACHE_DIR_NAME , task_cache_directory )
436440 raise e
437441
438442 return task
@@ -598,6 +602,7 @@ def create_task(
598602 )
599603
600604 return task_cls (
605+ task_id = None ,
601606 task_type_id = task_type ,
602607 task_type = "None" , # TODO: refactor to get task type string from ID.
603608 data_set_id = dataset_id ,
0 commit comments