Changelog
### 5.5.4
```
- Fixed 1507: in rare cases isort changes the content of multiline strings after a yield statement.
- Fixed 1505: Support case where known_SECTION points to a section not listed in sections.
```
### 5.5.3
```
- Fixed 1488: in rare cases isort can mangle `yield from` or `raise from` statements.
```
### 5.5.2
```
- Fixed 1469: --diff option is ignored when input is from stdin.
```
### 5.5.1
```
- Fixed 1454: Ensure indented import sections with import heading and a preceding comment don't cause import sorting loops.
- Fixed 1453: isort error when float to top on almost empty file.
- Fixed 1456 and 1415: noqa comment moved to where flake8 cant see it.
- Fixed 1460: .svn missing from default ignore list.
```
### 5.5.0
```
- Fixed 1398: isort: off comment doesn't work, if it's the top comment in the file.
- Fixed 1395: reverse_relative setting doesn't have any effect when combined with force_sort_within_sections.
- Fixed 1399: --skip can error in the case of projects that contain recursive symlinks.
- Fixed 1389: ensure_newline_before_comments doesn't work if comment is at top of section and sections don't have lines between them.
- Fixed 1396: comments in imports with ";" can keep isort from recognizing import line.
- Fixed 1380: As imports removed when `combine_star` is set.
- Fixed 1382: --float-to-top has no effect if no import is already at the top.
- Fixed 1420: isort never settles on module docstring + add import.
- Fixed 1421: Error raised when repo contains circular symlinks.
- Fixed 1427: noqa comment is moved from star import to constant import.
- Fixed 1444 & 1445: Incorrect placement of import additions.
- Fixed 1447: isort5 throws error when stdin used on Windows with deprecated args.
- Implemented 1397: Added support for specifying config file when using git hook (thanks diseraluca!).
- Implemented 1405: Added support for coloring diff output.
- Implemented 1434: New multi-line grid mode without parentheses.
Goal Zero (Tickets related to aspirational goal of achieving 0 regressions for remaining 5.0.0 lifespan):
- Implemented 1392: Extensive profile testing.
- Implemented 1393: Proprety based testing applied to code snippets.
- Implemented 1391: Create automated integration test that includes full code base of largest OpenSource isort users.
Potentially breaking changes:
- Fixed 1429: --check doesn't print to stderr as the documentation says. This means if you were looking for `ERROR:` messages for files that contain incorrect imports within stdout you will now need to look in stderr.
```
### 5.4.2
```
- Fixed 1383: Known other does not work anymore with .editorconfig.
- Fixed: Regression in first known party path expansion.
```
### 5.4.1
```
- Fixed 1381: --combine-as loses noqa in different circumstances.
```
### 5.4.0
```
- Implemented 1373: support for length sort only of direct (AKA straight) imports.
- Fixed 1321: --combine-as loses noqa.
- Fixed 1375: --dont-order-by-type CLI broken.
```
### 5.3.2
```
- Fixed incorrect warning code (W503->W0503).
```
### 5.3.1
```
- Improve upgrade warnings to be less noisy and point to error codes for easy interoperability with Visual Studio Code (see: 1363).
```
### 5.3.0
```
- Implemented ability to treat all or select comments as code (issue 1357)
- Implemented ability to use different configs for different file extensions (issue 1162)
- Implemented ability to specify the types of imports (issue 1181)
- Implemented ability to dedup import headings (issue 953)
- Added experimental support for sorting literals (issue 1358)
- Added experimental support for sorting and deduping groupings of assignments.
- Improved handling of deprecated single line variables for usage with Visual Studio Code (issue 1363)
- Improved handling of mixed newline forms within same source file.
- Improved error handling for known sections.
- Improved API consistency, returning a boolean value for all modification API calls to indicate if changes were made.
- Fixed 1366: spurious errors when combining skip with --gitignore.
- Fixed 1359: --skip-gitignore does not honor ignored symlink
Internal Development:
- Initial hypothesmith powered test to help catch unexpected syntax parsing and output errors (thanks Zac-HD!)
```
### 5.2.2
```
- Fixed 1356: return status when arguments are passed in without files or a content stream.
```
### 5.2.1
```
- Update precommit to default to filtering files that are defined in skip.
- Improved relative path detection for `skip` config usage.
- Added recursive symbolic link protection.
- Implemented 1177: Support for color output using `--color`.
- Implemented recursive symlink detection support.
```
### 5.2.0
```
- Implemented 1335: Official API for diff capturing.
- Implemented 1331: Warn when sections don't match up.
- Implemented 1261: By popular demand, `filter_files` can now be set in the config option.
- Implemented 960: Support for respecting git ignore via "--gitignore" or "skip_gitignore=True".
- Implemented 727: Ability to only add imports if existing imports exist.
- Implemented 970: Support for custom sharable isort profiles.
- Implemented 1214: Added support for git_hook lazy option (Thanks sztamas!)
- Implemented 941: Added an additional `multi_line_output` mode for more compact formatting (Thanks sztamas!)
- Implemented 1020: Option for LOCALFOLDER.
- Implemented 1353: Added support for output formatting plugins.
- ` isort: split` can now be used at the end of an import line.
- Fixed 1339: Extra indent is not preserved when isort:skip is used in nested imports.
- Fixed 1348: `--diff` works incorrectly with files that have CRLF line endings.
- Improved code repositories usage of pylint tags (1350).
```
### 5.1.4
```
- Fixed issue 1333: Use of wrap_length raises an exception about it not being lower or equal to line_length.
- Fixed issue 1330: Ensure stdout can be stubbed dynamically for `show_unified_diff` function.
```
### 5.1.3
```
- Fixed issue 1329: Fix comments duplicated when --fass option is set.
```
### 5.1.2
```
- Fixed issue 1219 / 1326: Comments not wrapped for long lines
- Fixed issue 1156: Bug related to isort:skip usage followed by a multiline comment block
```
### 5.1.1
```
- Fixed issue 1322: Occasionally two extra newlines before comment with `-n` & `--fss`.
- Fixed issue 1189: `--diff` broken when reading from standard input.
```
### 5.1.0
```
- isort now throws an exception if an invalid settings path is given (issue 1174).
- Implemented support for automatic redundant alias removal (issue 1281).
- Implemented experimental support for floating all imports to the top of a file (issue 1228)
- Fixed 1178: support for semicolons in decorators.
- Fixed 1315: Extra newline before comment with -n + --fss.
- Fixed 1192: `-k` or `--keep-direct-and-as-imports` option has been deprecated as it is now always on.
**Formatting changes implied:**
- Fixed 1280: rewrite of as imports changes the behavior of the imports.
```
### 5.0.9
```
- Fixed 1301: Import headings in nested sections leads to check errors
```
### 5.0.8
```
- Fixed 1277 & 1278: New line detection issues on Windows.
- Fixed 1294: Fix bundled git hook.
```
### 5.0.7
```
- Fixed 1306: unexpected --diff behavior.
- Fixed 1279: Fixed NOQA comment regression.
```
### 5.0.6
```
- Fixed 1302: comments and --trailing-comma can generate invalid code.
- Fixed 1293: extra new line in indented imports, when immediately followed by a comment.
- Fixed 1304: isort 5 no longer recognises `sre_parse` as a stdlib module.
- Fixed 1300: add_imports moves comments following import section.
- Fixed 1276: Fix a bug that creates only one line after triple quotes.
```
### 5.0.5
```
- Fixed 1285: packaging issue with bundling tests via poetry.
- Fixed 1284: Regression when sorting `.pyi` files from CLI using black profile.
- Fixed 1275 & 1283: Blank line after docstring removed.
- Fixed 1298: CLI Help out of date with isort 5.
- Fixed 1290: Unecessary blank lines above nested imports when import comments turned on.
- Fixed 1297: Usage of `--add-imports` alongside `--check` is broken.
- Fixed 1289: Stream usage no longer auto picking up config file from current working directory.
- Fixed 1296: Force_single_line setting removes immediately following comment line.
- Fixed 1295: `ensure_newline_before_comments` doesnt work with `force_sort_within_sections`.
- Setting not_skip will no longer immediately fail but instead give user a warning and direct
to upgrade docs.
```
### 5.0.4
```
- Fixed 1264: a regression with comment handling and `force_sort_within_sections` config option
- Added warning for deprecated CLI flags and linked to upgrade guide.
```
### 5.0.3
```
- Fixed setup.py command incorrectly passing check=True as a configuration parameter (see: https://github.com/pycqa/isort/issues/1258)
- Fixed missing patch version
- Fixed issue 1253: Atomic fails when passed in not readable output stream
```
### 5.0.2
```
- Ensured black profile was complete, adding missing line_length definition.
```
### 5.0.1
```
- Fixed a runtime error in a vendored dependency (toml).
```
### 5.0.0
```
**Breaking changes:**
- isort now requires Python 3.6+ to run but continues to support formatting on ALL versions of python including
Python 2 code.
- isort deprecates official support for Python 3.4, removing modules only in this release from known_standard_library:
- user
- Config files are no longer composed on-top of each-other. Instead the first config file found is used.
- Since there is no longer composition negative form settings (such as --dont-skip or it's config file variant `not_skip`) are no longer required and have been removed.
- Two-letter shortened setting names (like `ac` for `atomic`) now require two dashes to avoid ambiguity: `--ac`.
- For consistency with other tools `-v` now is shorthand for verbose and `-V` is shorthand for version. See Issue: 1067.
- `length_sort_{section_name}` config usage has been deprecated. Instead `length_sort_sections` list can be used to specify a list of sections that need to be length sorted.
- `safety_excludes` and `unsafe` have been deprecated
- Config now includes as default full set of safety directories defined by safety excludes.
- `--recursive` option has been removed. Directories passed in are now automatically sorted recursive.
- `--apply` option has been removed as it is the default behaviour.
- isort now does nothing, beyond giving instructions and exiting status code 0, when ran with no arguments.
- a new `--interactive` flag has been added to enable the old style behaviour.
- isort now works on contiguous sections of imports, instead of one whole file at a time.
- ~~isort now formats all nested "as" imports in the "from" form. `import x.y as a` becomes `from x import y as a`.~~ NOTE: This was undone in version 5.1.0 due to feedback it caused issues with some project conventions.
- `keep_direct_and_as_imports` option now defaults to `True`.
- `appdirs` is no longer supported. Unless manually specified, config should be project config only.
- `toml` is now installed as a vendorized module, meaning pyproject.toml based config is always supported.
- Completely new Python API, old version is removed and no longer accessible.
- New module placement logic and module fully replaces old finders. Old approach is still available via `--old-finders`.
Internal:
- isort now utilizes mypy and typing to filter out typing related issues before deployment.
- isort now utilizes black internally to ensure more consistent formatting.
- profile support for common project types (black, django, google, etc)
- Much much more. There is some difficulty in fully capturing the extent of changes in this release - just because of how all encompassing the release is. See: [Github Issues](https://github.com/pycqa/isort/issues?q=is%3Aissue+is%3Aclosed) for more.
```
Links
- PyPI: https://pypi.org/project/isort
- Changelog: https://pyup.io/changelogs/isort/
- Repo: https://pycqa.github.io/isort/
This PR updates isort from 4.3.21 to 5.5.4.
Changelog
### 5.5.4 ``` - Fixed 1507: in rare cases isort changes the content of multiline strings after a yield statement. - Fixed 1505: Support case where known_SECTION points to a section not listed in sections. ``` ### 5.5.3 ``` - Fixed 1488: in rare cases isort can mangle `yield from` or `raise from` statements. ``` ### 5.5.2 ``` - Fixed 1469: --diff option is ignored when input is from stdin. ``` ### 5.5.1 ``` - Fixed 1454: Ensure indented import sections with import heading and a preceding comment don't cause import sorting loops. - Fixed 1453: isort error when float to top on almost empty file. - Fixed 1456 and 1415: noqa comment moved to where flake8 cant see it. - Fixed 1460: .svn missing from default ignore list. ``` ### 5.5.0 ``` - Fixed 1398: isort: off comment doesn't work, if it's the top comment in the file. - Fixed 1395: reverse_relative setting doesn't have any effect when combined with force_sort_within_sections. - Fixed 1399: --skip can error in the case of projects that contain recursive symlinks. - Fixed 1389: ensure_newline_before_comments doesn't work if comment is at top of section and sections don't have lines between them. - Fixed 1396: comments in imports with ";" can keep isort from recognizing import line. - Fixed 1380: As imports removed when `combine_star` is set. - Fixed 1382: --float-to-top has no effect if no import is already at the top. - Fixed 1420: isort never settles on module docstring + add import. - Fixed 1421: Error raised when repo contains circular symlinks. - Fixed 1427: noqa comment is moved from star import to constant import. - Fixed 1444 & 1445: Incorrect placement of import additions. - Fixed 1447: isort5 throws error when stdin used on Windows with deprecated args. - Implemented 1397: Added support for specifying config file when using git hook (thanks diseraluca!). - Implemented 1405: Added support for coloring diff output. - Implemented 1434: New multi-line grid mode without parentheses. Goal Zero (Tickets related to aspirational goal of achieving 0 regressions for remaining 5.0.0 lifespan): - Implemented 1392: Extensive profile testing. - Implemented 1393: Proprety based testing applied to code snippets. - Implemented 1391: Create automated integration test that includes full code base of largest OpenSource isort users. Potentially breaking changes: - Fixed 1429: --check doesn't print to stderr as the documentation says. This means if you were looking for `ERROR:` messages for files that contain incorrect imports within stdout you will now need to look in stderr. ``` ### 5.4.2 ``` - Fixed 1383: Known other does not work anymore with .editorconfig. - Fixed: Regression in first known party path expansion. ``` ### 5.4.1 ``` - Fixed 1381: --combine-as loses noqa in different circumstances. ``` ### 5.4.0 ``` - Implemented 1373: support for length sort only of direct (AKA straight) imports. - Fixed 1321: --combine-as loses noqa. - Fixed 1375: --dont-order-by-type CLI broken. ``` ### 5.3.2 ``` - Fixed incorrect warning code (W503->W0503). ``` ### 5.3.1 ``` - Improve upgrade warnings to be less noisy and point to error codes for easy interoperability with Visual Studio Code (see: 1363). ``` ### 5.3.0 ``` - Implemented ability to treat all or select comments as code (issue 1357) - Implemented ability to use different configs for different file extensions (issue 1162) - Implemented ability to specify the types of imports (issue 1181) - Implemented ability to dedup import headings (issue 953) - Added experimental support for sorting literals (issue 1358) - Added experimental support for sorting and deduping groupings of assignments. - Improved handling of deprecated single line variables for usage with Visual Studio Code (issue 1363) - Improved handling of mixed newline forms within same source file. - Improved error handling for known sections. - Improved API consistency, returning a boolean value for all modification API calls to indicate if changes were made. - Fixed 1366: spurious errors when combining skip with --gitignore. - Fixed 1359: --skip-gitignore does not honor ignored symlink Internal Development: - Initial hypothesmith powered test to help catch unexpected syntax parsing and output errors (thanks Zac-HD!) ``` ### 5.2.2 ``` - Fixed 1356: return status when arguments are passed in without files or a content stream. ``` ### 5.2.1 ``` - Update precommit to default to filtering files that are defined in skip. - Improved relative path detection for `skip` config usage. - Added recursive symbolic link protection. - Implemented 1177: Support for color output using `--color`. - Implemented recursive symlink detection support. ``` ### 5.2.0 ``` - Implemented 1335: Official API for diff capturing. - Implemented 1331: Warn when sections don't match up. - Implemented 1261: By popular demand, `filter_files` can now be set in the config option. - Implemented 960: Support for respecting git ignore via "--gitignore" or "skip_gitignore=True". - Implemented 727: Ability to only add imports if existing imports exist. - Implemented 970: Support for custom sharable isort profiles. - Implemented 1214: Added support for git_hook lazy option (Thanks sztamas!) - Implemented 941: Added an additional `multi_line_output` mode for more compact formatting (Thanks sztamas!) - Implemented 1020: Option for LOCALFOLDER. - Implemented 1353: Added support for output formatting plugins. - ` isort: split` can now be used at the end of an import line. - Fixed 1339: Extra indent is not preserved when isort:skip is used in nested imports. - Fixed 1348: `--diff` works incorrectly with files that have CRLF line endings. - Improved code repositories usage of pylint tags (1350). ``` ### 5.1.4 ``` - Fixed issue 1333: Use of wrap_length raises an exception about it not being lower or equal to line_length. - Fixed issue 1330: Ensure stdout can be stubbed dynamically for `show_unified_diff` function. ``` ### 5.1.3 ``` - Fixed issue 1329: Fix comments duplicated when --fass option is set. ``` ### 5.1.2 ``` - Fixed issue 1219 / 1326: Comments not wrapped for long lines - Fixed issue 1156: Bug related to isort:skip usage followed by a multiline comment block ``` ### 5.1.1 ``` - Fixed issue 1322: Occasionally two extra newlines before comment with `-n` & `--fss`. - Fixed issue 1189: `--diff` broken when reading from standard input. ``` ### 5.1.0 ``` - isort now throws an exception if an invalid settings path is given (issue 1174). - Implemented support for automatic redundant alias removal (issue 1281). - Implemented experimental support for floating all imports to the top of a file (issue 1228) - Fixed 1178: support for semicolons in decorators. - Fixed 1315: Extra newline before comment with -n + --fss. - Fixed 1192: `-k` or `--keep-direct-and-as-imports` option has been deprecated as it is now always on. **Formatting changes implied:** - Fixed 1280: rewrite of as imports changes the behavior of the imports. ``` ### 5.0.9 ``` - Fixed 1301: Import headings in nested sections leads to check errors ``` ### 5.0.8 ``` - Fixed 1277 & 1278: New line detection issues on Windows. - Fixed 1294: Fix bundled git hook. ``` ### 5.0.7 ``` - Fixed 1306: unexpected --diff behavior. - Fixed 1279: Fixed NOQA comment regression. ``` ### 5.0.6 ``` - Fixed 1302: comments and --trailing-comma can generate invalid code. - Fixed 1293: extra new line in indented imports, when immediately followed by a comment. - Fixed 1304: isort 5 no longer recognises `sre_parse` as a stdlib module. - Fixed 1300: add_imports moves comments following import section. - Fixed 1276: Fix a bug that creates only one line after triple quotes. ``` ### 5.0.5 ``` - Fixed 1285: packaging issue with bundling tests via poetry. - Fixed 1284: Regression when sorting `.pyi` files from CLI using black profile. - Fixed 1275 & 1283: Blank line after docstring removed. - Fixed 1298: CLI Help out of date with isort 5. - Fixed 1290: Unecessary blank lines above nested imports when import comments turned on. - Fixed 1297: Usage of `--add-imports` alongside `--check` is broken. - Fixed 1289: Stream usage no longer auto picking up config file from current working directory. - Fixed 1296: Force_single_line setting removes immediately following comment line. - Fixed 1295: `ensure_newline_before_comments` doesnt work with `force_sort_within_sections`. - Setting not_skip will no longer immediately fail but instead give user a warning and direct to upgrade docs. ``` ### 5.0.4 ``` - Fixed 1264: a regression with comment handling and `force_sort_within_sections` config option - Added warning for deprecated CLI flags and linked to upgrade guide. ``` ### 5.0.3 ``` - Fixed setup.py command incorrectly passing check=True as a configuration parameter (see: https://github.com/pycqa/isort/issues/1258) - Fixed missing patch version - Fixed issue 1253: Atomic fails when passed in not readable output stream ``` ### 5.0.2 ``` - Ensured black profile was complete, adding missing line_length definition. ``` ### 5.0.1 ``` - Fixed a runtime error in a vendored dependency (toml). ``` ### 5.0.0 ``` **Breaking changes:** - isort now requires Python 3.6+ to run but continues to support formatting on ALL versions of python including Python 2 code. - isort deprecates official support for Python 3.4, removing modules only in this release from known_standard_library: - user - Config files are no longer composed on-top of each-other. Instead the first config file found is used. - Since there is no longer composition negative form settings (such as --dont-skip or it's config file variant `not_skip`) are no longer required and have been removed. - Two-letter shortened setting names (like `ac` for `atomic`) now require two dashes to avoid ambiguity: `--ac`. - For consistency with other tools `-v` now is shorthand for verbose and `-V` is shorthand for version. See Issue: 1067. - `length_sort_{section_name}` config usage has been deprecated. Instead `length_sort_sections` list can be used to specify a list of sections that need to be length sorted. - `safety_excludes` and `unsafe` have been deprecated - Config now includes as default full set of safety directories defined by safety excludes. - `--recursive` option has been removed. Directories passed in are now automatically sorted recursive. - `--apply` option has been removed as it is the default behaviour. - isort now does nothing, beyond giving instructions and exiting status code 0, when ran with no arguments. - a new `--interactive` flag has been added to enable the old style behaviour. - isort now works on contiguous sections of imports, instead of one whole file at a time. - ~~isort now formats all nested "as" imports in the "from" form. `import x.y as a` becomes `from x import y as a`.~~ NOTE: This was undone in version 5.1.0 due to feedback it caused issues with some project conventions. - `keep_direct_and_as_imports` option now defaults to `True`. - `appdirs` is no longer supported. Unless manually specified, config should be project config only. - `toml` is now installed as a vendorized module, meaning pyproject.toml based config is always supported. - Completely new Python API, old version is removed and no longer accessible. - New module placement logic and module fully replaces old finders. Old approach is still available via `--old-finders`. Internal: - isort now utilizes mypy and typing to filter out typing related issues before deployment. - isort now utilizes black internally to ensure more consistent formatting. - profile support for common project types (black, django, google, etc) - Much much more. There is some difficulty in fully capturing the extent of changes in this release - just because of how all encompassing the release is. See: [Github Issues](https://github.com/pycqa/isort/issues?q=is%3Aissue+is%3Aclosed) for more. ```Links
- PyPI: https://pypi.org/project/isort - Changelog: https://pyup.io/changelogs/isort/ - Repo: https://pycqa.github.io/isort/