проблема 
Local variable 'search_criteria' might be referenced before assignment

import logging

from pywinauto.application import Application
from pywinauto.findwindows import ElementNotFoundError
from Win.settings.config import TARGET_ELEMENT_CONFIG

logger = logging.getLogger(__name__)

def find_target_process_and_window():
    logger.debug("main_app.find_target_process_and_window Вызов")

    # 1. Получаем настройки из загруженного конфига
    proc_name = TARGET_ELEMENT_CONFIG["process_name"]
    main_title = TARGET_ELEMENT_CONFIG["main_window_title"]

    if not proc_name or not main_title:
        logger.error("Целевой элемент не настроен. Пожалуйста, используйте Настройки.")
        return None, None, None, None

    # 2. Подключаемся к приложению
    try:
        app = Application(backend="uia").connect(path=proc_name, timeout=5)
        main_win = app.window(title_re=f".*{main_title}.*")
        main_win.wait('ready', timeout=10)
        pid = main_win.process_id()
        logger.info(f"Найдено главное окно: '{main_win.window_text()}', PID={pid}")
    except (ElementNotFoundError, RuntimeError) as e:
        logger.warning(f"Главное окно '{main_title}' не найдено или не отвечает: {e}. Попытка позже.")
        return None, None, None, None

    # 3. Ищем целевое ПОЛЕ ВВОДА
    field_criteria_config = TARGET_ELEMENT_CONFIG.get("search_criteria", {})
    active_field_criteria = {k: v for k, v in field_criteria_config.items() if v}
    target_element = None # Инициализируем

    if not active_field_criteria:
        logger.error("В конфиге не заданы критерии поиска для целевого поля ввода.")
    else:
        try:
            search_criteria = {
                "auto_id": active_field_criteria.get("automation_id"),
                "title": active_field_criteria.get("title"),
                "class_name": active_field_criteria.get("class_name")
            }

            target_element = main_win.child_window(**search_criteria)
            target_element.wait('exists', timeout=5)
            logger.info(f"Найдено целевое поле с критериями {search_criteria}: HWND={target_element.handle}")
        except ElementNotFoundError:
            logger.warning(f"Не найдено целевое поле с критериями: {search_criteria}. Попытка позже.")
            # Не выходим, возможно, кнопка найдется, а поле появится позже

    # 4. Ищем целевую КНОПКУ
    button_criteria_config = TARGET_ELEMENT_CONFIG.get("button_search_criteria", {})
    active_button_criteria = {k: v for k, v in button_criteria_config.items() if v}
    target_button = None # Инициализируем

    if not active_button_criteria:
        logger.error("В конфиге не заданы критерии поиска для целевой кнопки.")
    else:
        try:
            button_criteria = {
                "auto_id": active_button_criteria.get("automation_id"),
                "title": active_button_criteria.get("title"),
                "class_name": active_button_criteria.get("class_name")
            }

            target_button = main_win.child_window(**button_criteria)
            target_button.wait('exists', timeout=5)
            logger.info(f"Найдена целевая кнопка с критериями {button_criteria}: HWND={target_button.handle}")
        except ElementNotFoundError:
            logger.warning(f"Не найдена целевая кнопка с критериями: {button_criteria}. Попытка позже.")

    # Возвращаем все, что удалось найти
    return main_win, target_element, target_button, pid