修改blackd源码,实现 black + isort
目的
在pycharm中使用isort格式化python import代码很不方便,写代码时blackConnect插件使用http请求调用blackd服务进行格式化代码,在 blackd 服务中添加 isort 格式化代码的逻辑来达到 black + isort的 效果。
同样原理,使用blackd的格式化方式都可以根据本教程实现,未使用blackd的话也可以参考该思路修改black源码实现。
主要逻辑
- 本机clone black
- 修改blackd中返回相应前的结果代码,使用isort格式化代码
- 使用源码启动blackd进程
具体步骤
- 打开github的black项目,fork,在电脑上clone项目。
也可以直接clone black项目到本机,主要只是为了使用black项目源码
- 根据教程,安装依赖,主要步骤
开发black项目建议使用Python 3.12,可以看下原文:
We now have a scripts/release.py script to help with cutting the release PRs.
python3 scripts/release.py --help is your friend.
release.py has only been tested in Python 3.12 (so get with the times 😄)
这里省略了创建虚拟环境的步骤,按照自己的习惯来
pip install -r test_requirements.txt
pip install -e .[d]
pre-commit install
- 安装其他依赖
pip install isort aiohttp
- 修改代码文件
src/blackd/__init__.py:179
,在return web.Response
前加入isort格式化代码的逻辑:
multi_line_output 是isort的多行代码换行方式
记得在代码文件开始位置import isort
formatted_str = isort.code(formatted_str,profile="black",line_length=line_length,multi_line_output=3,)
- 使用源码启动blackd进程,在项目目录中执行以下命令
python -m src.blackd
其他
后续打包步骤可以参考black文档中使用Github Action打包:cutting-a-release