Проблемы из-за искажений в Python - обратный порядок и сортировка с помощью "as"
Я скачал и начал использовать isort для Python. https://pypi.python.org/pypi/isort.
Есть несколько проблем, с которыми я сталкиваюсь, и я надеялся, что другие могут знать ответ, потому что я не вижу ничего в его документах или вики.
Сортировка псевдонимов Python
Вот как isort будет сортировать импорт Python, который использует as
,
До:
from .core import check
from . import bridgebuilder as bridge
from . import plugin as plug
from . import common
from . import dict_classes
После:
from . import plugin as plug
from . import bridgebuilder as bridge
from . import common
from . import dict_classes
from .core import check
Идея в том, что as
Заявления обрабатываются специально и размещаются сверху. Вы можете игнорировать это, добавив combine_as_imports
в .isort.cfg
файл
Вот это
После (comb_as_imports=1)
from . import common
from . import plugin as plug
from . import dict_classes
from . import bridgebuilder as bridge
from .core import check
Хлоп. Я получаю, что заказ все еще технически возрастает, если вы удалите as
части и просто посмотреть на имена модулей, но это совсем не то, что я ожидал.
Что я ожидал
from . import common
from .core import check
from . import dict_classes
from . import plugin as plug
from . import bridgebuilder as bridge
Таким образом, глаз перемещается в одном направлении (слева направо в нижний правый угол), чтобы прочитать имена каждого модуля / пространства имен. В конце концов, я фактически не беспокоюсь о названии модуля большую часть времени - я просто забочусь о пространстве имен, необходимом для ввода чего-либо в файл.
Не достаточно вариантов сортировки
Я еще не нашел способ сортировки по убыванию.
Это то, что делает isort
До
import os
import itertools
import functools
import yamlordereddictloader
import six
import copy
from .core import check
from . import bridgebuilder
После (длина строки - по возрастанию - по алфавиту)
import os
import copy
import functools
import itertools
import six
import yamlordereddictloader
from .core import check
from . import bridgebuilder
Что я хотел (длина строки - по убыванию - по алфавиту)
import functools
import itertools
import copy
import os
import yamlordereddictloader
import six
from . import bridgebuilder
from .core import check
Если кто-нибудь сможет объяснить мне любой из этих пунктов и предложить решения, я был бы очень благодарен. Также извините за стену поста. Я думал о разделении на несколько вопросов, но не был уверен. В любом случае, спасибо, что нашли время, чтобы прочитать и ответить.