Рубрики
Без рубрики

Получить мой первый PR слитый

История, демонстрирующая один способ подумать о содействии открытым исходным кодом. Теги с Opensource, Python.

У меня недавно у меня был первый нетривиальный PR, объединенный в проект с открытым исходным кодом, и я надеялся, что моя история может помочь вам также чувствовать себя уполномоченным вносить вклад.

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

Я помогал своим ученикам отладить код БД, и я заметил конкретное сообщение об ошибке, которое я мог бы подумать, можно улучшить.

(sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter 'id' [SQL: 'select\\n    *\\nfrom\\n     reviews\\nwhere\\n    id = %(id)s'] (Background on this error at: http://sqlalche.me/e/cd3x)

Чтобы быть понятным, я думаю, что это хорошее сообщение об ошибке. Это даже включает в себя сокращенную ссылку для поиска большего количества помощи в Интернете. Я просто подумал, что это может быть улучшено.

Царапайте зуд, если у вас есть один. Если вы чувствуете, что нет ничего, чтобы внести свой вклад в проект. Тот. Является. В ПОРЯДКЕ. Вы уже делаете хорошую работу.

У меня были две основные болевые точки:

  1. Терминальная упаковка не весело. Может быть, может быть сделано небольшая работа, чтобы разделить сообщение об ошибке более изящно на несколько строк.
  2. Соответствующее утверждение SQL выглядит немного отлично, чем было написано. Я думал, что некоторые работы могут быть сделаны, чтобы сделать SQL легче узнаваемо.

Таким образом, приведенный выше пример превратился бы во что-то вроде следующее:

(sqlalchemy.exc.InvalidRequestError) A value is required for bind parameter 'id'
[SQL: (select
    *
from
    reviews
where
    id = %(id)s)]
(Background on this error at: http://sqlalche.me/e/cd3x)

Удивительно, у меня есть четко определенный зуд для нуля. Найти код ответственного, не занимал слишком много времени, и это было так хорошо и мало. Я должен был изменить две крошечные линии.

        details = [self._message(as_unicode=as_unicode)]
        if self.statement:
-           details.append("[SQL: %r]" % self.statement)
+           details.append("[SQL: %s]" % self.statement)
            if self.params:
                params_repr = util._repr_params(self.params, 10)
                details.append("[parameters: %r]" % params_repr)
        code_str = self._code_str()
        if code_str:
            details.append(code_str)
-       return " ".join(["(%s)" % det for det in self.detail] + details)
+       return "\n".join(["(%s)" % det for det in self.detail] + details)

Я должен был изменить % r к % s и а "" к "\ n" Отказ

Это может потребоваться небольшая работа, чтобы найти соответствующий код, но начинающий программист может сделать это изменение.

Проект под вопросом, SQLalchemy ( https://github.com/sqlalchemy/sqlalchemy/ ), является популярным проектом Python, который поддерживает Python 2 и 3. Поэтому я нажал на нехватку, связанную с поддержкой Cross-Version, которую я не был готов, чтобы решить самостоятельно. Кроме того, хорошая горстка испытаний сломалась за такое небольшое изменение. Возьми заглянуть на финал PR:

Это изменяет форматирование ошибок для emplationError двумя способами:

  1. Разрушите каждую ошибку деталей по нескольким нормам номинала, а не расположены на одной строке. Надеюсь, это помогает читателям легче сканировать сообщение об ошибке.

  2. Измените представление SQL в сообщении для использования ул …| (% s) вместо текущего поведения, которое использует репре (%r). Это должно помочь читателям распознавать структуру их SQL, особенно если это многострочное заявление SQL. В многослойном случае SQL будет напечатан по нескольким строкам вместо печати скрепленного «\ N».

Исправления: # 4500

Этот запрос на тягу:

  • [X ] Краткое исправление кода
    • Пожалуйста, включите номер выпуска и создайте проблему, если ни один не существует, что должно включать полный пример проблемы. Одним из стройных исправлений кода без проблем и демонстрации не принимается.
    • Пожалуйста, включите: Исправления: # <номер выпуска> в сообщении
    • Пожалуйста, включите тесты. Одним из фиксирований в строке без тестов не будет принято.

Этот маленький развал немного развелся.

Вы потерпите неудачу CI Build. Все хорошо.

К счастью, сопровождающий проекта был очень полезным и дружелюбным на каждом этапе пути. Я не чувствовал себя комфортно, копаясь в вопросах Python2-3, поэтому он вошел и отсортировал этот кусок. Если бы это было до меня, я был бы ушел с «так, когда SQLALCHEMY DEMPLING поддержка Python2 😄?». Так что это приводит меня к моей последней на вынос.

Решение проблемы не цель. Быть частью команды это цель.

  1. Вы можете внести свой вклад. Не чувствую, что вам нужно. Ваша собственная работа важна.
  2. Если вы заметите возможность, помните, что вы можете сделать это.
  3. Вероятно, будет трудно так, как вы не ожидали.
  4. Ты не одинок. Удар дорожный удар – это часть быть в команде.

Оригинал: “https://dev.to/natec425/getting-my-first-pr-merged-2mn0”