# This is a vpython "spec" file.
#
# It describes patterns for python wheel dependencies of the python scripts in
# the V8 repo, particularly for dependencies that have compiled components
# (since pure-python dependencies can be easily vendored into third_party).
#
# When vpython is invoked, it finds this file and builds a python VirtualEnv,
# containing all of the dependencies described in this file, fetching them from
# CIPD (the "Chrome Infrastructure Package Deployer" service). Unlike `pip`,
# this never requires the end-user machine to have a working python extension
# compilation environment. All of these packages are built using:
#   https://chromium.googlesource.com/infra/infra/+/master/infra/tools/dockerbuild/
#
# All python scripts in the repo share this same spec, to avoid dependency
# fragmentation.
#
# If you have depot_tools installed in your $PATH, you can invoke python scripts
# in this repo by running them as you normally would run them, except
# substituting `vpython` instead of `python` on the command line, e.g.:
#   vpython path/to/script.py some --arguments
#
# Read more about `vpython` and how to modify this file here:
#   https://chromium.googlesource.com/infra/infra/+/master/doc/users/vpython.md

python_version: "2.7"

# The default set of platforms vpython checks does not yet include mac-arm64.
# Setting `verify_pep425_tag` to the list of platforms we explicitly must support
# allows us to ensure that vpython specs stay mac-arm64-friendly
verify_pep425_tag: [
    {python: "cp27", abi: "cp27mu", platform: "manylinux1_x86_64"},
    {python: "cp27", abi: "cp27mu", platform: "linux_arm64"},
    {python: "cp27", abi: "cp27mu", platform: "linux_armv6l"},

    {python: "cp27", abi: "cp27m", platform: "macosx_10_10_intel"},
    {python: "cp27", abi: "cp27m", platform: "macosx_11_0_arm64"},

    {python: "cp27", abi: "cp27m", platform: "win32"},
    {python: "cp27", abi: "cp27m", platform: "win_amd64"}
]

# Needed by third_party/catapult/devil/devil, which is imported by
# build/android/test_runner.py when running performance tests.
wheel: <
  name: "infra/python/wheels/psutil/${vpython_platform}"
  version: "version:5.2.2"
>

# Used by:
#   build/toolchain/win
wheel: <
  name: "infra/python/wheels/pypiwin32/${vpython_platform}"
  version: "version:219"
  match_tag: <
    platform: "win32"
  >
  match_tag: <
    platform: "win_amd64"
  >
>

# Used by:
#   tools/unittests/run_perf_test.py
wheel: <
  name: "infra/python/wheels/coverage/${vpython_platform}"
  version: "version:4.3.4"
>
wheel: <
  name: "infra/python/wheels/six-py2_py3"
  version: "version:1.10.0"
>
wheel: <
  name: "infra/python/wheels/pbr-py2_py3"
  version: "version:3.0.0"
>
wheel: <
  name: "infra/python/wheels/funcsigs-py2_py3"
  version: "version:1.0.2"
>
wheel: <
  name: "infra/python/wheels/mock-py2_py3"
  version: "version:2.0.0"
>

# Used by:
#   tools/run_perf.py
#   tools/unittests/run_perf_test.py
wheel: <
  name: "infra/python/wheels/numpy/${vpython_platform}"
  version: "version:1.11.3"
>
