{"title":"Inlämning av bidrag","version":"6.0","locale":"sv","docname":"internals/contributing/writing-code/submitting-patches","url":"/sv/6.0/internals/contributing/writing-code/submitting-patches/","canonical":"https://djangodocs.dev/sv/6.0/internals/contributing/writing-code/submitting-patches/","summary":"Vi är alltid tacksamma för bidrag till Djangos kod. Faktum är att felrapporter med tillhörande bidrag kommer att åtgärdas * långt* snabbare än de utan en lösning.…","html":"<h1>Inlämning av bidrag<a class=\"heading-anchor\" href=\"#submitting-contributions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h1>\n<p>Vi är alltid tacksamma för bidrag till Djangos kod. Faktum är att felrapporter med tillhörande bidrag kommer att åtgärdas * långt* snabbare än de utan en lösning.</p>\n<section id=\"typo-fixes-and-trivial-documentation-changes\">\n<span id=\"trivial-change\"></span><h2>Rättelser av stavfel och triviala dokumentationsändringar<a class=\"heading-anchor\" href=\"#typo-fixes-and-trivial-documentation-changes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Om du åtgärdar ett riktigt trivialt problem, till exempel ändrar ett ord i dokumentationen, är det bästa sättet att tillhandahålla korrigeringen att använda GitHub pull requests utan ett Trac-ärende.</p>\n<p>See <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/working-with-git/\"><span class=\"doc\">Arbeta med Git och GitHub</span></a> for more\ndetails on how to use pull requests.</p>\n</section>\n<section id=\"claiming-tickets\">\n<span id=\"id1\"></span><h2>”Att göra anspråk på” ärenden<a class=\"heading-anchor\" href=\"#claiming-tickets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>I ett open source-projekt med hundratals medarbetare runt om i världen är det viktigt att hantera kommunikationen på ett effektivt sätt så att arbetet inte dubbleras och medarbetarna kan vara så effektiva som möjligt.</p>\n<p>Därför är vår policy att bidragsgivare ska ”göra anspråk” på ärenden för att låta andra utvecklare veta att en viss bugg eller funktion bearbetas.</p>\n<p>Om du har identifierat ett bidrag som du vill göra och du är kapabel att fixa det (mätt med din kodningsförmåga, kunskap om Django internals och tidstillgång), gör du anspråk på det genom att följa dessa steg:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference external\" href=\"https://code.djangoproject.com/github/login\">Log in using your GitHub account</a> or <a class=\"reference external\" href=\"https://www.djangoproject.com/accounts/register/\">create an account</a> in our ticket\nsystem. If you have an account but have forgotten your password, you can\nreset it using the <a class=\"reference external\" href=\"https://www.djangoproject.com/accounts/password/reset/\">password reset page</a>.</p></li>\n<li><p>Om det inte finns något ärende för denna fråga ännu, skapa ett i vår <a class=\"reference external\" href=\"https://code.djangoproject.com/\">ticket tracker</a>. Kom ihåg att förslag på nya funktioner bör följa <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/bugs-and-features/#requesting-features\"><span class=\"std std-ref\">processen för att föreslå nya funktioner</span></a>.</p></li>\n<li><p>If a ticket for this issue already exists and has been accepted, make sure\nnobody else has claimed it. To do this, look at the ”Owned by” section of\nthe ticket. If it’s assigned to ”nobody,” then it’s available to be claimed.\nOtherwise, somebody else may be working on this ticket. Either find another\nbug/feature to work on, or contact the developer working on the ticket to\noffer your help. If a ticket has been assigned for weeks or months without\nany activity, it’s probably safe to reassign it to yourself. If a ticket\nhasn’t been approved yet, join the conversation.</p></li>\n<li><p>Logga in på ditt konto, om du inte redan har gjort det, genom att klicka på ”GitHub Login” eller ”DjangoProject Login” längst upp till vänster på ärendesidan. När du är inloggad kan du klicka på knappen ”Modify Ticket” längst ner på sidan.</p></li>\n<li><p>Gör anspråk på ärendet genom att klicka på alternativknappen ”tilldela till” i avsnittet ”Åtgärd”. Ditt användarnamn kommer som standard att fyllas i i textrutan.</p></li>\n<li><p>Finally, click the ”Submit changes” button at the bottom to save.</p></li>\n</ul>\n<aside class=\"admonition admonition-note\" role=\"note\">\n<p class=\"admonition-title\">Observera</p>\n<p>If your change is not <a class=\"reference internal\" href=\"#trivial-change\"><span class=\"std std-ref\">trivial</span></a>, you have the option\nto sign and submit a <a class=\"reference external\" href=\"https://www.djangoproject.com/foundation/cla/\">Contributor License Agreement</a> clarifying the status\nof your contribution. This ensures that the Django Software Foundation has\nclear license to your contribution.</p>\n</aside>\n<section id=\"ticket-claimers-responsibility\">\n<h3>Ansvaret för ärendebedömmare<a class=\"heading-anchor\" href=\"#ticket-claimers-responsibility\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>När du har gjort anspråk på ett ärende har du ett ansvar att arbeta med det ärendet inom rimlig tid. Om du inte har tid att arbeta med ärendet får du antingen ta tillbaka det eller inte göra anspråk på det över huvud taget!</p>\n<p>Om det inte sker några framsteg med ett visst ärende under en vecka eller två kan en annan utvecklare be dig att avstå från ärendet så att det inte längre är monopoliserat och någon annan kan göra anspråk på det.</p>\n<p>Om du har gjort anspråk på ett ärende och det tar lång tid (dagar eller veckor) att koda det ska du hålla alla uppdaterade genom att skriva kommentarer till ärendet. Om du inte tillhandahåller regelbundna uppdateringar och inte svarar på en begäran om en lägesrapport kan ditt anspråk på ärendet återkallas.</p>\n<p>Som alltid är mer kommunikation bättre än mindre kommunikation!</p>\n</section>\n<section id=\"which-tickets-should-be-claimed\">\n<h3>Vilka ärenden ska bedömmas?<a class=\"heading-anchor\" href=\"#which-tickets-should-be-claimed\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Att gå igenom stegen för att göra anspråk på ärenden är överflödigt i vissa fall.</p>\n<p>När det gäller små ändringar, t.ex. stavfel i dokumentationen eller små buggar som bara tar några minuter att åtgärda, behöver du inte göra några ärendekrav. Skicka in dina ändringar direkt och du är klar!</p>\n<p>It is <em>always</em> acceptable, regardless of whether someone has claimed it or not,\nto link proposals to a ticket if you happen to have the changes ready.</p>\n</section>\n</section>\n<section id=\"contribution-style\">\n<span id=\"patch-style\"></span><h2>Bidragsstil<a class=\"heading-anchor\" href=\"#contribution-style\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Se till att alla bidrag du ger uppfyller åtminstone följande krav:</p>\n<ul class=\"simple\">\n<li><p>The code required to fix a problem or add a feature is an essential part\nof a solution, but it is not the only part. A good fix should also include a\n<a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/unit-tests/\"><span class=\"doc\">regression test</span></a> to\nvalidate the behavior that has been fixed and to prevent the problem from\narising again. Also, if some tickets are relevant to the code that you’ve\nwritten, mention the ticket numbers in some comments in the test so that one\ncan easily trace back the relevant discussions after your patch gets\ncommitted, and the tickets get closed.</p></li>\n<li><p>Om koden lägger till en ny funktion eller ändrar beteendet hos en befintlig funktion ska ändringen också innehålla dokumentation.</p></li>\n</ul>\n<p>When you think your work is ready to be reviewed, send <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/working-with-git/\"><span class=\"doc\">a GitHub pull\nrequest</span></a>. If you can’t\nsend a pull request for some reason, you can also use patches in Trac. When\nusing this style, follow these guidelines.</p>\n<ul class=\"simple\">\n<li><p>Skicka in korrigeringar i det format som returneras av kommandot <code class=\"docutils literal notranslate\"><span class=\"pre\">git</span> <span class=\"pre\">diff</span></code>.</p></li>\n<li><p>Bifoga patchar till ett ärende i <a class=\"reference external\" href=\"https://code.djangoproject.com/\">ticket tracker</a>, med hjälp av knappen ”attach file”. Lägg <em>inte</em> till patchen i beskrivningen eller kommentaren till ärendet om det inte är en patch på en rad.</p></li>\n<li><p>Namnge patchfilen med tillägget <code class=\"docutils literal notranslate\"><span class=\"pre\">.diff</span></code>; detta gör att ärendehanteraren kan tillämpa korrekt syntaxmarkering, vilket är till stor hjälp.</p></li>\n</ul>\n<p>Oavsett hur du skickar in ditt arbete ska du följa dessa steg.</p>\n<ul class=\"simple\">\n<li><p>Se till att din kod uppfyller kraven i vår <a class=\"reference internal\" href=\"#patch-review-checklist\"><span class=\"std std-ref\">checklista för bidrag</span></a>.</p></li>\n<li><p>Markera rutan ”Har patch” i ärendet och se till att rutorna ”Behöver dokumentation”, ”Behöver tester” och ”Patch behöver förbättras” inte är markerade. Detta gör att ärendet visas i kön ”Patches needing review” på <a class=\"reference external\" href=\"https://dashboard.djangoproject.com/\">Development dashboard</a>.</p></li>\n</ul>\n</section>\n<section id=\"contributions-which-require-community-feedback\">\n<h2>Bidrag som kräver återkoppling från gemenskapen<a class=\"heading-anchor\" href=\"#contributions-which-require-community-feedback\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>En bredare gemenskapsdiskussion krävs när en patch introducerar ny Django-funktionalitet och gör någon form av designbeslut. Detta är särskilt viktigt om tillvägagångssättet innebär en <a class=\"reference internal\" href=\"#deprecating-a-feature\"><span class=\"std std-ref\">deprecation</span></a> eller introducerar brytande ändringar.</p>\n<p>Nedan följer olika metoder för att få in feedback från gemenskapen.</p>\n<section id=\"the-new-feature-ideas-tracker\">\n<h3>Den nya funktionen idéspårare<a class=\"heading-anchor\" href=\"#the-new-feature-ideas-tracker\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Om du har en idé om en ny funktion, skapa ett nytt förslag (eller gå med i en befintlig diskussion) enligt <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/bugs-and-features/#requesting-features\"><span class=\"std std-ref\">process för att föreslå nya funktioner</span></a>. Du bör förklara behovet av ändringen, gå in i detalj på tillvägagångssättet och diskutera alternativ.</p>\n</section>\n<section id=\"the-django-forum\">\n<h3>Django-forumet<a class=\"heading-anchor\" href=\"#the-django-forum\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Du kan föreslå en förändring (som inte är en idé om en ny funktion) på <a class=\"reference external\" href=\"https://forum.djangoproject.com/\">Django Forum</a>. Du bör förklara behovet av förändringen, gå in i detalj på tillvägagångssättet och diskutera alternativ.</p>\n<p>Bifoga gärna en länk till sådana diskussioner i dina bidrag.</p>\n</section>\n<section id=\"third-party-package\">\n<h3>Paket från tredje part<a class=\"heading-anchor\" href=\"#third-party-package\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Django accepterar inte experimentella funktioner. Alla funktioner måste följa vår <a class=\"reference internal\" href=\"/sv/6.0/internals/release-process/#internal-release-deprecation-policy\"><span class=\"std std-ref\">deprecation policy</span></a>. Därför kan det ta månader eller år för Django att iterera på en API-design.</p>\n<p>Om du behöver feedback från användare på ett publikt gränssnitt är det bättre att skapa ett tredjepartspaket först. Du kan iterera på det publika API:et mycket snabbare, samtidigt som du validerar behovet av funktionen.</p>\n<p>När det här paketet blir stabilt och det finns tydliga fördelar med att införliva aspekter i Django-kärnan, är nästa steg att föreslå att det ska inkluderas genom att följa <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/bugs-and-features/#requesting-features\"><span class=\"std std-ref\">processen för att föreslå nya funktioner</span></a>.</p>\n</section>\n<section id=\"django-enhancement-proposal-dep\">\n<h3>Förslag till förbättring av Django (DEP)<a class=\"heading-anchor\" href=\"#django-enhancement-proposal-dep\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>I likhet med Pythons PEPs har Django <a class=\"reference external\" href=\"https://github.com/django/deps\">Django Enhancement Proposals</a> eller DEPs. Ett DEP är ett designdokument som ger information till Django-gemenskapen eller beskriver en ny funktion eller process för Django. De ger kortfattade tekniska specifikationer för funktioner, tillsammans med motiveringar. DEP är också den primära mekanismen för att föreslå och samla in gemenskapsinformation om större nya funktioner.</p>\n<p>Before considering writing a DEP, it is recommended to first open a discussion\nfollowing the <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/bugs-and-features/#requesting-features\"><span class=\"std std-ref\">process for suggesting new features</span></a>.\nThis allows the community to provide feedback and helps refine the proposal.\nOnce the DEP is ready, the <a class=\"reference internal\" href=\"/sv/6.0/internals/organization/#steering-council\"><span class=\"std std-ref\">Steering Council</span></a> votes on\nwhether to accept it.</p>\n<p>Några exempel på DEP:er som har godkänts och implementerats fullt ut:</p>\n<ul class=\"simple\">\n<li><p><a class=\"reference external\" href=\"https://github.com/django/deps/blob/main/final/0181-orm-expressions.rst\">DEP 181: ORM-uttryck</a></p></li>\n<li><p><a class=\"reference external\" href=\"https://github.com/django/deps/blob/main/final/0182-multiple-template-engines.rst\">DEP 182: Flera mallmotorer</a></p></li>\n<li><p><a class=\"reference external\" href=\"https://github.com/django/deps/blob/main/final/0201-simplified-routing-syntax.rst\">DEP 201: Förenklad syntax för routning</a></p></li>\n</ul>\n</section>\n</section>\n<section id=\"deprecating-a-feature\">\n<span id=\"id2\"></span><h2>Avveckling av en funktion<a class=\"heading-anchor\" href=\"#deprecating-a-feature\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Det finns ett par anledningar till att kod i Django kan vara föråldrad:</p>\n<ul class=\"simple\">\n<li><p>Om en funktion har förbättrats eller modifierats på ett bakåtkompatibelt sätt kommer den gamla funktionen eller det gamla beteendet att avskrivas.</p></li>\n<li><p>Ibland kommer Django att inkludera en backport av ett Python-bibliotek som inte ingår i en version av Python som Django för närvarande stöder. När Django inte längre behöver stödja den äldre versionen av Python som inte innehåller biblioteket, kommer biblioteket att avskrivas i Django.</p></li>\n</ul>\n<p>Som <a class=\"reference internal\" href=\"/sv/6.0/internals/release-process/#internal-release-deprecation-policy\"><span class=\"std std-ref\">deprecation policy</span></a> beskriver, bör den första utgåvan av Django som deprecierar en funktion (<code class=\"docutils literal notranslate\"><span class=\"pre\">A.B</span></code>) ge upphov till en <code class=\"docutils literal notranslate\"><span class=\"pre\">RemovedInDjangoXXWarning</span></code> (där XX är den Django-version där funktionen kommer att tas bort) när den deprecierade funktionen anropas. Förutsatt att vi har bra testtäckning omvandlas dessa varningar till fel när <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/unit-tests/#running-unit-tests\"><span class=\"std std-ref\">kör testsviten</span></a> med varningar aktiverade: <code class=\"docutils literal notranslate\"><span class=\"pre\">python</span> <span class=\"pre\">-Wa</span> <span class=\"pre\">runtests.py</span></code>. När du lägger till en <code class=\"docutils literal notranslate\"><span class=\"pre\">RemovedInDjangoXXWarning</span></code> måste du därför eliminera eller tysta alla varningar som genereras när du kör testerna.</p>\n<p>Det första steget är att ta bort all användning av det föråldrade beteendet av Django själv. Därefter kan du tysta varningar i tester som faktiskt testar det föråldrade beteendet genom att använda dekoratorn <code class=\"docutils literal notranslate\"><span class=\"pre\">ignore_warnings</span></code>, antingen på test- eller klassnivå:</p>\n<ol class=\"arabic\">\n<li><p>I ett visst test:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.test</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ignore_warnings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.deprecation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RemovedInDjangoXXWarning</span>\n\n\n<span class=\"nd\">@ignore_warnings</span><span class=\"p\">(</span><span class=\"n\">category</span><span class=\"o\">=</span><span class=\"n\">RemovedInDjangoXXWarning</span><span class=\"p\">)</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">test_foo</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n</li>\n<li><p>För ett helt testfall:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.test</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">ignore_warnings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.deprecation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RemovedInDjangoXXWarning</span>\n\n\n<span class=\"nd\">@ignore_warnings</span><span class=\"p\">(</span><span class=\"n\">category</span><span class=\"o\">=</span><span class=\"n\">RemovedInDjangoXXWarning</span><span class=\"p\">)</span>\n<span class=\"k\">class</span><span class=\"w\"> </span><span class=\"nc\">MyDeprecatedTests</span><span class=\"p\">(</span><span class=\"n\">unittest</span><span class=\"o\">.</span><span class=\"n\">TestCase</span><span class=\"p\">):</span> <span class=\"o\">...</span>\n</code></pre></div>\n</li>\n</ol>\n<p>Du bör också lägga till ett test för deprecation warning:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.deprecation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RemovedInDjangoXXWarning</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">test_foo_deprecation_warning</span><span class=\"p\">(</span><span class=\"bp\">self</span><span class=\"p\">):</span>\n    <span class=\"n\">msg</span> <span class=\"o\">=</span> <span class=\"s2\">&quot;Expected deprecation message&quot;</span>\n    <span class=\"k\">with</span> <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">assertWarnsMessage</span><span class=\"p\">(</span><span class=\"n\">RemovedInDjangoXXWarning</span><span class=\"p\">,</span> <span class=\"n\">msg</span><span class=\"p\">)</span> <span class=\"k\">as</span> <span class=\"n\">ctx</span><span class=\"p\">:</span>\n        <span class=\"c1\"># invoke deprecated behavior</span>\n        <span class=\"o\">...</span>\n    <span class=\"bp\">self</span><span class=\"o\">.</span><span class=\"n\">assertEqual</span><span class=\"p\">(</span><span class=\"n\">ctx</span><span class=\"o\">.</span><span class=\"n\">filename</span><span class=\"p\">,</span> <span class=\"vm\">__file__</span><span class=\"p\">)</span>\n</code></pre></div>\n<p>Det är viktigt att inkludera en <code class=\"docutils literal notranslate\"><span class=\"pre\">RemovedInDjangoXXWarning</span></code>-kommentar ovanför kod som inte har någon varningsreferens, men som måste ändras eller tas bort när deprecationen upphör. Detta kan inkludera hooks som har lagts till för att behålla det tidigare beteendet, eller fristående objekt som är onödiga eller oanvända när avskrivningen upphör. Till exempel:</p>\n<div class=\"code-block\" data-language=\"default\"><div class=\"code-block-toolbar\"><span class=\"code-block-language\">Code</span><button type=\"button\" class=\"copy-button\" data-copy hidden><span class=\"copy-button-label\">Copy</span></button></div><pre role=\"group\" tabindex=\"0\" aria-label=\"Code code\"><code><span class=\"kn\">import</span><span class=\"w\"> </span><span class=\"nn\">warnings</span>\n<span class=\"kn\">from</span><span class=\"w\"> </span><span class=\"nn\">django.utils.deprecation</span><span class=\"w\"> </span><span class=\"kn\">import</span> <span class=\"n\">RemovedInDjangoXXWarning</span><span class=\"p\">,</span> <span class=\"n\">django_file_prefixes</span>\n\n\n<span class=\"c1\"># RemovedInDjangoXXWarning.</span>\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">old_private_helper</span><span class=\"p\">():</span>\n    <span class=\"c1\"># Helper function that is only used in foo().</span>\n    <span class=\"k\">pass</span>\n\n\n<span class=\"k\">def</span><span class=\"w\"> </span><span class=\"nf\">foo</span><span class=\"p\">():</span>\n    <span class=\"n\">warnings</span><span class=\"o\">.</span><span class=\"n\">warn</span><span class=\"p\">(</span>\n        <span class=\"s2\">&quot;foo() is deprecated.&quot;</span><span class=\"p\">,</span>\n        <span class=\"n\">category</span><span class=\"o\">=</span><span class=\"n\">RemovedInDjangoXXWarning</span><span class=\"p\">,</span>\n        <span class=\"n\">skip_file_prefixes</span><span class=\"o\">=</span><span class=\"n\">django_file_prefixes</span><span class=\"p\">(),</span>\n    <span class=\"p\">)</span>\n    <span class=\"n\">old_private_helper</span><span class=\"p\">()</span>\n    <span class=\"o\">...</span>\n</code></pre></div>\n<p>Slutligen finns det ett par uppdateringar av Djangos dokumentation att göra:</p>\n<ol class=\"arabic simple\">\n<li><p>Om den befintliga funktionen är dokumenterad, markera den som föråldrad i dokumentationen med hjälp av <code class=\"docutils literal notranslate\"><span class=\"pre\">...deprecated::</span> <span class=\"pre\">A.B</span></code> annotation. Inkludera en kort beskrivning och en anmärkning om uppgraderingsvägen om det är tillämpligt.</p></li>\n<li><p>Lägg till en beskrivning av det borttagna beteendet, och uppgraderingsvägen om tillämpligt, i de aktuella versionsinformation (<code class=\"docutils literal notranslate\"><span class=\"pre\">docs/releases/A.B.txt</span></code>) under rubriken ”Funktioner utfasade i A.B”.</p></li>\n<li><p>Lägg till en post i deprecation-tidslinjen (<code class=\"docutils literal notranslate\"><span class=\"pre\">docs/internals/deprecation.txt</span></code>) under rätt version som beskriver vilken kod som kommer att tas bort.</p></li>\n</ol>\n<p>När du har slutfört dessa steg är du klar med avskrivningen. I varje <a class=\"reference internal\" href=\"/sv/6.0/internals/release-process/#term-Feature-release\"><span class=\"xref std std-term\">feature release</span></a>, tas alla <code class=\"docutils literal notranslate\"><span class=\"pre\">RemovedInDjangoXXWarning</span></code> bort som matchar den nya versionen.</p>\n<p>The <code class=\"docutils literal notranslate\"><span class=\"pre\">django.utils.deprecation</span></code> module provides some helpful deprecation\nutilities, such as a <code class=\"docutils literal notranslate\"><span class=\"pre\">&#64;deprecate_posargs</span></code> decorator to assist with converting\npositional-or-keyword arguments to keyword-only. See the inline documentation\nin the module source.</p>\n</section>\n<section id=\"testing-with-a-django-project\">\n<h2>Testning med ett Django-projekt<a class=\"heading-anchor\" href=\"#testing-with-a-django-project\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Det är viktigt att testa lokala ändringar med hjälp av ett Django-projekt. Detta gör det möjligt att säkerställa att ändringarna beter sig som förväntat i en verklig miljö, särskilt för användarvänliga funktioner som mallar, formulär eller administratören.</p>\n<p>För att göra detta:</p>\n<ol class=\"arabic simple\">\n<li><p>Skapa en virtuell miljö och <a class=\"reference internal\" href=\"/sv/6.0/intro/contributing/#intro-contributing-install-local-copy\"><span class=\"std std-ref\">installera den klonade kopian av Django i redigerbart läge</span></a>.</p></li>\n<li><p>Sätt upp ett Django-projekt utanför källträdet (du kan använda <a class=\"reference internal\" href=\"/sv/6.0/intro/tutorial01/\"><span class=\"doc\">första delen av handledningen</span></a> för vägledning).</p></li>\n</ol>\n<p>Med den här inställningen kommer alla ändringar som görs i Django-utcheckningen att träda i kraft omedelbart i testprojektet, vilket möjliggör manuell testning av bidrag mot en ny eller befintlig app.</p>\n</section>\n<section id=\"javascript-contributions\">\n<h2>Bidrag från JavaScript<a class=\"heading-anchor\" href=\"#javascript-contributions\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>För information om JavaScript-bidrag, se <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/javascript/#javascript-patches\"><span class=\"std std-ref\">JavaScript-uppdateringar</span></a>-dokumentationen.</p>\n</section>\n<section id=\"optimization-patches\">\n<h2>Optimeringsplåster<a class=\"heading-anchor\" href=\"#optimization-patches\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Uppdateringar som syftar till att förbättra prestandan bör innehålla riktmärken som visar effekten av uppdateringen före och efter och dela med sig av kommandona så att granskarna kan reproducera dem.</p>\n<section id=\"django-asv-benchmarks\">\n<span id=\"id3\"></span><h3><code class=\"docutils literal notranslate\"><span class=\"pre\">django-asv</span></code> riktmärken<a class=\"heading-anchor\" href=\"#django-asv-benchmarks\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p><a class=\"reference external\" href=\"https://github.com/django/django-asv/\">django-asv</a> övervakar Django-kodens prestanda över tid. Dessa riktmärken kan köras på en dragbegäran genom att märka dragbegäran med <code class=\"docutils literal notranslate\"><span class=\"pre\">benchmark</span></code>. Att lägga till dessa riktmärken uppmuntras starkt.</p>\n</section>\n</section>\n<section id=\"contribution-checklist\">\n<span id=\"patch-review-checklist\"></span><h2>Checklista för bidrag<a class=\"heading-anchor\" href=\"#contribution-checklist\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h2>\n<p>Använd denna checklista för att granska en pull request. Om detta bidrag inte skulle vara <a class=\"reference internal\" href=\"#trivial-change\"><span class=\"std std-ref\">betraktas som trivialt</span></a>, se först till att det har ett accepterat ärende innan du fortsätter med granskningen.</p>\n<p>If the pull request passes all the criteria below and is not your own, please\nset the ”Triage Stage” on the corresponding Trac ticket to ”Ready for checkin”.\nIf you’ve left comments for improvement on the pull request, please tick the\nappropriate flags on the Trac ticket based on the results of your review:\n”Patch needs improvement”, ”Needs documentation”, and/or ”Needs tests”. As time\nand interest permit, mergers do final reviews of ”Ready for checkin” tickets\nand will either commit the changes or bump it back to ”Accepted” if further\nwork needs to be done.</p>\n<p>Om du vill bli medlem i <a class=\"reference external\" href=\"https://www.djangoproject.com/foundation/teams/#triage-review-team\">triage &amp; review team</a> är grundliga granskningar av bidrag ett bra sätt att förtjäna förtroende.</p>\n<p>Letar du efter en patch att granska? Kolla in avsnittet ”Patchar som behöver granskas” i <a class=\"reference external\" href=\"https://dashboard.djangoproject.com/\">Django Development Dashboard</a>.</p>\n<p>Vill du få din pull request granskad? Se till att Trac-flaggorna på ärendet är inställda så att ärendet visas i den kön.</p>\n<section id=\"all-tickets\">\n<h3>Alla ärenden<a class=\"heading-anchor\" href=\"#all-tickets\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Är pull request en enda squashed commit med ett meddelande som följer vårt <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/committing-code/#committing-guidelines\"><span class=\"std std-ref\">commit message format</span></a>?</p></li>\n<li><p>Are you the patch author and a new contributor? Please add yourself to the\n<a class=\"extlink-source reference external\" href=\"https://github.com/django/django/blob/stable/6.0.x/AUTHORS\">AUTHORS</a> file. At your option, submit a\n<a class=\"reference external\" href=\"https://www.djangoproject.com/foundation/cla/\">Contributor License Agreement</a>.</p></li>\n<li><p>Har detta ett accepterat ärende på Trac? Alla bidrag kräver ett ärende om inte <a class=\"reference internal\" href=\"#trivial-change\"><span class=\"std std-ref\">ändringen anses vara trivial</span></a>.</p></li>\n</ul>\n</section>\n<section id=\"all-code-changes\">\n<h3>Alla kodändringar<a class=\"heading-anchor\" href=\"#all-code-changes\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Does the <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/coding-style/\"><span class=\"doc\">coding style</span></a> conform to our\nguidelines? Are there any  <code class=\"docutils literal notranslate\"><span class=\"pre\">black</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">blacken-docs</span></code>, <code class=\"docutils literal notranslate\"><span class=\"pre\">flake8</span></code>,\n<code class=\"docutils literal notranslate\"><span class=\"pre\">isort</span></code>, or <code class=\"docutils literal notranslate\"><span class=\"pre\">zizmor</span></code> errors? You can install the <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/coding-style/#coding-style-pre-commit\"><span class=\"std std-ref\">pre-commit</span></a> hooks to automatically catch these errors.</p></li>\n<li><p>Om ändringen är bakåtkompatibel på något sätt, finns det en anteckning i releaseanteckningarna (<code class=\"docutils literal notranslate\"><span class=\"pre\">docs/releases/A.B.txt</span></code>)?</p></li>\n<li><p>Är Djangos testsvit godkänd?</p></li>\n<li><p>If there is a <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-code/unit-tests/#code-coverage-on-pull-requests\"><span class=\"std std-ref\">code coverage report</span></a>\ncomment on the pull request, have you reviewed the missing coverage in\ncontext (considering database/platform-specific limitations)?</p></li>\n<li><p>Om ändringen påverkar Django-admin eller HTML-utdata, har <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/accessibility/#accessibility-testing-baseline\"><span class=\"std std-ref\">accessibility testing</span></a> gjorts?</p></li>\n</ul>\n</section>\n<section id=\"documentation\">\n<h3>Dokumentation<a class=\"heading-anchor\" href=\"#documentation\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Byggs dokumentationen utan några fel (<code class=\"docutils literal notranslate\"><span class=\"pre\">make</span> <span class=\"pre\">html</span></code>, eller <code class=\"docutils literal notranslate\"><span class=\"pre\">make.bat</span> <span class=\"pre\">html</span></code> på Windows, från katalogen <code class=\"docutils literal notranslate\"><span class=\"pre\">docs</span></code>)?</p></li>\n<li><p>Följer dokumentationen riktlinjerna för skrivstil i <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-documentation/\"><span class=\"doc\">Skriva dokumentation</span></a>?</p></li>\n<li><p>Finns det några <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-documentation/#documentation-spelling-check\"><span class=\"std std-ref\">stavfel</span></a>?</p></li>\n</ul>\n</section>\n<section id=\"bugs\">\n<h3>Vi checkar av WordPress.org forumet under hela veckan, och tittar efter buggar. Om du rapporterar en legitim bugg som vi kan reproducera, kommer vi loggar det och patcha för en kommande uppdatering. Men vi kan tyvärr inte ge anpassningstips eller hjälpa till att integrera med 3: e parts plugins eller teman<a class=\"heading-anchor\" href=\"#bugs\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Finns det ett korrekt regressionstest (testet ska misslyckas innan korrigeringen tillämpas)?</p></li>\n<li><p>Om det är en bugg som <a class=\"reference internal\" href=\"/sv/6.0/internals/release-process/#supported-versions-policy\"><span class=\"std std-ref\">kvalificerar för en bakåtport</span></a> till den stabila versionen av Django, finns det en release note i <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/releases/A.B.C.txt</span></code>? Buggfixar som endast kommer att tillämpas på huvudgrenen behöver inte en utgivningsanteckning.</p></li>\n</ul>\n</section>\n<section id=\"new-features\">\n<h3>Nya funktioner<a class=\"heading-anchor\" href=\"#new-features\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<ul class=\"simple\">\n<li><p>Finns det tester för att ”träna” all den nya koden?</p></li>\n<li><p>Finns det versionsinformation i <code class=\"docutils literal notranslate\"><span class=\"pre\">docs/releases/A.B.txt</span></code>?</p></li>\n<li><p>Finns det dokumentation för funktionen och är den <a class=\"reference internal\" href=\"/sv/6.0/internals/contributing/writing-documentation/#documenting-new-features\"><span class=\"std std-ref\">annoterad på lämpligt sätt</span></a> med <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">versionadded::</span> <span class=\"pre\">A.B</span></code> eller <code class=\"docutils literal notranslate\"><span class=\"pre\">..</span> <span class=\"pre\">versionchanged::</span> <span class=\"pre\">A.B</span></code>?</p></li>\n</ul>\n</section>\n<section id=\"id4\">\n<h3>Avveckling av en funktion<a class=\"heading-anchor\" href=\"#id4\"><span class=\"visually-hidden\">Link to this heading</span><span aria-hidden=\"true\">#</span></a></h3>\n<p>Se guiden <a class=\"reference internal\" href=\"#deprecating-a-feature\"><span class=\"std std-ref\">Avveckling av en funktion</span></a>.</p>\n</section>\n</section>","rootId":"submitting-contributions","toc":[{"title":"Rättelser av stavfel och triviala dokumentationsändringar","anchor":"typo-fixes-and-trivial-documentation-changes","children":[]},{"title":"”Att göra anspråk på” ärenden","anchor":"claiming-tickets","children":[{"title":"Ansvaret för ärendebedömmare","anchor":"ticket-claimers-responsibility","children":[]},{"title":"Vilka ärenden ska bedömmas?","anchor":"which-tickets-should-be-claimed","children":[]}]},{"title":"Bidragsstil","anchor":"contribution-style","children":[]},{"title":"Bidrag som kräver återkoppling från gemenskapen","anchor":"contributions-which-require-community-feedback","children":[{"title":"Den nya funktionen idéspårare","anchor":"the-new-feature-ideas-tracker","children":[]},{"title":"Django-forumet","anchor":"the-django-forum","children":[]},{"title":"Paket från tredje part","anchor":"third-party-package","children":[]},{"title":"Förslag till förbättring av Django (DEP)","anchor":"django-enhancement-proposal-dep","children":[]}]},{"title":"Avveckling av en funktion","anchor":"deprecating-a-feature","children":[]},{"title":"Testning med ett Django-projekt","anchor":"testing-with-a-django-project","children":[]},{"title":"Bidrag från JavaScript","anchor":"javascript-contributions","children":[]},{"title":"Optimeringsplåster","anchor":"optimization-patches","children":[{"title":"django-asv riktmärken","anchor":"django-asv-benchmarks","children":[]}]},{"title":"Checklista för bidrag","anchor":"contribution-checklist","children":[{"title":"Alla ärenden","anchor":"all-tickets","children":[]},{"title":"Alla kodändringar","anchor":"all-code-changes","children":[]},{"title":"Dokumentation","anchor":"documentation","children":[]},{"title":"Vi checkar av WordPress.org forumet under hela veckan, och tittar efter buggar. Om du rapporterar en legitim bugg som vi kan reproducera, kommer vi loggar det och patcha för en kommande uppdatering. Men vi kan tyvärr inte ge anpassningstips eller hjälpa till att integrera med 3: e parts plugins eller teman","anchor":"bugs","children":[]},{"title":"Nya funktioner","anchor":"new-features","children":[]},{"title":"Avveckling av en funktion","anchor":"id4","children":[]}]}],"breadcrumbs":[{"docname":"internals/index","title":"Djangos interna funktioner","url":"/sv/6.0/internals/"},{"docname":"internals/contributing/index","title":"Att bidra till Django","url":"/sv/6.0/internals/contributing/"},{"docname":"internals/contributing/writing-code/index","title":"Bidra med kod","url":"/sv/6.0/internals/contributing/writing-code/"}],"prev":{"docname":"internals/contributing/writing-code/index","title":"Bidra med kod","url":"/sv/6.0/internals/contributing/writing-code/"},"next":{"docname":"internals/contributing/writing-code/unit-tests","title":"Enhetstester","url":"/sv/6.0/internals/contributing/writing-code/unit-tests/"},"formats":{"html":"/sv/6.0/internals/contributing/writing-code/submitting-patches/","markdown":"/sv/6.0/internals/contributing/writing-code/submitting-patches.md","json":"/sv/6.0/internals/contributing/writing-code/submitting-patches.json"},"source":"https://github.com/django/django/blob/stable/6.0.x/docs/internals/contributing/writing-code/submitting-patches.txt","official":"https://docs.djangoproject.com/sv/6.0/internals/contributing/writing-code/submitting-patches/","inVersions":["6.1","6.0","5.2"],"inLocales":["en","sv","zh-hans","ga","fr","ja","id","it","pt-br","ko","es","el","pl"]}