.vpython3 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702
  1. # This is a vpython "spec" file.
  2. #
  3. # It describes patterns for python wheel dependencies of the python scripts in
  4. # the chromium repo, particularly for dependencies that have compiled components
  5. # (since pure-python dependencies can be easily vendored into third_party).
  6. #
  7. # When vpython is invoked, it finds this file and builds a python VirtualEnv,
  8. # containing all of the dependencies described in this file, fetching them from
  9. # CIPD (the "Chrome Infrastructure Package Deployer" service). Unlike `pip`,
  10. # this never requires the end-user machine to have a working python extension
  11. # compilation environment. All of these packages are built using:
  12. # https://chromium.googlesource.com/infra/infra/+/main/infra/tools/dockerbuild/
  13. #
  14. # All python scripts in the repo share this same spec, to avoid dependency
  15. # fragmentation.
  16. #
  17. # If you have depot_tools installed in your $PATH, you can invoke python scripts
  18. # in this repo by running them as you normally would run them, except
  19. # substituting `vpython` instead of `python` on the command line, e.g.:
  20. # vpython path/to/script.py some --arguments
  21. #
  22. # Read more about `vpython` and how to modify this file here:
  23. # https://chromium.googlesource.com/infra/infra/+/main/doc/users/vpython.md
  24. python_version: "3.8"
  25. # The default set of platforms vpython checks does not yet include mac-arm64.
  26. # Setting `verify_pep425_tag` to the list of platforms we explicitly must support
  27. # allows us to ensure that vpython specs stay mac-arm64-friendly
  28. verify_pep425_tag: [
  29. {python: "cp38", abi: "cp38", platform: "manylinux1_x86_64"},
  30. {python: "cp38", abi: "cp38", platform: "linux_arm64"},
  31. {python: "cp38", abi: "cp38", platform: "macosx_10_10_intel"},
  32. {python: "cp38", abi: "cp38", platform: "macosx_11_0_arm64"},
  33. {python: "cp38", abi: "cp38", platform: "win32"},
  34. {python: "cp38", abi: "cp38", platform: "win_amd64"}
  35. ]
  36. # Used by:
  37. # //build/android/pylib/local/emulator/avd.py
  38. # //tools/perf/crossbench
  39. wheel: <
  40. name: "infra/python/wheels/protobuf-py3"
  41. version: "version:4.25.1"
  42. >
  43. # TODO(https://crbug.com/898348): Add in necessary wheels as Python3 versions
  44. # become available.
  45. wheel: <
  46. name: "infra/python/wheels/six-py2_py3"
  47. version: "version:1.15.0"
  48. >
  49. # These wheels are necessary to run pytype, i.e. enforce Python 3 type hinting.
  50. # We currently use 2021.11.2 instead of the 2022.5.5 available in CIPD because
  51. # 2022.5.5 seems to have issues when analyzing code that imports the asyncio
  52. # module. 2021.11.2 only has Linux wheels available, so restrict to that
  53. # platform.
  54. wheel: <
  55. name: "infra/python/wheels/pytype/${vpython_platform}"
  56. version: "version:2024.1.24"
  57. match_tag: <
  58. platform: "manylinux1_x86_64"
  59. >
  60. >
  61. wheel: <
  62. name: "infra/python/wheels/importlab-py3"
  63. version: "version:0.8"
  64. match_tag: <
  65. platform: "manylinux1_x86_64"
  66. >
  67. >
  68. wheel: <
  69. name: "infra/python/wheels/networkx-py3"
  70. version: "version:2.5"
  71. match_tag: <
  72. platform: "manylinux1_x86_64"
  73. >
  74. >
  75. wheel: <
  76. name: "infra/python/wheels/decorator-py3"
  77. version: "version:5.0.9"
  78. match_tag: <
  79. platform: "manylinux1_x86_64"
  80. >
  81. >
  82. wheel: <
  83. name: "infra/python/wheels/libcst/${vpython_platform}"
  84. version: "version:1.1.0"
  85. # No 32-bit Windows wheel available for a dependency (google-cloud-pubsub).
  86. not_match_tag: <
  87. platform: "win32"
  88. >
  89. >
  90. wheel: <
  91. name: "infra/python/wheels/typing-inspect-py3"
  92. version: "version:0.7.1"
  93. match_tag: <
  94. platform: "manylinux1_x86_64"
  95. >
  96. >
  97. wheel: <
  98. name: "infra/python/wheels/typing-extensions-py3"
  99. version: "version:4.3.0"
  100. >
  101. wheel: <
  102. name: "infra/python/wheels/tabulate-py3"
  103. version: "version:0.8.10"
  104. >
  105. wheel: <
  106. name: "infra/python/wheels/ninja/${vpython_platform}"
  107. version: "version:1.10.0.post2"
  108. match_tag: <
  109. platform: "manylinux1_x86_64"
  110. >
  111. >
  112. wheel: <
  113. name: "infra/python/wheels/mypy-extensions-py3"
  114. version: "version:0.4.3"
  115. >
  116. # Common utilities.
  117. # Use the same versions specified by //third_party/catapult/.vpython3 so that
  118. # Chromium tests using Telemetry function properly.
  119. wheel: <
  120. name: "infra/python/wheels/numpy/${vpython_platform}"
  121. version: "version:1.23.5.chromium.4"
  122. >
  123. wheel: <
  124. name: "infra/python/wheels/pexpect/${vpython_platform}"
  125. version: "version:4.8.0.chromium.1"
  126. >
  127. wheel: <
  128. name: "infra/python/wheels/psutil/${vpython_platform}"
  129. version: "version:5.8.0.chromium.3"
  130. >
  131. wheel: <
  132. name: "infra/python/wheels/requests-py3"
  133. version: "version:2.31.0"
  134. >
  135. wheel: <
  136. name: "infra/python/wheels/pillow/${vpython_platform}"
  137. version: "version:10.4.0"
  138. # There is currently no Linux arm/arm64 version in CIPD.
  139. not_match_tag: <
  140. platform: "linux_arm64"
  141. >
  142. >
  143. wheel: <
  144. name: "infra/python/wheels/opencv_python/${vpython_platform}"
  145. version: "version:4.5.3.56.chromium.4"
  146. # There is currently no Linux arm/arm64 version in CIPD.
  147. not_match_tag: <
  148. platform: "linux_arm64"
  149. >
  150. >
  151. # `pyyaml` is shared between `//third_party/wpt_tools/wpt/wpt` and `pytype`.
  152. wheel: <
  153. name: "infra/python/wheels/pyyaml/${vpython_platform}"
  154. version: "version:5.4.1.chromium.1"
  155. >
  156. # Used by various python unit tests.
  157. wheel: <
  158. name: "infra/python/wheels/mock-py2_py3"
  159. version: "version:2.0.0"
  160. >
  161. wheel: <
  162. name: "infra/python/wheels/parameterized-py2_py3"
  163. version: "version:0.7.1"
  164. >
  165. wheel: <
  166. name: "infra/python/wheels/pbr-py2_py3"
  167. version: "version:3.0.0"
  168. >
  169. wheel: <
  170. name: "infra/python/wheels/pyfakefs-py2_py3"
  171. version: "version:3.7.2"
  172. >
  173. # Used by:
  174. # //build/chromeos/test_runner.py
  175. wheel: <
  176. name: "infra/python/wheels/jsonlines-py2_py3"
  177. version: "version:1.2.0"
  178. >
  179. wheel: <
  180. name: "infra/python/wheels/python-dateutil-py2_py3"
  181. version: "version:2.7.3"
  182. >
  183. # Used by WPT importer
  184. wheel: <
  185. name: "infra/python/wheels/charset_normalizer-py3"
  186. version: "version:2.0.4"
  187. >
  188. wheel: <
  189. name: "infra/python/wheels/pyasn1-py2_py3"
  190. version: "version:0.4.5"
  191. >
  192. wheel: <
  193. name: "infra/python/wheels/pyasn1_modules-py2_py3"
  194. version: "version:0.2.4"
  195. >
  196. wheel: <
  197. name: "infra/python/wheels/rsa-py2_py3"
  198. version: "version:3.4.2"
  199. >
  200. wheel: <
  201. name: "infra/python/wheels/cachetools-py2_py3"
  202. version: "version:2.0.1"
  203. >
  204. wheel: <
  205. name: "infra/python/wheels/uritemplate-py3"
  206. version: "version:4.1.1"
  207. >
  208. wheel: <
  209. name: "infra/python/wheels/google-auth-py3"
  210. version: "version:2.16.2"
  211. >
  212. wheel: <
  213. name: "infra/python/wheels/googleapis-common-protos-py2_py3"
  214. version: "version:1.61.0"
  215. >
  216. wheel: <
  217. name: "infra/python/wheels/google-api-core-py3"
  218. version: "version:2.14.0"
  219. >
  220. wheel: <
  221. name: "infra/python/wheels/google-auth-httplib2-py2_py3"
  222. version: "version:0.1.0"
  223. >
  224. wheel: <
  225. name: "infra/python/wheels/google-api-python-client-py3"
  226. version: "version:2.111.0"
  227. >
  228. wheel: <
  229. name: "infra/python/wheels/google-cloud-core-py3"
  230. version: "version:2.3.3"
  231. >
  232. wheel: <
  233. name: "infra/python/wheels/grpcio-status-py3"
  234. version: "version:1.57.0"
  235. >
  236. wheel: <
  237. name: "infra/python/wheels/oauth2client-py2_py3"
  238. version: "version:3.0.0"
  239. >
  240. # Used by:
  241. # //third_party/blink/tools/wpt_upload.py
  242. # //third_party/chromite/bin/cros chrome-sdk
  243. wheel: <
  244. name: "infra/python/wheels/crcmod/${vpython_platform}"
  245. version: "version:1.7.chromium.3"
  246. >
  247. wheel: <
  248. name: "infra/python/wheels/grpcio/${vpython_platform}"
  249. version: "version:1.57.0"
  250. >
  251. wheel: <
  252. name: "infra/python/wheels/grpc-google-iam-v1-py3"
  253. version: "version:0.12.3"
  254. >
  255. wheel: <
  256. name: "infra/python/wheels/proto-plus-py3"
  257. version: "version:1.22.3"
  258. >
  259. wheel: <
  260. name: "infra/python/wheels/google-cloud-kms-py3"
  261. version: "version:2.11.1"
  262. >
  263. wheel: <
  264. name: "infra/python/wheels/google-cloud-pubsub-py3"
  265. version: "version:2.9.0"
  266. >
  267. wheel: <
  268. name: "infra/python/wheels/typing-inspect-py3"
  269. version: "version:0.7.1"
  270. >
  271. # Used by Web Platform Tests (WPT) codebase in
  272. # //third_party/wpt_tools
  273. wheel: <
  274. name: "infra/python/wheels/html5lib-py2_py3"
  275. version: "version:1.0.1"
  276. >
  277. wheel: <
  278. name: "infra/python/wheels/mozdebug-py3"
  279. version: "version:0.3.0"
  280. >
  281. wheel: <
  282. name: "infra/python/wheels/mozinfo-py2_py3"
  283. version: "version:1.2.2"
  284. >
  285. wheel: <
  286. name: "infra/python/wheels/blessed-py2_py3"
  287. version: "version:1.20.0"
  288. >
  289. wheel: <
  290. name: "infra/python/wheels/wcwidth-py2_py3"
  291. version: "version:0.2.5"
  292. >
  293. wheel: <
  294. name: "infra/python/wheels/jinxed-py2_py3"
  295. version: "version:1.2.0"
  296. >
  297. wheel: <
  298. name: "infra/python/wheels/ansicon-py2_py3"
  299. version: "version:1.89.0"
  300. >
  301. wheel: <
  302. name: "infra/python/wheels/mozlog-py2_py3"
  303. version: "version:8.0.0"
  304. >
  305. wheel: <
  306. name: "infra/python/wheels/mozprocess-py3"
  307. version: "version:1.3.0"
  308. >
  309. wheel: <
  310. name: "infra/python/wheels/urllib3-py2_py3"
  311. version: "version:1.26.6"
  312. >
  313. wheel: <
  314. name: "infra/python/wheels/blessings-py2_py3"
  315. version: "version:1.7"
  316. >
  317. wheel: <
  318. name: "infra/python/wheels/mozfile-py2_py3"
  319. version: "version:2.0.0"
  320. >
  321. wheel: <
  322. name: "infra/python/wheels/mozterm-py2_py3"
  323. version: "version:1.0.0"
  324. >
  325. wheel: <
  326. name: "infra/python/wheels/webencodings-py2_py3"
  327. version: "version:0.5.1"
  328. >
  329. wheel: <
  330. name: "infra/python/wheels/certifi-py2_py3"
  331. version: "version:2020.11.8"
  332. >
  333. wheel: <
  334. name: "infra/python/wheels/chardet-py2_py3"
  335. version: "version:3.0.4"
  336. >
  337. wheel: <
  338. name: "infra/python/wheels/idna-py2_py3"
  339. version: "version:2.8"
  340. >
  341. wheel: <
  342. name: "infra/python/wheels/distro-py2_py3"
  343. version: "version:1.4.0"
  344. >
  345. wheel: <
  346. name: "infra/python/wheels/aioquic/${vpython_platform}"
  347. version: "version:0.9.20.chromium.1"
  348. >
  349. wheel: <
  350. name: "infra/python/wheels/pylsqpack/${vpython_platform}"
  351. version: "version:0.3.12"
  352. >
  353. wheel: <
  354. name: "infra/python/wheels/cryptography/${vpython_platform}"
  355. version: "version:3.3.1.chromium.1"
  356. >
  357. wheel: <
  358. name: "infra/python/wheels/cffi/${vpython_platform}"
  359. version: "version:1.14.5.chromium.7"
  360. >
  361. wheel: <
  362. name: "infra/python/wheels/pycparser-py2_py3"
  363. version: "version:2.19"
  364. >
  365. wheel: <
  366. name: "infra/python/wheels/ecdsa-py2_py3"
  367. version: "version:0.17.0"
  368. >
  369. wheel: <
  370. name: "infra/python/wheels/brotli/${vpython_platform}"
  371. version: "version:1.0.9"
  372. >
  373. # Used by:
  374. # //chrome/test/chromedriver/test/run_webdriver_tests.py
  375. wheel: <
  376. name: "infra/python/wheels/iniconfig-py3"
  377. version: "version:1.1.1"
  378. >
  379. wheel: <
  380. name: "infra/python/wheels/packaging-py3"
  381. version: "version:21.3"
  382. >
  383. wheel: <
  384. name: "infra/python/wheels/pyparsing-py2_py3"
  385. version: "version:2.4.7"
  386. >
  387. wheel: <
  388. name: "infra/python/wheels/toml-py3"
  389. version: "version:0.10.2"
  390. >
  391. # Used by: pytest-py3:7.3.1
  392. wheel: <
  393. name: "infra/python/wheels/exceptiongroup-py3"
  394. version: "version:1.1.2"
  395. >
  396. # Used by: pytest-py3:7.3.1
  397. wheel: <
  398. name: "infra/python/wheels/tomli-py3"
  399. version: "version:2.0.1"
  400. >
  401. wheel <
  402. name: "infra/python/wheels/pytest-py3"
  403. version: "version:7.3.1"
  404. >
  405. wheel <
  406. name: "infra/python/wheels/pytest-asyncio-py3"
  407. version: "version:0.19.0"
  408. >
  409. wheel <
  410. name: "infra/python/wheels/attrs-py2_py3"
  411. version: "version:21.4.0"
  412. >
  413. wheel <
  414. name: "infra/python/wheels/more-itertools-py2_py3"
  415. version: "version:4.1.0"
  416. >
  417. wheel <
  418. name: "infra/python/wheels/pluggy-py3"
  419. version: "version:0.13.1"
  420. >
  421. wheel <
  422. name: "infra/python/wheels/py-py2_py3"
  423. version: "version:1.10.0"
  424. >
  425. wheel <
  426. name: "infra/python/wheels/funcsigs-py2_py3"
  427. version: "version:1.0.2"
  428. >
  429. wheel: <
  430. name: "infra/python/wheels/atomicwrites-py2_py3"
  431. version: "version:1.3.0"
  432. >
  433. wheel: <
  434. name: "infra/python/wheels/colorama-py2_py3"
  435. version: "version:0.4.1"
  436. >
  437. # Used by:
  438. # //testing/buildbot/generate_buildbot_json_coveragetest.py
  439. wheel: <
  440. name: "infra/python/wheels/coverage/${vpython_platform}"
  441. version: "version:5.5.chromium.3"
  442. >
  443. wheel: <
  444. name: "infra/python/wheels/websockets-py3"
  445. version: "version:11.0.3"
  446. >
  447. wheel: <
  448. name: "infra/python/wheels/beautifulsoup4-py3"
  449. version: "version:4.9.0"
  450. >
  451. wheel: <
  452. name: "infra/python/wheels/soupsieve-py3"
  453. version: "version:1.9.5"
  454. >
  455. # Used by:
  456. # //tools/infra/find_bad_builds.py
  457. # //tools/perf/crossbench
  458. wheel: <
  459. name: "infra/python/wheels/pytz-py2_py3"
  460. version: "version:2018.4"
  461. >
  462. # Used by:
  463. # //third_party/blink/tools/blinkpy/web_tests/port/server_process.py
  464. wheel: <
  465. name: "infra/python/wheels/pywin32/${vpython_platform}"
  466. version: "version:306"
  467. match_tag: <
  468. platform: "win32"
  469. >
  470. match_tag: <
  471. platform: "win_amd64"
  472. >
  473. >
  474. # Used by:
  475. # //content/test/gpu/gpu_tests/color_profile_manager_mac.py
  476. wheel: <
  477. name: "infra/python/wheels/pyobjc/${vpython_platform}"
  478. version: "version:7.3.chromium.1"
  479. match_tag: <
  480. platform: "macosx_10_10_intel"
  481. >
  482. match_tag: <
  483. platform: "macosx_11_0_arm64"
  484. >
  485. >
  486. # Used by:
  487. # //tools/perf/core/results_dashboard.py
  488. wheel: <
  489. name: "infra/python/wheels/httplib2-py3"
  490. version: "version:0.19.1"
  491. >
  492. # Used by:
  493. # //tools/perf/flakiness_cli
  494. # //tools/perf/crossbench
  495. wheel: <
  496. name: "infra/python/wheels/pandas/${vpython_platform}"
  497. version: "version:1.3.2.chromium.1"
  498. not_match_tag: <
  499. platform: "linux_arm64"
  500. >
  501. >
  502. # Used by:
  503. # //tools/perf/crossbench
  504. wheel: <
  505. name: "infra/python/wheels/hjson-py2_py3"
  506. version: "version:3.1.0"
  507. >
  508. wheel: <
  509. name: "infra/python/wheels/frozendict-py3"
  510. version: "version:2.0.6"
  511. >
  512. wheel: <
  513. name: "infra/python/wheels/ordered-set-py3"
  514. version: "version:4.1.0"
  515. >
  516. wheel: <
  517. name: "infra/python/wheels/perfetto-py3"
  518. version: "version:0.11.0"
  519. >
  520. # Used by:
  521. # chrome/test/mini_installer/test_chrome_with_chromedriver.py
  522. # testing/script/run_variations_smoke_tests.py
  523. # //tools/perf/crossbench
  524. # Keep this to the same revision as third_party/webdriver/pylib, which is pulled
  525. # in via DEPS.
  526. wheel: <
  527. name: "infra/python/wheels/selenium-py3"
  528. version: "version:4.1.0"
  529. >
  530. wheel: <
  531. name: "infra/python/wheels/trio-py3"
  532. version: "version:0.20.0"
  533. >
  534. wheel: <
  535. name: "infra/python/wheels/trio-websocket-py3"
  536. version: "version:0.9.2"
  537. >
  538. wheel: <
  539. name: "infra/python/wheels/outcome-py3"
  540. version: "version:1.1.0"
  541. >
  542. wheel: <
  543. name: "infra/python/wheels/sniffio-py3"
  544. version: "version:1.2.0"
  545. >
  546. wheel: <
  547. name: "infra/python/wheels/async-generator-py3"
  548. version: "version:1.10"
  549. >
  550. wheel: <
  551. name: "infra/python/wheels/wsproto-py3"
  552. version: "version:1.1.0"
  553. >
  554. wheel: <
  555. name: "infra/python/wheels/h11-py3"
  556. version: "version:0.13.0"
  557. >
  558. wheel: <
  559. name: "infra/python/wheels/sortedcontainers-py3"
  560. version: "version:2.4.0"
  561. >
  562. wheel: <
  563. name: "infra/python/wheels/pyopenssl-py2_py3"
  564. version: "version:20.0.0"
  565. >
  566. # Used by //tools/md_browser to render Markdown.
  567. wheel: <
  568. name: "infra/python/wheels/markdown-py3"
  569. version: "version:3.3.4"
  570. >
  571. wheel: <
  572. name: "infra/python/wheels/importlib-metadata-py3"
  573. version: "version:1.6.0"
  574. >
  575. wheel: <
  576. name: "infra/python/wheels/zipp-py3"
  577. version: "version:3.1.0"
  578. >
  579. # Used by //components/optimization_guide/internal/testing/run_model_validation_test.py
  580. wheel: <
  581. name: "infra/python/wheels/google-cloud-secret-manager-py2_py3"
  582. version: "version:2.10.0"
  583. >
  584. # Used by:
  585. # //tools/perf/crossbench
  586. wheel: <
  587. name: "infra/python/wheels/immutabledict-py3"
  588. version: "version:4.1.0"
  589. >
  590. # Used by:
  591. # //testing/unexpected_passes_common
  592. wheel: <
  593. name: "infra/python/wheels/db-dtypes-py2_py3"
  594. version: "version:1.2.0"
  595. # No 32-bit Windows wheel available for a dependency (pyarrow)
  596. not_match_tag: <
  597. platform: "win32"
  598. >
  599. >
  600. wheel: <
  601. name: "infra/python/wheels/google-cloud-bigquery-py3"
  602. version: "version:3.23.1"
  603. >
  604. wheel: <
  605. name: "infra/python/wheels/google-cloud-bigquery-storage-py3"
  606. version: "version:2.25.0"
  607. >
  608. wheel: <
  609. name: "infra/python/wheels/google-crc32c/${vpython_platform}"
  610. version: "version:1.5.0.chromium.1"
  611. >
  612. wheel: <
  613. name: "infra/python/wheels/google-resumable-media-py3"
  614. version: "version:2.3.0"
  615. >
  616. wheel: <
  617. name: "infra/python/wheels/pyarrow/${vpython_platform}"
  618. # Likely cannot be upgraded past 15.0.2 until Mac 11 is no longer tested due
  619. # to https://github.com/apache/arrow/issues/41696. The bug indicates that
  620. # 16.0.0 should work, but that still seems to segfault on Chromium's Mac 11
  621. # machines.
  622. version: "version:15.0.2"
  623. # No 32-bit Windows wheel available.
  624. not_match_tag: <
  625. platform: "win32"
  626. >
  627. >
  628. # Needed by pytype
  629. wheel: <
  630. name: "infra/python/wheels/jinja2-py3"
  631. version: "version:3.1.2"
  632. >
  633. # Needed by pytype
  634. wheel: <
  635. name: "infra/python/wheels/pycnite-py3"
  636. version: "version:2023.10.11"
  637. >
  638. # Needed by pytype
  639. wheel: <
  640. name: "infra/python/wheels/pydot-py2_py3"
  641. version: "version:1.4.2"
  642. >
  643. # Needed by jinja2
  644. wheel: <
  645. name: "infra/python/wheels/markupsafe/${vpython_platform}"
  646. version: "version:2.0.1"
  647. >