diff options
author | Timothy Crosley <timothy.crosley@gmail.com> | 2019-03-07 23:53:50 -0800 |
---|---|---|
committer | Timothy Crosley <timothy.crosley@gmail.com> | 2019-03-07 23:53:50 -0800 |
commit | 12c034a100afb18c6628b4b972516e87a10eec8d (patch) | |
tree | fef4879fb16573f0bc7b507c90fbdd6225f77519 | |
parent | 476ebe46f761a1b75096d895ce24170439f46680 (diff) | |
download | isort-12c034a100afb18c6628b4b972516e87a10eec8d.tar.gz |
Fix issue #890
-rw-r--r-- | CHANGELOG.md | 1 | ||||
-rw-r--r-- | isort/isort.py | 3 | ||||
-rw-r--r-- | isort/main.py | 2 | ||||
-rw-r--r-- | isort/settings.py | 3 | ||||
-rw-r--r-- | test_isort.py | 22 |
5 files changed, 29 insertions, 2 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md index f7ebed58..c5826060 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ Changelog ### 4.3.13 - March 6, 2019 - hot fix release - Fixed the inability to accurately determine import section when a mix of conda and virtual environments are used. - Fixed some output being printed even when --quiet mode is enabled. +- Fixed issue #890 interoperability with PyCharm by allowing case sensitive non type grouped sorting ### 4.3.12 - March 6, 2019 - hot fix release - Fix error caused when virtual environment not detected diff --git a/isort/isort.py b/isort/isort.py index ff3921bf..22e5d019 100644 --- a/isort/isort.py +++ b/isort/isort.py @@ -303,7 +303,8 @@ class SortImports(object): prefix = "B" else: prefix = "C" - module_name = module_name.lower() + if not config['case_sensitive']: + module_name = module_name.lower() if section_name is None or 'length_sort_' + str(section_name).lower() not in config: length_sort = config['length_sort'] else: diff --git a/isort/main.py b/isort/main.py index 299562ed..5da3fb3a 100644 --- a/isort/main.py +++ b/isort/main.py @@ -292,6 +292,8 @@ def parse_args(argv=None): parser.add_argument('--unsafe', dest='unsafe', action='store_true', help='Tells isort to look for files in standard library directories, etc. ' 'where it may not be safe to operate in') + parser.add_argument('--case-sensitive', dest='case_sensitive', action='store_true', + help='Tells isort to include casing when sorting module names') parser.add_argument('files', nargs='*', help='One or more Python source files that need their imports sorted.') arguments = {key: value for key, value in vars(parser.parse_args(argv)).items() if value} diff --git a/isort/settings.py b/isort/settings.py index c796d966..b1075148 100644 --- a/isort/settings.py +++ b/isort/settings.py @@ -162,7 +162,8 @@ default = {'force_to_top': [], 'no_lines_before': [], 'no_inline_sort': False, 'ignore_comments': False, - 'safety_excludes': True} + 'safety_excludes': True, + 'case_sensitive': False} @lru_cache() diff --git a/test_isort.py b/test_isort.py index fb095fc7..ee08b00e 100644 --- a/test_isort.py +++ b/test_isort.py @@ -2845,3 +2845,25 @@ def test_unwrap_issue_762(): test_input = ('from os.\\\n' ' path import (join, split)') assert SortImports(file_contents=test_input).output == 'from os.path import join, split\n' + + +def test_ensure_support_for_non_typed_but_cased_alphabetic_sort_issue_890(): + test_input = ('from pkg import BALL\n' + 'from pkg import RC\n' + 'from pkg import Action\n' + 'from pkg import Bacoo\n' + 'from pkg import RCNewCode\n' + 'from pkg import actual\n' + 'from pkg import rc\n' + 'from pkg import recorder\n') + expected_output = ('from pkg import Action\n' + 'from pkg import BALL\n' + 'from pkg import Bacoo\n' + 'from pkg import RC\n' + 'from pkg import RCNewCode\n' + 'from pkg import actual\n' + 'from pkg import rc\n' + 'from pkg import recorder\n') + assert SortImports(file_contents=test_input, case_sensitive=True, order_by_type=False, + force_single_line=True).output == expected_output + |