Nano Hash - криптовалюты, майнинг, программирование

Многострочный словарь PEP8 с многострочным значением

Я использую Black для Python, который соответствует PEP8. Он удаляет отступ во второй строке двухстрочной строки значений:

mydict = {
    'key0': 'value0',
    'key1': 'long-two-lines-string-value1-does-not-fit-in-one-line-has-to-continue'
            'value1'
}

to:

mydict = {
    'key0': 'value0',
    'key1': 'long-two-lines-string-value1-does-not-fit-in-one-line-has-to-continue'
    'value1',
}

Коллега поставил под сомнение это изменение, и мне интересно, есть ли какой-либо ресурс / ссылка, которую я могу использовать для резервного копирования решения Блэка отформатировать код, например?

Не удалось найти что-то в PEP8 — Руководство по стилю для кода Python и стиль Black code.

Demo

Связано, но не отвечает на мой вопрос: Как правильно отформатировать многострочный словарь в Python?


PS: # fmt: off запрещает черным форматировать строку, но я не хочу его использовать, так как моя команда вообще не использует черные.


  • Если остальная часть вашей команды не использует черный цвет, рассмотрите возможность использования чего-то менее самоуверенного. 09.10.2020
  • Я не думаю, что вы можете защитить его. На мой взгляд, продолжение должно быть либо выровнено с открытием (ваше состояние перед), либо иметь один уровень дополнительного отступа, иначе я прочитаю его как ключ и запутаюсь в запятой, а не в двоеточии, а затем должен вернуться, чтобы решить, что это продолжение. Обернутый элемент, который должен следовать указаниям на python.org/dev/peps. /pep-0008/#indentation — это значение. Я был бы склонен поднять это как ошибку, чтобы узнать, что думают сопровождающие. 09.10.2020
  • @chepner Я пытался использовать другие плагины , но они либо сломают код, либо замедлят работу моего текстового редактора. Черный действительно работает потрясающе до сих пор, за исключением этого случая. Однако это едва настраивается, поэтому я боюсь, что вариант отказаться от него на столе. 09.10.2020
  • @jonrsharpe Я думаю, что превращение вашего комментария в ответ имело бы смысл. Я открыл проблему GitHub. 09.10.2020
  • То, что почти не настраивается, Блэк считает особенностью. Если вам нужно защищать выбор, который он делает, значит, вы не входите в его целевую аудиторию. Вы обязаны своей команде, а не инструменту. 09.10.2020
  • @chepner Я использовал эту фразу прямо из README Блэка, не имел в виду это, просто хотел подчеркнуть, что нет пользовательских настроек, которые бы помешали Блэку коснуться этой строки. :) 09.10.2020

Ответы:


1

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

e.g

mydict = {
    "key0": "value0",
    "key1": "long-two-lines-string-value1-does-not-fit-in-one-line-has-to-continue value1",
}

Возможно, использование круглых скобок также сделает значение более читабельным? (обычно это мой выбор) например.

mydict = {
    "key0": "value0",
    "key1": (
        "long-two-lines-string-value1-does-not-fit-in-one-"
        "line-has-to-continue value1"
    ),
}

Кстати, заметил, что черный не заменил ваши одинарные кавычки двойными кавычками; это настройка, которую вы используете для своих проектов?

09.10.2020
  • В моем случае один вкладыш нарушает максимальную длину строки. Что касается скобок, я не уверен, что они действительно решают проблему или маскируют ее здесь, но они действительно помогают. Я отключил нормализацию строк, потому что команда использует одинарные кавычки для строк, хотя я лично предпочитаю методологию C, но у нас демократия! :) 09.10.2020
  • Вы также представили проблему, что является хорошим способом получить больше контекста. 10.10.2020
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..