# This is a vpython "spec" file.
#
# It describes patterns for python wheel dependencies of the python scripts in
# the chromium 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/+/main/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/+/main/doc/users/vpython.md

python_version: "3.11"

# Used by:
#   third_party/catapult
wheel: <
  name: "infra/python/wheels/psutil/${vpython_platform}"
  version: "version:5.8.0.chromium.3"
>

# Used by:
#   third_party/catapult
wheel: <
  name: "infra/python/wheels/packaging-py2_py3"
  version: "version:16.8"
>

# Used by tools_webrtc/perf/process_perf_results.py.
wheel: <
  name: "infra/python/wheels/httplib2-py3"
  version: "version:0.22.0"
>

wheel: <
  name: "infra/python/wheels/pyparsing-py3"
  version: "version:3.1.1"
>


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

# GRPC used by iOS test.
wheel: <
  name: "infra/python/wheels/grpcio/${vpython_platform}"
  version: "version:1.57.0"
>

wheel: <
  name: "infra/python/wheels/six-py2_py3"
  version: "version:1.16.0"
>
wheel: <
  name: "infra/python/wheels/pbr-py2_py3"
  version: "version:5.9.0"
>
wheel: <
  name: "infra/python/wheels/funcsigs-py2_py3"
  version: "version:1.0.2"
>
wheel: <
  name: "infra/python/wheels/mock-py3"
  version: "version:4.0.3"
>
wheel: <
  name: "infra/python/wheels/protobuf-py3"
  version: "version:6.33.0"
>
wheel: <
  name: "infra/python/wheels/requests-py3"
  version: "version:2.31.0"
>
wheel: <
  name: "infra/python/wheels/idna-py3"
  version: "version:3.4"
>
wheel: <
  name: "infra/python/wheels/urllib3-py3"
  version: "version:2.1.0"
>
wheel: <
  name: "infra/python/wheels/certifi-py3"
  version: "version:2023.11.17"
>
wheel: <
  name: "infra/python/wheels/charset_normalizer-py3"
  version: "version:3.3.2"
>
wheel: <
  name: "infra/python/wheels/brotli/${vpython_platform}"
  version: "version:1.0.9"
>

# Used by:
#   tools_webrtc/sslroots
wheel: <
  name: "infra/python/wheels/asn1crypto-py2_py3"
  version: "version:1.0.1"
>
