You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{"payload":{"allShortcutsEnabled":false,"fileTree":{"":{"items":[{"name":".github","path":".github","contentType":"directory"},{"name":"images","path":"images","contentType":"directory"},{"name":"tools","path":"tools","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".hgignore","path":".hgignore","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"Makefile","path":"Makefile","contentType":"file"},{"name":"README.rst","path":"README.rst","contentType":"file"},{"name":"appendix.rst","path":"appendix.rst","contentType":"file"},{"name":"buildbots.rst","path":"buildbots.rst","contentType":"file"},{"name":"buildworker.rst","path":"buildworker.rst","contentType":"file"},{"name":"clang.rst","path":"clang.rst","contentType":"file"},{"name":"committing.rst","path":"committing.rst","contentType":"file"},{"name":"communication.rst","path":"communication.rst","contentType":"file"},{"name":"compiler.rst","path":"compiler.rst","contentType":"file"},{"name":"conf.py","path":"conf.py","contentType":"file"},{"name":"coredev.rst","path":"coredev.rst","contentType":"file"},{"name":"coverage.rst","path":"coverage.rst","contentType":"file"},{"name":"coverity.rst","path":"coverity.rst","contentType":"file"},{"name":"devcycle.rst","path":"devcycle.rst","contentType":"file"},{"name":"developers.csv","path":"developers.csv","contentType":"file"},{"name":"developers.rst","path":"developers.rst","contentType":"file"},{"name":"docquality.rst","path":"docquality.rst","contentType":"file"},{"name":"documenting.rst","path":"documenting.rst","contentType":"file"},{"name":"experts.rst","path":"experts.rst","contentType":"file"},{"name":"exploring.rst","path":"exploring.rst","contentType":"file"},{"name":"extensions.rst","path":"extensions.rst","contentType":"file"},{"name":"fixingissues.rst","path":"fixingissues.rst","contentType":"file"},{"name":"garbage_collector.rst","path":"garbage_collector.rst","contentType":"file"},{"name":"gdb.rst","path":"gdb.rst","contentType":"file"},{"name":"gitbootcamp.rst","path":"gitbootcamp.rst","contentType":"file"},{"name":"grammar.rst","path":"grammar.rst","contentType":"file"},{"name":"help.rst","path":"help.rst","contentType":"file"},{"name":"index.rst","path":"index.rst","contentType":"file"},{"name":"langchanges.rst","path":"langchanges.rst","contentType":"file"},{"name":"make.bat","path":"make.bat","contentType":"file"},{"name":"motivations.rst","path":"motivations.rst","contentType":"file"},{"name":"porting.rst","path":"porting.rst","contentType":"file"},{"name":"pullrequest.rst","path":"pullrequest.rst","contentType":"file"},{"name":"requirements.txt","path":"requirements.txt","contentType":"file"},{"name":"runtests.rst","path":"runtests.rst","contentType":"file"},{"name":"setup.rst","path":"setup.rst","contentType":"file"},{"name":"silencewarnings.rst","path":"silencewarnings.rst","contentType":"file"},{"name":"stdlibchanges.rst","path":"stdlibchanges.rst","contentType":"file"},{"name":"tracker.rst","path":"tracker.rst","contentType":"file"},{"name":"triaging.rst","path":"triaging.rst","contentType":"file"}],"totalCount":47}},"fileTreeProcessingTime":9.93599,"foldersToFetch":[],"incompleteFileTree":false,"repo":{"id":63972479,"defaultBranch":"main","name":"devguide","ownerLogin":"python","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-07-22T17:48:56.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/1525981?v=4","public":true,"private":false,"isOrgOwned":true},"codeLineWrapEnabled":false,"symbolsExpanded":false,"treeExpanded":true,"refInfo":{"name":"dea2bf258d1af21be64bf95a6447cec862f028c5","listCacheKey":"v0:1743482989.0","canEdit":false,"refType":"tree","currentOid":"dea2bf258d1af21be64bf95a6447cec862f028c5"},"path":"pullrequest.rst","currentUser":null,"blob":{"rawLines":null,"stylingDirectives":null,"colorizedLines":null,"csv":null,"csvError":null,"dependabotInfo":{"showConfigurationBanner":false,"configFilePath":null,"networkDependabotPath":"/python/devguide/network/updates","dismissConfigurationNoticePath":"/settings/dismiss-notice/dependabot_configuration_notice","configurationNoticeDismissed":null},"displayName":"pullrequest.rst","displayUrl":"https://github.com/python/devguide/blob/dea2bf258d1af21be64bf95a6447cec862f028c5/pullrequest.rst?raw=true","headerInfo":{"blobSize":"18.9 KB","deleteTooltip":"You must be signed in to make or propose changes","editTooltip":"You must be signed in to make or propose changes","ghDesktopPath":null,"isGitLfs":false,"onBranch":false,"shortPath":"8592619","siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Fpython%2Fdevguide%2Fblob%2Fdea2bf258d1af21be64bf95a6447cec862f028c5%2Fpullrequest.rst","isCSV":false,"isRichtext":true,"toc":[{"level":1,"text":"Lifecycle of a Pull Request","anchor":"lifecycle-of-a-pull-request","htmlText":"Lifecycle of a Pull Request"},{"level":2,"text":"Introduction","anchor":"introduction","htmlText":"Introduction"},{"level":2,"text":"Quick Guide","anchor":"quick-guide","htmlText":"Quick Guide"},{"level":2,"text":"Step-by-step Guide","anchor":"step-by-step-guide","htmlText":"Step-by-step Guide"},{"level":3,"text":"Resolving Merge Conflicts","anchor":"resolving-merge-conflicts","htmlText":"Resolving Merge Conflicts"},{"level":2,"text":"Making Good PRs","anchor":"making-good-prs","htmlText":"Making Good PRs"},{"level":2,"text":"patchcheck","anchor":"patchcheck","htmlText":"patchcheck"},{"level":2,"text":"Making Good Commits","anchor":"making-good-commits","htmlText":"Making Good Commits"},{"level":2,"text":"Licensing","anchor":"licensing","htmlText":"Licensing"},{"level":2,"text":"Submitting","anchor":"submitting","htmlText":"Submitting"},{"level":2,"text":"Converting an Existing Patch from b.p.o to GitHub","anchor":"converting-an-existing-patch-from-bpo-to-github","htmlText":"Converting an Existing Patch from b.p.o to GitHub"},{"level":2,"text":"Reviewing","anchor":"reviewing","htmlText":"Reviewing"},{"level":3,"text":"How to Review a Pull Request","anchor":"how-to-review-a-pull-request","htmlText":"How to Review a Pull Request"},{"level":2,"text":"Leaving a Pull Request Review on GitHub","anchor":"leaving-a-pull-request-review-on-github","htmlText":"Leaving a Pull Request Review on GitHub"},{"level":2,"text":"Dismissing Review from Another Core Developer","anchor":"dismissing-review-from-another-core-developer","htmlText":"Dismissing Review from Another Core Developer"},{"level":2,"text":"Committing/Rejecting","anchor":"committingrejecting","htmlText":"Committing/Rejecting"},{"level":2,"text":"Crediting","anchor":"crediting","htmlText":"Crediting"}],"lineInfo":{"truncatedLoc":"488","truncatedSloc":"342"},"mode":"file"},"image":false,"isCodeownersFile":null,"isPlain":false,"isValidLegacyIssueTemplate":false,"issueTemplate":null,"discussionTemplate":null,"language":"reStructuredText","languageID":419,"large":false,"planSupportInfo":{"repoIsFork":null,"repoOwnedByCurrentUser":null,"requestFullPath":"/python/devguide/blob/dea2bf258d1af21be64bf95a6447cec862f028c5/pullrequest.rst","showFreeOrgGatedFeatureMessage":null,"showPlanSupportBanner":null,"upgradeDataAttributes":null,"upgradePath":null},"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_dockerfile","releasePath":"/python/devguide/releases/new?marketplace=true","showPublishActionBanner":false},"rawBlobUrl":"https://github.com/python/devguide/raw/dea2bf258d1af21be64bf95a6447cec862f028c5/pullrequest.rst","renderImageOrRaw":false,"richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eLifecycle of a Pull Request\u003c/h1\u003e\u003ca id=\"user-content-lifecycle-of-a-pull-request\" class=\"anchor\" aria-label=\"Permalink: Lifecycle of a Pull Request\" href=\"#lifecycle-of-a-pull-request\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003ca name=\"user-content-introduction\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIntroduction\u003c/h2\u003e\u003ca id=\"user-content-introduction\" class=\"anchor\" aria-label=\"Permalink: Introduction\" href=\"#introduction\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCPython uses a workflow based on pull requests. What this means is\nthat you create a branch in Git, make your changes, push those changes\nto your fork on GitHub (\u003ccode\u003eorigin\u003c/code\u003e), and then create a pull request against\nthe official CPython repository (\u003ccode\u003eupstream\u003c/code\u003e).\u003c/p\u003e\n\u003ca name=\"user-content-quick-guide\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eQuick Guide\u003c/h2\u003e\u003ca id=\"user-content-quick-guide\" class=\"anchor\" aria-label=\"Permalink: Quick Guide\" href=\"#quick-guide\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ca href=\"https://opensource.guide/how-to-contribute/#how-to-submit-a-contribution\" rel=\"nofollow\"\u003eClear communication\u003c/a\u003e is key to contributing to any project, especially an\n\u003ca href=\"https://opensource.guide/\" rel=\"nofollow\"\u003eOpen Source\u003c/a\u003e project like CPython.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eHere is a quick overview of how you can contribute to CPython:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://bugs.python.org/\" rel=\"nofollow\"\u003eCreate an issue\u003c/a\u003e that describes your change \u003ca href=\"#id12\" id=\"user-content-id1\"\u003e[*]\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#id2\"\u003e\u003cspan id=\"user-content-id3\"\u003e:ref:`Create a new branch in Git \u0026lt;pullrequest-steps\u0026gt;`\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWork on changes (e.g. fix a bug or add a new feature)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#id4\"\u003e\u003cspan id=\"user-content-id5\"\u003e:ref:`Run tests \u0026lt;runtests\u0026gt;`\u003c/span\u003e\u003c/a\u003e and \u003ccode\u003emake patchcheck\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#id6\"\u003e\u003cspan id=\"user-content-id7\"\u003e:ref:`Commit \u0026lt;commit-changes\u0026gt;`\u003c/span\u003e\u003c/a\u003e and \u003ca href=\"#id8\"\u003e\u003cspan id=\"user-content-id9\"\u003e:ref:`push \u0026lt;push-changes\u0026gt;`\u003c/span\u003e\u003c/a\u003e\nchanges to your GitHub fork\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://help.github.com/articles/creating-a-pull-request/\"\u003eCreate Pull Request\u003c/a\u003e on GitHub to merge a branch from your fork\u003c/li\u003e\n\u003cli\u003eReview and address \u003ca href=\"https://help.github.com/articles/commenting-on-a-pull-request/\"\u003ecomments on your Pull Request\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eWhen your changes are merged, you can \u003ca href=\"#id10\"\u003e\u003cspan id=\"user-content-id11\"\u003e:ref:`delete the PR branch\n\u0026lt;deleting_branches\u0026gt;`\u003c/span\u003e\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003eCelebrate contributing to CPython! :)\u003c/li\u003e\n\u003c/ol\u003e\n\u003cmarkdown-accessiblity-table\u003e\u003ctable frame=\"void\" id=\"user-content-id12\" rules=\"none\"\u003e\n\n\u003ctbody valign=\"top\"\u003e\n\u003ctr\u003e\u003ctd\u003e\u003ca href=\"#id1\"\u003e[*]\u003c/a\u003e\u003c/td\u003e\u003ctd\u003eIf an issue is trivial (e.g. typo fixes), or if an issue already exists,\nyou can skip this step.\u003c/td\u003e\u003c/tr\u003e\n\u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\u003ca name=\"user-content-step-by-step-guide\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eStep-by-step Guide\u003c/h2\u003e\u003ca id=\"user-content-step-by-step-guide\" class=\"anchor\" aria-label=\"Permalink: Step-by-step Guide\" href=\"#step-by-step-guide\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou should have already \u003ca href=\"#id13\"\u003e\u003cspan id=\"user-content-id14\"\u003e:ref:`set up your system \u0026lt;setup\u0026gt;`\u003c/span\u003e\u003c/a\u003e,\n\u003ca href=\"#id15\"\u003e\u003cspan id=\"user-content-id16\"\u003e:ref:`got the source code \u0026lt;checkout\u0026gt;`\u003c/span\u003e\u003c/a\u003e, and \u003ca href=\"#id17\"\u003e\u003cspan id=\"user-content-id18\"\u003e:ref:`built Python \u0026lt;compiling\u0026gt;`\u003c/span\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eUpdate data from your \u003ccode\u003eupstream\u003c/code\u003e repository:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git fetch upstream\"\u003e\u003cpre\u003egit fetch upstream\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eCreate a new branch in your local clone:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git checkout -b \u0026lt;branch-name\u0026gt; upstream/master\"\u003e\u003cpre\u003egit checkout -b \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e upstream/master\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eMake changes to the code, and use \u003ccode\u003egit status\u003c/code\u003e and \u003ccode\u003egit diff\u003c/code\u003e to see them.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e(Learn more about \u003ca href=\"#id19\"\u003e\u003cspan id=\"user-content-id20\"\u003e:ref:`good-prs`\u003c/span\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eMake sure the changes are fine and don't cause any test failure:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"make patchcheck\n./python -m test\"\u003e\u003cpre\u003emake patchcheck\n./python -m \u003cspan class=\"pl-c1\"\u003etest\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e(Learn more about \u003ca href=\"#id21\"\u003e\u003cspan id=\"user-content-id22\"\u003e:ref:`patchcheck`\u003c/span\u003e\u003c/a\u003e and about \u003ca href=\"#id23\"\u003e\u003cspan id=\"user-content-id24\"\u003e:doc:`runtests`\u003c/span\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eOnce you are satisfied with the changes, add the files and commit them:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git add \u0026lt;filenames\u0026gt;\ngit commit -m '\u0026lt;message\u0026gt;'\"\u003e\u003cpre\u003egit add \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003efilenames\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\ngit commit -m \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u0026lt;message\u0026gt;\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e(Learn more about \u003ca href=\"#id25\"\u003e\u003cspan id=\"user-content-id26\"\u003e:ref:`good-commits`\u003c/span\u003e\u003c/a\u003e)\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eThen push your work to your GitHub fork:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git push origin \u0026lt;branch-name\u0026gt;\"\u003e\u003cpre\u003egit push origin \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eFinally go on \u003ca href=\"#id27\"\u003e\u003cspan id=\"user-content-id28\"\u003e:samp:`https://github.com/{\u0026lt;your-username\u0026gt;}/cpython`\u003c/span\u003e\u003c/a\u003e: you will\nsee a box with the branch you just pushed and a green button that allows\nyou to create a pull request against the official CPython repository.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eWhen people start adding review comments, you can address them by switching\nto your branch, making more changes, committing them, and pushing them to\nautomatically update your PR:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git checkout \u0026lt;branch-name\u0026gt;\n# make changes and run tests\ngit add \u0026lt;filenames\u0026gt;\ngit commit -m '\u0026lt;message\u0026gt;'\ngit push origin \u0026lt;branch-name\u0026gt;\"\u003e\u003cpre\u003egit checkout \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e make changes and run tests\u003c/span\u003e\ngit add \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003efilenames\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\ngit commit -m \u003cspan class=\"pl-s\"\u003e\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u0026lt;message\u0026gt;\u003cspan class=\"pl-pds\"\u003e'\u003c/span\u003e\u003c/span\u003e\ngit push origin \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eIf a core developer reviewing your PR pushed one or more commits to your\nPR branch, then after checking out your branch and before editing, run:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git pull origin \u0026lt;branch-name\u0026gt; # pull = fetch + merge\"\u003e\u003cpre\u003egit pull origin \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e pull = fetch + merge\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf you have made local changes that have not been pushed to your fork and\nthere are merge conflicts, git will warn you about this and enter conflict\nresolution mode. See \u003ca href=\"#id29\"\u003e\u003cspan id=\"user-content-id30\"\u003e:ref:`resolving-merge-conflicts`\u003c/span\u003e\u003c/a\u003e below.\u003c/p\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eIf time passes and there are merge conflicts with the master branch, GitHub\nwill show a warning to this end and you may be asked to address this. Merge\nthe changes from the master branch while resolving the conflicts locally:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git checkout \u0026lt;branch-name\u0026gt;\ngit pull upstream master # pull = fetch + merge\n# resolve conflicts: see \u0026quot;Resolving Merge Conflicts\u0026quot; below\ngit push origin \u0026lt;branch-name\u0026gt;\"\u003e\u003cpre\u003egit checkout \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\ngit pull upstream master \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e pull = fetch + merge\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e resolve conflicts: see \"Resolving Merge Conflicts\" below\u003c/span\u003e\ngit push origin \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eAfter your PR has been accepted and merged, you can \u003ca href=\"#id31\"\u003e\u003cspan id=\"user-content-id32\"\u003e:ref:`delete the branch\n\u0026lt;deleting_branches\u0026gt;`\u003c/span\u003e\u003c/a\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git branch -D \u0026lt;branch-name\u0026gt; # delete local branch\ngit push origin -d \u0026lt;branch-name\u0026gt; # delete remote branch\"\u003e\u003cpre\u003egit branch -D \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e delete local branch\u003c/span\u003e\ngit push origin -d \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch-name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e \u003cspan class=\"pl-c\"\u003e\u003cspan class=\"pl-c\"\u003e#\u003c/span\u003e delete remote branch\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv dir=\"auto\"\u003e\n\u003cp dir=\"auto\"\u003eNote\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYou can still upload a patch to \u003ca href=\"https://bugs.python.org\" rel=\"nofollow\"\u003ebugs.python.org\u003c/a\u003e, but the GitHub pull request\nworkflow is \u003cstrong\u003estrongly\u003c/strong\u003e preferred.\u003c/p\u003e\n\u003c/div\u003e\n\u003ca name=\"user-content-id33\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eResolving Merge Conflicts\u003c/h3\u003e\u003ca id=\"user-content-resolving-merge-conflicts\" class=\"anchor\" aria-label=\"Permalink: Resolving Merge Conflicts\" href=\"#resolving-merge-conflicts\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWhen merging changes from different branches (or variants of a branch on\ndifferent repos), the two branches may contain incompatible changes to one\nor more files. These are called \"merge conflicts\" and need to be manually\nresolved as follows:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eCheck which files have merge conflicts:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git status\"\u003e\u003cpre\u003egit status\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eEdit the affected files and bring them to their intended final state.\nMake sure to remove the special \"conflict markers\" inserted by git.\u003c/p\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003cp dir=\"auto\"\u003eCommit the affected files:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git add \u0026lt;filenames\u0026gt;\ngit merge --continue\"\u003e\u003cpre\u003egit add \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003efilenames\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\ngit merge --continue\u003c/pre\u003e\u003c/div\u003e\n\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003eWhen running the final command, git may open an editor for writing a commit\nmessage. It is usually okay to leave that as-is and close the editor.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSee \u003ca href=\"https://git-scm.com/docs/git-merge\" rel=\"nofollow\"\u003ethe merge command's documentation\u003c/a\u003e\nfor a detailed technical explanation.\u003c/p\u003e\n\u003ca name=\"user-content-making-good-prs\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMaking Good PRs\u003c/h2\u003e\u003ca id=\"user-content-making-good-prs\" class=\"anchor\" aria-label=\"Permalink: Making Good PRs\" href=\"#making-good-prs\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWhen creating a pull request for submission, there are several things that you\nshould do to help ensure that your pull request is accepted.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eFirst, make sure to follow Python's style guidelines. For Python code you\nshould follow \u003ca href=\"http://www.python.org/dev/peps/pep-0008\" rel=\"nofollow\"\u003ePEP 8\u003c/a\u003e, and for C code you should follow \u003ca href=\"http://www.python.org/dev/peps/pep-0007\" rel=\"nofollow\"\u003ePEP 7\u003c/a\u003e. If you have\none or two discrepancies those can be fixed by the core developer who merges\nyour pull request. But if you have systematic deviations from the style guides\nyour pull request will be put on hold until you fix the formatting issues.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSecond, be aware of backwards-compatibility considerations. While the core\ndeveloper who eventually handles your pull request will make the final call on\nwhether something is acceptable, thinking about backwards-compatibility early\nwill help prevent having your pull request rejected on these grounds. Put\nyourself in the shoes of someone whose code will be broken by the change(s)\nintroduced by the pull request. It is quite likely that any change made will\nbreak someone's code, so you need to have a good reason to make a change as\nyou will be forcing someone to update their code. (This obviously does not\napply to new classes or functions; new arguments should be optional and have\ndefault values which maintain the existing behavior.) If in doubt, have a look\nat \u003ca href=\"http://www.python.org/dev/peps/pep-0387\" rel=\"nofollow\"\u003ePEP 387\u003c/a\u003e or \u003ca href=\"#id34\"\u003e\u003cspan id=\"user-content-id35\"\u003e:ref:`discuss \u0026lt;communication\u0026gt;`\u003c/span\u003e\u003c/a\u003e the issue with experienced\ndevelopers.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThird, make sure you have proper tests to verify your pull request works as\nexpected. Pull requests will not be accepted without the proper tests!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eFourth, make sure the entire test suite \u003ca href=\"#id36\"\u003e\u003cspan id=\"user-content-id37\"\u003e:ref:`runs \u0026lt;runtests\u0026gt;`\u003c/span\u003e\u003c/a\u003e \u003cstrong\u003ewithout\nfailure\u003c/strong\u003e because of your changes. It is not sufficient to only run whichever\ntest seems impacted by your changes, because there might be interferences\nunknown to you between your changes and some other part of the interpreter.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eFifth, proper \u003ca href=\"#id38\"\u003e\u003cspan id=\"user-content-id39\"\u003e:ref:`documentation \u0026lt;documenting\u0026gt;`\u003c/span\u003e\u003c/a\u003e\nadditions/changes should be included.\u003c/p\u003e\n\u003ca name=\"user-content-id40\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e\u003ccode\u003epatchcheck\u003c/code\u003e\u003c/h2\u003e\u003ca id=\"user-content-patchcheck\" class=\"anchor\" aria-label=\"Permalink: patchcheck\" href=\"#patchcheck\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25
8000
a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003ccode\u003epatchcheck\u003c/code\u003e is a simple automated patch checklist that guides a developer\nthrough the common patch generation checks. To run \u003ccode\u003epatchcheck\u003c/code\u003e:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp dir=\"auto\"\u003eOn \u003cem\u003eUNIX\u003c/em\u003e (including Mac OS X):\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"make patchcheck\"\u003e\u003cpre\u003emake patchcheck\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eOn \u003cem\u003eWindows\u003c/em\u003e (after any successful build):\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-batchfile notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"python.bat Tools\\scripts\\patchcheck.py\"\u003e\u003cpre\u003epython.bat Tools\\scripts\\patchcheck.py\u003c/pre\u003e\u003c/div\u003e\n\u003c/blockquote\u003e\n\u003cp dir=\"auto\"\u003eThe automated patch checklist runs through:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eAre there any whitespace problems in Python files?\n(using \u003ccode\u003eTools/scripts/reindent.py\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eAre there any whitespace problems in C files?\u003c/li\u003e\n\u003cli\u003eAre there any whitespace problems in the documentation?\n(using \u003ccode\u003eTools/scripts/reindent-rst.py\u003c/code\u003e)\u003c/li\u003e\n\u003cli\u003eHas the documentation been updated?\u003c/li\u003e\n\u003cli\u003eHas the test suite been updated?\u003c/li\u003e\n\u003cli\u003eHas an entry under \u003ccode\u003eMisc/NEWS.d/next\u003c/code\u003e been added?\u003c/li\u003e\n\u003cli\u003eHas \u003ccode\u003eMisc/ACKS\u003c/code\u003e been updated?\u003c/li\u003e\n\u003cli\u003eHas \u003ccode\u003econfigure\u003c/code\u003e been regenerated, if necessary?\u003c/li\u003e\n\u003cli\u003eHas \u003ccode\u003epyconfig.h.in\u003c/code\u003e been regenerated, if necessary?\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe automated patch check doesn't actually \u003cem\u003eanswer\u003c/em\u003e all of these\nquestions. Aside from the whitespace checks, the tool is\na memory aid for the various elements that can go into\nmaking a complete patch.\u003c/p\u003e\n\u003ca name=\"user-content-making-good-commits\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMaking Good Commits\u003c/h2\u003e\u003ca id=\"user-content-making-good-commits\" class=\"anchor\" aria-label=\"Permalink: Making Good Commits\" href=\"#making-good-commits\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eEach feature or bugfix should be addressed by a single pull request,\nand for each pull request there may be several commits. In particular:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eDo \u003cstrong\u003enot\u003c/strong\u003e fix more than one issue in the same commit (except,\nof course, if one code change fixes all of them).\u003c/li\u003e\n\u003cli\u003eDo \u003cstrong\u003enot\u003c/strong\u003e do cosmetic changes to unrelated code in the same\ncommit as some feature/bugfix.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eCommit messages should follow the following structure:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"bpo-42: the spam module is now more spammy (GH-NNNN)\n\nThe spam module sporadically came up short on spam. This change\nraises the amount of spam in the module by making it more spammy.\"\u003e\u003cpre\u003ebpo-42: the spam module is now more spammy (GH-NNNN)\n\nThe spam module sporadically came up short on spam. This change\nraises the amount of spam \u003cspan class=\"pl-k\"\u003ein\u003c/span\u003e the module by making it more spammy.\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe first line or sentence is meant to be a dense, to-the-point explanation\nof what the purpose of the commit is. If this is not enough detail for a\ncommit, a new paragraph(s) can be added to explain in proper depth what has\nhappened (detail should be good enough that a core developer reading the\ncommit message understands the justification for the change).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eCheck \u003ca href=\"#id41\"\u003e\u003cspan id=\"user-content-id42\"\u003e:ref:`the git bootcamp \u0026lt;accepting-and-merging-a-pr\u0026gt;`\u003c/span\u003e\u003c/a\u003e for further\ninstructions on how the commit message should look like when merging a pull\nrequest.\u003c/p\u003e\n\u003ca name=\"user-content-licensing\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eLicensing\u003c/h2\u003e\u003ca id=\"user-content-licensing\" class=\"anchor\" aria-label=\"Permalink: Licensing\" href=\"#licensing\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTo accept your change we must have your formal approval for distributing\nyour work under the \u003ca href=\"https://docs.python.org/dev/license.html#terms-and-conditions-for-accessing-or-otherwise-using-python\" rel=\"nofollow\"\u003ePSF license\u003c/a\u003e. Therefore, you need to sign a\n\u003ca href=\"https://www.python.org/psf/contrib/\" rel=\"nofollow\"\u003econtributor agreement\u003c/a\u003e which allows the \u003ca href=\"https://www.python.org/psf/\" rel=\"nofollow\"\u003ePython Software Foundation\u003c/a\u003e to\nlicense your code for use with Python (you retain the copyright).\u003c/p\u003e\n\u003cdiv dir=\"auto\"\u003e\n\u003cp dir=\"auto\"\u003eNote\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYou only have to sign this document once, it will then apply to all\nyour further contributions to Python.\u003c/p\u003e\n\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eHere are the steps needed in order to sign the CLA:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003eIf you don't have an account on \u003ca href=\"https://bugs.python.org\" rel=\"nofollow\"\u003ebugs.python.org\u003c/a\u003e\n(aka b.p.o), please\n\u003ca href=\"https://bugs.python.org/user?@template=register\" rel=\"nofollow\"\u003eregister\u003c/a\u003e to create one.\u003c/li\u003e\n\u003cli\u003eMake sure your GitHub username is listed in the \u003ca href=\"https://cloud.githubusercontent.com/assets/2680980/23276970/d14a380c-f9d1-11e6-883d-e13b6b211239.png\" rel=\"nofollow\"\u003e\"Your Details\"\u003c/a\u003e\nsection at b.p.o.\u003c/li\u003e\n\u003cli\u003eFill out and sign the PSF \u003ca href=\"https://www.python.org/psf/contrib/contrib-form/\" rel=\"nofollow\"\u003econtributor form\u003c/a\u003e. The \"bugs.python.org username\"\nrequested by the form is the \"Login name\" field under \"Your Details\".\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp dir=\"auto\"\u003eAfter signing the CLA, please \u003cstrong\u003ewait at least one US business day\u003c/strong\u003e and\nthen check the status by going to the \u003ca href=\"https://check-python-cla.herokuapp.com\" rel=\"nofollow\"\u003echeck-python-cla\u003c/a\u003e\nwebsite. The check will also be run automatically the next time you push changes\nto your PR.\u003c/p\u003e\n\u003ca name=\"user-content-submitting\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSubmitting\u003c/h2\u003e\u003ca id=\"user-content-submitting\" class=\"anchor\" aria-label=\"Permalink: Submitting\" href=\"#submitting\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eOnce you are satisfied with your work you will want to commit your\nchanges to your branch. In general you can run \u003ccode\u003egit commit -a\u003c/code\u003e and\nthat will commit everything. You can always run \u003ccode\u003egit status\u003c/code\u003e to see\nwhat changes are outstanding.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eWhen all of your changes are committed (i.e. \u003ccode\u003egit status\u003c/code\u003e doesn't\nlist anything), you will want to push your branch to your fork:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"git push origin \u0026lt;branch name\u0026gt;\"\u003e\u003cpre\u003egit push origin \u003cspan class=\"pl-k\"\u003e\u0026lt;\u003c/span\u003ebranch name\u003cspan class=\"pl-k\"\u003e\u0026gt;\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis will get your changes up to GitHub.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eNow you want to\n\u003ca href=\"https://help.github.com/articles/creating-a-pull-request-from-a-fork/\"\u003ecreate a pull request from your fork\u003c/a\u003e.\nIf this is a pull request in response to a pre-existing issue on the\n\u003ca href=\"https://bugs.python.org\" rel=\"nofollow\"\u003eissue tracker\u003c/a\u003e, please make sure to reference the issue number using\n\u003ccode\u003ebpo-NNNN\u003c/code\u003e in the pull request title or message.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf this is a pull request for an unreported issue (assuming you already\nperformed a search on the issue tracker for a pre-existing issue), create a\nnew issue and reference it in the pull request. Please fill in as much\nrelevant detail as possible to prevent reviewers from having to delay\nreviewing your pull request because of lack of information.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf this issue is so simple that there's no need for an issue to track\nany discussion of what the pull request is trying to solve (e.g. fixing a\nspelling mistake), then the pull request needs to have the \"skip issue\" label\nadded to it by someone with commit access.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eYour pull request may involve several commits as a result of addressing code\nreview comments. Please keep the commit history in the pull request intact by\nnot squashing, amending, or anything that would require a force push to GitHub.\nA detailed commit history allows reviewers to view the diff of one commit to\nanother so they can easily verify whether their comments have been addressed.\nThe commits will be squashed when the pull request is merged.\u003c/p\u003e\n\u003ca name=\"user-content-converting-an-existing-patch-from-b-p-o-to-github\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eConverting an Existing Patch from b.p.o to GitHub\u003c/h2\u003e\u003ca id=\"user-content-converting-an-existing-patch-from-bpo-to-github\" class=\"anchor\" aria-label=\"Permalink: Converting an Existing Patch from b.p.o to GitHub\" href=\"#converting-an-existing-patch-from-bpo-to-github\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWhen a patch exists in the \u003ca href=\"https://bugs.python.org\" rel=\"nofollow\"\u003eissue tracker\u003c/a\u003e that should be converted into a\nGitHub pull request, please first ask the original patch author to prepare\ntheir own pull request. If the author does not respond after a week, it is\nacceptable for another contributor to prepare the pull request based on the\nexisting patch. In this case, both parties should sign the \u003ca href=\"#id43\"\u003e\u003cspan id=\"user-content-id44\"\u003e:ref:`CLA \u0026lt;cla\u0026gt;`\u003c/span\u003e\u003c/a\u003e.\nWhen creating a pull request based on another person's patch, provide\nattribution to the original patch author by adding \"Co-authored-by:\nAuthor Name \u0026lt;email_address\u0026gt; .\" to the pull request description and commit message.\nSee \u003ca href=\"https://help.github.com/articles/creating-a-commit-with-multiple-authors/\"\u003ethe GitHub article\u003c/a\u003e\non how to properly add the co-author info.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eSee also \u003ca href=\"#id45\"\u003e\u003cspan id=\"user-content-id46\"\u003e:ref:`Applying a Patch from Mercurial to Git \u0026lt;git_from_mercurial\u0026gt;`\u003c/span\u003e\u003c/a\u003e.\u003c/p\u003e\n\u003ca name=\"user-content-reviewing\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eReviewing\u003c/h2\u003e\u003ca id=\"user-content-reviewing\" class=\"anchor\" aria-label=\"Permalink: Reviewing\" href=\"#reviewing\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTo begin with, please be patient! There are many more people\nsubmitting pull requests than there are people capable of reviewing\nyour pull request. Getting your pull request reviewed requires a\nreviewer to have the spare time and motivation to look at your pull\nrequest (we cannot force anyone to review pull requests and no one is\nemployed to look at pull requests). If your pull request has not\nreceived any notice from reviewers (i.e., no comment made) after one\nmonth, first \"ping\" the issue on the \u003ca href=\"https://bugs.python.org\" rel=\"nofollow\"\u003eissue tracker\u003c/a\u003e to remind the\nnosy list that the pull request needs a review. If you don't get a response\nwithin a week after pinging the issue, then you can try emailing\n\u003ca href=\"mailto:python-dev@python.org\"\u003epython-dev@python.org\u003c/a\u003e to ask for someone to review your pull request.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eWhen someone does manage to find the time to look at your pull request\nthey will most likely make comments about how it can be improved\n(don't worry, even core developers of Python have their pull requests sent\nback to them for changes). It is then expected that you update your\npull request to address these comments, and the review process will\nthus iterate until a satisfactory solution has emerged.\u003c/p\u003e\n\u003ca name=\"user-content-id47\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eHow to Review a Pull Request\u003c/h3\u003e\u003ca id=\"user-content-how-to-review-a-pull-request\" class=\"anchor\" aria-label=\"Permalink: How to Review a Pull Request\" href=\"#how-to-review-a-pull-request\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eOne of the bottlenecks in the Python development\nprocess is the lack of code reviews.\nIf you browse the bug tracker, you will see that numerous issues\nhave a fix, but cannot be merged into the main source code repository,\nbecause no one has reviewed the proposed solution.\nReviewing a pull request can be just as informative as providing a\npull request and it will allow you to give constructive comments on\nanother developer's work. This guide provides a checklist for\nsubmitting a code review. It is a common misconception that in order\nto be useful, a code review has to be perfect. This is not the case at\nall! It is helpful to just test the pull request and/or play around with the\ncode and leave comments in the pull request or issue tracker.\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003eIf you have not already done so, get a copy of the CPython repository\nby following the \u003ca href=\"#id48\"\u003e\u003cspan id=\"user-content-id49\"\u003e:ref:`setup guide \u0026lt;setup\u0026gt;`\u003c/span\u003e\u003c/a\u003e, build it and run the tests.\u003c/li\u003e\n\u003cli\u003eCheck the bug tracker to see what steps are necessary to reproduce\nthe issue and confirm that you can reproduce the issue in your version\nof the Python REPL (the interactive shell prompt), which you can launch\nby executing ./python inside the repository.\u003c/li\u003e\n\u003cli\u003eCheckout and apply the pull request (Please refer to the instruction\n\u003ca href=\"#id50\"\u003e\u003cspan id=\"user-content-id51\"\u003e:ref:`git_pr`\u003c/span\u003e\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eIf the changes affect any C file, run the build again.\u003c/li\u003e\n\u003cli\u003eLaunch the Python REPL (the interactive shell prompt) and check if\nyou can reproduce the issue. Now that the pull request has been applied,\nthe issue should be fixed (in theory, but mistakes do happen! A good review\naims to catch these before the code is merged into the Python repository).\nYou should also try to see if there are any corner cases in this or related\nissues that the author of the fix may have missed.\u003c/li\u003e\n\u003cli\u003eIf you have time, run the entire test suite. If you are pressed for time,\nrun the tests for the module(s) where changes were applied.\nHowever, please be aware that if you are recommending a pull request as\n'merge-ready', you should always make sure the entire test suite passes.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ca name=\"user-content-leaving-a-pull-request-review-on-github\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eLeaving a Pull Request Review on GitHub\u003c/h2\u003e\u003ca id=\"user-content-leaving-a-pull-request-review-on-github\" class=\"anchor\" aria-label=\"Permalink: Leaving a Pull Request Review on GitHub\" href=\"#leaving-a-pull-request-review-on-github\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWhen you review a pull request, you should provide additional details and context\nof your review process.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eInstead of simply \"approving\" the pull request, leave comments. For example:\u003c/p\u003e\n\u003col dir=\"auto\"\u003e\n\u003cli\u003eIf you tested the PR, report the result and the system and version tested on,\nsuch as 'Windows 10', 'Ubuntu 16.4', or 'Mac High Sierra'.\u003c/li\u003e\n\u003cli\u003eIf you request changes, try to suggest how.\u003c/li\u003e\n\u003cli\u003eComment on what is \"good\" about the pull request, not just the \"bad\". Doing\nso will make it easier for the PR author to find the good in your comments.\u003c/li\u003e\n\u003c/ol\u003e\n\u003ca name=\"user-content-dismissing-review-from-another-core-developer\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDismissing Review from Another Core Developer\u003c/h2\u003e\u003ca id=\"user-content-dismissing-review-from-another-core-developer\" class=\"anchor\" aria-label=\"Permalink: Dismissing Review from Another Core Developer\" href=\"#dismissing-review-from-another-core-developer\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eA core developer can dismiss another core developer's review if they confirmed\nthat the requested changes have been made. When a core developer has assigned\nthe PR to themselves, then it is a sign that they are actively looking after\nthe PR, and their review should not be dismissed.\u003c/p\u003e\n\u003ca name=\"user-content-committing-rejecting\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCommitting/Rejecting\u003c/h2\u003e\u003ca id=\"user-content-committingrejecting\" class=\"anchor\" aria-label=\"Permalink: Committing/Rejecting\" href=\"#committingrejecting\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eOnce your pull request has reached an acceptable state (and thus considered\n\"accepted\"), it will either be merged or rejected. If it is rejected, please\ndo not take it personally! Your work is still appreciated regardless of whether\nyour pull request is merged. Balancing what \u003cem\u003edoes\u003c/em\u003e and \u003cem\u003edoes not\u003c/em\u003e go into\nPython is tricky and we simply cannot accept everyone's contributions.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eBut if your pull request is merged it will then go into Python's\n\u003ca href=\"#id52\"\u003e\u003cspan id=\"user-content-id53\"\u003e:abbr:`VCS (version control system)`\u003c/span\u003e\u003c/a\u003e to be released\nwith the next major release of Python. It may also be backported to older\nversions of Python as a bugfix if the core developer doing the merge believes\nit is warranted.\u003c/p\u003e\n\u003ca name=\"user-content-crediting\"\u003e\u003c/a\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCrediting\u003c/h2\u003e\u003ca id=\"user-content-crediting\" class=\"anchor\" aria-label=\"Permalink: Crediting\" href=\"#crediting\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eNon-trivial contributions are credited in the \u003ccode\u003eMisc/ACKS\u003c/code\u003e file (and, most\noften, in a contribution's news entry as well). You may be\nasked to make these edits on the behalf of the core developer who\naccepts your pull request.\u003c/p\u003e\n\n\u003c/article\u003e","renderedFileInfo":null,"shortPath":null,"symbolsEnabled":true,"tabSize":8,"topBannersInfo":{"overridingGlobalFundingFile":false,"globalPreferredFundingPath":"/python/.github/blob/5a0a7cb55767fb3667fe2391bcb66bda638edcb4/FUNDING.yml","showInvalidCitationWarning":false,"citationHelpUrl":"https://docs.github.com/github/creating-cloning-and-archiving-repositories/creating-a-repository-on-github/about-citation-files","actionsOnboardingTip":null},"truncated":false,"viewable":true,"workflowRedirectUrl":null,"symbols":{"timed_out":false,"not_analyzed":true,"symbols":[]}},"copilotInfo":null,"copilotAccessAllowed":false,"modelsAccessAllowed":false,"modelsRepoIntegrationEnabled":false,"csrf_tokens":{"/python/devguide/branches":{"post":"f_GnJzvvny5MlFXH_HmZKseo6NStPdNip4YwLaUYqPx6eFBWdW18bWmLFar64janOkOlYV0XqpEVG3kHPvyLGQ"},"/repos/preferences":{"post":"Lu8oNWYVSI-KvxD1pIJDstOm7cIRAjONj6OscjRAf7NLVBqP7Q7v-ma5p9kx7RyrfKGDd13zM9epD0CQYbjT-w"}}},"title":"devguide/pullrequest.rst at dea2bf258d1af21be64bf95a6447cec862f028c5 · python/devguide","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-1ae9fa256942.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}