From 9ada1a790a116dba8eec21062e795005cb11c9e7 Mon Sep 17 00:00:00 2001 From: Mark Chiarulli Date: Sun, 11 Mar 2018 15:52:42 -0500 Subject: [PATCH] Update to target PY3 only Previously the pip imports were always installed under Python 2.7 which caused problems in packages that introspected the Python version in their setup.py, e.g. PyYAML. --- rules_python/BUILD | 5 ++++- rules_python/whl.py | 3 ++- tools/piptool.par | Bin 5400681 -> 5400723 bytes tools/whltool.par | Bin 1385299 -> 1385387 bytes update_tools.sh | 2 +- 5 files changed, 7 insertions(+), 3 deletions(-) diff --git a/rules_python/BUILD b/rules_python/BUILD index 6c23e01ae7..734bd3a73b 100644 --- a/rules_python/BUILD +++ b/rules_python/BUILD @@ -21,6 +21,7 @@ load("@piptool_deps//:requirements.bzl", "requirement") py_library( name = "whl", srcs = ["whl.py"], + srcs_version = "PY3ONLY", deps = [ requirement("setuptools"), ], @@ -30,8 +31,8 @@ py_test( name = "whl_test", srcs = ["whl_test.py"], data = [ - "@futures_3_1_1_whl//file", "@futures_2_2_0_whl//file", + "@futures_3_1_1_whl//file", "@google_cloud_language_whl//file", "@grpc_whl//file", "@mock_whl//file", @@ -47,6 +48,7 @@ load("@subpar//:subpar.bzl", "par_binary") par_binary( name = "piptool", srcs = ["piptool.py"], + default_python_version = "PY3", deps = [ ":whl", requirement("pip"), @@ -57,6 +59,7 @@ par_binary( par_binary( name = "whltool", srcs = ["whl.py"], + default_python_version = "PY3", main = "whl.py", deps = [ ":whl", diff --git a/rules_python/whl.py b/rules_python/whl.py index e3544d80d0..10a28e3601 100644 --- a/rules_python/whl.py +++ b/rules_python/whl.py @@ -18,6 +18,7 @@ import os import pkg_resources import re +import sys import zipfile @@ -113,7 +114,7 @@ def _parse_metadata(self, content): parser = argparse.ArgumentParser( - description='Unpack a WHL file as a py_library.') + description='Unpack a WHL file as a py_library [Python {}]'.format(sys.version)) parser.add_argument('--whl', action='store', help=('The .whl file we are expanding.')) diff --git a/tools/piptool.par b/tools/piptool.par index b7a62c5563b2a423b5cbb798efd05ae84b1f03d2..1211d79a17dc1e962c5412f1e6e1cad5bd296551 100755 GIT binary patch delta 8415 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 R#|bb`Wd^4`hb8=0`(O8zSnmJ; delta 8413 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 diff --git a/tools/whltool.par b/tools/whltool.par index 8e2f34250df91a2a3f6ee3f895c3427fbc237523..5d68b6913c89fef324f63687135289145d0f64a7 100755 GIT binary patch delta 2198 zcmbVNdu)?c6yMj^*Vor}?RU4@wX7Sg?c8WP_TaGrE(`}u%3xzaQ0JCFc)8Y%O{b1E zpkYL2qIH~zs3;L!(9LC0kc@X65Eu&(A)?4YF$Nh9gBURk&v$P(I{&oEN&EYq-#O== zd(XYS&|ALuM7eopl{#usW_zbaUh4bFZs=`FuQ!!0-VK1hg*d(c(kmvipO z!r6%qcc#<5I#^j<_40~!m9_QjR@7CpFv%e)BHzkil-D)Zb@$jn?{s=fX;SAaP3dm$ z%3$sDRqH+I^){@ity>+ei5zh!bqC#xRp9Fv^^v8CPY8-jvjihnl`K7SZen`(*~ELY z|B+I2{_7&h$1M5XeG|*%rvLW2$(6O)mBpdS(BxA|EOBvhZMR8M(&+x-8gxjGe8OA-d_OGa$-`VVgdU2nNOPjl z_75>6jp=3yzs(9(E~#d#Y{z*+gt>NZyIcE(?~X!IoTE> zi;#U|He&}!p)$-}`-y{dH)TFp%#m!wQ+|%(9*#`HsJn27BS8#v&4hR*nFb%oNH)Tj zLI#a;G6`YPYzCX#Dm<)wT#<4l{dl-1u?-dugXmNkp?iRDH_xy z6QGwv!Ji6Z#Yp{cl4A}2G7d6{Fo=1}d6dkx$xXte91)vbYR3;w6>aC@4i#%}vx;~z z!2vVe;fbwnfEZx6nK!rnjXC5zEpx*D$XCphT$G2BB`OcrB;%UD;fV)#q!NaBx|l!G znNwKEt6_(lHaRVqal>j_j+8TKEa#Q5RzoG1qglAS3tX>R8aHxjH>Nz1{h`*wY)zk1F;W$rLQpJ0ps(ZqljX{W&}j z^)@`PiqbJ*J4<6_VH5FUL${&JM5-{!q4ub^vt6f!`SEmt&8MPd=+wws=Jkz9`c7X| zp)-@ocus|>&?S-E&dUK_}z7zGIv^f%q|O>Rkp~1H1-a7qP&`1bQ1*sUgLRb2M~YtA^7F z#E0UqGGn-mM3RNvj;t82HIZKbjRD5pLJ1y46F9A88EQjsOS}g@vC?!c?Gkjsu$5kx z=ZfJY8&;fKY>bY_gn%)2mudn`uq0q)7x(^Hf6)TT?*i`vBM%N6-GWQY85gwCsc3+m zHag}T8x!x1}Kj8k`bnME4*2{6M!auIJ`X@P|+EjjR+gO;)?MG2?Du!H1asb76i znoQjA%s6^&1Cu1^fu3>fd7aFlf3m1$V~~?ftXS_QSddJXWB&MJk=48ZBucJeERxRV zDCu?5YkF@4Uu_lz04Eg{Z;6WhTSNogLlW~IgOn8VET;IYBkCRKz`XRyZRr$aFYWnG z5mL^GX`o0YK8$$!48?g+lS)%H!n>(tIy&0>MX2c)9n!xXK))C}#@8TaJjqn`4~zJg F{|mv@diDSS delta 2066 zcmY*ZZERCz6z2P2pb(9Hp|B_irJG$LvO-^#3=RD`@ zJ@36e-!=Vswh8wRXJp6Lc(nJ*a;;C@TD^QQ+h7u&kWJWR*Stgm8Odu1woM zs5!oAgQX(r?Ok0}jCUtgw{L1PDlu!C>Wi`ierTekp<0YIiCV0`)^Q*KMZ`oWnekdD z&U1qtJ6I>%Q^6H=EC6LQIAa5KHat9`%6M&DwJY;dDthbuEd!PL#t`;qK!w?0xc)y@ zjWC<)bXTL22@j)GCEBse2*t#mui;#@N|bow_#$I^_3$DtxVp$_!(Z}1#y3sirO44* z?l@Fu%)${9%XaB8oqO3tGvUrm*i5oZZ*W=I408yc{FB3@W(X5JHOiqPz-;QcS~KYr zgz>s&lCaK6)rPwT*^wHvqg&uJUK604>a0Oogy$$zyAKr+iZLOwI^H}TY8ag(`Y^Fv zbYiZBwI~MC96KyfL9vHQI5%K{27*JCQ<4IF+RDQES59$0{Mrg-q}$cRIk{O3<2)PF z{oI_U`}_$}#vbnYy)Dh*kXV!Jw{Wgif)$kS&Lm_#-;~$^)xX9i0||$OwRYC-l|5

=1i*>#!2%y5T`;xIV7KIrvRIeFuXsx_F-? z9CF%U;t?Eh!}Fv(c#JDIsO+P9{Y##9KxKzse~!aFk5e8t_zGahykPGeu>u=R%4qLO?J-Bg?!*8?M9%V}wUs0h4LbQ!%ODFNZWug`Lc-S6mBPmkA zn;y2eS&fV=!o^+)(Kvy<7@h$|nDDZ3y!$!)*UOGIjG-COOft(7{7{1c_RfGxg4vB6 z9&dEI^xuYpWg2+MG0Gf4Y}eT5xdV@AEPiHG4=BRC9M=E3sElpPoB`a<@yWQtaU&`M zUddti;eH(3d=yjWgD|al6}I|dHPv|QBb^Um?opQ&|MD^I`qP}N$%PPUU%+TC(^js< zO}V5^u64^eBG6uo%xe0vpUK2FKM7WuRfql?lW{CGP0$tMf|4)^&dg-h#v+{CH=DSb zd5jyK%enSEb`kv5940wDy;z4uSn7uejqrVk4xgk>KfqQ$1hHzTYRB7tmg)98T-(`6 z*&Fj2_tIxPT_PW