From ff55fb55e5dcbbb6f483bffd32528b157ff699b1 Mon Sep 17 00:00:00 2001 From: Hyrum Wright Date: Mon, 13 Nov 2017 13:41:45 -0500 Subject: [PATCH 1/2] Add a better error message when deps not found Use the skylark `fail` function instead of letting Python throw a key-not-found exception. --- rules_python/piptool.py | 6 ++++-- tools/piptool.par | Bin 1346289 -> 1346385 bytes 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/rules_python/piptool.py b/rules_python/piptool.py index 73a02630c2..9333e4527a 100644 --- a/rules_python/piptool.py +++ b/rules_python/piptool.py @@ -138,8 +138,10 @@ def pip_install(): all_requirements = _requirements.values() def requirement(name): - name = name.replace("-", "_").lower() - return _requirements[name] + name_key = name.replace("-", "_").lower() + if name_key not in requirements: + fail("Could not find pip-provided dependency: '%s'" % name) + return _requirements[name_key] """.format(input=args.input, whl_libraries='\n'.join(map(whl_library, whls)) if whls else "pass", mappings=','.join([ diff --git a/tools/piptool.par b/tools/piptool.par index f1087be66f424b27e015973ec56ea01afbe74022..f668aaacc2583b4b9a1683fb5fc6954d40387e0d 100755 GIT binary patch delta 10018 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 LGX3U3r}X~-2M(bJ delta 9940 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� z2M;G&uxN)I!cG%F&R#?b2wB6sqr@J@63RtEI33`^!3X1Cn^Xrlos(h|#88}#1>hWE zSj^HW)&gOU@Nk)sCyO_Z@S)+;C5wJtXzQ^X+HzWM5+=~Q8!n1KD48rAVPgP>d!UO{ zO46_go?&`NHf@MN#|iqeCT$W1z?8s-1Gj}?KJv5JDA!Xmi^5948E#7WpgAL9*p_qT zhE-?yFqxK<#eNq!_}43_Fai^(sJu!RPOfk=bakjO2G3pLja>5-6^_7lFFef{LH1rG z2YYH1W!hk`8_b^5Csb&GUN?AbS}&4?t~+%4gcc<3Lxg}K13N#cMoBsSCXoS39&mbk zY@3816nUUWG=YNPJYlaGP70FX3D4POQ8LLEV;2KIJfWZ0suVU}Ug!yKKtYDQ;5*XV zwvAq4jPyX>8+yk1P>^aLb~Z2;29sOq4flfc0gAR+Z#Yx&5DH?o4<Ru(<$j z5CF^j;3&Me$wKf6I}5N^fv=fCKG5Bn2Nby02d>8aBML(Fh2b23yh%7foG+YKR{thp z0qO(ncrXnyCIhhhA-gavz|#-0#(tecjX1$0KNw^+reHrJ2n770zjHL}^+Z@nIT0Ot0E z?0UTw<-?lmbtC{z$w+^_zCQqRlG%E_DFD&H6oAD5#18x179t+t9ta;YTIcop8D~5m zq=>+z(}m(GFO0$vd|r(!2apNHGXwS@cmV|GlF3>w9_}%e_!pB&X%M19jp-tbnIJ@i zdSHMoGJ_F%U>FQ<6vwBVM4LKl5D%1}D z3_QXRM`~3Y!uqUw!VqohMH>PTP9^YxbXx*5PzZ;ew?%BAHxUFTkbokUxDC`54rdub z+E7dh1XiGB4#U!jfMK;9+u$J)aI($G8|q;MqDftzvaUpdz(MG*{R9CRog|2XP*feu z-mv7&fdlT3g#M=U36u*FmA_%ZRsf@fj~_b_i-d=_2{4F+Nej8K(R?!!*-9N*LI8^; z1R=nF2s$TLlV_WK7@+|b)v){ed&#AH{~18@9)(r!Jpv=RiFU4NrN9Pl1Um2=#nb&1 z_~-xu2doc6oHn$Hb*X3GkVV`CfdR}MhF=HJZxx5(*MU?zu$YK&0fi{I?w#vm3-F*P zilUzb*Z~hWk@8f%#)Vq18z2SIutzcPzX140!)^6gj)HVY!~K6=or1_8fk&vV1_jAF zg6LpZHpnSWqA;M3fjg~7n{2Zy2HAm?*Fgn8XpDhlKG_f~N1<5NCAWATh0oT40a>IQ z5?KLHAdG*-;Xm=GJCF^SW8u~E#*r*MQBmST7TT^v9C*(OyFQJDhg7~h87p`YnLq}5 z6c!x%k4LFPWCOQ27))vsSqLQ)89-wkoJHetGQq~flV~uLECREjGxYCy5D^c@xOIw* z|6U|AgZg;r$1tCQaFAeDBQH=8?h+Vd90|Jjy|{@9U<4)jD<}~G)mNaimg5MH{LP98 z2ILS1ngop7Mmzk@WsJT3uYf1#RU#MK11@?Zj7s4u*%35^pBIk9uVS$%rmrO9Ciu_@ z_QC%NL|><|8}HOQ|GZnn-vrElu#kxOV_MN46%bklb7KAf1Hx649ZnpB0r~tZ;1P2Z z_Ha!?v-m%l4%|(GNkMLIc4YyA$&m2WkV!)gksxQY1A|4V$zKuwH&V_2MEanS+|9k| zpA`H~hI8d=+Qc|C1u9spW(sokIQ;9mx)}(k!4C=SDTo>NNiQlSL3|3l3hhBn3bGd) zK0;<1sqhMz8Y7GBROsx+I9b@df{(+uRCtRy0--d-1N(3SB&NZ?`9DpezfyoU9quCh zd$P5AI{KI03>t?3s7r?zhv6zJ_yH~h{vo1_MZn?(;uf$s1MY6P%VXd#lPe2Cb?}gP zm{$aND}->Pya{sZOcn$%vBDb}{pu)$CaEOcb?;dkDylw4Dk`4;B&m}H2%SJ=>52$w GO8*ai@ow(` From 7861c73778030ddb0352023680fcce41ce89d1fb Mon Sep 17 00:00:00 2001 From: Hyrum Wright Date: Mon, 13 Nov 2017 14:09:19 -0500 Subject: [PATCH 2/2] Fix typo: requirements -> _requirements --- rules_python/piptool.py | 2 +- tools/piptool.par | Bin 1346385 -> 1346385 bytes 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/rules_python/piptool.py b/rules_python/piptool.py index 9333e4527a..fc7640dfd0 100644 --- a/rules_python/piptool.py +++ b/rules_python/piptool.py @@ -139,7 +139,7 @@ def pip_install(): def requirement(name): name_key = name.replace("-", "_").lower() - if name_key not in requirements: + if name_key not in _requirements: fail("Could not find pip-provided dependency: '%s'" % name) return _requirements[name_key] """.format(input=args.input, diff --git a/tools/piptool.par b/tools/piptool.par index f668aaacc2583b4b9a1683fb5fc6954d40387e0d..ea3df20832496277b0ee744a7db40d54c3dd8541 100755 GIT binary patch delta 8227 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 delta 8227 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