isort v5.0.0 Release Notes

Release Date: 2020-07-04 // almost 4 years ago
  • 💥 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 for more.