Проблемы из-за искажений в 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

Если кто-нибудь сможет объяснить мне любой из этих пунктов и предложить решения, я был бы очень благодарен. Также извините за стену поста. Я думал о разделении на несколько вопросов, но не был уверен. В любом случае, спасибо, что нашли время, чтобы прочитать и ответить.

0 ответов

Другие вопросы по тегам