ИНСТРУМЕНТЫ ИМПОРТА — обработка импорта Python
--------------------------------------

По состоянию на: 23 января 2026 г.
Путь: docs/help/tools/imports.txt

ОПИСАНИЕ
------------
Инструменты для диагностики и организации импорта Python:
  - Найти проблемы с импортом (отсутствующие, циклические, неиспользованные)
  - Сортировка и очистка импорта (совместимость с PEP8)

Общие проблемы, которые решают эти инструменты:
  - «ModuleNotFoundError» / «Ошибка импорта»
  - Круговой импорт (А импортирует Б, Б импортирует А)
  - Хаотичный порядок импорта
  - Двойной импорт
  - Импорт в середине кода, а не в начале

ДИАГНОСТИКА ИМПОРТА: c_import_diagnose
----------------------------------
Систематический анализ проблем импорта.

ФУНКЦИИ:
  - Импортируйте отдельные модули изолированно.
  - Меняйте порядок импорта
  - Обнаружение циклического импорта
  - Разобрать __init__.py
  - Временные тесты с задержками
  - Найдите точку падения

 ОСНОВНЫЕ КОМАНДЫ:

  # Анализ проекта
  bach c_import_diagnose projekt/src/

  # С выводом JSON
  bach c_import_diagnose projekt/src/ --json

  # Тестирование отдельных модулей
  bach c_import_diagnose . --modules core.app:App,gui.main:MainWindow

ОПЦИИ:
  --json Вывод JSON (машиночитаемый)
  --modules M1:C1,M2:C2 Конкретные модули:Тестовые классы

Пример вывода:
  === ИМПОРТНАЯ ДИАГНОСТИКА ===

  [1/5] Тестирование отдельных модулей...
    [ОК] core.app.App
    [FAIL] gui.main.MainWindow -> ImportError: ни один модуль с именем «отсутствует»

  [2/5] Проверьте циклический импорт...
    [ПРЕДУПРЕЖДЕНИЕ] core.utils -> core.app -> core.utils (Обведите!)

  [3/5] Анализ __init__.py...
    [ОК] core/__init__.py
    [ОТСУТСТВУЕТ] gui/__init__.py

  === РЕКОМЕНДАЦИИ ===
  1. Установите отсутствующий модуль «отсутствует»
  2. Решите проблему циклического импорта core.utils <-> core.app.
  3. Создайте gui/__init__.py

ОРГАНИЗАТОР ИМПОРТА: c_import_organizer
------------------------------------
Сортирует и очищает импортированные файлы Python в соответствии с PEP8.

ФУНКЦИИ:
  - Собрать весь импорт в начале файла
  - Удалить дубликаты
  - Сортировать по алфавиту (сначала импортировать, затем из)
  - Очистка нескольких пустых строк

ОСНОВНЫЕ КОМАНДЫ:

  # Организовать файл
  bach c_import_organizer script.py

  # Просто проверьте без изменений
  bach c_import_organizer script.py --dry-run

  # Вывод JSON
  bach c_import_organizer script.py --json

  # Читаем со стандартного ввода
  кот script.py | bach c_import_organizer --stdin

ОПЦИИ:
  --dry-run Только показывать, не изменять
  --json Вывод JSON
  --stdin Считать код со стандартного ввода

ДО/ПОСЛЕ ПРИМЕР:

  ДО:
  ---------------------
  импортировать ОС

  Защиту Фу():
      из пути импорта pathlib
      пройти

  импортировать систему
  от ввода списка импорта
  импортировать ОС # дубликат!
  ----------------------

  ПОСЛЕ:
  ---------------------
  импортировать ОС
  импортировать систему
  из пути импорта pathlib
  от ввода списка импорта

  Защиту Фу():
      пройти
  ---------------------

ТИПИЧНЫЕ РАБОЧИЕ ПРОЦЕССЫ
------------------

1. ОТЛАДКА «Ошибка импорта».
   Проанализируйте проект, чтобы найти точку сбоя:

   bach c_import_diagnose projekt/src/ --json

   Тогда следуйте рекомендациям.

2. НАЙТИ КРУГОВОЙ ИМПОРТ
   Когда модули импортируют друг друга:

   bach c_import_diagnose projekt/src/

   Вывод показывает: A -> B -> A (компас!)

   Решение: передать общие зависимости третьему модулю.

3. ПЕРЕД ПРОВЕРКОЙ КОДА
   Очистите импорт перед проверкой кода:

   bach c_import_organizer script.py

   Или для всего проекта:
   для f в *.py; сделать бах c_import_organizer "$f"; готово

4. ПОСЛЕ РЕФАКТОРИНГА
   После основного преобразования проверьте импорт:

   # Сначала проведите диагностику
   bach c_import_diagnose src/

   # Затем очистим
   для f в src/*.py; сделать бах c_import_organizer "$f"; готово

5. СОЗДАТЬ НОВЫЙ ПРОЕКТ
   __init__.py Проверьте файлы:

   bach c_import_diagnose mein_paket/

   Показывает отсутствующие файлы __init__.py.

ПОРЯДОК ИМПОРТА PEP8
-----------------------
C_import_organizer сортирует в соответствии со стандартом PEP8:

  1. Стандартная библиотека (импорт ОС, импорт системы)
  2. Третья сторона (запросы на импорт, импорт numpy)
  3. Локальный импорт (из модуля . import)

Внутри каждой группы: сортируется в алфавитном порядке.

CONTEXT INJECTOR
----------------
ContextInjector распознает ключевые слова и рекомендует следующие инструменты:

  «Сортировать импорт» -> bach c_import_organizer <файл>
  «проблема с импортом» -> bach c_import_diagnose <проект>
  «импорт отсутствует» -> bach c_import_diagnose <проект>

ИНТЕГРАЦИЯ С ДРУГИМИ ИНСТРУМЕНТАМИ
-----------------------------
Объедините с python_cli_editor для получения полного изображения:

  # Показать импорт (сгруппированный)
  bach python_cli_editor script.py --imports

  # Затем организуйте
  bach c_import_organizer script.py

СМОТРИТЕ ТАКЖЕ
----------
  bach --help tools/python_editing   Редактируйте файлы Python
  bach --help tools/code_quality     Качество кода (кодирование и т. д.)
  bach python_cli_editor --help      Покажите импорт с помощью --imports
