{"record":{"id":"7d538242be9e06c7","repo":"tensorflow/models","slug":"no-class-subfolders-found-under-train-dir","errorCode":null,"errorMessage":"No class subfolders found under: {train_dir}","messagePattern":"No class subfolders found under: (.+?)","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"error","filePath":"official/projects/waste_identification_ml/data_generation/auto_labeler_pipeline/augment_train_split.py","lineNumber":314,"sourceCode":"\ndef discover_class_folders(train_dir: str) -> list[tuple[str, str]]:\n  \"\"\"Returns the sorted list of class subfolders under the train split.\n\n  Args:\n      train_dir: Path to the train split folder.\n\n  Returns:\n      A sorted list of ``(class_name, class_path)`` tuples.\n\n  Raises:\n      ValueError: If no class subfolders are found.\n  \"\"\"\n  class_entries = sorted(\n      [entry for entry in os.scandir(train_dir) if entry.is_dir()],\n      key=lambda entry: entry.name,\n  )\n  if not class_entries:\n    raise ValueError(f\"No class subfolders found under: {train_dir}\")\n  return [(entry.name, entry.path) for entry in class_entries]\n\n\ndef discover_target_folders(\n    train_dir: str, crop_variants: tuple[str, ...]\n) -> list[tuple[str, str]]:\n  \"\"\"Returns the sorted list of target subfolders containing images to augment.\n\n  When ``crop_variants`` has a single entry, images are stored directly in\n  each class folder under ``train_dir``. When ``crop_variants`` has multiple\n  entries, each class folder contains one subdirectory per variant.\n\n  Args:\n      train_dir: Path to the train split folder.\n      crop_variants: Tuple of active crop variants from the config.\n\n  Returns:\n      A sorted list of ``(target_name, target_path)`` tuples.","sourceCodeStart":296,"sourceCodeEnd":332,"githubUrl":"https://github.com/tensorflow/models/blob/e006f5f0d534913e49c1f1dae87364039fa607e2/official/projects/waste_identification_ml/data_generation/auto_labeler_pipeline/augment_train_split.py#L296-L332","documentation":"Error \"No class subfolders found under: {train_dir}\" thrown in tensorflow/models.","triggerScenarios":"Thrown at official/projects/waste_identification_ml/data_generation/auto_labeler_pipeline/augment_train_split.py:314 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"e006f5f0d534913e49c1f1dae87364039fa607e2","analyzedAt":"2026-08-24T14:09:15.576Z","schemaVersion":2},"datasetVersion":"2026-08-24T17:17:21.512Z"}