当前位置: 首页 > news >正文

修改blackd源码,实现 black + isort

目的

在pycharm中使用isort格式化python import代码很不方便,写代码时blackConnect插件使用http请求调用blackd服务进行格式化代码,在 blackd 服务中添加 isort 格式化代码的逻辑来达到 black + isort的 效果

同样原理,使用blackd的格式化方式都可以根据本教程实现,未使用blackd的话也可以参考该思路修改black源码实现。

主要逻辑

  1. 本机clone black
  2. 修改blackd中返回相应前的结果代码,使用isort格式化代码
  3. 使用源码启动blackd进程

具体步骤

  1. 打开github的black项目,fork,在电脑上clone项目。

也可以直接clone black项目到本机,主要只是为了使用black项目源码

  1. 根据教程,安装依赖,主要步骤

开发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
  1. 安装其他依赖
pip install isort aiohttp
  1. 修改代码文件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,)
  1. 使用源码启动blackd进程,在项目目录中执行以下命令
python -m src.blackd

其他

后续打包步骤可以参考black文档中使用Github Action打包:cutting-a-release

相关文章:

  • 银行测试:第三方支付平台业务流,功能/性能/安全测试方法
  • 最新国内可用使用GPT4.0,GPT语音对话,Midjourney绘画,DALL-E3文生图
  • MySQL基本操作 DDL DML DQL三大操作介绍
  • vue打包内存问题解决办法<--- Last few GCs ---><--- JS stacktrace --->
  • linux驱动的学习 驱动开发初识
  • 命令执行 [SWPUCTF 2021 新生赛]babyrce
  • 服务器直接配置免密登录
  • 你想改win11系统中窗口、菜单等的字体? 微软不想让你改
  • 环境搭建及源码运行_java环境搭建_idea版本下载及安装
  • flutter自定义地图Marker完美展示图片
  • springboot(ssm电商应用系统 在线购物系统Java系统
  • Java 栈和队列的交互实现
  • Vue3使用 xx UI解决布局高度自适应
  • 机器视觉系统选型-高图像精度
  • 旅游景区项目信息化建设运营方案:PPT47页,附下载
  • android 一些 utils
  • Asm.js的简单介绍
  • axios请求、和返回数据拦截,统一请求报错提示_012
  • CSS实用技巧干货
  • Docker容器管理
  • LintCode 31. partitionArray 数组划分
  • Python代码面试必读 - Data Structures and Algorithms in Python
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • 浮现式设计
  • 基于 Babel 的 npm 包最小化设置
  • 聊聊sentinel的DegradeSlot
  • 如何实现 font-size 的响应式
  • 使用SAX解析XML
  • 携程小程序初体验
  • 与 ConTeXt MkIV 官方文档的接驳
  • zabbix3.2监控linux磁盘IO
  • (12)目标检测_SSD基于pytorch搭建代码
  • (附源码)计算机毕业设计ssm本地美食推荐平台
  • (四)图像的%2线性拉伸
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net framework 4.0中如何 输出 form 的name属性。
  • .Net Web窗口页属性
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET/C# 利用 Walterlv.WeakEvents 高性能地中转一个自定义的弱事件(可让任意 CLR 事件成为弱事件)
  • .Net程序猿乐Android发展---(10)框架布局FrameLayout
  • .Net各种迷惑命名解释
  • .NET企业级应用架构设计系列之应用服务器
  • .NET设计模式(8):适配器模式(Adapter Pattern)
  • .net下简单快捷的数值高低位切换
  • /etc/shadow字段详解
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @31省区市高考时间表来了,祝考试成功
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [AIGC codze] Kafka 的 rebalance 机制
  • [BUUCTF NewStarCTF 2023 公开赛道] week3 crypto/pwn
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • [HDU 3555] Bomb [数位DP]