"""Borra una nota de Obsidian (.md) del disco. Funcion impura: elimina un archivo del sistema de archivos. Por seguridad solo borra archivos, nunca directorios. """ import os def delete_obsidian_note(path: str) -> bool: """Borra un archivo de nota Markdown de Obsidian. Args: path: ruta al archivo .md a borrar. Returns: True si el archivo fue borrado correctamente. Raises: FileNotFoundError: si el archivo no existe. IsADirectoryError: si la ruta apunta a un directorio (nunca se borra un directorio, solo un archivo concreto). OSError: si el borrado falla por otro motivo de I/O. """ if not os.path.exists(path): raise FileNotFoundError(f"obsidian note not found: {path}") if os.path.isdir(path): raise IsADirectoryError( f"refusing to delete a directory, only single files: {path}" ) os.remove(path) return True if __name__ == "__main__": import tempfile fd, tmp = tempfile.mkstemp(suffix=".md") os.close(fd) assert delete_obsidian_note(tmp) is True assert not os.path.exists(tmp) try: delete_obsidian_note(tmp) raise AssertionError("debio lanzar FileNotFoundError") except FileNotFoundError: pass print("delete_obsidian_note smoke OK")