8th day of python challenges 111-117
This commit is contained in:
697
venv/lib/python3.6/site-packages/isort-4.3.21.dist-info/METADATA
Normal file
697
venv/lib/python3.6/site-packages/isort-4.3.21.dist-info/METADATA
Normal file
@@ -0,0 +1,697 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: isort
|
||||
Version: 4.3.21
|
||||
Summary: A Python utility / library to sort Python imports.
|
||||
Home-page: https://github.com/timothycrosley/isort
|
||||
Author: Timothy Crosley
|
||||
Author-email: timothy.crosley@gmail.com
|
||||
License: MIT
|
||||
Keywords: Refactor,Python,Python2,Python3,Refactoring,Imports,Sort,Clean
|
||||
Platform: UNKNOWN
|
||||
Classifier: Development Status :: 6 - Mature
|
||||
Classifier: Intended Audience :: Developers
|
||||
Classifier: Natural Language :: English
|
||||
Classifier: Environment :: Console
|
||||
Classifier: License :: OSI Approved :: MIT License
|
||||
Classifier: Programming Language :: Python
|
||||
Classifier: Programming Language :: Python :: 2
|
||||
Classifier: Programming Language :: Python :: 2.7
|
||||
Classifier: Programming Language :: Python :: 3
|
||||
Classifier: Programming Language :: Python :: 3.4
|
||||
Classifier: Programming Language :: Python :: 3.5
|
||||
Classifier: Programming Language :: Python :: 3.6
|
||||
Classifier: Programming Language :: Python :: 3.7
|
||||
Classifier: Programming Language :: Python :: Implementation :: CPython
|
||||
Classifier: Programming Language :: Python :: Implementation :: PyPy
|
||||
Classifier: Topic :: Software Development :: Libraries
|
||||
Classifier: Topic :: Utilities
|
||||
Requires-Python: >=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*
|
||||
Requires-Dist: futures ; python_version < "3.2"
|
||||
Requires-Dist: backports.functools-lru-cache ; python_version < "3.2"
|
||||
Provides-Extra: pipfile
|
||||
Requires-Dist: pipreqs ; extra == 'pipfile'
|
||||
Requires-Dist: requirementslib ; extra == 'pipfile'
|
||||
Provides-Extra: pyproject
|
||||
Requires-Dist: toml ; extra == 'pyproject'
|
||||
Provides-Extra: requirements
|
||||
Requires-Dist: pipreqs ; extra == 'requirements'
|
||||
Requires-Dist: pip-api ; extra == 'requirements'
|
||||
Provides-Extra: xdg_home
|
||||
Requires-Dist: appdirs (>=1.4.0) ; extra == 'xdg_home'
|
||||
|
||||
.. image:: https://raw.github.com/timothycrosley/isort/master/logo.png
|
||||
:alt: isort
|
||||
|
||||
########
|
||||
|
||||
.. image:: https://badge.fury.io/py/isort.svg
|
||||
:target: https://badge.fury.io/py/isort
|
||||
:alt: PyPI version
|
||||
|
||||
.. image:: https://travis-ci.org/timothycrosley/isort.svg?branch=master
|
||||
:target: https://travis-ci.org/timothycrosley/isort
|
||||
:alt: Build Status
|
||||
|
||||
|
||||
.. image:: https://coveralls.io/repos/timothycrosley/isort/badge.svg?branch=release%2F2.6.0&service=github
|
||||
:target: https://coveralls.io/github/timothycrosley/isort?branch=release%2F2.6.0
|
||||
:alt: Coverage
|
||||
|
||||
.. image:: https://img.shields.io/github/license/mashape/apistatus.svg
|
||||
:target: https://pypi.org/project/hug/
|
||||
:alt: License
|
||||
|
||||
.. image:: https://badges.gitter.im/Join%20Chat.svg
|
||||
:alt: Join the chat at https://gitter.im/timothycrosley/isort
|
||||
:target: https://gitter.im/timothycrosley/isort?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge
|
||||
|
||||
.. image:: https://pepy.tech/badge/isort
|
||||
:alt: Downloads
|
||||
:target: https://pepy.tech/project/isort
|
||||
|
||||
isort your python imports for you so you don't have to.
|
||||
|
||||
isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections.
|
||||
It provides a command line utility, Python library and `plugins for various editors <https://github.com/timothycrosley/isort/wiki/isort-Plugins>`_ to quickly sort all your imports.
|
||||
It currently cleanly supports Python 2.7 and 3.4+ without any dependencies.
|
||||
|
||||
.. image:: https://raw.github.com/timothycrosley/isort/develop/example.gif
|
||||
:alt: Example Usage
|
||||
|
||||
Before isort:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from my_lib import Object
|
||||
|
||||
print("Hey")
|
||||
|
||||
import os
|
||||
|
||||
from my_lib import Object3
|
||||
|
||||
from my_lib import Object2
|
||||
|
||||
import sys
|
||||
|
||||
from third_party import lib15, lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8, lib9, lib10, lib11, lib12, lib13, lib14
|
||||
|
||||
import sys
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
from third_party import lib3
|
||||
|
||||
print("yo")
|
||||
|
||||
After isort:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
from third_party import (lib1, lib2, lib3, lib4, lib5, lib6, lib7, lib8,
|
||||
lib9, lib10, lib11, lib12, lib13, lib14, lib15)
|
||||
|
||||
from my_lib import Object, Object2, Object3
|
||||
|
||||
print("Hey")
|
||||
print("yo")
|
||||
|
||||
Installing isort
|
||||
================
|
||||
|
||||
Installing isort is as simple as:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install isort
|
||||
|
||||
Install isort with requirements.txt support:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install isort[requirements]
|
||||
|
||||
Install isort with Pipfile support:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install isort[pipfile]
|
||||
|
||||
Install isort with both formats support:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
pip install isort[requirements,pipfile]
|
||||
|
||||
Using isort
|
||||
===========
|
||||
|
||||
**From the command line**:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort mypythonfile.py mypythonfile2.py
|
||||
|
||||
or recursively:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort -rc .
|
||||
|
||||
*which is equivalent to:*
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort **/*.py
|
||||
|
||||
or to see the proposed changes without applying them:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort mypythonfile.py --diff
|
||||
|
||||
Finally, to atomically run isort against a project, only applying changes if they don't introduce syntax errors do:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort -rc --atomic .
|
||||
|
||||
(Note: this is disabled by default as it keeps isort from being able to run against code written using a different version of Python)
|
||||
|
||||
**From within Python**:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
from isort import SortImports
|
||||
|
||||
SortImports("pythonfile.py")
|
||||
|
||||
or:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
from isort import SortImports
|
||||
|
||||
new_contents = SortImports(file_contents=old_contents).output
|
||||
|
||||
**From within Kate:**
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
ctrl+[
|
||||
|
||||
or:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
menu > Python > Sort Imports
|
||||
|
||||
Installing isort's Kate plugin
|
||||
==============================
|
||||
|
||||
For KDE 4.13+ / Pate 2.0+:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
wget https://raw.github.com/timothycrosley/isort/master/kate_plugin/isort_plugin.py --output-document ~/.kde/share/apps/kate/pate/isort_plugin.py
|
||||
wget https://raw.github.com/timothycrosley/isort/master/kate_plugin/isort_plugin_ui.rc --output-document ~/.kde/share/apps/kate/pate/isort_plugin_ui.rc
|
||||
wget https://raw.github.com/timothycrosley/isort/master/kate_plugin/katepart_isort.desktop --output-document ~/.kde/share/kde4/services/katepart_isort.desktop
|
||||
|
||||
For all older versions:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
wget https://raw.github.com/timothycrosley/isort/master/kate_plugin/isort_plugin_old.py --output-document ~/.kde/share/apps/kate/pate/isort_plugin.py
|
||||
|
||||
You will then need to restart kate and enable Python Plugins as well as the isort plugin itself.
|
||||
|
||||
Installing isort's for your preferred text editor
|
||||
=================================================
|
||||
|
||||
Several plugins have been written that enable to use isort from within a variety of text-editors.
|
||||
You can find a full list of them `on the isort wiki <https://github.com/timothycrosley/isort/wiki/isort-Plugins>`_.
|
||||
Additionally, I will enthusiastically accept pull requests that include plugins for other text editors
|
||||
and add documentation for them as I am notified.
|
||||
|
||||
How does isort work?
|
||||
====================
|
||||
|
||||
isort parses specified files for global level import lines (imports outside of try / except blocks, functions, etc..)
|
||||
and puts them all at the top of the file grouped together by the type of import:
|
||||
|
||||
- Future
|
||||
- Python Standard Library
|
||||
- Third Party
|
||||
- Current Python Project
|
||||
- Explicitly Local (. before import, as in: ``from . import x``)
|
||||
- Custom Separate Sections (Defined by forced_separate list in configuration file)
|
||||
- Custom Sections (Defined by sections list in configuration file)
|
||||
|
||||
Inside of each section the imports are sorted alphabetically. isort automatically removes duplicate python imports,
|
||||
and wraps long from imports to the specified line length (defaults to 79).
|
||||
|
||||
When will isort not work?
|
||||
=========================
|
||||
|
||||
If you ever have the situation where you need to have a try / except block in the middle of top-level imports or if
|
||||
your import order is directly linked to precedence.
|
||||
|
||||
For example: a common practice in Django settings files is importing * from various settings files to form
|
||||
a new settings file. In this case if any of the imports change order you are changing the settings definition itself.
|
||||
|
||||
However, you can configure isort to skip over just these files - or even to force certain imports to the top.
|
||||
|
||||
Configuring isort
|
||||
=================
|
||||
|
||||
If you find the default isort settings do not work well for your project, isort provides several ways to adjust
|
||||
the behavior.
|
||||
|
||||
To configure isort for a single user create a ``~/.isort.cfg`` or ``$XDG_CONFIG_HOME/isort.cfg`` file:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
[settings]
|
||||
line_length=120
|
||||
force_to_top=file1.py,file2.py
|
||||
skip=file3.py,file4.py
|
||||
known_future_library=future,pies
|
||||
known_standard_library=std,std2
|
||||
known_third_party=randomthirdparty
|
||||
known_first_party=mylib1,mylib2
|
||||
indent=' '
|
||||
multi_line_output=3
|
||||
length_sort=1
|
||||
forced_separate=django.contrib,django.utils
|
||||
default_section=FIRSTPARTY
|
||||
no_lines_before=LOCALFOLDER
|
||||
|
||||
Additionally, you can specify project level configuration simply by placing a ``.isort.cfg`` file at the root of your
|
||||
project. isort will look up to 25 directories up, from the file it is ran against, to find a project specific configuration.
|
||||
|
||||
Or, if you prefer, you can add an ``isort`` or ``tool:isort`` section to your project's ``setup.cfg`` or ``tox.ini`` file with any desired settings.
|
||||
|
||||
You can also add your desired settings under a ``[tool.isort]`` section in your ``pyproject.toml`` file.
|
||||
|
||||
You can then override any of these settings by using command line arguments, or by passing in override values to the
|
||||
SortImports class.
|
||||
|
||||
Finally, as of version 3.0 isort supports editorconfig files using the standard syntax defined here:
|
||||
https://editorconfig.org/
|
||||
|
||||
Meaning you place any standard isort configuration parameters within a .editorconfig file under the ``*.py`` section
|
||||
and they will be honored.
|
||||
|
||||
For a full list of isort settings and their meanings `take a look at the isort wiki <https://github.com/timothycrosley/isort/wiki/isort-Settings>`_.
|
||||
|
||||
Multi line output modes
|
||||
=======================
|
||||
|
||||
You will notice above the "multi_line_output" setting. This setting defines how from imports wrap when they extend
|
||||
past the line_length limit and has 6 possible settings:
|
||||
|
||||
**0 - Grid**
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import (lib1, lib2, lib3,
|
||||
lib4, lib5, ...)
|
||||
|
||||
**1 - Vertical**
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import (lib1,
|
||||
lib2,
|
||||
lib3
|
||||
lib4,
|
||||
lib5,
|
||||
...)
|
||||
|
||||
**2 - Hanging Indent**
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import \
|
||||
lib1, lib2, lib3, \
|
||||
lib4, lib5, lib6
|
||||
|
||||
**3 - Vertical Hanging Indent**
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import (
|
||||
lib1,
|
||||
lib2,
|
||||
lib3,
|
||||
lib4,
|
||||
)
|
||||
|
||||
**4 - Hanging Grid**
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import (
|
||||
lib1, lib2, lib3, lib4,
|
||||
lib5, ...)
|
||||
|
||||
**5 - Hanging Grid Grouped**
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import (
|
||||
lib1, lib2, lib3, lib4,
|
||||
lib5, ...
|
||||
)
|
||||
|
||||
**6 - Hanging Grid Grouped, No Trailing Comma**
|
||||
|
||||
In Mode 5 isort leaves a single extra space to maintain consistency of output when a comma is added at the end.
|
||||
Mode 6 is the same - except that no extra space is maintained leading to the possibility of lines one character longer.
|
||||
You can enforce a trailing comma by using this in conjunction with `-tc` or `trailing_comma: True`.
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import (
|
||||
lib1, lib2, lib3, lib4,
|
||||
lib5
|
||||
)
|
||||
|
||||
**7 - NOQA**
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import lib1, lib2, lib3, ... # NOQA
|
||||
|
||||
Alternatively, you can set ``force_single_line`` to ``True`` (``-sl`` on the command line) and every import will appear on its
|
||||
own line:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from third_party import lib1
|
||||
from third_party import lib2
|
||||
from third_party import lib3
|
||||
...
|
||||
|
||||
Note: to change the how constant indents appear - simply change the indent property with the following accepted formats:
|
||||
|
||||
* Number of spaces you would like. For example: 4 would cause standard 4 space indentation.
|
||||
* Tab
|
||||
* A verbatim string with quotes around it.
|
||||
|
||||
For example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
" "
|
||||
|
||||
is equivalent to 4.
|
||||
|
||||
For the import styles that use parentheses, you can control whether or not to
|
||||
include a trailing comma after the last import with the ``include_trailing_comma``
|
||||
option (defaults to ``False``).
|
||||
|
||||
Intelligently Balanced Multi-line Imports
|
||||
=========================================
|
||||
|
||||
As of isort 3.1.0 support for balanced multi-line imports has been added.
|
||||
With this enabled isort will dynamically change the import length to the one that produces the most balanced grid,
|
||||
while staying below the maximum import length defined.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from __future__ import (absolute_import, division,
|
||||
print_function, unicode_literals)
|
||||
|
||||
Will be produced instead of:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from __future__ import (absolute_import, division, print_function,
|
||||
unicode_literals)
|
||||
|
||||
To enable this set ``balanced_wrapping`` to ``True`` in your config or pass the ``-e`` option into the command line utility.
|
||||
|
||||
Custom Sections and Ordering
|
||||
============================
|
||||
|
||||
You can change the section order with ``sections`` option from the default of:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
|
||||
|
||||
to your preference:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
sections=FUTURE,STDLIB,FIRSTPARTY,THIRDPARTY,LOCALFOLDER
|
||||
|
||||
You also can define your own sections and their order.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
known_django=django
|
||||
known_pandas=pandas,numpy
|
||||
sections=FUTURE,STDLIB,DJANGO,THIRDPARTY,PANDAS,FIRSTPARTY,LOCALFOLDER
|
||||
|
||||
would create two new sections with the specified known modules.
|
||||
|
||||
The ``no_lines_before`` option will prevent the listed sections from being split from the previous section by an empty line.
|
||||
|
||||
Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
sections=FUTURE,STDLIB,THIRDPARTY,FIRSTPARTY,LOCALFOLDER
|
||||
no_lines_before=LOCALFOLDER
|
||||
|
||||
would produce a section with both FIRSTPARTY and LOCALFOLDER modules combined.
|
||||
|
||||
Auto-comment import sections
|
||||
============================
|
||||
|
||||
Some projects prefer to have import sections uniquely titled to aid in identifying the sections quickly
|
||||
when visually scanning. isort can automate this as well. To do this simply set the ``import_heading_{section_name}``
|
||||
setting for each section you wish to have auto commented - to the desired comment.
|
||||
|
||||
For Example:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
import_heading_stdlib=Standard Library
|
||||
import_heading_firstparty=My Stuff
|
||||
|
||||
Would lead to output looking like the following:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
# Standard Library
|
||||
import os
|
||||
import sys
|
||||
|
||||
import django.settings
|
||||
|
||||
# My Stuff
|
||||
import myproject.test
|
||||
|
||||
Ordering by import length
|
||||
=========================
|
||||
|
||||
isort also makes it easy to sort your imports by length, simply by setting the ``length_sort`` option to ``True``.
|
||||
This will result in the following output style:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from evn.util import (
|
||||
Pool,
|
||||
Dict,
|
||||
Options,
|
||||
Constant,
|
||||
DecayDict,
|
||||
UnexpectedCodePath,
|
||||
)
|
||||
|
||||
It is also possible to opt-in to sorting imports by length for only specific
|
||||
sections by using ``length_sort_`` followed by the section name as a
|
||||
configuration item, e.g.::
|
||||
|
||||
length_sort_stdlib=1
|
||||
|
||||
Skip processing of imports (outside of configuration)
|
||||
=====================================================
|
||||
|
||||
To make isort ignore a single import simply add a comment at the end of the import line containing the text ``isort:skip``:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
import module # isort:skip
|
||||
|
||||
or:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
from xyz import (abc, # isort:skip
|
||||
yo,
|
||||
hey)
|
||||
|
||||
To make isort skip an entire file simply add ``isort:skip_file`` to the module's doc string:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
""" my_module.py
|
||||
Best module ever
|
||||
|
||||
isort:skip_file
|
||||
"""
|
||||
|
||||
import b
|
||||
import a
|
||||
|
||||
Adding an import to multiple files
|
||||
==================================
|
||||
|
||||
isort makes it easy to add an import statement across multiple files, while being assured it's correctly placed.
|
||||
|
||||
From the command line:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort -a "from __future__ import print_function" *.py
|
||||
|
||||
from within Kate:
|
||||
|
||||
.. code-block::
|
||||
|
||||
ctrl+]
|
||||
|
||||
or:
|
||||
|
||||
.. code-block::
|
||||
|
||||
menu > Python > Add Import
|
||||
|
||||
Removing an import from multiple files
|
||||
======================================
|
||||
|
||||
isort also makes it easy to remove an import from multiple files, without having to be concerned with how it was originally
|
||||
formatted.
|
||||
|
||||
From the command line:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort -rm "os.system" *.py
|
||||
|
||||
from within Kate:
|
||||
|
||||
.. code-block::
|
||||
|
||||
ctrl+shift+]
|
||||
|
||||
or:
|
||||
|
||||
.. code-block::
|
||||
|
||||
menu > Python > Remove Import
|
||||
|
||||
Using isort to verify code
|
||||
==========================
|
||||
|
||||
The ``--check-only`` option
|
||||
---------------------------
|
||||
|
||||
isort can also be used to used to verify that code is correctly formatted by running it with ``-c``.
|
||||
Any files that contain incorrectly sorted and/or formatted imports will be outputted to ``stderr``.
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
isort **/*.py -c -vb
|
||||
|
||||
SUCCESS: /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 as this one by @acdha:
|
||||
|
||||
https://gist.github.com/acdha/8717683
|
||||
|
||||
This can help to ensure a certain level of code quality throughout a project.
|
||||
|
||||
|
||||
Git hook
|
||||
--------
|
||||
|
||||
isort provides a hook function that can be integrated into your Git pre-commit script to check
|
||||
Python code before committing.
|
||||
|
||||
To cause the commit to fail if there are isort errors (strict mode), include the following in
|
||||
``.git/hooks/pre-commit``:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
#!/usr/bin/env python
|
||||
import sys
|
||||
from isort.hooks import git_hook
|
||||
|
||||
sys.exit(git_hook(strict=True, modify=True))
|
||||
|
||||
If you just want to display warnings, but allow the commit to happen anyway, call ``git_hook`` without
|
||||
the `strict` parameter. If you want to display warnings, but not also fix the code, call ``git_hook`` without
|
||||
the `modify` parameter.
|
||||
|
||||
Setuptools integration
|
||||
----------------------
|
||||
|
||||
Upon installation, isort enables a ``setuptools`` command that checks Python files
|
||||
declared by your project.
|
||||
|
||||
Running ``python setup.py isort`` on the command line will check the files
|
||||
listed in your ``py_modules`` and ``packages``. If any warning is found,
|
||||
the command will exit with an error code:
|
||||
|
||||
.. code-block:: bash
|
||||
|
||||
$ python setup.py isort
|
||||
|
||||
Also, to allow users to be able to use the command without having to install
|
||||
isort themselves, add isort to the setup_requires of your ``setup()`` like so:
|
||||
|
||||
.. code-block:: python
|
||||
|
||||
setup(
|
||||
name="project",
|
||||
packages=["project"],
|
||||
|
||||
setup_requires=[
|
||||
"isort"
|
||||
]
|
||||
)
|
||||
|
||||
|
||||
Why isort?
|
||||
==========
|
||||
|
||||
isort simply stands for import sort. It was originally called "sortImports" however I got tired of typing the extra
|
||||
characters and came to the realization camelCase is not pythonic.
|
||||
|
||||
I wrote isort because in an organization I used to work in the manager came in one day and decided all code must
|
||||
have alphabetically sorted imports. 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 mindlessly performing a function, but not too lazy to spend 16
|
||||
hours automating it. I was given permission to open source sortImports and here we are :)
|
||||
|
||||
--------------------------------------------
|
||||
|
||||
Thanks and I hope you find isort useful!
|
||||
|
||||
~Timothy Crosley
|
||||
|
||||
|
Reference in New Issue
Block a user