
Headerderen-это инструмент, основанный на инструментах, чтобы улучшить понимание и навигацию без документированных ноутбуков на основе питона путем автоматического создания повествовательной структуры в ноутбуке.
Ученые по данным создают ноутбук на основе ML, сначала подготовив данные, затем извлекая ключевые функции, а затем создавая и обучающие модель. Наголовье использует неявную повествовательную структуру ноутбука ML, чтобы добавить структурные заголовки в качестве аннотаций в ноутбук.

pip install headergen
Автоматизированная вставка заголовка разметки: через таксономию для операций по производству машинного обучения Headergen аннотирует кодовые ячейки с соответствующими заголовками маркировки.
Таксономия по вызову функции: методически классифицирует вызовы функций на основе таксономии операций машинного обучения.
Анализ усовершенствованного графа вызовов: улучшает структуру PYCG с чувствительностью к потоку и разрешением обратного типа внешней библиотеки.
Точность во внешних библиотеках: Возможность точно разрешить возвратные типы функций из внешних библиотек с помощью TypeStubs.
Синтаксис -схема Сопоставление: использует данные типа для сопоставления шаблонов.
generate команду:Создайте аннотированную ноутбука Headergen в текущем каталоге. Обратите внимание, что кэши будут созданы в первый раз, когда запускаются головные заливы.
headergen generate -i /path/to/input.ipynbСоздайте файл метаданных JSON, который включает в себя различную информацию о анализе, используйте флаг --JSON_OUTPUT или -J.
headergen generate -i /path/to/input.ipynb -o /path/to/output/ -jtypes :Запустите вывод типа в информации о типе файла и извлечения.
headergen types -i /path/to/input.ipynbСгенерируйте файл JSON с информацией типа, используйте флаг --JSON_OUTPUT или -J.
headergen types -i /path/to/input.ipynb -o /path/to/output/ -jserver :Запуск сервера прост:
headergen server
Это запустит сервер Uvicorn, прослушивающий хост 0.0.0.0 и порт 54068.
Эта конечная точка возвращает анализ указанного ноутбука или сценария Python в качестве ответа JSON, содержащего данные анализа, такие как Cell_CallSites и Block_Maping.
Пример с использованием curl:
curl "http://0.0.0.0:54068/get_analysis_notebook?file_path=/absolute/path/to/your/file.ipynb"
Эта конечная точка возвращает информацию типа указанного ноутбука или сценария Python в качестве ответа JSON.
Пример с использованием curl:
curl "http://0.0.0.0:54068/get_types?file_path=/absolute/path/to/your/file.ipynb"
Эта конечная точка возвращает аннотированную ноутбук на основе анализа. Ответ будет загрузкой файла.
Пример с использованием curl:
curl "http://0.0.0.0:54068/generate_annotated_notebook?file_path=/absolute/path/to/your/file.ipynb" --output annotated_file.ipynb
callsites-jupyternb-micro-benchmark : micro Bendchmarkcallsites-jupyternb-real-world-benchmark : реальный эталонevaluation : содержит ручную аннотацию заголовка и результаты исследования пользователяframework_models : функции вызовы на картирование таксономии MLtypestub-database : Type-STB для библиотек MLheadergen : исходный код головного заходаpycg_extended : исходный код расширенного pycgheadergen-extension : плагин для ноутбуков Jupyter для HGheadergen_output : папка, где хранятся сгенерированные ноутбуки из контейнера Docker Получите исходные файлы
git clone --recursive
git submodule update --init --recursive
git pull --recurse-submodules
Linux
docker build -t headergen .
docker run -v {$PWD}/headergen_output:/headergen_output -it headergen bash
Окна
docker build -t headergen .
docker run -v "%cd%"/headergen_output:/headergen_output -it headergen bash
Вывод, сгенерированный из следующих команд, таких как аннотированные ноутбуки, отчеты, вызовы, заголовки и т. Д., Сохранены в локальной папке headergen_output после выполнения следующих команд.
Micro Benchmark (генерирует файл CSV с результатами)
make ROOT_PATH=/app/HeaderGen microbench
Цельный эталон (генерирует аннотированные ноутбуки и файл CSV, которые воспроизводят таблицу 2)
make ROOT_PATH=/app/HeaderGen realworldbench
Оба теста
make ROOT_PATH=/app/HeaderGen all
Очистить сгенерированный выход
make clean
Получите исходные файлы
git clone --recursive
git submodule update --init --recursive
git pull --recurse-submodules
Очистить кеш, если существует
rm framework_models/models_cache.pickle
rm pycg_extended/machinery/pytd_cache.pickle
Настройка venv и зависимости с помощью сценария setup.sh
./setup.sh -i
Micro Benchmark (генерирует файл CSV с результатами)
make ROOT_PATH=<path to repo root> microbench
Цельный эталон (генерирует аннотированные ноутбуки и файл CSV, которые воспроизводят таблицу 2)
make ROOT_PATH=<path to repo root> realworldbench
Оба теста
make ROOT_PATH=<path to repo root> all
Очистить сгенерированный выход
make clean
Этот репо содержит код для статьи «Улучшение понимания и навигации в ноутбуках Юпитера со статическим анализом», опубликованной на Saner Conference 2023.