- Notifications
You must be signed in to change notification settings - Fork596
A Python utility / library to sort imports.
License
PyCQA/isort
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Read Latest Documentation -Browse GitHub Code Repository
isort your imports, so you don't have to.
isort is a Python utility / library to sort imports alphabetically andautomatically separate into sections and by type. It provides a command lineutility, Python library andplugins for variouseditors toquickly sort all your imports. It requires Python 3.9+ to run butsupports formatting Python 2 code too.
- Try isort now from your browser!
- Using black? See the isort and black compatibility guide.
- isort has official support for pre-commit!
Before isort:
frommy_libimportObjectimportosfrommy_libimportObject3frommy_libimportObject2importsysfromthird_partyimportlib15,lib1,lib2,lib3,lib4,lib5,lib6,lib7,lib8,lib9,lib10,lib11,lib12,lib13,lib14importsysfrom __future__importabsolute_importfromthird_partyimportlib3print("Hey")print("yo")
After isort:
from __future__importabsolute_importimportosimportsysfromthird_partyimport (lib1,lib2,lib3,lib4,lib5,lib6,lib7,lib8,lib9,lib10,lib11,lib12,lib13,lib14,lib15)frommy_libimportObject,Object2,Object3print("Hey")print("yo")
Installing isort is as simple as:
pip install isort
From the command line:
To run on specific files:
isort mypythonfile.py mypythonfile2.py
To apply recursively:
isort.
Ifglobstaris enabled,isort .
is equivalent to:
isort**/*.py
To view proposed changes without applying them:
isort mypythonfile.py --diff
Finally, to atomically run isort against a project, only applyingchanges if they don't introduce syntax errors:
isort --atomic.
(Note: this is disabled by default, as it prevents isort fromrunning against code written using a different version of Python.)
From within Python:
importisortisort.file("pythonfile.py")
or:
importisortsorted_code=isort.code("import b\nimport a\n")
Several plugins have been written that enable to use isort from within avariety of text-editors. You can find a full list of themon the isortwiki.Additionally, I will enthusiastically accept pull requests that includeplugins for other text editors and add documentation for them as I amnotified.
You will notice above the "multi_line_output" setting. This settingdefines how from imports wrap when they extend past the line_lengthlimit and has12 possible settings.
To change the how constant indents appear - simply change theindent property with the following accepted formats:
- Number of spaces you would like. For example: 4 would cause standard4 space indentation.
- Tab
- A verbatim string with quotes around it.
For example:
" "
is equivalent to 4.
For the import styles that use parentheses, you can control whether ornot to include a trailing comma after the last import with theinclude_trailing_comma
option (defaults toFalse
).
As of isort 3.1.0 support for balanced multi-line imports has beenadded. With this enabled isort will dynamically change the import lengthto the one that produces the most balanced grid, while staying below themaximum import length defined.
Example:
from __future__import (absolute_import,division,print_function,unicode_literals)
Will be produced instead of:
from __future__import (absolute_import,division,print_function,unicode_literals)
To enable this setbalanced_wrapping
toTrue
in your config or passthe-e
option into the command line utility.
isort provides configuration options to change almost every aspect of howimports are organized, ordered, or grouped together in sections.
Click here for an overview of all these options.
To make isort ignore a single import simply add a comment at the end ofthe import line containing the textisort:skip
:
importmodule# isort:skip
or:
fromxyzimport (abc,# isort:skipyo,hey)
To make isort skip an entire file simply addisort:skip_file
to themodule's doc string:
""" my_module.py Best module ever isort:skip_file"""importbimporta
isort can be ran or configured to add / remove imports automatically.
isort can also be used to verify that code is correctly formattedby running it with-c
. Any files that contain incorrectly sortedand/or formatted imports will be outputted tostderr
.
isort**/*.py -c -vSUCCESS: /home/timothy/Projects/Open_Source/isort/isort_kate_plugin.py Everything Looks Good!ERROR: /home/timothy/Projects/Open_Source/isort/isort/isort.py Imports are incorrectly sorted.
One great place this can be used is with a pre-commit git hook, such asthis one by @acdha:
https://gist.github.com/acdha/8717683
This can help to ensure a certain level of code quality throughout aproject.
isort provides a hook function that can be integrated into your Gitpre-commit script to check Python code before committing.
Upon installation, isort enables asetuptools
command that checksPython files declared by your project.
Place this badge at the top of your repository to let others know your project uses isort.
For README.md:
[](https://pycqa.github.io/isort/)
Or README.rst:
..image::https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336:target:https://pycqa.github.io/isort/
To report a security vulnerability, please use theTidelift securitycontact. Tidelift will coordinate thefix and disclosure.
isort simply stands for import sort. It was originally called"sortImports" however I got tired of typing the extra characters andcame to the realization camelCase is not pythonic.
I wrote isort because in an organization I used to work in the managercame in one day and decided all code must have alphabetically sortedimports. The code base was huge - and he meant for us to do it by hand.However, being a programmer - I'm too lazy to spend 8 hours mindlesslyperforming a function, but not too lazy to spend 16 hours automating it.I was given permission to open source sortImports and here we are :)
Get professionally supported isort with the TideliftSubscription
Professional support for isort is available as part of theTideliftSubscription.Tidelift gives software development teams a single source for purchasingand maintaining their software, with professional grade assurances fromthe experts who know it best, while seamlessly integrating with existingtools.
Thanks and I hope you find isort useful!
~Timothy Crosley
About
A Python utility / library to sort imports.