Repository: topoteretes/cognee
File: cognee/tasks/ingestion/data_item_to_text_file.py (Python)

Code before:

        # data is local file path
        elif parsed_url.scheme == "file":
            if settings.accept_local_file_path:
                loader = get_loader_engine()
                return await loader.load_file(data_item_path, preferred_loaders), loader.get_loader(
                    data_item_path, preferred_loaders
                )
            else:
                raise IngestionError(message="Local files are not accepted.")

        # data is an absolute file path
        elif data_item_path.startswith("/") or (
            os.name == "nt" and len(data_item_path) > 1 and data_item_path[1] == ":"
        ):
            # Handle both Unix absolute paths (/path) and Windows absolute paths (C:\path)
            if settings.accept_local_file_path:
                loader = get_loader_engine()
                return await loader.load_file(data_item_path, preferred_loaders), loader.get_loader(
                    data_item_path, preferred_loaders
                )
            else:
                raise IngestionError(message="Local files are not accepted.")

        # data is a relative file path (e.g., "file.json", "data/file.txt")
        else:
            # This is a relative file path - check if it exists and can be loaded
            if settings.accept_local_file_path:
                loader = get_loader_engine()
                return await loader.load_file(data_item_path, preferred_loaders), loader.get_loader(
                    data_item_path, preferred_loaders
                )
            else:
                raise IngestionError(message="Local files are not accepted.")

    # data is not a supported type
    raise IngestionError(message=f"Data type not supported: {type(data_item_path)}")


Review comment (suggestion):
Right now this `else` catches anything not handled above (including e.g. `http://`, `file://`).
Maybe we make this explicitly about relative paths like this:
`elif parsed_url.scheme == "" and not Path(data_item_path).is_absolute():`

Code after:

        # data is local file path
        elif parsed_url.scheme == "file":
            if settings.accept_local_file_path:
                loader = get_loader_engine()
                return await loader.load_file(data_item_path, preferred_loaders), loader.get_loader(
                    data_item_path, preferred_loaders
                )
            else:
                raise IngestionError(message="Local files are not accepted.")

        # data is an absolute file path
        elif data_item_path.startswith("/") or (
            os.name == "nt" and len(data_item_path) > 1 and data_item_path[1] == ":"
        ):
            # Handle both Unix absolute paths (/path) and Windows absolute paths (C:\path)
            if settings.accept_local_file_path:
                loader = get_loader_engine()
                return await loader.load_file(data_item_path, preferred_loaders), loader.get_loader(
                    data_item_path, preferred_loaders
                )
            else:
                raise IngestionError(message="Local files are not accepted.")

    # data is not a supported type
    raise IngestionError(message=f"Data type not supported: {type(data_item_path)}")