summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMaxim Kurnikov <maxim.kurnikov@gmail.com>2019-04-26 00:17:50 +0300
committerMaxim Kurnikov <maxim.kurnikov@gmail.com>2019-04-26 00:17:50 +0300
commitc8c47b39a65bdb186122aca3b6dc34d2339b913e (patch)
tree1e8f74849ceb04be06b177e3f8dec7022a41c79b
parent2179650b05f54dc00f9c01d687ea6dc7f1b80e42 (diff)
downloadisort-c8c47b39a65bdb186122aca3b6dc34d2339b913e.tar.gz
extract some static methods
-rw-r--r--isort/format.py21
-rw-r--r--isort/isort.py65
2 files changed, 43 insertions, 43 deletions
diff --git a/isort/format.py b/isort/format.py
new file mode 100644
index 00000000..0c76a143
--- /dev/null
+++ b/isort/format.py
@@ -0,0 +1,21 @@
+def format_simplified(import_line: str) -> str:
+ import_line = import_line.strip()
+ if import_line.startswith("from "):
+ import_line = import_line.replace("from ", "")
+ import_line = import_line.replace(" import ", ".")
+ elif import_line.startswith("import "):
+ import_line = import_line.replace("import ", "")
+
+ return import_line
+
+
+def format_natural(import_line: str) -> str:
+ import_line = import_line.strip()
+ if not import_line.startswith("from ") and not import_line.startswith("import "):
+ if "." not in import_line:
+ return "import {0}".format(import_line)
+ parts = import_line.split(".")
+ end = parts.pop(-1)
+ return "from {0} import {1}".format(".".join(parts), end)
+
+ return import_line
diff --git a/isort/isort.py b/isort/isort.py
index 370c6b72..84c270c6 100644
--- a/isort/isort.py
+++ b/isort/isort.py
@@ -36,6 +36,7 @@ from difflib import unified_diff
from typing import TYPE_CHECKING, Any, Dict, Iterable, List, Mapping, Optional, Sequence, Tuple
from isort import utils
+from isort.format import format_natural, format_simplified
from . import settings
from .finders import FindersManager
@@ -77,8 +78,8 @@ class _SortImports(object):
self.place_imports = {} # type: Dict[str, List[str]]
self.import_placements = {} # type: Dict[str, str]
- self.remove_imports = [self._format_simplified(removal) for removal in self.config['remove_imports']]
- self.add_imports = [self._format_natural(addition) for addition in self.config['add_imports']]
+ self.remove_imports = [format_simplified(removal) for removal in self.config['remove_imports']]
+ self.add_imports = [format_natural(addition) for addition in self.config['add_imports']]
self._section_comments = ["# " + value for key, value in self.config.items()
if key.startswith('import_heading') and value]
@@ -106,9 +107,9 @@ class _SortImports(object):
# default encoding for open(mode='r') on the system
fallback_encoding = locale.getpreferredencoding(False)
- file_contents, used_encoding = self.read_file_contents(file_path,
- encoding=preferred_encoding,
- fallback_encoding=fallback_encoding)
+ file_contents, used_encoding = read_file_contents(file_path,
+ encoding=preferred_encoding,
+ fallback_encoding=fallback_encoding)
if used_encoding is None:
self.skipped = True
if self.config['verbose']:
@@ -218,21 +219,6 @@ class _SortImports(object):
else:
return utils.infer_line_separator(file_contents)
- def read_file_contents(self, file_path: str, encoding: str, fallback_encoding: str) -> Tuple[Optional[str], Optional[str]]:
- with open(file_path, encoding=encoding, newline='') as file_to_import_sort:
- try:
- file_contents = file_to_import_sort.read()
- return file_contents, encoding
- except UnicodeDecodeError:
- pass
-
- with open(file_path, encoding=fallback_encoding, newline='') as file_to_import_sort:
- try:
- file_contents = file_to_import_sort.read()
- return file_contents, fallback_encoding
- except UnicodeDecodeError:
- return None, None
-
@property
def correctly_sorted(self) -> bool:
return not self.incorrectly_sorted
@@ -864,29 +850,6 @@ class _SortImports(object):
return line, comments, new_comments
- @staticmethod
- def _format_simplified(import_line: str) -> str:
- import_line = import_line.strip()
- if import_line.startswith("from "):
- import_line = import_line.replace("from ", "")
- import_line = import_line.replace(" import ", ".")
- elif import_line.startswith("import "):
- import_line = import_line.replace("import ", "")
-
- return import_line
-
- @staticmethod
- def _format_natural(import_line: str) -> str:
- import_line = import_line.strip()
- if not import_line.startswith("from ") and not import_line.startswith("import "):
- if "." not in import_line:
- return "import {0}".format(import_line)
- parts = import_line.split(".")
- end = parts.pop(-1)
- return "from {0} import {1}".format(".".join(parts), end)
-
- return import_line
-
def _skip_line(self, line: str) -> bool:
skip_line = self._in_quote
if self.index == 1 and line.startswith("#"):
@@ -1113,3 +1076,19 @@ def determine_file_encoding(fname: str, default: str = 'utf-8') -> str:
break
return coding
+
+
+def read_file_contents(file_path: str, encoding: str, fallback_encoding: str) -> Tuple[Optional[str], Optional[str]]:
+ with open(file_path, encoding=encoding, newline='') as file_to_import_sort:
+ try:
+ file_contents = file_to_import_sort.read()
+ return file_contents, encoding
+ except UnicodeDecodeError:
+ pass
+
+ with open(file_path, encoding=fallback_encoding, newline='') as file_to_import_sort:
+ try:
+ file_contents = file_to_import_sort.read()
+ return file_contents, fallback_encoding
+ except UnicodeDecodeError:
+ return None, None