:+1::tada: Прежде всего, спасибо за то, что нашли время внести свой вклад в Spyder! :tada::+1:
На этой странице очень высокоуровнево описано, как внести вклад в Spyder. Пожалуйста, ознакомьтесь с документацией для разработчиков Spyder IDE для получения более подробного руководства о том, как это сделать. Также убедитесь, что вы знакомы с нашим рабочим процессом Github.
Прежде чем публиковать отчёт, пожалуйста, внимательно прочитайте наш руководство по устранению неполадок и поищите в системе отслеживания проблем описание вашей ошибки и проблемы, так как подавляющее большинство ошибок либо дублируются, либо могут быть исправлены на стороне пользователя несколькими простыми шагами. Спасибо!
Отправка полезных, эффективных и точных отчётов о проблемах может значительно улучшить Spyder для всех. Соответственно, пожалуйста, прочтите соответствующий раздел Руководства по устранению неполадок Spyder, в котором подробно описывается, как это сделать.
Самое главное, помимо сообщения об ошибке/трассировки и запрошенной информации об окружении/зависимостях, пожалуйста, убедитесь, что вы включили подробное, пошаговое описание того, что вызвало проблему. В противном случае мы, скорее всего, не сможем найти и исправить её, и вашу проблему придётся закрыть через неделю (7 дней). Спасибо!
Сначала перейдите к репозиторию Spyder в своём веб-браузере и нажмите кнопку «Fork», чтобы создать личную копию репозитория в своей собственной учётной записи Github. Затем нажмите кнопку «Clone or Download» в вашем репозитории, скопируйте ссылку и выполните следующую команду в командной строке, чтобы клонировать репозиторий:
$ git clone <LINK-TO-YOUR-REPO>
Наконец, установите удалённый источник на официальный репозиторий Spyder с помощью:
$ git remote add upstream https://github.com/spyder-ide/spyder.git
Если вы используете Anaconda или Conda-forge, вы можете создать окружение и установить необходимые зависимости следующим образом:
$ conda create -n spyder-dev -c conda-forge python=3.9
$ conda activate spyder-dev
$ conda env update --file requirements/main.yml
После этого вам необходимо установить специфические зависимости Spyder для каждой операционной системы. Например, если вы работаете на macOS, вам нужно запустить
$ conda env update --file requirements/macos.yml
Вы также можете использовать virtualenv
в Linux, но настоятельно рекомендуется использовать conda
:
$ mkvirtualenv spyder-dev
$ workon spyder-dev
(spyder-dev) $ pip install -e .
Чтобы запустить Spyder из вашего клона в режиме разработки, с дополнительными проверками и опциями (выполните --help
, чтобы увидеть их), запустите его через скрипт bootstrap.py
в корневом каталоге репозитория:
$ python bootstrap.py
Обратите внимание, что если вы работаете на macOS 10.15 или более ранней версии, вам потребуется вызвать pythonw
вместо python
.
Чтобы запустить Spyder в режиме отладки, полезном для отслеживания проблемы, вы можете выполнить:
$ python bootstrap.py --debug
Важное примечание: Чтобы протестировать любые изменения, внесённые вами в исходный код Spyder, вам необходимо перезапустить Spyder или запустить новый экземпляр (вы можете запускать несколько копий одновременно, сняв флажок «Использовать один экземпляр» в разделе «Общие» > «Дополнительные настройки»).
Для установки наших тестовых зависимостей под Anaconda:
$ conda env update --file requirements/tests.yml
При использовании pip
(только для экспертов) запустите следующее из каталога, где хранится ваш git-клон:
$ pip install -e .[test]
Чтобы запустить тестовый набор Spyder, используйте (из корневого каталога spyder
):
$ ## Ветви Spyder
Когда вы начинаете работать над новым pull request (PR), вы должны быть уверены, что ваша работа ведётся на правильной ветви Spyder, и что вы основываете свой PR на Github против неё.
Чтобы помочь вам, проблемы на Github отмечены вехой, которая указывает правильную ветвь для использования. Если нет, следуйте этим рекомендациям:
* Используйте ветвь `5.x` только для исправлений ошибок (*например*, вехи `v5.0.1` или `v5.1.2`).
* Используйте `master`, чтобы вводить новые функции или нарушать совместимость с предыдущими версиями Spyder (*например*, вехи `v6.0beta1` или `v6.0beta2`).
Вы также должны отправлять исправления ошибок в `5.x` или `master` для ошибок, которые присутствуют только в этих соответствующих ветвях.
Для начала работы над новым PR необходимо выполнить следующие команды, заполнив имена ветвей там, где это уместно:
```bash
$ git checkout <SPYDER-BASE-BRANCH>
$ git pull upstream <SPYDER-BASE-BRANЧ>
$ git checkout -b <NAME-NEW-BRANCH>
Если вы начали свою работу не в той базовой ветви или хотите перенести её, вы можете изменить базовую ветвь с помощью git rebase --onto
, например:
$ git rebase --onto <NEW-BASE-BRANCH> <OLD-BASE-BRANCH> <YOUR-BRANCH>
Например, перенос my_branch
из master
в 5.x
:
$ git rebase --onto 5.x master my_branch
Spyder и spyder-kernels разрабатываются совместно, потому что между ними происходит много общения, чтобы запустить код, написанный в редакторе, в консоли IPython. Способ связывания ветвей в их соответствующих репозиториях представлен в таблице ниже:
Ветвь Spyder | Связанная ветвь spyder-kernels |
---|---|
5.x | 2.x |
master (будущая 6.x) | master (будущая 3.x) |
По этой причине клон spyder-kernels помещается во вложенную папку external-deps
репозитория Spyder. Инструкции в этом разделе помогут вам в случае, если вам нужно внести изменения, затрагивающие оба репозитория одновременно.
Первое, что вам нужно сделать, это клонировать проект git-subrepo и следовать этим инструкциям для его установки (в Windows вам нужно использовать Git Bash для их запуска):
git clone https://github.com/ingydotnet/git-subrepo /path/to/git-subrepo
echo 'source /path/to/git-subrepo/.rc' >> ~/.bashrc
source ~/.bashrc
В качестве примера предположим, что (i) ваше имя пользователя Github — myuser
; (ii) у вас есть два репозитория git, размещённых по адресам ~/spyder
и ~/spyder-kernels
, которые ссылаются на https://github.com/myuser/spyder
и https://github.com/myuser/spyder-kernels
соответственно; и (iii) у вас есть две ветви с именами fix_in_spyder
и fix_in_kernel
в каждом из этих репозиториев git соответственно. Если вы хотите открыть совместный PR в spyder
и spyder-kernels
, который связывает эти ветви, вот как это сделать:
Перейдите в папку ~/spyder
, проверьте вашу ветку fix_in_spyder
и замените клон spyder-kernels во вложенной папке external-deps
на клон вашей ветки fix_in_kernel
:
$ cd ~/spyder
$ git checkout fix_in_spyder
$ git subrepo pull external-deps/spyder-kernels -r https://github.com/myuser/spyder-kernels.git -b fix_in_kernel -u -f
Теперь вы можете открыть PR на https://github.com/spyder-ide/spyder
и на https://github.com/spyder-ide/spyder-kernels
для каждой из ваших ветвей.
Если вы вносите дополнительные изменения в ветку fix_in_kernel
в spyder-kernels
(например, добавляете новый файл, как в примере ниже), вам необходимо синхронизировать их в вашей ветке fix_in_spyder
Spyder следующим образом:
$ cd ~/spyder-kernels
$ git checkout fix_in_kernel
$ touch foo.py
$ git add -A
$ git commit -m "Adding foo.py to the repo"
$ git push origin fix_in_kernel
$ cd ~/spyder
$ git checkout fix_in_spyder
$ git subrepo pull external-deps/spyder-kernels -r https://github.com/myuser/spyder-kernels.git -b fix_in_kernel -u -f
$ git push origin
Примечание: В тексте запроса присутствуют фрагменты кода на языке программирования Python и команды для работы с системой контроля версий Git. Эти фрагменты оставлены без перевода, так как они являются частью технической документации и содержат специфическую терминологию. Исправление в Spyder
Когда ваш PR fix_in_kernel будет объединён, вам необходимо обновить ветку fix_in_spyder в Spyder, потому что клон в репозитории Spyder должен снова указывать на репозиторий spyder-kernel, а не на ваш собственный клон. Для этого выполните:
$ git subrepo pull external-deps/spyder-kernels -r https://github.com/spyder-ide/spyder-kernels.git -b <branch> -u -f
где <branch>
должна быть 2.x
, если ваша ветка fix_in_spyder была сделана против ветки Spyder 5.x
; и master
, если вы сделали это против нашей ветки master
здесь.
Как и spyder-kernels, Spyder тесно интегрирован с python-lsp-server, чтобы обеспечить завершение кода, линтинг и сворачивание в своём редакторе; и qtconsole для своей консоли IPython.
В связи с этим клон этих проектов помещается в каталог external-deps, который управляется проектом git subrepo. Если вы хотите сделать запрос на вытягивание в python-lsp-server или qtconsole, который влияет на функциональность в Spyder, пожалуйста, внимательно прочитайте инструкции в предыдущем разделе, поскольку они очень похожи для этих случаев. Резюме этих инструкций, применяемых к этим проектам, следующее:
Сначала вам нужно создать запрос на вытягивание в python-lsp-server или qtconsole с изменениями, которые вы хотите внести там. Предположим, что ветка, из которой создан этот запрос, называется fix_in_external_dep
.
Затем вам нужно создать ветку в Spyder (назовём её fix_in_spyder
) с исправлениями, требующими этого запроса, и обновить подрепозиторий python-lsp-server. Для этого вам необходимо выполнить следующие команды:
$ git checkout -b fix_in_spyder
$ git subrepo pull external-deps/python-lsp-server -r https://github.com/myuser/python-lsp-server.git -b fix_in_external_dep -u -f
если исправление находится в python-lsp-server, или
```
$ git checkout -b fix_in_spyder
$ git subrepo pull external-deps/qtconsole -r https://github.com/myuser/qtconsole.git -b fix_in_external_dep -u -f
```
Если исправление находится в qtconsole. И затем зафиксируйте изменения, которые вам нужно внести в Spyder.
Если вам нужно добавить больше коммитов в fix_in_external_dep
, вам необходимо обновить fix_in_spyder
этими командами:
$ git checkout fix_in_spyder
$ git subrepo pull external-deps/python-lsp-server -r https://github.com/myuser/python-lsp-server.git -b fix_in_external_dep -u -f
$ git push origin fix_in_spyder
или
```
$ git checkout fix_in_spyder
$ git subrepo pull external-deps/qtconsole -r https://github.com/myuser/qtconsole.git -b fix_in_external_dep -u -f
$ git push origin fix_in_spyder
```
После того как fix_in_external_dep
будет объединён, вам необходимо обновить подрепозитории python-lsp-server или qtconsole в вашей ветке fix_in_spyder
:
$ git checkout fix_in_spyder
$ git subrepo pull external-deps/python-lsp-server -r https://github.com/python-lsp/python-lsp-server.git -b develop -u -f
или
```
$ git checkout fix_in_spyder
$ git subrepo pull external-deps/qtconsole -r https://github.com/jupyter/qtconsole.git -b master -u -f
```
Все файлы или группы файлов, включая исходный код, изображения, значки и другие активы, происходящие из проектов за пределами организации Spyder (независимо от лицензии), должны быть сначала одобрены командой Spyder. Всегда консультируйтесь с нами (в Github, Gitter, Google Group и т. д.), прежде чем пытаться добавить контент из внешнего проекта, и делайте это только при необходимости.
Код, рассматриваемый для включения, должен иметь разрешительную (т. е. некопилефтную) лицензию, особенно в следующем порядке предпочтения:
Кроме того, внешние активы (шрифты, значки, изображения, звуки,
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )