У меня недавно у меня был первый нетривиальный 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)
Чтобы быть понятным, я думаю, что это хорошее сообщение об ошибке. Это даже включает в себя сокращенную ссылку для поиска большего количества помощи в Интернете. Я просто подумал, что это может быть улучшено.
Царапайте зуд, если у вас есть один. Если вы чувствуете, что нет ничего, чтобы внести свой вклад в проект. Тот. Является. В ПОРЯДКЕ. Вы уже делаете хорошую работу.
У меня были две основные болевые точки:
- Терминальная упаковка не весело. Может быть, может быть сделано небольшая работа, чтобы разделить сообщение об ошибке более изящно на несколько строк.
- Соответствующее утверждение 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 двумя способами:
Разрушите каждую ошибку деталей по нескольким нормам номинала, а не расположены на одной строке. Надеюсь, это помогает читателям легче сканировать сообщение об ошибке.
Измените представление SQL в сообщении для использования ул …| (% s) вместо текущего поведения, которое использует репре (%r). Это должно помочь читателям распознавать структуру их SQL, особенно если это многострочное заявление SQL. В многослойном случае SQL будет напечатан по нескольким строкам вместо печати скрепленного «\ N».
Исправления: # 4500
Этот запрос на тягу:
- [X ] Краткое исправление кода
- Пожалуйста, включите номер выпуска и создайте проблему, если ни один не существует, что должно включать полный пример проблемы. Одним из стройных исправлений кода без проблем и демонстрации не принимается.
- Пожалуйста, включите:
Исправления: # <номер выпуска>
в сообщении - Пожалуйста, включите тесты. Одним из фиксирований в строке без тестов не будет принято.
Этот маленький развал немного развелся.
Вы потерпите неудачу CI Build. Все хорошо.
К счастью, сопровождающий проекта был очень полезным и дружелюбным на каждом этапе пути. Я не чувствовал себя комфортно, копаясь в вопросах Python2-3, поэтому он вошел и отсортировал этот кусок. Если бы это было до меня, я был бы ушел с «так, когда SQLALCHEMY DEMPLING поддержка Python2 😄?». Так что это приводит меня к моей последней на вынос.
Решение проблемы не цель. Быть частью команды это цель.
- Вы можете внести свой вклад. Не чувствую, что вам нужно. Ваша собственная работа важна.
- Если вы заметите возможность, помните, что вы можете сделать это.
- Вероятно, будет трудно так, как вы не ожидали.
- Ты не одинок. Удар дорожный удар – это часть быть в команде.
Оригинал: “https://dev.to/natec425/getting-my-first-pr-merged-2mn0”