From c423e4290964ff8d10c29f39c1f46e1ee889bbce Mon Sep 17 00:00:00 2001 From: Paul Moore Date: Mon, 10 Oct 2022 12:20:21 +0100 Subject: [PATCH 1/4] Upgrade distlib to 0.3.6 --- news/distlib.vendor.rst | 1 + src/pip/_vendor/distlib/__init__.py | 4 ++-- src/pip/_vendor/distlib/t32.exe | Bin 97792 -> 97792 bytes src/pip/_vendor/distlib/t64-arm.exe | Bin 182784 -> 182784 bytes src/pip/_vendor/distlib/t64.exe | Bin 107520 -> 108032 bytes src/pip/_vendor/distlib/w32.exe | Bin 91648 -> 91648 bytes src/pip/_vendor/distlib/w64-arm.exe | Bin 168448 -> 168448 bytes src/pip/_vendor/distlib/w64.exe | Bin 101888 -> 101888 bytes src/pip/_vendor/vendor.txt | 2 +- 9 files changed, 4 insertions(+), 3 deletions(-) create mode 100644 news/distlib.vendor.rst diff --git a/news/distlib.vendor.rst b/news/distlib.vendor.rst new file mode 100644 index 00000000000..5fa036110fb --- /dev/null +++ b/news/distlib.vendor.rst @@ -0,0 +1 @@ +Upgrade distlib to 0.3.6 diff --git a/src/pip/_vendor/distlib/__init__.py b/src/pip/_vendor/distlib/__init__.py index 505556517f8..962173c8d0a 100644 --- a/src/pip/_vendor/distlib/__init__.py +++ b/src/pip/_vendor/distlib/__init__.py @@ -1,12 +1,12 @@ # -*- coding: utf-8 -*- # -# Copyright (C) 2012-2019 Vinay Sajip. +# Copyright (C) 2012-2022 Vinay Sajip. # Licensed to the Python Software Foundation under a contributor agreement. # See LICENSE.txt and CONTRIBUTORS.txt. # import logging -__version__ = '0.3.5' +__version__ = '0.3.6' class DistlibException(Exception): pass diff --git a/src/pip/_vendor/distlib/t32.exe b/src/pip/_vendor/distlib/t32.exe index 0aaa386d75662d2f874aab78460dcd39b2ee43b0..52154f0be32cc2bdbf98af131d477900667d0abd 100644 GIT binary patch delta 15993 zcmd^mdsx&}_wV;RfPf4Fa=)X1ppwr0KFp|~XlP^DASU453AMb;cqs{Wz{C+lx2ctx zrlzIl1#kI!K~eFVmn_XoVK1+3!wS-rlAQC|-$8rc-#O27{yKjho@dQod+oJvYp=cb z+G~HA*XA>?&8OPH(`Cl2vS}A)o(|rS`V3wz(x;w5{_85g)O$i|OsyAE|I}SbkJ%)t z7m%I~{v>skKo4x^*S4pbLi+M+V{NQWuKmxF&2hQB4<`!zb<8tb11I8%A0N!$Bhh?s zFWCm3yvPsqKj6=C>smN2ZdsRDa)1xxN3QDAi;oIKwO;n|v+YP@u94sQZu}S$EtX2*Zi~&(u@6VJok6QLTj&yE@ebn+WW2XJ@yDWP zj87QjY{qyoq@8hj6dCFr%3mQDz2o?y`ttGwO4nO&$ zN=GZ*LwH|hr_Y624_&QnRIiaNU)}idXf|Q7{*>ctlb8Hae^&BM0LK*+yH2&YRO%

w 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 Re&)l>w#@wrGx_g*{};Hht7QNH delta 15894 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 H#Or?ob9iVn diff --git a/src/pip/_vendor/distlib/t64-arm.exe b/src/pip/_vendor/distlib/t64-arm.exe index a759e270d0bf784d1cbd03acc9492cc25f7e4669..e1ab8f8f589eadabaf3efa068dce3ff620a01898 100644 GIT binary patch delta 21754 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 TKQ7>KZbgxGq2n(ZJ&gYbW8$WF delta 22110 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 QLvSS8TNgU^y3xh>KTZ|9h5!Hn diff --git a/src/pip/_vendor/distlib/t64.exe b/src/pip/_vendor/distlib/t64.exe index 82fe2d99e115fe361782ac4e84f8a4e67a243768..e8bebdba6d8f242244bf397ab067965d47c5093e 100644 GIT binary patch delta 23759 zcmeHvc~}%j_ip#V;IKKM3_G$bn~LHBf(i<;(NT#j?kEO#L(Jf=gBgjA?HIM9nAJ5= zqe+Yy#WlD@P;rS{FdBm~OB-A;U!oX|ec#jFn0)vC{=EO(=ehGd#e3@1slDpdsii5d zaw)EMS((N+tm>LM=C8b&zrNQry3tv#td0H!{%0;9MW0k~OY|xQS4Q6l-oO1p^pC(_ z-!n#+EBpO;2Z@O^2=lyY<_N(V2ICq^J$JK+eTV>8? z-h5l9)mwC|C*P6(iOu0#@ri6BpQNkMtqKoh^}L}|_Gh_T% z%UF)fOeQYRaa{m^ur|6@d>b|de|xZn_}hfZR_o%+H)D@oTBQ9D zqn6+wxmy8^atGbec4#TF#<=FF)b4Lt?&la8FZWITeny~ipT3;E+$4zK$)+{Q;5V_) zn{*FvK@l8-q9zIsb5yR>7G)4b@`~_^HPU@%G<0#f6Gk_WUSE6kXxZ;m&8dk?~<>(Dgu$_oG zUR_Aj#L`&uP&zl@%Sw8bo%**$pPl-Bkyp~i{f`h;Hg!V0zT*At z)MpfOLkXcQWK*yb@{5rA+@cp!Zx(s6QEslhj!kfjZ~N#D$Gu466g+)PezF8-+n&i5 z-)ym3HeFE#)ReZdqi)T;_oyr?v20ob598nUV{JDWn6rDdbyflzKk0;EFR68ZPv`8D4!cxS8S^@msTf zWK@`J+9pvSSlm+}SfqFKZ>ZBL$<9Wy($)sqN=YRk(jw0R_{$|KsiZchBAa560E#gQ z@@UH-RdPd4?3;Nz_KITwyATA(%ZK=71~Ll4QOEb>t^psQt5 zXG&Pi#pJ7zW0yfjYbwpF>$9#h0Kl3C?usN7$`H6EDuzCo}T?Go$@ z$_4wV3c;Zt$E+U7?is&Q?Th-zruFQYM?zv8{AP!v78ONy)p{O7;6&0X=_1C2Aet`q zMq7)XCjheP(J$yJH_s^dkDpTEEPl>XHB0eKvaV~1*tX*a!B%O&$eD44=DW=o!)}uz zIrzeUB#ac+BL%sts}nr4+@KaO$fgru2@cOSf64Lzup#t`!ZGzh6tr)lQV>tQQUZ#P z;?!sJ7{e8|(-=M;zi=_c`yM=+`#G|ynVLYnnm{5F!2Ab)H*3{2(yay9g7`!>MYBOo zTUqxvR~jS$wf_;iRdDn%$R-J`f?j~~DXJDqu3Ox*oo))^<2&b3KnR|KU`DwIc`$MF zG0;@S_6_(Y6=t!LwEAp}c)>Bt-?*=70aS^1hImynBeVTfOC;>1#OZAM8Icf0$|iZ+ zNu4I|LGmGL;Uq!4S&*61(h^|Y=T3ZmbJou2XT1yMj-hNQ$h1eI{dJ_ky)abN((I<{ zD8<28qiJ#lBdx&JJ)$VKz?K@J3LSlni%(;7i<;I#(m$A)_NB!deWmzM}dKQ!PV?&oy+rFU8LDDQCHVIL%eL< zS0yd*R!Y+}+xE3C!?-VtD}d~66uP_@6&gi@%8*UHZ}+8)x^4znykJ3M9oK=Za|f{s zgkbv(HFXp^K`O)EVaQ4S>`pwFBQ-~bu-Z9HzhT7wvl4}|*4`c5z5LYVs7^m4Mz|8=LoG)8f5-4-G0ozvYbjsq@LJ0H?n7D~=0~NA=lWvVcbK+P zOaxp)z(J)y9iHwwQjS>sFH0-+RLG+FP?`6#kdVWXhvqv#Z7Ai1(zsU`vZ)eX=NQ<$ zAR}c^REwgxY$&@h$ME}7&0O+?tP!I{+!j)FEf3 zNgL9QYffU|o~uWB?Ng(Y&2~#vqS@ievz5*L_!PFSd5b`-t}lKC1;)_D7&%BL)$?fC z<>oheth8mOjzNPu^H_^y)1I43Rs5v3F*IsxWYYlVJr|y?CCp z_=?3S^9jH2|io&Gky)nmIAW><1FHka34|-BLJkueBnMOtY=sI!g(E>#Y zDf(Z#pe#*Emxr^kfN0&*Y}P9vs_EE3o;$8u6{7xaHYXs$`q~JrQZX3Lf?c20M`^;M zC`XO~aqS_4D9~LEjL`y{l*8`g>Siiy+=0zrvkS`T_bQQ#JZw*8OA`#MLiTfHYM>>Omhqbi$GWA=i_=8g^&?o9s05$S z;5p#u%vC`Dl1+DM0N9)bZEhdy7$KqmI@$PIu%)q8~DF~e;gYca9>aOM;{s%atx#|ru1ptaLeSYDhDdn0y`?rJiti495rp$EsUw9QZQ z;EDoK=_IcM8=%k72xnk$)dXFP{7cSE^4RZ2Q?Cp&xzUiZ+1ivU?Vz+zP}uiWs7st^}1vsUvK(~ ztSirpN7%Ct?X2rzYoh-mY+WtQcut4u^<``5-e4L4ec~In@Tyku{t?|Mnyra0BT+9B z4SOM4K%#f1qRXW^1fxOR_G23dogPO6ZOK#-BPrvB5Uq8kLU43;bJPRZEZYccoYGvSA5brFKNI7-ROt{+dyJ2bDY0$UaR zLy9iydn+014|i;t zlJp*%ncALT&bFsU@N-x-{!V8PQu`U#7gAcrl505Qko6hNoHn>cQlg@P?DM0-QoD{$ zhVACKOUdLvMn&7OuhL>8o!ctW7VlD$H~k4?MG$>{$DZUWMvPeux!sDnca0n090P)M zdOo&v`cFv8?$JOKcQCE2n({ohj}j|tfwg>zl90y}sh~zlW)}R}wy39ET@(_Sq=q(7 zT-g+fXvk?0d#7s>Z(wJ;2J&AsscUxY?sV*d1YMy+zx@jX04E(4UdmaCG8#kw6@HM7 z?&cT%6qZV3jMBy!K6ZcUM+CqYv9h(@2JnIGPPYR79?R+8KH3e7=?oZ^9MldcEoK`t=J65> z=@HJKEbHFGz`M34OB}1npDd?m&wyKG>Wcpe8}~L99D`R%PuR|$8~JZp zzsxgyJ`2oRteZZ$Y(v&&o?pZ=dkx|<**m?Wct3WeSB!4-WG3~R%Ga~OLRWq_V?tuY zSSS{h$(%2hR4k09xi;Il&m1+L&MniWcr0M-XJMGmr3XvTj^?+P6=X;9&bD-pD|7T7 z$?JluSnIVR%wP`n>&v5n&_%JbsmFGXOLKWW5Tl?o>t=q5zrjk(F?=Qa%1%Ty z%=ngl!}zAGSKo1bB>SZARDK2X>zAe*HHi)G*IL(U0$bcKNykrM`}=L;x3iJ`JMq6W z*1vu7SNAY~deA}=R4=<1`C?$qze6L_j5RN{3R*k*B(%DyUkgFOz64qWf%>KF@BY1- zn-OG-Zud8Mwx`dFqAT?gY-mm_-@q2-1fi541@}(`UH%g2D^T; zLU`EquMj~idKK$BXo65HQPKuV+Ve7KHR%CIQGI*JaV5|RDQ5U#-o)D)?h?RxuUL>`s1wA;NfVSRf9i(Mb&ml0qnH3L*j)# zv}}rE3{}3#Bx+s}7B@Qol*QMU!WDT-vHy~oGf|Ns^(cA&i?9ERxekr6-ok>61h7Nk zzA8o&2=V8ovnnr#5{37O>P@5+cB^zQ1v&HyzXH(dfwuj5;850o=Yu7RBp{WLuw!2C z5u6r~_(M9=N$FK@X(ot9Dz2N&1?AOCqu8#Y0enw(dT6LF@(8ONn!(4g*17GlB^;C6 z9s_iBZhEudFwDs8_LNQEz7Nu~hW(Tq32VwQERhdpDZ_g5$!x)}4E{O$YFHe9iT#GZ z4a_urjCI{Xs$?I5^3+SqR9~*@o3HvNs=n!}uTb^nslM5&Z-C+xl~z&`%1{{_)Y`qb zM{Nwf6bt@W%6K|2h2VIH{bzWfS1;^mU(6C0sh)+5Xze~34QPS+tLJ}VgGWU2*dLB) z&wI0-Bf|Ly?A(Zabb0%c0z&7Fv^4+oLt55;U5A7)(do4764Q-pi>kICmE7vhuc?w} zq~DYdKO=po;q(H^_zaYG*oZqB1#H!*;$FYwn2{5&S^TjO{t8-Z|B|v08pJcQ=_)Zc zVhKeC$0#$0Cj&?eF*LCj42NIDE?OEriRF%ti4-XQg0F2pe( zj{Me8Kn=oj*_tsk_&dyy*Mh&vTICh`Hp9P+{9j(I)uBg*M4j&P(a7jPteiq>;%{}9&t z7zrw;Q3dvnhf(Hi@rrCZy&7D{{HR|`Dw-F?A&K9%kdC0U)3=er>Ty01Cyv2TBSsw= z&~k-fYe<{fix}U5fhguq=OS3lt%g#YXqv1VOGv~i1VJx z!N4)qZl+>+h0*GCR+{??$K63Cu%?`%4#1(ifRmUo$wbNi?@aFBOjQnR^4sJ3>hk-u z+v7+td*-(e{2jTWT`hk5$pn&atC@$`x)!oQ`H{`OtmioGfCJYi=%p>pp8vX0dXC!a zId?S2S-a;E<~}|V3rX5|f8N3dk57vqf$#&lN}r#V#?g5aM$JUg6iV?NODUpYZ{l>t zZt`S@#%Fm~V%4Ct>C{W}m)5z6A^TXfSGw@)Sl?F$L33<+WiMaIh84V&@D8+j(mm{w zGHlhD59g!~yJ=q3Ao-#gY$Bt`%1eF=#p*hpohg_Z@E9FCGeSHso4#0q0qIyTp_-Yg zAwRI;6NV?0=ObG+c3T0_<5KjmsS(b}rg$a7hgyVTtaifK1o{7r@Kc?V10sCrpd1<_ zRI_Ol`$gJe`7C%v$o~(P$x#@af-S9{v*ZY(NByG=f1AZi>d9_S^lh0)VPL8z+waTC z=NY6jA4-4iRIEIA7C33RanOFM@<6Xlu@W1KkC|;!q3e}$>_4icrc>CnNm=cj+{qR# zM)RBVZzJPNFx7h7(rP)&#NMJ$?V}#Zcr=vB)?Ko^65(ZR#^jzJuacDL^CJQ-u%nYl z;9w|ZO1RGD4ojaho?pp6ni6K}^$GG;EVJWYf_$#%vfv2GXWvap<6AJlsqOf9mOZs4 z%*(>55&SvErgn1axgAU1YIc6A$u$NfvV#)1H#Ld(Vd2xJ`1r2T_N8Kn;I=D>Eq>Li z!?}~ba68*uIJ?=VFVMt&{Du7bM@Qc%@{{7uvh>#ibxqH*k*{UMH`zuFQvoZf#?n-J zvQ_cr!B^ytQF=60ndFLDFpX8c)?U|X9DDX!6kpB4XZV@6T)=5Wh9S)2mvm7)hf6A* zq<@w5oe{$yESou_8}G3P_b6K1Ok)+VCpSx*j*>SK#0)RN&eIh~C3CYRX0QDW#cz-; zX~eQCp68afzcsQ8qRE% z_3j0ype1E{vefkyYh4uJvka5ZXj_N%9_ONFu>mK*Wo&p+yuk^A5WB$~MNrHL9QDZo9E$}!AJ$wuVY2CSK-*I$(-4`lnHFnoR+a)&&4bh zYoQQKvZ)px%!_*`&@N}>JEx)TQ;&&Fjb`{%wE zz5<%|fE&#phyLnpT)LzTuCe&mc{K8lu|D(qx0?GdQhoY7!R2j zB$Yw=R&uUX?<#h5USPyoFzzJ4{!6N;3zXKwhX$Mdk5s$u?C*IQX}!Tox{eK1_=})B zN03U=^^#M@r5}Jw?K&NXmeIC~N+VT;mir#Pc zDLXtryu&hutCVWJB8N6X==x7FvX7%!6pqOG|A+-|W6c(1we$w(AWaa2p2FCMbXs3% z^kzcpr5T=Bx&&M%U0@3q1fnCnv+w)JA_f3%ADkPP5<| ztAtiUGKnHL)5JH$u(8(Wx=agOaW$L|XX~sTJcNHD@`&ii9$3fnwe00$oZ7Rg#dWUV zoKTZ^hvhALNw@3-`=%z49a|K_2e8^jmDuEMdt)NMtIXRrf!7_n#pW&!^SyZ#OSkQ$ zA;Wm&nUMcTzW+~yD<357dC_hg-;?F^ zda!O=1RI?mh=CX8ZQOT98DCe8`_9T|q%|}SJF^6_DYnF^q7Z3chEX;MhQoiI7xV-} z8)eVdv5!Ry--!h+kK(<{(wFz;UGvM;p%Ty5I2Agb)@5|)DCuWU1z#je5WP0eeK@q?(cDymZAn68lEddG7vt56YPthvZe1t zo6lDx(B6c&vlYE^g$DgY=mjYBm&rsF@=pqm;GVc`k1X1Qh;u$wJ7yzR1+zVRGQ4Jc zt4jSVr&;ia{%p>x?kxCSFVh7(Y-CJAALJ?ZS7i+>lKes_al9;m0eO2k(Z|^rZT;A#cZ2wM*@Jfng#6kH2fDbH(_R?S!5OR&*a~?0 z5YI-x7p2>DxNPxzr+M$#N;DJp!`=2#P9gu<&c=KY#J|MmeGq8<73-whChvT%wn+s< zKH82oFI6!Y&qxLz@^p0+@|HG2{{6;7O=%}ZRa@-!e_CuNY#X##pT-t*szE|U`;cf3 z5+$`+JPYw`(dqDVO$1vj?Av;X*;ZQtec!YoD>a53RZ@+3ePb*L4j7 zJF;Hv+y>f{D%2BGU2t?=hmq5GqmSl0sb7XEfiaytm@*6rCtYjr`rS@eykRJ&PR)jP zo}oJtMLv^Mk!cSxGT)6IF?h`zhj=v|1X(&Yv%E|jpFV8&#`uIw1C=Vdli9!ibu1|2 zA4bq8KzmMxk7>F$9^EoTKu;n+HL=E&B39vz)OQfZyTe-9^b={B>qXn8 zC2YXfmL5LE2vA~tcYrP4I(AH}TPR&t6%{o=azV63$u<=l=zcuS=5J4N=>ruZwO|LghvP}i_uE780P^Yf7(cxl%eeSIN)gl~>pQY8 zpVUGkXh&<)^4>_7ir!H+?Glu>I=q^V+7YfhGM^Ri=*(xZ@*UAlpRW3+o62Uhx*gN} zoiRmlYcEVWg{v6nW5weQhUcPDTEhx=E(^W6lKP1j<+>gvr)IZF_3VHt_IgVppB~wv zsXq<#SpPys%4J!fhUtE=vk9NJNIqzxIoY}bBMIk{r}n5V(h*Zc+JGSJf-EuQVI+rr zfwm!7%)CBp!LEPm9yeT(k}XPa~c z&DYuZ&)V>DjD41&+jf*){cLd4c4;)2=!`k3TFPW8pGO%#UyCD4vcPeHN%qy$&qJH; z$A*tI?I~VJ@f^?I`Ft|3XU@Ck;23S;u5LIbJiM#7?n)2l`bD(vyYVdX3qiM%Aers{ zqDFUMFrk5q*0(4VZOWmFf zcDn2(Oc3uqU3E7PvYb7^y83)JeNPA7cj;`)o^BmZW3XY_aP+BPl=A)eiavZRkJ`Tf zKa7Q7h$k@-3_{XbY2s+sbYBAN@ntjJo;)_>%XRz^_TbAD-JY&2Zf~#PgS5S;l0n1J zN&FX;PFl&n8Ot1dxt`QG3ZLsy!278Bkb=Vjvghj=N2)Sn$}tgZhp&YPo=JIw9A zc<68z?+iTmb=MslUDj{kAt&qH;nX>OyrkDu!e5%G5@FI9m57mss6?XFS0UV`ER~Ti zrKyA1~y+AbP1vR}pQUuX?cm=A=TEt|5B7 zO4kydtI`tDW|gidI$fn3i0+`$bm}R^s5HF_k%CoPIiL4ZX@BB7tF#p-dz{petJGdO z^1rLn%5i+HN+*-dWtC1Rx=N+#R9`xz(sY_H?NaGNqPM8@Y@*kxbTQG(ReCAW#korR ziz~@vQ3KWyJyE465wer3#fc5WPpGy@=kX(*8uhuhL;euT<$6 zq8Ed^p4-B_=$!mYuo$D{^_A-I{! zaZ))k;22cS!@*RWJ~$EceEz0Vlpj=1GB|&zoUNsg{EPTp7K-&d;LuQ_7U^}qw`kkyX zlpc0?eneio=f^5+Rbd-|%suQ=)(}UIZh^=oKQam@eU>Qyp&5fR24}FH$Gcna&3Umq z`xpyMT{;%}5Q-&w`U37ON8!K>w^=9q9j`Yg~tL~C?Z8Z#fyK@xe zn?OF0P5F9a=Seu^I*vwCP<>^2z<^vFz5ONo1}btYOB=KGxq}MKpR=m>DHxh>}_S-7Mab zPQX}${htzY=`94~;cdwkYG;S%W`PRXm#U%kg>f;XesGxPB0wp}M#>5oR*UB<9R$Ps zL4qP7C=%yT{e?(WHq9nMD_Q2}RROOT0tJddE(uWh=W6(cUgW0)`YGYbjp1)0+>FZ+ zJY%KeqG=*fBD*S%uRR*&CQv$dy+4HNyl|Ufe2Z(x)#0tI-UTeYJZVDFv6&iYPW{1x zcVoyqjpB%&_f`&5Kv+9GsTjs?o{o8CNMFpb$wJA+q9)Re-k?Vcw!dm;^+X}g zENcA9sN}j}%&bw~51Z+(m7bz$lk3$Keg0Bt!5rFpe^5%>7E8Qfds;j5FmXh1r0HzR znc(=BXVAdLsJ6r?JBcT+(H^euij>?KFhUKeeU0rt(=p&7!qp>o94&XvHhzxFuu~R; zl(M=yUia`L*1Ec*$7wnug-wZPW0TqR>ejKN5Gg!a>ZHW=#UPX(U?Cy}aMXqR?5SDA zBYpk5YuJhEzE;2HD9IV=@()yOdzRl-L5qf|cu%>Rfk-D#<*!l~HcwX^*AITPdbB^B5UQE!{zQq<^4DkIrLb1Z#ov_!*Onq)GuQSM| zT=wb3P62;TZrr^|Zd1^O{&&is&~o6)o?Q&d>8V6Sqv4ejJ^>K$XmSghSVE*bvmqzo zbzTlMLlDg!(fO#-$mtgMjN%1cpmA|~h)DC49D=F$R}?c$8+0wYzQ9=r0PKl{1rxx zSA;8{h8ENnq(CtgOw#ugslBAV0CoSXmgXYTLTQ>yAG`>VhV*9@9sJpzD=l;<$Knnl ziZxsbjm%0%^LRn(zwZ$yP2LjLPA!HmM;GGQtXrczH@VrUy1 zY0j^}omD1tT#dlZ!mg_wJcWOf!ZYQES7-6N*rabm_zP^ww@+LvrctMzk(M%h%}e~8 z%@=BT++TllZ6d$Etjl+}OW3gtcL~8kxWMx~JDJXfEC2gGAu)h`u{gce3WVWPCx053 z|I>v+ff8QDGH!(6#o3q}b9KLNp!)<}i;e7jNwD)yENOJ5zA(KtJ6@&w3`>lx7 zMK9t=Ye6Cz`hpW9?`gS{+_ScW?+<7n@VRx5w%lL^k}VK-~?I&HO10?`2AV z%8Tnb>_r>j?+!JA>w0MFaD2^aTznh!0c`zYq*UX|CH&`5W9~%Klz(R!->wu=I}Tv| ze~$GTw1^r2mW^ugIRsZ}KU@BDQrBw}P~DP8jhAZr{qVyS%ccc4Q#!Z@(d_yYV^O79 zWwZ#)nInC?TUo>krFQJu&z;f&ixrvvNX@UZTNJk6fWk?CS{0!#n$U-; zP&}LdOOmeF7i{w{iFiA3`Ik7{fyuvQ1r92p6J;f)osvgk=GDzWvZ-wJuLIEAU;Nsl z`ziEPX3Es4*_I-z{D-?_`G^jg2@Vez+)CbDh=`~%;trhgM5_^WPd^Qag7ip3y*&Y6J&hWC(A|A(gCREN{(`p&MR6P zX2?ZXw)D5ox`(sa(cjJnd^q66ARL+^%jKj^>)b><_1sz)>wTgVvKgqnkvR4S4sy-x zR$U0b<(KPvgtkIU{_{d2K=tJ{zL2=Z^6qxW>Hmhi(E)Wu>Y*sUXi^SFoji`=t%Jk! zIJRIst=$`ZphoF;s zc9doHp_79WQ1)rK>I#rn=e(#_pUza!DmZ*JZWfP1NiQ9PlgEq1z?SSdETjl*(h8K< z`L?^s5ZEw`I_JsrA`fXl^^@qig4NxN;rlY5`w6jWpWxG3bxaC)tx+#kwxWJe24x$; zF@#s{ZK|aA*`)g+{7JUte!GzZ^Z}l99YAX7nNXZzvT0Nkq-@uJoJ)C~5Y%r5kkuN6 zfya~h9`VU@i;HX$^@>Q$aXDH7DM$aN{Eb4%mCFRL2cz)%clv`s-puR|LPHYf(`E^m z4Wo`%r{l@_-9$nBZ9lTZtJ3*w(ZlAf=0PO?C3}V#M_Awbz+ifV@n12*C@G|=~R`1xy?pkbPZW(`MbI9bCtG<;XXm}Dg#E9a{coQsBcJF6M|p$T&I zB@lid8b)cDreQw~Cu_J=!}m4ZrQvA}Z)$j7K^(R{*BH$@su{J^u%Cu`8cx@6v4*QP z+@Rr34fkqzOvB3>{-|NShJO(vf6fhGOVKY(!vqbxX*fW`(Ha(NxKzWH8g9^Vr-nx~ ztkLjy4Gmfgw*XT9T(ZUxG#strYz^PkaIJ=0G~A=%Ne#c#u!Gi>ls5gUwXWQ&VNGM# za$ITeJl@FabxngeM04rX4nAX5%)6*!^;RyuG$W7q@i079ImInij(;g0&%2tm|H(qC zq%T}8zWS^6EgSylLQiX+7q6sAtEKYO{B(UpzYRt;9ExB0`#;ylr?`tlYMc{ z{An-mHS^;Se_z!r>zzlQ2cQ2iJdrQeoA}qWZuGwcj&_;j(Z9xm)`Q_+rEet*NNl$z^y0^_v1q&8VjA>nd1uKwrhp1 zhsdgA6zpl~+#o)*bdn$6>O~saX&jdeCzoyn`$fe^!QlJ@?k6n`T{n*NgKPAA8=X00 zhbEk{y?bF})$+S@+%!13)YG5$OKD{9Nawioa1Z`QPu4kt;pg zf=_Bgy&o2Y{xummQwMj>)ZV++c)_#6z0fVMF}ZhYIqnP`s@c?^_kEH3lv^D4IoyNN z>`)$GYL`w6<%3={&i;EGcMlG+-VNnfcvDV^&gkj{9T&*sUmBIBgz+}O;V`~cCkkB& z3ya6UZ*az_4#StKjlXTmqQP?&jb;r3B=9!qXm#-Y|7MTcRR7=X`G3Of`A;N2YhQ5` zU)%)7Pn*37{7SddU7dLU?6fB8f}5;i2MrT7jL|SmLw^ko8aBA7@$Z&;cjo)Y9@4z! z8t&0>mxkLkTvxiNGw)}u*1YpIv}ib0!#oXhH54>V)-X}S1P$>YDbi_N8Z>OstA2c= ztZ1^v$z8AVOO45VIA2v7o6Ls>tkh&@YnZ2DPU)m%evEgmvzkQb7M$Gf6Sb4tro_!{p# zA62T}U&X@Gja~Rqe*C_pUHH$PtPRanwxnUB_&8rp{E2Gu7XDvC*hw6@`T7+ZM%hO2tC{Zqq<3izbu%v_m z|Ard`nhWQ+fpC^_WiNJ=;Yel|Fti=V9g0KC0lUFb`sqL!PHElt9Jd#CF?Ef#9E4W~Gz)|X55qlciIo;O zxg*EbfIk&j3rCR&OFCio1%DT?JQ>FU(Y%5eQ&0iWmx1A_FsDIB0eiqvAu@rF;3)kD z;EXi%|56B9(m1YdSG5Zgf$d>4mxJE{xE_xBasx0Bb~4pC82AQU17sEh)6-Qxp;HFO z1tSAz;Jh9<2?aeLxB`wUuoCzkHXReeztPhQ6DbQNB@b{v%;x2w4*}_)B5eab5;z}@ zA``x^(S$$3QQ^2g=xVqNkWT~(a5bQFfG@+{0G$UM3s(zzJg}n~8v`pm$sk^Z`vY_# zkRFf*qyIdBTrT()l2;Ko-t zt_u7uz?cHHaD-+!Y9T`F1pL!e(8WN0qQbXw&LFPAB_rSl&@@Sn;16u0(E?D^=;gq# z;4&d!0ek{SE%6MvW3o!`1ky(uIgqgc--V+>Q~{%3#S8)+1Dx_I`k!iGfoCfm32g(; zoxyQCLC**N1y=?78PNK=N*4q57L_&tSHe-35q2p;A45J3_$3@^(sH2lOf`MNdN@NY z(zFtD76uGFgiU6veHjLHnS*`;-vBhjQ7sAEW4}(*tOIcVJk$mn?b>1vsQ%h?0Wd09=Mvxd3`O@Mf`EgIb`|QjWU}zB4e? z&T)4^hXJ?3Q7yLt@552X^}vi}_?Nb5l}z9@IBKCAz@=+2Wm}`Q)?og(T&qTo0X8Y+ zxDF690K3CcLg~O&aFo#7!26rj8Bq`P-@5Js`}gm{Nz)#7Bbrj-0+#Y zz!28JQI`>VeXi1k$Kh%rpR)@Uv*OQPc-{u4mE)ij+gie=`=L-kdjWgEQNI=f&%;qc zFA#kY;|4MpfG&sB48nkG4&xsdgTDdzGaSu(3E1|CN~Z%QxMIjyiP(LV;}*lS2iW@< znhvxX_{nk981znH+zGS*=yaf^5~>$8;kYwsA<*N27vN~oBK)pe<=+5yJ*#$Q4v;&C zk&m(B1^o6L`riwldU!rMkN%`V1Uv&547wUf|G<)J9DIS}`dvgTfsf-sZZjN>k1fE@ zE^*vc@OJ?#;goRzyl@5T8hpaRS5^63V5@IcI_6u9@QLtH1j5uBbugv@k7@J?U{o#U zIuasux`i$S?F_sQ=Z}$m1GwX^I;wX9Gw!L~kqK;dAKd|&7~niOD)f9{dOh@p6#+yH zf}=hr{0ole^fTbTKQO2uQw~h}6NLjU0BawiK%fafdyK9Dy$kpQ995VH^0kedZ1P9;g2Wt7-)& delta 23636 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�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 F{{uwys8#>~ diff --git a/src/pip/_vendor/distlib/w32.exe b/src/pip/_vendor/distlib/w32.exe index f2e73aa0ce958737d95b1968e94a03a815cadff6..4ee2d3a31b59e8b50f433ecdf0be9e496e8cc3b8 100644 GIT binary patch delta 13492 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ξ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 diff --git a/src/pip/_vendor/distlib/w64-arm.exe b/src/pip/_vendor/distlib/w64-arm.exe index b998321c461a422a6f03deb404a299c2d288c617..951d5817c9e6d81c94a173a0d9fead7f1f143331 100644 GIT binary patch delta 10631 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 HGhY7#nG&?2 diff --git a/src/pip/_vendor/distlib/w64.exe b/src/pip/_vendor/distlib/w64.exe index 9a6b894db58c868b27c1859614c479a4d640a6ce..5763076d2878093971a0ef9870e1cde7f556b18b 100644 GIT binary patch delta 14555 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 delta 14582 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 Jx9M*#{|kF4kbwXI diff --git a/src/pip/_vendor/vendor.txt b/src/pip/_vendor/vendor.txt index 375b6411af6..4053e5ab8c7 100644 --- a/src/pip/_vendor/vendor.txt +++ b/src/pip/_vendor/vendor.txt @@ -1,6 +1,6 @@ CacheControl==0.12.11 # Make sure to update the license in pyproject.toml for this. colorama==0.4.5 -distlib==0.3.5 +distlib==0.3.6 distro==1.7.0 msgpack==1.0.4 packaging==21.3 From 77a0a61722099ab479d29e8e191dea972ac3996f Mon Sep 17 00:00:00 2001 From: Paul Moore Date: Mon, 10 Oct 2022 12:20:36 +0100 Subject: [PATCH 2/4] Upgrade pep517 to 0.13.0 --- news/pep517.vendor.rst | 1 + src/pip/_vendor/pep517/__init__.py | 2 +- src/pip/_vendor/pep517/_compat.py | 8 +++ src/pip/_vendor/pep517/build.py | 13 ++--- src/pip/_vendor/pep517/check.py | 16 +++--- src/pip/_vendor/pep517/colorlog.py | 2 - src/pip/_vendor/pep517/compat.py | 51 ----------------- src/pip/_vendor/pep517/dirtools.py | 27 +-------- src/pip/_vendor/pep517/envbuild.py | 15 +++-- src/pip/_vendor/pep517/in_process/__init__.py | 17 ++++-- .../_vendor/pep517/in_process/_in_process.py | 36 ++++-------- src/pip/_vendor/pep517/meta.py | 13 +++-- src/pip/_vendor/pep517/wrappers.py | 55 +++++++------------ src/pip/_vendor/vendor.txt | 2 +- 14 files changed, 86 insertions(+), 172 deletions(-) create mode 100644 news/pep517.vendor.rst create mode 100644 src/pip/_vendor/pep517/_compat.py delete mode 100644 src/pip/_vendor/pep517/compat.py diff --git a/news/pep517.vendor.rst b/news/pep517.vendor.rst new file mode 100644 index 00000000000..e18c1d87bb0 --- /dev/null +++ b/news/pep517.vendor.rst @@ -0,0 +1 @@ +Upgrade pep517 to 0.13.0 diff --git a/src/pip/_vendor/pep517/__init__.py b/src/pip/_vendor/pep517/__init__.py index 2b6b8856790..38ea0f5f11f 100644 --- a/src/pip/_vendor/pep517/__init__.py +++ b/src/pip/_vendor/pep517/__init__.py @@ -1,6 +1,6 @@ """Wrappers to build Python packages using PEP 517 hooks """ -__version__ = '0.12.0' +__version__ = '0.13.0' from .wrappers import * # noqa: F401, F403 diff --git a/src/pip/_vendor/pep517/_compat.py b/src/pip/_vendor/pep517/_compat.py new file mode 100644 index 00000000000..95e509c0143 --- /dev/null +++ b/src/pip/_vendor/pep517/_compat.py @@ -0,0 +1,8 @@ +__all__ = ("tomllib",) + +import sys + +if sys.version_info >= (3, 11): + import tomllib +else: + from pip._vendor import tomli as tomllib diff --git a/src/pip/_vendor/pep517/build.py b/src/pip/_vendor/pep517/build.py index bc463b2ba6d..b30909c8704 100644 --- a/src/pip/_vendor/pep517/build.py +++ b/src/pip/_vendor/pep517/build.py @@ -1,15 +1,14 @@ """Build a project using PEP 517 hooks. """ import argparse -import io import logging import os import shutil +import tempfile +from ._compat import tomllib from .envbuild import BuildEnvironment from .wrappers import Pep517HookCaller -from .dirtools import tempdir, mkdir_p -from .compat import FileNotFoundError, toml_load log = logging.getLogger(__name__) @@ -31,8 +30,8 @@ def load_system(source_dir): Load the build system from a source dir (pyproject.toml). """ pyproject = os.path.join(source_dir, 'pyproject.toml') - with io.open(pyproject, 'rb') as f: - pyproject_data = toml_load(f) + with open(pyproject, 'rb') as f: + pyproject_data = tomllib.load(f) return pyproject_data['build-system'] @@ -64,7 +63,7 @@ def _do_build(hooks, env, dist, dest): env.pip_install(reqs) log.info('Installed dynamic build dependencies') - with tempdir() as td: + with tempfile.TemporaryDirectory() as td: log.info('Trying to build %s in %s', dist, td) build_name = 'build_{dist}'.format(**locals()) build = getattr(hooks, build_name) @@ -76,7 +75,7 @@ def _do_build(hooks, env, dist, dest): def build(source_dir, dist, dest=None, system=None): system = system or load_system(source_dir) dest = os.path.join(source_dir, dest or 'dist') - mkdir_p(dest) + os.makedirs(dest, exist_ok=True) validate_system(system) hooks = Pep517HookCaller( diff --git a/src/pip/_vendor/pep517/check.py b/src/pip/_vendor/pep517/check.py index bf3c722641e..b79f6270b40 100644 --- a/src/pip/_vendor/pep517/check.py +++ b/src/pip/_vendor/pep517/check.py @@ -1,19 +1,19 @@ """Check a project and backend by attempting to build using PEP 517 hooks. """ import argparse -import io import logging import os -from os.path import isfile, join as pjoin import shutil -from subprocess import CalledProcessError import sys import tarfile -from tempfile import mkdtemp import zipfile +from os.path import isfile +from os.path import join as pjoin +from subprocess import CalledProcessError +from tempfile import mkdtemp +from ._compat import tomllib from .colorlog import enable_colourful_output -from .compat import TOMLDecodeError, toml_load from .envbuild import BuildEnvironment from .wrappers import Pep517HookCaller @@ -142,15 +142,15 @@ def check(source_dir): return False try: - with io.open(pyproject, 'rb') as f: - pyproject_data = toml_load(f) + with open(pyproject, 'rb') as f: + pyproject_data = tomllib.load(f) # Ensure the mandatory data can be loaded buildsys = pyproject_data['build-system'] requires = buildsys['requires'] backend = buildsys['build-backend'] backend_path = buildsys.get('backend-path') log.info('Loaded pyproject.toml') - except (TOMLDecodeError, KeyError): + except (tomllib.TOMLDecodeError, KeyError): log.error("Invalid pyproject.toml", exc_info=True) return False diff --git a/src/pip/_vendor/pep517/colorlog.py b/src/pip/_vendor/pep517/colorlog.py index 69c8a59d3d4..66310a79a99 100644 --- a/src/pip/_vendor/pep517/colorlog.py +++ b/src/pip/_vendor/pep517/colorlog.py @@ -73,8 +73,6 @@ def __init__(self, color=True, datefmt=None): # right conversion in python 3. fg_color = (curses.tigetstr("setaf") or curses.tigetstr("setf") or "") - if (3, 0) < sys.version_info < (3, 2, 3): - fg_color = str(fg_color, "ascii") for levelno, code in self.DEFAULT_COLORS.items(): self._colors[levelno] = str( diff --git a/src/pip/_vendor/pep517/compat.py b/src/pip/_vendor/pep517/compat.py deleted file mode 100644 index 730ef5ffaa1..00000000000 --- a/src/pip/_vendor/pep517/compat.py +++ /dev/null @@ -1,51 +0,0 @@ -"""Python 2/3 compatibility""" -import io -import json -import sys - - -# Handle reading and writing JSON in UTF-8, on Python 3 and 2. - -if sys.version_info[0] >= 3: - # Python 3 - def write_json(obj, path, **kwargs): - with open(path, 'w', encoding='utf-8') as f: - json.dump(obj, f, **kwargs) - - def read_json(path): - with open(path, 'r', encoding='utf-8') as f: - return json.load(f) - -else: - # Python 2 - def write_json(obj, path, **kwargs): - with open(path, 'wb') as f: - json.dump(obj, f, encoding='utf-8', **kwargs) - - def read_json(path): - with open(path, 'rb') as f: - return json.load(f) - - -# FileNotFoundError - -try: - FileNotFoundError = FileNotFoundError -except NameError: - FileNotFoundError = IOError - - -if sys.version_info < (3, 6): - from toml import load as _toml_load # noqa: F401 - - def toml_load(f): - w = io.TextIOWrapper(f, encoding="utf8", newline="") - try: - return _toml_load(w) - finally: - w.detach() - - from toml import TomlDecodeError as TOMLDecodeError # noqa: F401 -else: - from pip._vendor.tomli import load as toml_load # noqa: F401 - from pip._vendor.tomli import TOMLDecodeError # noqa: F401 diff --git a/src/pip/_vendor/pep517/dirtools.py b/src/pip/_vendor/pep517/dirtools.py index 58c6ca0c56b..3eff4d801ba 100644 --- a/src/pip/_vendor/pep517/dirtools.py +++ b/src/pip/_vendor/pep517/dirtools.py @@ -1,33 +1,8 @@ -import os import io -import contextlib -import tempfile -import shutil -import errno +import os import zipfile -@contextlib.contextmanager -def tempdir(): - """Create a temporary directory in a context manager.""" - td = tempfile.mkdtemp() - try: - yield td - finally: - shutil.rmtree(td) - - -def mkdir_p(*args, **kwargs): - """Like `mkdir`, but does not raise an exception if the - directory already exists. - """ - try: - return os.mkdir(*args, **kwargs) - except OSError as exc: - if exc.errno != errno.EEXIST: - raise - - def dir_to_zipfile(root): """Construct an in-memory zip file for a directory.""" buffer = io.BytesIO() diff --git a/src/pip/_vendor/pep517/envbuild.py b/src/pip/_vendor/pep517/envbuild.py index fe8873c64a9..c0415c4d738 100644 --- a/src/pip/_vendor/pep517/envbuild.py +++ b/src/pip/_vendor/pep517/envbuild.py @@ -1,27 +1,26 @@ """Build wheels/sdists by installing build deps to a temporary environment. """ -import io -import os import logging +import os import shutil -from subprocess import check_call import sys +from subprocess import check_call from sysconfig import get_paths from tempfile import mkdtemp -from .compat import toml_load -from .wrappers import Pep517HookCaller, LoggerWrapper +from ._compat import tomllib +from .wrappers import LoggerWrapper, Pep517HookCaller log = logging.getLogger(__name__) def _load_pyproject(source_dir): - with io.open( + with open( os.path.join(source_dir, 'pyproject.toml'), 'rb', ) as f: - pyproject_data = toml_load(f) + pyproject_data = tomllib.load(f) buildsys = pyproject_data['build-system'] return ( buildsys['requires'], @@ -30,7 +29,7 @@ def _load_pyproject(source_dir): ) -class BuildEnvironment(object): +class BuildEnvironment: """Context manager to install build deps in a simple temporary environment Based on code I wrote for pip, which is MIT licensed. diff --git a/src/pip/_vendor/pep517/in_process/__init__.py b/src/pip/_vendor/pep517/in_process/__init__.py index c932313b328..281a356cfe2 100644 --- a/src/pip/_vendor/pep517/in_process/__init__.py +++ b/src/pip/_vendor/pep517/in_process/__init__.py @@ -3,15 +3,24 @@ The subpackage should stay as empty as possible to avoid shadowing modules that the backend might import. """ -from os.path import dirname, abspath, join as pjoin from contextlib import contextmanager +from os.path import abspath, dirname +from os.path import join as pjoin try: import importlib.resources as resources - - def _in_proc_script_path(): - return resources.path(__package__, '_in_process.py') + try: + resources.files + except AttributeError: + # Python 3.8 compatibility + def _in_proc_script_path(): + return resources.path(__package__, '_in_process.py') + else: + def _in_proc_script_path(): + return resources.as_file( + resources.files(__package__).joinpath('_in_process.py')) except ImportError: + # Python 3.6 compatibility @contextmanager def _in_proc_script_path(): yield pjoin(dirname(abspath(__file__)), '_in_process.py') diff --git a/src/pip/_vendor/pep517/in_process/_in_process.py b/src/pip/_vendor/pep517/in_process/_in_process.py index 954a4ab05e9..ae4cf9e9cee 100644 --- a/src/pip/_vendor/pep517/in_process/_in_process.py +++ b/src/pip/_vendor/pep517/in_process/_in_process.py @@ -12,41 +12,29 @@ - control_dir/output.json - {"return_val": ...} """ -from glob import glob -from importlib import import_module import json import os import os.path -from os.path import join as pjoin import re import shutil import sys import traceback +from glob import glob +from importlib import import_module +from os.path import join as pjoin -# This file is run as a script, and `import compat` is not zip-safe, so we -# include write_json() and read_json() from compat.py. -# -# Handle reading and writing JSON in UTF-8, on Python 3 and 2. +# This file is run as a script, and `import wrappers` is not zip-safe, so we +# include write_json() and read_json() from wrappers.py. -if sys.version_info[0] >= 3: - # Python 3 - def write_json(obj, path, **kwargs): - with open(path, 'w', encoding='utf-8') as f: - json.dump(obj, f, **kwargs) - def read_json(path): - with open(path, 'r', encoding='utf-8') as f: - return json.load(f) +def write_json(obj, path, **kwargs): + with open(path, 'w', encoding='utf-8') as f: + json.dump(obj, f, **kwargs) -else: - # Python 2 - def write_json(obj, path, **kwargs): - with open(path, 'wb') as f: - json.dump(obj, f, encoding='utf-8', **kwargs) - def read_json(path): - with open(path, 'rb') as f: - return json.load(f) +def read_json(path): + with open(path, encoding='utf-8') as f: + return json.load(f) class BackendUnavailable(Exception): @@ -64,7 +52,7 @@ def __init__(self, message): class HookMissing(Exception): """Raised if a hook is missing and we are not executing the fallback""" def __init__(self, hook_name=None): - super(HookMissing, self).__init__(hook_name) + super().__init__(hook_name) self.hook_name = hook_name diff --git a/src/pip/_vendor/pep517/meta.py b/src/pip/_vendor/pep517/meta.py index d525de5c6c8..4afc3c047a7 100644 --- a/src/pip/_vendor/pep517/meta.py +++ b/src/pip/_vendor/pep517/meta.py @@ -1,10 +1,11 @@ """Build metadata for a project using PEP 517 hooks. """ import argparse +import functools import logging import os import shutil -import functools +import tempfile try: import importlib.metadata as imp_meta @@ -16,10 +17,10 @@ except ImportError: from zipp import Path +from .build import compat_system, load_system, validate_system +from .dirtools import dir_to_zipfile from .envbuild import BuildEnvironment from .wrappers import Pep517HookCaller, quiet_subprocess_runner -from .dirtools import tempdir, mkdir_p, dir_to_zipfile -from .build import validate_system, load_system, compat_system log = logging.getLogger(__name__) @@ -31,7 +32,7 @@ def _prep_meta(hooks, env, dest): env.pip_install(reqs) log.info('Installed dynamic build dependencies') - with tempdir() as td: + with tempfile.TemporaryDirectory() as td: log.info('Trying to build metadata in %s', td) filename = hooks.prepare_metadata_for_build_wheel(td, {}) source = os.path.join(td, filename) @@ -41,7 +42,7 @@ def _prep_meta(hooks, env, dest): def build(source_dir='.', dest=None, system=None): system = system or load_system(source_dir) dest = os.path.join(source_dir, dest or 'dist') - mkdir_p(dest) + os.makedirs(dest, exist_ok=True) validate_system(system) hooks = Pep517HookCaller( source_dir, system['build-backend'], system.get('backend-path') @@ -54,7 +55,7 @@ def build(source_dir='.', dest=None, system=None): def build_as_zip(builder=build): - with tempdir() as out_dir: + with tempfile.TemporaryDirectory() as out_dir: builder(dest=out_dir) return dir_to_zipfile(out_dir) diff --git a/src/pip/_vendor/pep517/wrappers.py b/src/pip/_vendor/pep517/wrappers.py index e031ed70875..987a62aaa99 100644 --- a/src/pip/_vendor/pep517/wrappers.py +++ b/src/pip/_vendor/pep517/wrappers.py @@ -1,13 +1,13 @@ -import threading -from contextlib import contextmanager +import json import os -from os.path import abspath, join as pjoin -import shutil -from subprocess import check_call, check_output, STDOUT import sys -from tempfile import mkdtemp +import tempfile +import threading +from contextlib import contextmanager +from os.path import abspath +from os.path import join as pjoin +from subprocess import STDOUT, check_call, check_output -from . import compat from .in_process import _in_proc_script_path __all__ = [ @@ -21,13 +21,14 @@ ] -@contextmanager -def tempdir(): - td = mkdtemp() - try: - yield td - finally: - shutil.rmtree(td) +def write_json(obj, path, **kwargs): + with open(path, 'w', encoding='utf-8') as f: + json.dump(obj, f, **kwargs) + + +def read_json(path): + with open(path, encoding='utf-8') as f: + return json.load(f) class BackendUnavailable(Exception): @@ -47,7 +48,7 @@ def __init__(self, backend_name, backend_path, message): class HookMissing(Exception): """Will be raised on missing hooks.""" def __init__(self, hook_name): - super(HookMissing, self).__init__(hook_name) + super().__init__(hook_name) self.hook_name = hook_name @@ -99,7 +100,7 @@ def norm_and_check(source_tree, requested): return abs_requested -class Pep517HookCaller(object): +class Pep517HookCaller: """A wrapper around a source directory to be built with a PEP 517 backend. :param source_dir: The path to the source directory, containing @@ -292,29 +293,15 @@ def build_sdist(self, sdist_directory, config_settings=None): }) def _call_hook(self, hook_name, kwargs): - # On Python 2, pytoml returns Unicode values (which is correct) but the - # environment passed to check_call needs to contain string values. We - # convert here by encoding using ASCII (the backend can only contain - # letters, digits and _, . and : characters, and will be used as a - # Python identifier, so non-ASCII content is wrong on Python 2 in - # any case). - # For backend_path, we use sys.getfilesystemencoding. - if sys.version_info[0] == 2: - build_backend = self.build_backend.encode('ASCII') - else: - build_backend = self.build_backend - extra_environ = {'PEP517_BUILD_BACKEND': build_backend} + extra_environ = {'PEP517_BUILD_BACKEND': self.build_backend} if self.backend_path: backend_path = os.pathsep.join(self.backend_path) - if sys.version_info[0] == 2: - backend_path = backend_path.encode(sys.getfilesystemencoding()) extra_environ['PEP517_BACKEND_PATH'] = backend_path - with tempdir() as td: + with tempfile.TemporaryDirectory() as td: hook_input = {'kwargs': kwargs} - compat.write_json(hook_input, pjoin(td, 'input.json'), - indent=2) + write_json(hook_input, pjoin(td, 'input.json'), indent=2) # Run the hook in a subprocess with _in_proc_script_path() as script: @@ -325,7 +312,7 @@ def _call_hook(self, hook_name, kwargs): extra_environ=extra_environ ) - data = compat.read_json(pjoin(td, 'output.json')) + data = read_json(pjoin(td, 'output.json')) if data.get('unsupported'): raise UnsupportedOperation(data.get('traceback', '')) if data.get('no_backend'): diff --git a/src/pip/_vendor/vendor.txt b/src/pip/_vendor/vendor.txt index 4053e5ab8c7..f9018960e2c 100644 --- a/src/pip/_vendor/vendor.txt +++ b/src/pip/_vendor/vendor.txt @@ -4,7 +4,7 @@ distlib==0.3.6 distro==1.7.0 msgpack==1.0.4 packaging==21.3 -pep517==0.12.0 +pep517==0.13.0 platformdirs==2.5.2 pyparsing==3.0.9 requests==2.28.1 From b922e0f66028701690322aedb4deecf0e401057e Mon Sep 17 00:00:00 2001 From: Paul Moore Date: Mon, 10 Oct 2022 12:20:52 +0100 Subject: [PATCH 3/4] Upgrade idna to 3.4 --- news/idna.vendor.rst | 1 + src/pip/_vendor/idna/core.py | 5 +- src/pip/_vendor/idna/idnadata.py | 34 ++- src/pip/_vendor/idna/package_data.py | 2 +- src/pip/_vendor/idna/uts46data.py | 306 +++++++++++++++++---------- src/pip/_vendor/vendor.txt | 2 +- 6 files changed, 228 insertions(+), 122 deletions(-) create mode 100644 news/idna.vendor.rst diff --git a/news/idna.vendor.rst b/news/idna.vendor.rst new file mode 100644 index 00000000000..087598cbf5c --- /dev/null +++ b/news/idna.vendor.rst @@ -0,0 +1 @@ +Upgrade idna to 3.4 diff --git a/src/pip/_vendor/idna/core.py b/src/pip/_vendor/idna/core.py index 55ab9678850..4f300371102 100644 --- a/src/pip/_vendor/idna/core.py +++ b/src/pip/_vendor/idna/core.py @@ -339,7 +339,10 @@ def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False, transitional: bool = False) -> bytes: if isinstance(s, (bytes, bytearray)): - s = s.decode('ascii') + try: + s = s.decode('ascii') + except UnicodeDecodeError: + raise IDNAError('should pass a unicode string to the function rather than a byte string.') if uts46: s = uts46_remap(s, std3_rules, transitional) trailing_dot = False diff --git a/src/pip/_vendor/idna/idnadata.py b/src/pip/_vendor/idna/idnadata.py index 1b5805d15e5..67db4625829 100644 --- a/src/pip/_vendor/idna/idnadata.py +++ b/src/pip/_vendor/idna/idnadata.py @@ -1,6 +1,6 @@ # This file is automatically generated by tools/idna-data -__version__ = '14.0.0' +__version__ = '15.0.0' scripts = { 'Greek': ( 0x37000000374, @@ -55,12 +55,13 @@ 0x16fe200016fe4, 0x16ff000016ff2, 0x200000002a6e0, - 0x2a7000002b739, + 0x2a7000002b73a, 0x2b7400002b81e, 0x2b8200002cea2, 0x2ceb00002ebe1, 0x2f8000002fa1e, 0x300000003134b, + 0x31350000323b0, ), 'Hebrew': ( 0x591000005c8, @@ -77,6 +78,7 @@ 0x304100003097, 0x309d000030a0, 0x1b0010001b120, + 0x1b1320001b133, 0x1b1500001b153, 0x1f2000001f201, ), @@ -93,6 +95,7 @@ 0x1affd0001afff, 0x1b0000001b001, 0x1b1200001b123, + 0x1b1550001b156, 0x1b1640001b168, ), } @@ -1331,7 +1334,7 @@ 0xcdd00000cdf, 0xce000000ce4, 0xce600000cf0, - 0xcf100000cf3, + 0xcf100000cf4, 0xd0000000d0d, 0xd0e00000d11, 0xd1200000d45, @@ -1366,7 +1369,7 @@ 0xeb400000ebe, 0xec000000ec5, 0xec600000ec7, - 0xec800000ece, + 0xec800000ecf, 0xed000000eda, 0xede00000ee0, 0xf0000000f01, @@ -1859,7 +1862,7 @@ 0xab200000ab27, 0xab280000ab2f, 0xab300000ab5b, - 0xab600000ab6a, + 0xab600000ab69, 0xabc00000abeb, 0xabec0000abee, 0xabf00000abfa, @@ -1943,7 +1946,7 @@ 0x10e8000010eaa, 0x10eab00010ead, 0x10eb000010eb2, - 0x10f0000010f1d, + 0x10efd00010f1d, 0x10f2700010f28, 0x10f3000010f51, 0x10f7000010f86, @@ -1966,7 +1969,7 @@ 0x111dc000111dd, 0x1120000011212, 0x1121300011238, - 0x1123e0001123f, + 0x1123e00011242, 0x1128000011287, 0x1128800011289, 0x1128a0001128e, @@ -2047,11 +2050,16 @@ 0x11d9300011d99, 0x11da000011daa, 0x11ee000011ef7, + 0x11f0000011f11, + 0x11f1200011f3b, + 0x11f3e00011f43, + 0x11f5000011f5a, 0x11fb000011fb1, 0x120000001239a, 0x1248000012544, 0x12f9000012ff1, - 0x130000001342f, + 0x1300000013430, + 0x1344000013456, 0x1440000014647, 0x1680000016a39, 0x16a4000016a5f, @@ -2079,7 +2087,9 @@ 0x1aff50001affc, 0x1affd0001afff, 0x1b0000001b123, + 0x1b1320001b133, 0x1b1500001b153, + 0x1b1550001b156, 0x1b1640001b168, 0x1b1700001b2fc, 0x1bc000001bc6b, @@ -2096,17 +2106,21 @@ 0x1da9b0001daa0, 0x1daa10001dab0, 0x1df000001df1f, + 0x1df250001df2b, 0x1e0000001e007, 0x1e0080001e019, 0x1e01b0001e022, 0x1e0230001e025, 0x1e0260001e02b, + 0x1e0300001e06e, + 0x1e08f0001e090, 0x1e1000001e12d, 0x1e1300001e13e, 0x1e1400001e14a, 0x1e14e0001e14f, 0x1e2900001e2af, 0x1e2c00001e2fa, + 0x1e4d00001e4fa, 0x1e7e00001e7e7, 0x1e7e80001e7ec, 0x1e7ed0001e7ef, @@ -2115,13 +2129,13 @@ 0x1e8d00001e8d7, 0x1e9220001e94c, 0x1e9500001e95a, - 0x1fbf00001fbfa, 0x200000002a6e0, - 0x2a7000002b739, + 0x2a7000002b73a, 0x2b7400002b81e, 0x2b8200002cea2, 0x2ceb00002ebe1, 0x300000003134b, + 0x31350000323b0, ), 'CONTEXTJ': ( 0x200c0000200e, diff --git a/src/pip/_vendor/idna/package_data.py b/src/pip/_vendor/idna/package_data.py index f5ea87c12bd..8501893bd15 100644 --- a/src/pip/_vendor/idna/package_data.py +++ b/src/pip/_vendor/idna/package_data.py @@ -1,2 +1,2 @@ -__version__ = '3.3' +__version__ = '3.4' diff --git a/src/pip/_vendor/idna/uts46data.py b/src/pip/_vendor/idna/uts46data.py index 8f65705ee91..186796c17b2 100644 --- a/src/pip/_vendor/idna/uts46data.py +++ b/src/pip/_vendor/idna/uts46data.py @@ -7,7 +7,7 @@ """IDNA Mapping Table from UTS46.""" -__version__ = '14.0.0' +__version__ = '15.0.0' def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ (0x0, '3'), @@ -1300,7 +1300,7 @@ def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0xCE6, 'V'), (0xCF0, 'X'), (0xCF1, 'V'), - (0xCF3, 'X'), + (0xCF4, 'X'), (0xD00, 'V'), (0xD0D, 'X'), (0xD0E, 'V'), @@ -1368,7 +1368,7 @@ def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0xEC6, 'V'), (0xEC7, 'X'), (0xEC8, 'V'), - (0xECE, 'X'), + (0xECF, 'X'), (0xED0, 'V'), (0xEDA, 'X'), (0xEDC, 'M', 'ຫນ'), @@ -5917,7 +5917,7 @@ def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x10EAE, 'X'), (0x10EB0, 'V'), (0x10EB2, 'X'), - (0x10F00, 'V'), + (0x10EFD, 'V'), (0x10F28, 'X'), (0x10F30, 'V'), (0x10F5A, 'X'), @@ -5956,7 +5956,7 @@ def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x11200, 'V'), (0x11212, 'X'), (0x11213, 'V'), - (0x1123F, 'X'), + (0x11242, 'X'), (0x11280, 'V'), (0x11287, 'X'), (0x11288, 'V'), @@ -6097,6 +6097,8 @@ def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x11AA3, 'X'), (0x11AB0, 'V'), (0x11AF9, 'X'), + (0x11B00, 'V'), + (0x11B0A, 'X'), (0x11C00, 'V'), (0x11C09, 'X'), (0x11C0A, 'V'), @@ -6139,13 +6141,19 @@ def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x11DAA, 'X'), (0x11EE0, 'V'), (0x11EF9, 'X'), - (0x11FB0, 'V'), - (0x11FB1, 'X'), - (0x11FC0, 'V'), + (0x11F00, 'V'), ] def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: return [ + (0x11F11, 'X'), + (0x11F12, 'V'), + (0x11F3B, 'X'), + (0x11F3E, 'V'), + (0x11F5A, 'X'), + (0x11FB0, 'V'), + (0x11FB1, 'X'), + (0x11FC0, 'V'), (0x11FF2, 'X'), (0x11FFF, 'V'), (0x1239A, 'X'), @@ -6158,7 +6166,9 @@ def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x12F90, 'V'), (0x12FF3, 'X'), (0x13000, 'V'), - (0x1342F, 'X'), + (0x13430, 'X'), + (0x13440, 'V'), + (0x13456, 'X'), (0x14400, 'V'), (0x14647, 'X'), (0x16800, 'V'), @@ -6236,6 +6246,10 @@ def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x18D00, 'V'), (0x18D09, 'X'), (0x1AFF0, 'V'), + ] + +def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1AFF4, 'X'), (0x1AFF5, 'V'), (0x1AFFC, 'X'), @@ -6243,13 +6257,13 @@ def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1AFFF, 'X'), (0x1B000, 'V'), (0x1B123, 'X'), + (0x1B132, 'V'), + (0x1B133, 'X'), (0x1B150, 'V'), (0x1B153, 'X'), + (0x1B155, 'V'), + (0x1B156, 'X'), (0x1B164, 'V'), - ] - -def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1B168, 'X'), (0x1B170, 'V'), (0x1B2FC, 'X'), @@ -6295,6 +6309,8 @@ def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D1EB, 'X'), (0x1D200, 'V'), (0x1D246, 'X'), + (0x1D2C0, 'V'), + (0x1D2D4, 'X'), (0x1D2E0, 'V'), (0x1D2F4, 'X'), (0x1D300, 'V'), @@ -6334,6 +6350,10 @@ def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D41E, 'M', 'e'), (0x1D41F, 'M', 'f'), (0x1D420, 'M', 'g'), + ] + +def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D421, 'M', 'h'), (0x1D422, 'M', 'i'), (0x1D423, 'M', 'j'), @@ -6350,10 +6370,6 @@ def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D42E, 'M', 'u'), (0x1D42F, 'M', 'v'), (0x1D430, 'M', 'w'), - ] - -def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D431, 'M', 'x'), (0x1D432, 'M', 'y'), (0x1D433, 'M', 'z'), @@ -6438,6 +6454,10 @@ def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D482, 'M', 'a'), (0x1D483, 'M', 'b'), (0x1D484, 'M', 'c'), + ] + +def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D485, 'M', 'd'), (0x1D486, 'M', 'e'), (0x1D487, 'M', 'f'), @@ -6454,10 +6474,6 @@ def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D492, 'M', 'q'), (0x1D493, 'M', 'r'), (0x1D494, 'M', 's'), - ] - -def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D495, 'M', 't'), (0x1D496, 'M', 'u'), (0x1D497, 'M', 'v'), @@ -6542,6 +6558,10 @@ def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D4E9, 'M', 'z'), (0x1D4EA, 'M', 'a'), (0x1D4EB, 'M', 'b'), + ] + +def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D4EC, 'M', 'c'), (0x1D4ED, 'M', 'd'), (0x1D4EE, 'M', 'e'), @@ -6558,10 +6578,6 @@ def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D4F9, 'M', 'p'), (0x1D4FA, 'M', 'q'), (0x1D4FB, 'M', 'r'), - ] - -def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D4FC, 'M', 's'), (0x1D4FD, 'M', 't'), (0x1D4FE, 'M', 'u'), @@ -6646,6 +6662,10 @@ def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D550, 'M', 'y'), (0x1D551, 'X'), (0x1D552, 'M', 'a'), + ] + +def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D553, 'M', 'b'), (0x1D554, 'M', 'c'), (0x1D555, 'M', 'd'), @@ -6662,10 +6682,6 @@ def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D560, 'M', 'o'), (0x1D561, 'M', 'p'), (0x1D562, 'M', 'q'), - ] - -def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D563, 'M', 'r'), (0x1D564, 'M', 's'), (0x1D565, 'M', 't'), @@ -6750,6 +6766,10 @@ def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D5B4, 'M', 'u'), (0x1D5B5, 'M', 'v'), (0x1D5B6, 'M', 'w'), + ] + +def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D5B7, 'M', 'x'), (0x1D5B8, 'M', 'y'), (0x1D5B9, 'M', 'z'), @@ -6766,10 +6786,6 @@ def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D5C4, 'M', 'k'), (0x1D5C5, 'M', 'l'), (0x1D5C6, 'M', 'm'), - ] - -def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D5C7, 'M', 'n'), (0x1D5C8, 'M', 'o'), (0x1D5C9, 'M', 'p'), @@ -6854,6 +6870,10 @@ def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D618, 'M', 'q'), (0x1D619, 'M', 'r'), (0x1D61A, 'M', 's'), + ] + +def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D61B, 'M', 't'), (0x1D61C, 'M', 'u'), (0x1D61D, 'M', 'v'), @@ -6870,10 +6890,6 @@ def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D628, 'M', 'g'), (0x1D629, 'M', 'h'), (0x1D62A, 'M', 'i'), - ] - -def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D62B, 'M', 'j'), (0x1D62C, 'M', 'k'), (0x1D62D, 'M', 'l'), @@ -6958,6 +6974,10 @@ def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D67C, 'M', 'm'), (0x1D67D, 'M', 'n'), (0x1D67E, 'M', 'o'), + ] + +def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D67F, 'M', 'p'), (0x1D680, 'M', 'q'), (0x1D681, 'M', 'r'), @@ -6974,10 +6994,6 @@ def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D68C, 'M', 'c'), (0x1D68D, 'M', 'd'), (0x1D68E, 'M', 'e'), - ] - -def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D68F, 'M', 'f'), (0x1D690, 'M', 'g'), (0x1D691, 'M', 'h'), @@ -7062,6 +7078,10 @@ def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D6E2, 'M', 'α'), (0x1D6E3, 'M', 'β'), (0x1D6E4, 'M', 'γ'), + ] + +def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D6E5, 'M', 'δ'), (0x1D6E6, 'M', 'ε'), (0x1D6E7, 'M', 'ζ'), @@ -7078,10 +7098,6 @@ def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D6F2, 'M', 'ρ'), (0x1D6F3, 'M', 'θ'), (0x1D6F4, 'M', 'σ'), - ] - -def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D6F5, 'M', 'τ'), (0x1D6F6, 'M', 'υ'), (0x1D6F7, 'M', 'φ'), @@ -7166,6 +7182,10 @@ def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D747, 'M', 'σ'), (0x1D749, 'M', 'τ'), (0x1D74A, 'M', 'υ'), + ] + +def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D74B, 'M', 'φ'), (0x1D74C, 'M', 'χ'), (0x1D74D, 'M', 'ψ'), @@ -7182,10 +7202,6 @@ def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D758, 'M', 'γ'), (0x1D759, 'M', 'δ'), (0x1D75A, 'M', 'ε'), - ] - -def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D75B, 'M', 'ζ'), (0x1D75C, 'M', 'η'), (0x1D75D, 'M', 'θ'), @@ -7270,6 +7286,10 @@ def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D7AD, 'M', 'δ'), (0x1D7AE, 'M', 'ε'), (0x1D7AF, 'M', 'ζ'), + ] + +def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1D7B0, 'M', 'η'), (0x1D7B1, 'M', 'θ'), (0x1D7B2, 'M', 'ι'), @@ -7286,10 +7306,6 @@ def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1D7BE, 'M', 'υ'), (0x1D7BF, 'M', 'φ'), (0x1D7C0, 'M', 'χ'), - ] - -def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1D7C1, 'M', 'ψ'), (0x1D7C2, 'M', 'ω'), (0x1D7C3, 'M', '∂'), @@ -7359,6 +7375,8 @@ def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1DAB0, 'X'), (0x1DF00, 'V'), (0x1DF1F, 'X'), + (0x1DF25, 'V'), + (0x1DF2B, 'X'), (0x1E000, 'V'), (0x1E007, 'X'), (0x1E008, 'V'), @@ -7369,6 +7387,75 @@ def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1E025, 'X'), (0x1E026, 'V'), (0x1E02B, 'X'), + (0x1E030, 'M', 'а'), + (0x1E031, 'M', 'б'), + (0x1E032, 'M', 'в'), + ] + +def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E033, 'M', 'г'), + (0x1E034, 'M', 'д'), + (0x1E035, 'M', 'е'), + (0x1E036, 'M', 'ж'), + (0x1E037, 'M', 'з'), + (0x1E038, 'M', 'и'), + (0x1E039, 'M', 'к'), + (0x1E03A, 'M', 'л'), + (0x1E03B, 'M', 'м'), + (0x1E03C, 'M', 'о'), + (0x1E03D, 'M', 'п'), + (0x1E03E, 'M', 'р'), + (0x1E03F, 'M', 'с'), + (0x1E040, 'M', 'т'), + (0x1E041, 'M', 'у'), + (0x1E042, 'M', 'ф'), + (0x1E043, 'M', 'х'), + (0x1E044, 'M', 'ц'), + (0x1E045, 'M', 'ч'), + (0x1E046, 'M', 'ш'), + (0x1E047, 'M', 'ы'), + (0x1E048, 'M', 'э'), + (0x1E049, 'M', 'ю'), + (0x1E04A, 'M', 'ꚉ'), + (0x1E04B, 'M', 'ә'), + (0x1E04C, 'M', 'і'), + (0x1E04D, 'M', 'ј'), + (0x1E04E, 'M', 'ө'), + (0x1E04F, 'M', 'ү'), + (0x1E050, 'M', 'ӏ'), + (0x1E051, 'M', 'а'), + (0x1E052, 'M', 'б'), + (0x1E053, 'M', 'в'), + (0x1E054, 'M', 'г'), + (0x1E055, 'M', 'д'), + (0x1E056, 'M', 'е'), + (0x1E057, 'M', 'ж'), + (0x1E058, 'M', 'з'), + (0x1E059, 'M', 'и'), + (0x1E05A, 'M', 'к'), + (0x1E05B, 'M', 'л'), + (0x1E05C, 'M', 'о'), + (0x1E05D, 'M', 'п'), + (0x1E05E, 'M', 'с'), + (0x1E05F, 'M', 'у'), + (0x1E060, 'M', 'ф'), + (0x1E061, 'M', 'х'), + (0x1E062, 'M', 'ц'), + (0x1E063, 'M', 'ч'), + (0x1E064, 'M', 'ш'), + (0x1E065, 'M', 'ъ'), + (0x1E066, 'M', 'ы'), + (0x1E067, 'M', 'ґ'), + (0x1E068, 'M', 'і'), + (0x1E069, 'M', 'ѕ'), + (0x1E06A, 'M', 'џ'), + (0x1E06B, 'M', 'ҫ'), + (0x1E06C, 'M', 'ꙑ'), + (0x1E06D, 'M', 'ұ'), + (0x1E06E, 'X'), + (0x1E08F, 'V'), + (0x1E090, 'X'), (0x1E100, 'V'), (0x1E12D, 'X'), (0x1E130, 'V'), @@ -7383,6 +7470,8 @@ def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1E2FA, 'X'), (0x1E2FF, 'V'), (0x1E300, 'X'), + (0x1E4D0, 'V'), + (0x1E4FA, 'X'), (0x1E7E0, 'V'), (0x1E7E7, 'X'), (0x1E7E8, 'V'), @@ -7390,10 +7479,6 @@ def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1E7ED, 'V'), (0x1E7EF, 'X'), (0x1E7F0, 'V'), - ] - -def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1E7FF, 'X'), (0x1E800, 'V'), (0x1E8C5, 'X'), @@ -7409,6 +7494,10 @@ def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1E907, 'M', '𞤩'), (0x1E908, 'M', '𞤪'), (0x1E909, 'M', '𞤫'), + ] + +def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1E90A, 'M', '𞤬'), (0x1E90B, 'M', '𞤭'), (0x1E90C, 'M', '𞤮'), @@ -7494,10 +7583,6 @@ def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1EE31, 'M', 'ص'), (0x1EE32, 'M', 'ق'), (0x1EE33, 'X'), - ] - -def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1EE34, 'M', 'ش'), (0x1EE35, 'M', 'ت'), (0x1EE36, 'M', 'ث'), @@ -7513,6 +7598,10 @@ def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1EE48, 'X'), (0x1EE49, 'M', 'ي'), (0x1EE4A, 'X'), + ] + +def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1EE4B, 'M', 'ل'), (0x1EE4C, 'X'), (0x1EE4D, 'M', 'ن'), @@ -7598,10 +7687,6 @@ def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1EEA3, 'M', 'د'), (0x1EEA4, 'X'), (0x1EEA5, 'M', 'و'), - ] - -def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1EEA6, 'M', 'ز'), (0x1EEA7, 'M', 'ح'), (0x1EEA8, 'M', 'ط'), @@ -7617,6 +7702,10 @@ def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1EEB2, 'M', 'ق'), (0x1EEB3, 'M', 'ر'), (0x1EEB4, 'M', 'ش'), + ] + +def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1EEB5, 'M', 'ت'), (0x1EEB6, 'M', 'ث'), (0x1EEB7, 'M', 'خ'), @@ -7702,10 +7791,6 @@ def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1F141, 'M', 'r'), (0x1F142, 'M', 's'), (0x1F143, 'M', 't'), - ] - -def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1F144, 'M', 'u'), (0x1F145, 'M', 'v'), (0x1F146, 'M', 'w'), @@ -7721,6 +7806,10 @@ def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1F150, 'V'), (0x1F16A, 'M', 'mc'), (0x1F16B, 'M', 'md'), + ] + +def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1F16C, 'M', 'mr'), (0x1F16D, 'V'), (0x1F190, 'M', 'dj'), @@ -7793,23 +7882,19 @@ def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1F266, 'X'), (0x1F300, 'V'), (0x1F6D8, 'X'), - (0x1F6DD, 'V'), + (0x1F6DC, 'V'), (0x1F6ED, 'X'), (0x1F6F0, 'V'), (0x1F6FD, 'X'), (0x1F700, 'V'), - (0x1F774, 'X'), - (0x1F780, 'V'), - (0x1F7D9, 'X'), + (0x1F777, 'X'), + (0x1F77B, 'V'), + (0x1F7DA, 'X'), (0x1F7E0, 'V'), (0x1F7EC, 'X'), (0x1F7F0, 'V'), (0x1F7F1, 'X'), (0x1F800, 'V'), - ] - -def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x1F80C, 'X'), (0x1F810, 'V'), (0x1F848, 'X'), @@ -7825,24 +7910,24 @@ def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x1FA54, 'X'), (0x1FA60, 'V'), (0x1FA6E, 'X'), + ] + +def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x1FA70, 'V'), - (0x1FA75, 'X'), - (0x1FA78, 'V'), (0x1FA7D, 'X'), (0x1FA80, 'V'), - (0x1FA87, 'X'), + (0x1FA89, 'X'), (0x1FA90, 'V'), - (0x1FAAD, 'X'), - (0x1FAB0, 'V'), - (0x1FABB, 'X'), - (0x1FAC0, 'V'), + (0x1FABE, 'X'), + (0x1FABF, 'V'), (0x1FAC6, 'X'), - (0x1FAD0, 'V'), - (0x1FADA, 'X'), + (0x1FACE, 'V'), + (0x1FADC, 'X'), (0x1FAE0, 'V'), - (0x1FAE8, 'X'), + (0x1FAE9, 'X'), (0x1FAF0, 'V'), - (0x1FAF7, 'X'), + (0x1FAF9, 'X'), (0x1FB00, 'V'), (0x1FB93, 'X'), (0x1FB94, 'V'), @@ -7861,7 +7946,7 @@ def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x20000, 'V'), (0x2A6E0, 'X'), (0x2A700, 'V'), - (0x2B739, 'X'), + (0x2B73A, 'X'), (0x2B740, 'V'), (0x2B81E, 'X'), (0x2B820, 'V'), @@ -7910,10 +7995,6 @@ def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F827, 'M', '勤'), (0x2F828, 'M', '勺'), (0x2F829, 'M', '包'), - ] - -def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x2F82A, 'M', '匆'), (0x2F82B, 'M', '北'), (0x2F82C, 'M', '卉'), @@ -7933,6 +8014,10 @@ def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F83C, 'M', '咞'), (0x2F83D, 'M', '吸'), (0x2F83E, 'M', '呈'), + ] + +def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x2F83F, 'M', '周'), (0x2F840, 'M', '咢'), (0x2F841, 'M', '哶'), @@ -8014,10 +8099,6 @@ def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F88F, 'M', '𪎒'), (0x2F890, 'M', '廾'), (0x2F891, 'M', '𢌱'), - ] - -def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x2F893, 'M', '舁'), (0x2F894, 'M', '弢'), (0x2F896, 'M', '㣇'), @@ -8037,6 +8118,10 @@ def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F8A4, 'M', '𢛔'), (0x2F8A5, 'M', '惇'), (0x2F8A6, 'M', '慈'), + ] + +def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x2F8A7, 'M', '慌'), (0x2F8A8, 'M', '慎'), (0x2F8A9, 'M', '慌'), @@ -8118,10 +8203,6 @@ def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F8F5, 'M', '殺'), (0x2F8F6, 'M', '殻'), (0x2F8F7, 'M', '𣪍'), - ] - -def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x2F8F8, 'M', '𡴋'), (0x2F8F9, 'M', '𣫺'), (0x2F8FA, 'M', '汎'), @@ -8141,6 +8222,10 @@ def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F908, 'M', '港'), (0x2F909, 'M', '湮'), (0x2F90A, 'M', '㴳'), + ] + +def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x2F90B, 'M', '滋'), (0x2F90C, 'M', '滇'), (0x2F90D, 'M', '𣻑'), @@ -8222,10 +8307,6 @@ def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F95B, 'M', '穏'), (0x2F95C, 'M', '𥥼'), (0x2F95D, 'M', '𥪧'), - ] - -def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x2F95F, 'X'), (0x2F960, 'M', '䈂'), (0x2F961, 'M', '𥮫'), @@ -8245,6 +8326,10 @@ def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F96F, 'M', '縂'), (0x2F970, 'M', '繅'), (0x2F971, 'M', '䌴'), + ] + +def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x2F972, 'M', '𦈨'), (0x2F973, 'M', '𦉇'), (0x2F974, 'M', '䍙'), @@ -8326,10 +8411,6 @@ def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F9C0, 'M', '蟡'), (0x2F9C1, 'M', '蠁'), (0x2F9C2, 'M', '䗹'), - ] - -def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: - return [ (0x2F9C3, 'M', '衠'), (0x2F9C4, 'M', '衣'), (0x2F9C5, 'M', '𧙧'), @@ -8349,6 +8430,10 @@ def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2F9D3, 'M', '𧲨'), (0x2F9D4, 'M', '貫'), (0x2F9D5, 'M', '賁'), + ] + +def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ (0x2F9D6, 'M', '贛'), (0x2F9D7, 'M', '起'), (0x2F9D8, 'M', '𧼯'), @@ -8423,6 +8508,8 @@ def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: (0x2FA1E, 'X'), (0x30000, 'V'), (0x3134B, 'X'), + (0x31350, 'V'), + (0x323B0, 'X'), (0xE0100, 'I'), (0xE01F0, 'X'), ] @@ -8509,4 +8596,5 @@ def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + _seg_78() + _seg_79() + _seg_80() + + _seg_81() ) # type: Tuple[Union[Tuple[int, str], Tuple[int, str, str]], ...] diff --git a/src/pip/_vendor/vendor.txt b/src/pip/_vendor/vendor.txt index f9018960e2c..a1a80610f8a 100644 --- a/src/pip/_vendor/vendor.txt +++ b/src/pip/_vendor/vendor.txt @@ -10,7 +10,7 @@ pyparsing==3.0.9 requests==2.28.1 certifi==2022.06.15 chardet==5.0.0 - idna==3.3 + idna==3.4 urllib3==1.26.10 rich==12.5.1 pygments==2.12.0 From 07c86c7947fcb973905116b4af795a7d353eed5c Mon Sep 17 00:00:00 2001 From: Paul Moore Date: Mon, 10 Oct 2022 12:21:49 +0100 Subject: [PATCH 4/4] Upgrade tenacity to 8.1.0 --- news/tenacity.vendor.rst | 1 + src/pip/_vendor/tenacity/__init__.py | 2 + src/pip/_vendor/tenacity/retry.py | 27 +++++++++++ src/pip/_vendor/tenacity/wait.py | 71 ++++++++++++++++++++++------ src/pip/_vendor/vendor.txt | 2 +- 5 files changed, 87 insertions(+), 16 deletions(-) create mode 100644 news/tenacity.vendor.rst diff --git a/news/tenacity.vendor.rst b/news/tenacity.vendor.rst new file mode 100644 index 00000000000..45921e5bff1 --- /dev/null +++ b/news/tenacity.vendor.rst @@ -0,0 +1 @@ +Upgrade tenacity to 8.1.0 diff --git a/src/pip/_vendor/tenacity/__init__.py b/src/pip/_vendor/tenacity/__init__.py index 086ad46e1d6..ab3be3bf63d 100644 --- a/src/pip/_vendor/tenacity/__init__.py +++ b/src/pip/_vendor/tenacity/__init__.py @@ -33,6 +33,7 @@ from .retry import retry_any # noqa from .retry import retry_if_exception # noqa from .retry import retry_if_exception_type # noqa +from .retry import retry_if_exception_cause_type # noqa from .retry import retry_if_not_exception_type # noqa from .retry import retry_if_not_result # noqa from .retry import retry_if_result # noqa @@ -63,6 +64,7 @@ from .wait import wait_random # noqa from .wait import wait_random_exponential # noqa from .wait import wait_random_exponential as wait_full_jitter # noqa +from .wait import wait_exponential_jitter # noqa # Import all built-in before strategies for easier usage. from .before import before_log # noqa diff --git a/src/pip/_vendor/tenacity/retry.py b/src/pip/_vendor/tenacity/retry.py index 1d727e9b346..9ebeb62d5c9 100644 --- a/src/pip/_vendor/tenacity/retry.py +++ b/src/pip/_vendor/tenacity/retry.py @@ -117,6 +117,33 @@ def __call__(self, retry_state: "RetryCallState") -> bool: return self.predicate(retry_state.outcome.exception()) +class retry_if_exception_cause_type(retry_base): + """Retries if any of the causes of the raised exception is of one or more types. + + The check on the type of the cause of the exception is done recursively (until finding + an exception in the chain that has no `__cause__`) + """ + + def __init__( + self, + exception_types: typing.Union[ + typing.Type[BaseException], + typing.Tuple[typing.Type[BaseException], ...], + ] = Exception, + ) -> None: + self.exception_cause_types = exception_types + + def __call__(self, retry_state: "RetryCallState") -> bool: + if retry_state.outcome.failed: + exc = retry_state.outcome.exception() + while exc is not None: + if isinstance(exc.__cause__, self.exception_cause_types): + return True + exc = exc.__cause__ + + return False + + class retry_if_result(retry_base): """Retries if the result verifies a predicate.""" diff --git a/src/pip/_vendor/tenacity/wait.py b/src/pip/_vendor/tenacity/wait.py index 6ed97a7bcdc..8fdfc8f9d4e 100644 --- a/src/pip/_vendor/tenacity/wait.py +++ b/src/pip/_vendor/tenacity/wait.py @@ -17,12 +17,19 @@ import abc import random import typing +from datetime import timedelta from pip._vendor.tenacity import _utils if typing.TYPE_CHECKING: from pip._vendor.tenacity import RetryCallState +wait_unit_type = typing.Union[int, float, timedelta] + + +def to_seconds(wait_unit: wait_unit_type) -> float: + return float(wait_unit.total_seconds() if isinstance(wait_unit, timedelta) else wait_unit) + class wait_base(abc.ABC): """Abstract base class for wait strategies.""" @@ -44,8 +51,8 @@ def __radd__(self, other: "wait_base") -> typing.Union["wait_combine", "wait_bas class wait_fixed(wait_base): """Wait strategy that waits a fixed amount of time between each retry.""" - def __init__(self, wait: float) -> None: - self.wait_fixed = wait + def __init__(self, wait: wait_unit_type) -> None: + self.wait_fixed = to_seconds(wait) def __call__(self, retry_state: "RetryCallState") -> float: return self.wait_fixed @@ -61,9 +68,9 @@ def __init__(self) -> None: class wait_random(wait_base): """Wait strategy that waits a random amount of time between min/max.""" - def __init__(self, min: typing.Union[int, float] = 0, max: typing.Union[int, float] = 1) -> None: # noqa - self.wait_random_min = min - self.wait_random_max = max + def __init__(self, min: wait_unit_type = 0, max: wait_unit_type = 1) -> None: # noqa + self.wait_random_min = to_seconds(min) + self.wait_random_max = to_seconds(max) def __call__(self, retry_state: "RetryCallState") -> float: return self.wait_random_min + (random.random() * (self.wait_random_max - self.wait_random_min)) @@ -113,13 +120,13 @@ class wait_incrementing(wait_base): def __init__( self, - start: typing.Union[int, float] = 0, - increment: typing.Union[int, float] = 100, - max: typing.Union[int, float] = _utils.MAX_WAIT, # noqa + start: wait_unit_type = 0, + increment: wait_unit_type = 100, + max: wait_unit_type = _utils.MAX_WAIT, # noqa ) -> None: - self.start = start - self.increment = increment - self.max = max + self.start = to_seconds(start) + self.increment = to_seconds(increment) + self.max = to_seconds(max) def __call__(self, retry_state: "RetryCallState") -> float: result = self.start + (self.increment * (retry_state.attempt_number - 1)) @@ -142,13 +149,13 @@ class wait_exponential(wait_base): def __init__( self, multiplier: typing.Union[int, float] = 1, - max: typing.Union[int, float] = _utils.MAX_WAIT, # noqa + max: wait_unit_type = _utils.MAX_WAIT, # noqa exp_base: typing.Union[int, float] = 2, - min: typing.Union[int, float] = 0, # noqa + min: wait_unit_type = 0, # noqa ) -> None: self.multiplier = multiplier - self.min = min - self.max = max + self.min = to_seconds(min) + self.max = to_seconds(max) self.exp_base = exp_base def __call__(self, retry_state: "RetryCallState") -> float: @@ -189,3 +196,37 @@ class wait_random_exponential(wait_exponential): def __call__(self, retry_state: "RetryCallState") -> float: high = super().__call__(retry_state=retry_state) return random.uniform(0, high) + + +class wait_exponential_jitter(wait_base): + """Wait strategy that applies exponential backoff and jitter. + + It allows for a customized initial wait, maximum wait and jitter. + + This implements the strategy described here: + https://cloud.google.com/storage/docs/retry-strategy + + The wait time is min(initial * (2**n + random.uniform(0, jitter)), maximum) + where n is the retry count. + """ + + def __init__( + self, + initial: float = 1, + max: float = _utils.MAX_WAIT, # noqa + exp_base: float = 2, + jitter: float = 1, + ) -> None: + self.initial = initial + self.max = max + self.exp_base = exp_base + self.jitter = jitter + + def __call__(self, retry_state: "RetryCallState") -> float: + jitter = random.uniform(0, self.jitter) + try: + exp = self.exp_base ** (retry_state.attempt_number - 1) + result = self.initial * exp + jitter + except OverflowError: + result = self.max + return max(0, min(result, self.max)) diff --git a/src/pip/_vendor/vendor.txt b/src/pip/_vendor/vendor.txt index a1a80610f8a..17fa0cd0f1b 100644 --- a/src/pip/_vendor/vendor.txt +++ b/src/pip/_vendor/vendor.txt @@ -18,6 +18,6 @@ rich==12.5.1 resolvelib==0.8.1 setuptools==44.0.0 six==1.16.0 -tenacity==8.0.1 +tenacity==8.1.0 tomli==2.0.1 webencodings==0.5.1