# What changed in isort

> 43 changes in isort 9 from its official release notes, upgrade guides and advisories: 5 breaking, 2 new APIs and options. Each one cited. Sources checked 2026-10-18. HTML: https://unstale.sh/pypi/isort/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## isort 9

### Breaking changes

- Configuration discovery stops at Git worktree boundaries. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- The setting now sorts unwrapped lines. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- EOF on stdin now acts as quit in the interactive prompt. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- Logic for deprecated options was removed. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Private standard-library modules are now considered stdlib modules. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)

### New APIs and options

- A CLI flag for forced separation was added. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- The separate_packages option was added. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)

### Performance

- isort is compiled with mypyc, with compiled wheels for major platforms and supported Python versions; the notes report speedups of more than 2x and 3x in tests. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)

### Behavior and default changes

- An aliased import is kept when the plain name carries a comment. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Sorted __all__ and literals are now compatible with Black. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Initial support for Python 3.15, including its lazy imports, was added. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)

### Tooling

- isort can now sort lazy import statements. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)

### Fixes and other changes

- Blank lines before comment-only sections are preserved. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- The setting no longer hoists indented semicolon imports. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- Preprocessing preserves CRLF blank lines. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- Sorting literals preserves trailing comments. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- The setting no longer emits unparsable code around trailing comments when set to 10. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- Sorting reexports preserves trailing-comma layout. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- Sorting reexports preserves file line endings. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- Star imports are handled better when using parentheses. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- stdin output preserves LF line endings on Windows. (9.0.2) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.2)
- Restores running isort with python -m isort by excluding __main__ from mypyc compilation. (9.0.1) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.1)
- Added imports are now kept below a prefixed module docstring. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Bare # inline comments on imports are now preserved. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed a false positive with float_to_top and add_imports. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- check_code now detects changes that only affect lines_before_imports. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Using --config-root without --resolve-all-configs no longer crashes. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- The isort off/on/split comments are now honored during float_to_top preprocessing with CRLF input. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Preservation of form-feed blank lines was fixed. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed the lazy=True option for git_hook. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Inline comments are no longer duplicated across merged from-import lines. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- The skip comment is now honored when a __future__ import is present. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Values 3 and 5 are no longer ignored when wrapping single imports with inline comments. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed grouping when non-aliased and aliased imports come from the same module. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- NOQA is now added to long imports in the affected output paths. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed non-idempotent output for commented imports and prevented spaces from accumulating before comments. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Opening-line comments no longer move to the alias attribute line on wrapped imports. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed handling of pylint disable-next comments at the start of imports. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Skip comments are now honored when sorting reexports. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed a crash on non-seekable streams such as stdin. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed non-idempotent output when split_on_trailing_comma is used with a non-default wrap mode. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed handling of src glob patterns passed through the CLI. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
- Fixed handling and word-wrapping of star imports, including wrapping that could produce invalid Python. (9.0.0) — [release notes](https://github.com/PyCQA/isort/releases/tag/9.0.0)
