跳转到主要内容

小型、安全的导入排序器

项目描述

μsort

Python项目的安全、最小化导入排序。

documentation version changelog license

μsort是一个安全、最小化导入排序器。其主要目标是不要对代码进行“危险”的更改。这是通过检测最有可能安全互换的不同的“导入块”,并在不改变格式的情况下只重新排序这些块内的导入来实现的。代码风格留给linters和formatters来处理。

在块内,μsort将遵循基于源(标准库、第三方、第一方或相对)的Python常规来分组导入,然后在每个组内进行字典序排序。这通常看起来像

import re
from pathlib import Path
from typing import Iterable
from unittest.mock import call, Mock, patch

import aiohttp
from aiosqlite import connect

import foo
from bar import bar

from .main import main

块是从许多现实世界的条件中推断出来的,包括导入之间的任何中间语句

import warnings
warnings.filterwarnings(...)

import re
import sys

在这种情况下,μsort检测到两个块——由对filterwarnings()的调用分隔,并且只对每个块内的导入进行排序。在代码上运行μsort不会产生任何变化,因为每个块已经排序。

可以使用#usort:skip指令排除导入块,或者使用#isort:skip与现有代码库兼容。μsort将保留这些导入不变,并将它们视为块分隔符。

请参阅用户指南以获取有关如何检测块以及如何执行排序的详细信息。

安装

µsort 需要Python 3.6或更高版本才能运行。使用以下命令安装 µsort:

$ pip install usort

用法

格式化一个或多个文件或目录(原地)

$ usort format <path> [<path> ...]

生成更改的差异,而不修改文件

$ usort diff <path>

仅验证文件格式是否正确,例如在持续集成(CI)期间

$ usort check <path>

pre-commit

µsort 提供了一个pre-commit钩子。要强制在每个提交之前进行排序的导入,请将以下内容添加到您的 .pre-commit-config.yaml 文件中

- repo: https://github.com/facebook/usort
  rev: v1.0.7
  hooks:
    - id: usort

许可协议

μsort 使用 MIT 许可协议,如LICENSE文件所示。

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面