
Headergen是一种基于工具的方法,可通过在笔记本中自动创建叙事结构来增强基于Python的Jupyter笔记本电脑的理解和导航。
数据科学家通过先准备数据,然后提取关键功能,然后创建和训练模型来构建基于ML的解决方案笔记本。 Headergen利用ML笔记本的隐性叙事结构来添加结构标头作为注释。

pip install headergen
自动化标头插入:通过针对机器学习操作的分类法,Headergen用相关的Markdown标头注释了代码单元。
功能呼叫分类法:有条不紊地根据机器学习操作分类法对函数呼叫进行分类。
高级呼叫图分析:通过流敏性和外部库返回型分辨率增强PYCG框架。
外部库中的精度:使用Typestubs从外部库中准确解决函数返回类型的能力。
语法模式匹配:采用类型数据进行模式匹配。
generate命令:在当前目录中生成Headergen注释的笔记本。请注意,将首次运行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
这将启动在主机0.0.0.0和端口54068上侦听Uvicorn服务器。
此端点将指定笔记本或Python脚本的分析作为JSON响应,其中包含分析数据,例如Cell_callsites和Block_Mapping。
示例使用卷发:
curl "http://0.0.0.0:54068/get_analysis_notebook?file_path=/absolute/path/to/your/file.ipynb"
此端点将指定笔记本或Python脚本的类型信息作为JSON响应。
示例使用卷发:
curl "http://0.0.0.0:54068/get_types?file_path=/absolute/path/to/your/file.ipynb"
该端点根据分析返回带注释的笔记本。响应将是文件下载。
示例使用卷发:
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 :微观基准callsites-jupyternb-real-world-benchmark :现实世界基准evaluation :包含手动标题注释和用户研究结果framework_models :函数调用ML分类法映射typestub-database :ML库的类型-STBheadergen :Headergen的源代码pycg_extended :扩展PYCG的源代码headergen-extension :HG的Jupyter笔记本插件headergen_output :存储了从码头容器中生成的笔记本的文件夹。 获取源文件
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中。
微观基准(生成带有结果的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
微观基准(生成带有结果的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
该回购包含在2023年Saner会议上发表的“通过静态分析增强理解和导航的代码” 。