Buckets:

rtrm's picture
download
raw
14.9 kB
import{s as xt,n as yt,o as zt}from"../chunks/scheduler.36a0863c.js";import{S as Tt,i as wt,g as a,s as o,r,A as Mt,h as s,f as i,c as n,j as ht,u as c,x as u,k as bt,y as kt,a as l,v as d,d as p,t as m,w as f}from"../chunks/index.9c13489a.js";import{C as $}from"../chunks/CodeBlock.05d8ec32.js";import{H as ne,E as Pt}from"../chunks/EditOnGithub.e88f2b7b.js";function qt(Ve){let g,ae,le,se,v,ue,_,Xe="Quando apri una pull request sui 🤗 Transformers, vengono eseguiti un discreto numero di controlli per assicurarsi che la patch che stai aggiungendo non stia rompendo qualcosa di esistente. Questi controlli sono di quattro tipi:",re,C,Ye="<li>test regolari</li> <li>costruzione della documentazione</li> <li>stile del codice e della documentazione</li> <li>coerenza generale del repository</li>",ce,h,Oe="In questo documento, cercheremo di spiegare quali sono i vari controlli e le loro ragioni, oltre a spiegare come eseguire il debug locale se uno di essi fallisce sulla tua PR.",de,b,Ke="Nota che tutti richiedono un’installazione dev:",pe,x,me,y,et="o un’installazione modificabile:",fe,z,$e,T,tt="all’interno del repo Transformers.",ge,w,ve,M,it="Tutti i job che iniziano con <code>ci/circleci: run_tests_</code> eseguono parti della suite di test dei Transformers. Ognuno di questi job si concentra su una parte della libreria in un determinato ambiente: per esempio <code>ci/circleci: run_tests_pipelines_tf</code> esegue il test delle pipeline in un ambiente in cui è installato solo TensorFlow.",_e,k,lt="Nota che per evitare di eseguire i test quando non ci sono cambiamenti reali nei moduli che si stanno testando, ogni volta viene eseguita solo una parte della suite di test: viene eseguita una utility per determinare le differenze nella libreria tra prima e dopo la PR (ciò che GitHub mostra nella scheda “Files changes”) e sceglie i test che sono stati impattati dalla diff. Questa utility può essere eseguita localmente con:",Ce,P,he,q,ot="dalla root del repo Transformers. Di seguito ciò che farà:",be,H,nt="<li>Controlla per ogni file nel diff se le modifiche sono nel codice o solo nei commenti o nelle docstrings. Vengono mantenuti solo i file con modifiche reali al codice.</li> <li>Costruisce una mappa interna che fornisce per ogni file del codice sorgente della libreria tutti i file su cui ha un impatto ricorsivo. Si dice che il modulo A ha un impatto sul modulo B se il modulo B importa il modulo A. Per l’impatto ricorsivo, abbiamo bisogno di una catena di moduli che va dal modulo A al modulo B in cui ogni modulo importa il precedente.</li> <li>Applica questa mappa ai file raccolti nel passaggio 1, si ottiene l’elenco dei file del modello interessati dalla PR.</li> <li>Mappa ciascuno di questi file con i corrispondenti file di test e ottiene l’elenco dei test da eseguire.</li>",xe,L,at="Quando esegui lo script in locale, dovresti ottenere la stampa dei risultati dei passi 1, 3 e 4 e quindi sapere quali test sono stati eseguiti. Lo script creerà anche un file chiamato <code>test_list.txt</code> che contiene l’elenco dei test da eseguire e che puoi eseguire localmente con il seguente comando:",ye,R,ze,U,st="Nel caso in cui qualcosa sia sfuggito, l’intera suite di test viene eseguita quotidianamente.",Te,S,we,A,ut="Il job <code>ci/circleci: build_doc</code> esegue una build della documentazione per assicurarsi che tutto sia a posto una volta che la PR è stata unita. Se questo passaggio fallisce, puoi controllare localmente entrando nella cartella <code>docs</code> del repo Transformers e digitare",Me,G,ke,W,rt="Sphinx non è noto per i suoi messaggi di errore chiari, quindi potrebbe essere necessario che provi alcune cose per trovare davvero la fonte dell’errore.",Pe,Z,qe,j,ct="La formattazione del codice viene applicata a tutti i file sorgenti, agli esempi e ai test usando <code>black</code> e <code>isort</code>. Abbiamo anche uno strumento personalizzato che si occupa della formattazione delle docstring e dei file <code>rst</code> (<code>utils/style_doc.py</code>), così come dell’ordine dei lazy imports eseguiti nei file <code>__init__.py</code> dei Transformers (<code>utils/custom_init_isort.py</code>). Tutto questo può essere lanciato eseguendo",He,Q,Le,F,dt="I controlli della CI sono applicati all’interno del controllo <code>ci/circleci: check_code_quality</code>. Esegue anche <code>flake8</code>, che dà un’occhiata di base al codice e si lamenta se trova una variabile non definita o non utilizzata. Per eseguire questo controllo localmente, usare",Re,E,Ue,I,pt="Questa operazione può richiedere molto tempo, quindi per eseguire la stessa operazione solo sui file modificati nel branch corrente, eseguire",Se,B,Ae,J,mt="Quest’ultimo comando eseguirà anche tutti i controlli aggiuntivi per la consistenza del repository. Diamogli un’occhiata.",Ge,N,We,D,ft="All’interno sono raggruppati tutti i test per assicurarsi che la tua PR lasci il repository in un buono stato ed è eseguito dal controllo <code>ci/circleci: check_repository_consistency</code>. Puoi eseguire localmente questo controllo eseguendo quanto segue:",Ze,V,je,X,$t="Questo verifica che:",Qe,Y,gt="<li>Tutti gli oggetti aggiunti all’init sono documentati (eseguito da <code>utils/check_repo.py</code>)</li> <li>Tutti i file <code>__init__.py</code> hanno lo stesso contenuto nelle loro due sezioni (eseguito da <code>utils/check_inits.py</code>)</li> <li>Tutto il codice identificato come copia da un altro modulo è coerente con l’originale (eseguito da <code>utils/check_copies.py</code>)</li> <li>Le traduzioni dei README e l’indice della documentazione hanno lo stesso elenco di modelli del README principale (eseguito da <code>utils/check_copies.py</code>)</li> <li>Le tabelle autogenerate nella documentazione sono aggiornate (eseguito da <code>utils/check_table.py</code>)</li> <li>La libreria ha tutti gli oggetti disponibili anche se non tutte le dipendenze opzionali sono installate (eseguito da <code>utils/check_dummies.py</code>)</li>",Fe,O,vt="Se questo controllo fallisce, le prime due voci richiedono una correzione manuale, mentre le ultime quattro possono essere corrette automaticamente per te eseguendo il comando",Ee,K,Ie,ee,_t="Ulteriori controlli riguardano le PR che aggiungono nuovi modelli, principalmente che:",Be,te,Ct="<li>Tutti i modelli aggiunti sono in un Auto-mapping (eseguita da <code>utils/check_repo.py</code>)</li> <li>Tutti i modelli sono testati correttamente (eseguito da <code>utils/check_repo.py</code>)</li>",Je,ie,Ne,oe,De;return v=new ne({props:{title:"Controlli su una Pull Request",local:"controlli-su-una-pull-request",headingTag:"h1"}}),x=new $({props:{code:"cGlwJTIwaW5zdGFsbCUyMHRyYW5zZm9ybWVycyU1QmRldiU1RA==",highlighted:"pip install transformers[dev]",wrap:!1}}),z=new $({props:{code:"cGlwJTIwaW5zdGFsbCUyMC1lJTIwLiU1QmRldiU1RA==",highlighted:"pip install -e .[dev]",wrap:!1}}),w=new ne({props:{title:"Tests",local:"tests",headingTag:"h2"}}),P=new $({props:{code:"cHl0aG9uJTIwdXRpbHMlMkZ0ZXN0c19mZXRjaGVyLnB5",highlighted:"python utils/tests_fetcher.py",wrap:!1}}),R=new $({props:{code:"cHl0aG9uJTIwLW0lMjBweXRlc3QlMjAtbiUyMDglMjAtLWRpc3QlM0Rsb2FkZmlsZSUyMC1yQSUyMC1zJTIwJTI0KGNhdCUyMHRlc3RfbGlzdC50eHQp",highlighted:'python -m pytest -n 8 --dist=loadfile -rA -s $(<span class="hljs-built_in">cat</span> test_list.txt)',wrap:!1}}),S=new ne({props:{title:"Build della documentazione",local:"build-della-documentazione",headingTag:"h2"}}),G=new $({props:{code:"bWFrZSUyMGh0bWw=",highlighted:"make html",wrap:!1}}),Z=new ne({props:{title:"Stile del codice e della documentazione",local:"stile-del-codice-e-della-documentazione",headingTag:"h2"}}),Q=new $({props:{code:"bWFrZSUyMHN0eWxl",highlighted:"make style",wrap:!1}}),E=new $({props:{code:"bWFrZSUyMHF1YWxpdHk=",highlighted:"make quality",wrap:!1}}),B=new $({props:{code:"bWFrZSUyMGZpeHVw",highlighted:"make fixup",wrap:!1}}),N=new ne({props:{title:"Coerenza del repository",local:"coerenza-del-repository",headingTag:"h2"}}),V=new $({props:{code:"bWFrZSUyMHJlcG8tY29uc2lzdGVuY3k=",highlighted:"make repo-consistency",wrap:!1}}),K=new $({props:{code:"bWFrZSUyMGZpeC1jb3BpZXM=",highlighted:"make fix-copies",wrap:!1}}),ie=new Pt({props:{source:"https://github.com/huggingface/transformers/blob/main/docs/source/it/pr_checks.md"}}),{c(){g=a("meta"),ae=o(),le=a("p"),se=o(),r(v.$$.fragment),ue=o(),_=a("p"),_.textContent=Xe,re=o(),C=a("ul"),C.innerHTML=Ye,ce=o(),h=a("p"),h.textContent=Oe,de=o(),b=a("p"),b.textContent=Ke,pe=o(),r(x.$$.fragment),me=o(),y=a("p"),y.textContent=et,fe=o(),r(z.$$.fragment),$e=o(),T=a("p"),T.textContent=tt,ge=o(),r(w.$$.fragment),ve=o(),M=a("p"),M.innerHTML=it,_e=o(),k=a("p"),k.textContent=lt,Ce=o(),r(P.$$.fragment),he=o(),q=a("p"),q.textContent=ot,be=o(),H=a("ol"),H.innerHTML=nt,xe=o(),L=a("p"),L.innerHTML=at,ye=o(),r(R.$$.fragment),ze=o(),U=a("p"),U.textContent=st,Te=o(),r(S.$$.fragment),we=o(),A=a("p"),A.innerHTML=ut,Me=o(),r(G.$$.fragment),ke=o(),W=a("p"),W.textContent=rt,Pe=o(),r(Z.$$.fragment),qe=o(),j=a("p"),j.innerHTML=ct,He=o(),r(Q.$$.fragment),Le=o(),F=a("p"),F.innerHTML=dt,Re=o(),r(E.$$.fragment),Ue=o(),I=a("p"),I.textContent=pt,Se=o(),r(B.$$.fragment),Ae=o(),J=a("p"),J.textContent=mt,Ge=o(),r(N.$$.fragment),We=o(),D=a("p"),D.innerHTML=ft,Ze=o(),r(V.$$.fragment),je=o(),X=a("p"),X.textContent=$t,Qe=o(),Y=a("ul"),Y.innerHTML=gt,Fe=o(),O=a("p"),O.textContent=vt,Ee=o(),r(K.$$.fragment),Ie=o(),ee=a("p"),ee.textContent=_t,Be=o(),te=a("ul"),te.innerHTML=Ct,Je=o(),r(ie.$$.fragment),Ne=o(),oe=a("p"),this.h()},l(e){const t=Mt("svelte-u9bgzb",document.head);g=s(t,"META",{name:!0,content:!0}),t.forEach(i),ae=n(e),le=s(e,"P",{}),ht(le).forEach(i),se=n(e),c(v.$$.fragment,e),ue=n(e),_=s(e,"P",{"data-svelte-h":!0}),u(_)!=="svelte-x884y7"&&(_.textContent=Xe),re=n(e),C=s(e,"UL",{"data-svelte-h":!0}),u(C)!=="svelte-10iagbn"&&(C.innerHTML=Ye),ce=n(e),h=s(e,"P",{"data-svelte-h":!0}),u(h)!=="svelte-120kdh4"&&(h.textContent=Oe),de=n(e),b=s(e,"P",{"data-svelte-h":!0}),u(b)!=="svelte-12o1tek"&&(b.textContent=Ke),pe=n(e),c(x.$$.fragment,e),me=n(e),y=s(e,"P",{"data-svelte-h":!0}),u(y)!=="svelte-ddz7hq"&&(y.textContent=et),fe=n(e),c(z.$$.fragment,e),$e=n(e),T=s(e,"P",{"data-svelte-h":!0}),u(T)!=="svelte-7b674g"&&(T.textContent=tt),ge=n(e),c(w.$$.fragment,e),ve=n(e),M=s(e,"P",{"data-svelte-h":!0}),u(M)!=="svelte-zuupn6"&&(M.innerHTML=it),_e=n(e),k=s(e,"P",{"data-svelte-h":!0}),u(k)!=="svelte-9imjiu"&&(k.textContent=lt),Ce=n(e),c(P.$$.fragment,e),he=n(e),q=s(e,"P",{"data-svelte-h":!0}),u(q)!=="svelte-1gwmfa5"&&(q.textContent=ot),be=n(e),H=s(e,"OL",{"data-svelte-h":!0}),u(H)!=="svelte-37dzw1"&&(H.innerHTML=nt),xe=n(e),L=s(e,"P",{"data-svelte-h":!0}),u(L)!=="svelte-1le8a4"&&(L.innerHTML=at),ye=n(e),c(R.$$.fragment,e),ze=n(e),U=s(e,"P",{"data-svelte-h":!0}),u(U)!=="svelte-1yo2yw2"&&(U.textContent=st),Te=n(e),c(S.$$.fragment,e),we=n(e),A=s(e,"P",{"data-svelte-h":!0}),u(A)!=="svelte-txjq72"&&(A.innerHTML=ut),Me=n(e),c(G.$$.fragment,e),ke=n(e),W=s(e,"P",{"data-svelte-h":!0}),u(W)!=="svelte-1f2ovqk"&&(W.textContent=rt),Pe=n(e),c(Z.$$.fragment,e),qe=n(e),j=s(e,"P",{"data-svelte-h":!0}),u(j)!=="svelte-1ezvqkz"&&(j.innerHTML=ct),He=n(e),c(Q.$$.fragment,e),Le=n(e),F=s(e,"P",{"data-svelte-h":!0}),u(F)!=="svelte-1k40kd3"&&(F.innerHTML=dt),Re=n(e),c(E.$$.fragment,e),Ue=n(e),I=s(e,"P",{"data-svelte-h":!0}),u(I)!=="svelte-1k82vv7"&&(I.textContent=pt),Se=n(e),c(B.$$.fragment,e),Ae=n(e),J=s(e,"P",{"data-svelte-h":!0}),u(J)!=="svelte-3ydaun"&&(J.textContent=mt),Ge=n(e),c(N.$$.fragment,e),We=n(e),D=s(e,"P",{"data-svelte-h":!0}),u(D)!=="svelte-myx6g1"&&(D.innerHTML=ft),Ze=n(e),c(V.$$.fragment,e),je=n(e),X=s(e,"P",{"data-svelte-h":!0}),u(X)!=="svelte-887q0w"&&(X.textContent=$t),Qe=n(e),Y=s(e,"UL",{"data-svelte-h":!0}),u(Y)!=="svelte-1ejvxn2"&&(Y.innerHTML=gt),Fe=n(e),O=s(e,"P",{"data-svelte-h":!0}),u(O)!=="svelte-1xmtr04"&&(O.textContent=vt),Ee=n(e),c(K.$$.fragment,e),Ie=n(e),ee=s(e,"P",{"data-svelte-h":!0}),u(ee)!=="svelte-w6onvg"&&(ee.textContent=_t),Be=n(e),te=s(e,"UL",{"data-svelte-h":!0}),u(te)!=="svelte-cbf9y"&&(te.innerHTML=Ct),Je=n(e),c(ie.$$.fragment,e),Ne=n(e),oe=s(e,"P",{}),ht(oe).forEach(i),this.h()},h(){bt(g,"name","hf:doc:metadata"),bt(g,"content",Ht)},m(e,t){kt(document.head,g),l(e,ae,t),l(e,le,t),l(e,se,t),d(v,e,t),l(e,ue,t),l(e,_,t),l(e,re,t),l(e,C,t),l(e,ce,t),l(e,h,t),l(e,de,t),l(e,b,t),l(e,pe,t),d(x,e,t),l(e,me,t),l(e,y,t),l(e,fe,t),d(z,e,t),l(e,$e,t),l(e,T,t),l(e,ge,t),d(w,e,t),l(e,ve,t),l(e,M,t),l(e,_e,t),l(e,k,t),l(e,Ce,t),d(P,e,t),l(e,he,t),l(e,q,t),l(e,be,t),l(e,H,t),l(e,xe,t),l(e,L,t),l(e,ye,t),d(R,e,t),l(e,ze,t),l(e,U,t),l(e,Te,t),d(S,e,t),l(e,we,t),l(e,A,t),l(e,Me,t),d(G,e,t),l(e,ke,t),l(e,W,t),l(e,Pe,t),d(Z,e,t),l(e,qe,t),l(e,j,t),l(e,He,t),d(Q,e,t),l(e,Le,t),l(e,F,t),l(e,Re,t),d(E,e,t),l(e,Ue,t),l(e,I,t),l(e,Se,t),d(B,e,t),l(e,Ae,t),l(e,J,t),l(e,Ge,t),d(N,e,t),l(e,We,t),l(e,D,t),l(e,Ze,t),d(V,e,t),l(e,je,t),l(e,X,t),l(e,Qe,t),l(e,Y,t),l(e,Fe,t),l(e,O,t),l(e,Ee,t),d(K,e,t),l(e,Ie,t),l(e,ee,t),l(e,Be,t),l(e,te,t),l(e,Je,t),d(ie,e,t),l(e,Ne,t),l(e,oe,t),De=!0},p:yt,i(e){De||(p(v.$$.fragment,e),p(x.$$.fragment,e),p(z.$$.fragment,e),p(w.$$.fragment,e),p(P.$$.fragment,e),p(R.$$.fragment,e),p(S.$$.fragment,e),p(G.$$.fragment,e),p(Z.$$.fragment,e),p(Q.$$.fragment,e),p(E.$$.fragment,e),p(B.$$.fragment,e),p(N.$$.fragment,e),p(V.$$.fragment,e),p(K.$$.fragment,e),p(ie.$$.fragment,e),De=!0)},o(e){m(v.$$.fragment,e),m(x.$$.fragment,e),m(z.$$.fragment,e),m(w.$$.fragment,e),m(P.$$.fragment,e),m(R.$$.fragment,e),m(S.$$.fragment,e),m(G.$$.fragment,e),m(Z.$$.fragment,e),m(Q.$$.fragment,e),m(E.$$.fragment,e),m(B.$$.fragment,e),m(N.$$.fragment,e),m(V.$$.fragment,e),m(K.$$.fragment,e),m(ie.$$.fragment,e),De=!1},d(e){e&&(i(ae),i(le),i(se),i(ue),i(_),i(re),i(C),i(ce),i(h),i(de),i(b),i(pe),i(me),i(y),i(fe),i($e),i(T),i(ge),i(ve),i(M),i(_e),i(k),i(Ce),i(he),i(q),i(be),i(H),i(xe),i(L),i(ye),i(ze),i(U),i(Te),i(we),i(A),i(Me),i(ke),i(W),i(Pe),i(qe),i(j),i(He),i(Le),i(F),i(Re),i(Ue),i(I),i(Se),i(Ae),i(J),i(Ge),i(We),i(D),i(Ze),i(je),i(X),i(Qe),i(Y),i(Fe),i(O),i(Ee),i(Ie),i(ee),i(Be),i(te),i(Je),i(Ne),i(oe)),i(g),f(v,e),f(x,e),f(z,e),f(w,e),f(P,e),f(R,e),f(S,e),f(G,e),f(Z,e),f(Q,e),f(E,e),f(B,e),f(N,e),f(V,e),f(K,e),f(ie,e)}}}const Ht='{"title":"Controlli su una Pull Request","local":"controlli-su-una-pull-request","sections":[{"title":"Tests","local":"tests","sections":[],"depth":2},{"title":"Build della documentazione","local":"build-della-documentazione","sections":[],"depth":2},{"title":"Stile del codice e della documentazione","local":"stile-del-codice-e-della-documentazione","sections":[],"depth":2},{"title":"Coerenza del repository","local":"coerenza-del-repository","sections":[],"depth":2}],"depth":1}';function Lt(Ve){return zt(()=>{new URLSearchParams(window.location.search).get("fw")}),[]}class Gt extends Tt{constructor(g){super(),wt(this,g,Lt,qt,xt,{})}}export{Gt as component};

Xet Storage Details

Size:
14.9 kB
·
Xet hash:
bebfc94cdc800ffb4b355a4909e21c64d9b51fb027e252de2efebbe66890aa47

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.