# uv-backed vpython spec for the chromium repository, the modern replacement
# for //.vpython3.
#
# This spec takes precedence wherever both files are present, so full checkouts
# -- developer workstations and builders -- resolve it. Isolate-based swarming
# tasks are not affected yet: test isolates, generate_wrapper scripts and MB
# extra files still bundle only //.vpython3. Keep the two in sync when adding
# or updating a wheel. See https://crbug.com/40942322.
#
# The companion //vpython.toml.uv.lock is generated, not hand-edited. After
# changing a dependency here, run 'vpython3' (or 'vpython3 -vpython-tool
# upgrade') locally to resynchronize it, and commit both files together.

requires-python = '>=3.11,<3.12'
dependencies = [
  'protobuf==7.36.0',
  'six==1.17.0',
  "pytype==2024.1.24; sys_platform == 'linux' and platform_machine == 'x86_64'",
  "importlab==0.8; sys_platform == 'linux' and platform_machine == 'x86_64'",
  "networkx==2.5; sys_platform == 'linux' and platform_machine == 'x86_64'",
  "decorator==5.0.9; sys_platform == 'linux' and platform_machine == 'x86_64'",
  "libcst==1.1.0; sys_platform != 'win32' or platform_machine != 'x86'",
  'typing-extensions==4.13.2',
  'tabulate==0.8.10',
  "ninja==1.10.2.4+chromium.1; sys_platform == 'linux' and platform_machine == 'x86_64'",
  'mypy-extensions==0.4.3',
  'numpy==1.23.5+chromium.4',
  'pexpect==4.8.0+chromium.1',
  'ptyprocess==0.7.0',
  'psutil==5.8.0+chromium.3',
  'requests==2.34.2',
  'pillow==10.4.0',
  'opencv-python==4.8.1.78+chromium.1',
  'pyyaml==5.4.1+chromium.1',
  'mock==2.0.0',
  'parameterized==0.7.1',
  'pbr==3.0.0',
  'setuptools==68.0.0 ; python_version < "3.14"',
  'setuptools>=75.0.0 ; python_version >= "3.14"',
  'pyfakefs==5.5.0',
  'jsonlines==1.2.0',
  'python-dateutil==2.9.0',
  'charset-normalizer==2.0.4',
  'pyasn1==0.4.5',
  'pyasn1-modules==0.2.4',
  'rsa==3.4.2',
  'cachetools==5.3.3',
  'uritemplate==4.1.1',
  'google-auth==2.16.2',
  'googleapis-common-protos==1.75.1',
  'google-api-core==2.34.0',
  'google-auth-httplib2==0.1.0',
  'google-api-python-client==2.111.0',
  'google-cloud-core==2.4.3',
  'grpcio-status==1.59.3 ; python_version < "3.14"',
  'grpcio-status>=1.75.1 ; python_version >= "3.14"',
  'oauth2client==3.0.0',
  'crcmod==1.7+chromium.4',
  'grpcio==1.59.3 ; python_version < "3.14"',
  'grpcio>=1.75.1 ; python_version >= "3.14"',
  'grpc-google-iam-v1==0.12.3',
  'proto-plus==1.28.3',
  'google-cloud-kms==2.11.1',
  'google-cloud-pubsub==2.9.0',
  'typing-inspect==0.7.1',
  'html5lib==1.0.1',
  'mozdebug==0.3.0',
  'mozinfo==1.2.2',
  'blessed==1.20.0',
  'wcwidth==0.2.5',
  'jinxed==1.2.0',
  'ansicon==1.89.0',
  'mozlog==8.1.0',
  'mozprocess==1.3.1',
  'mozsystemmonitor==1.0.1',
  'urllib3==2.4.0',
  'blessings==1.7',
  'mozfile==2.0.0',
  'mozterm==1.0.0',
  'webencodings==0.5.1',
  'certifi==2025.4.26',
  'chardet==3.0.4',
  'idna==2.8',
  'distro==1.4.0',
  'aioquic==1.2.0+chromium.1',
  'pylsqpack==0.3.12',
  'cryptography==43.0.0',
  'cffi==1.15.1+chromium.2',
  'pycparser==2.19',
  'ecdsa==0.17.0',
  'brotli==1.0.9',
  'iniconfig==1.1.1',
  'exceptiongroup==1.1.2',
  'tomli==2.0.1',
  'pytest==7.3.1',
  'pytest-asyncio==0.19.0',
  'attrs==24.2.0',
  'more-itertools==4.1.0',
  'pluggy==0.13.1',
  'py==1.11.0',
  'funcsigs==1.0.2',
  'atomicwrites==1.3.0',
  'colorama==0.4.1',
  'coverage==7.3.1',
  'websocket-client==1.8.0',
  'websockets==11.0.3',
  'beautifulsoup4==4.9.0',
  'soupsieve==1.9.5',
  'pytz==2024.1',
  "pywin32==306; sys_platform == 'win32'",
  "pyobjc==10.0; sys_platform == 'darwin'",
  'pyparsing==3.2.0',
  'httplib2==0.22.0',
  'pandas==1.5.3+chromium.1',
  'hjson==3.1.0',
  'frozendict==2.0.6',
  'ordered-set==4.1.0',
  'perfetto==0.14.0',
  # Keep this version synchronized with src/third_party/webdriver/pylib in //DEPS.
  'selenium==4.33.0',
  'service-identity==24.1.0',
  'trio==0.30.0',
  'trio-websocket==0.12.2',
  'outcome==1.2.0',
  'sniffio==1.3.0',
  'async-generator==1.10',
  'wsproto==1.1.0',
  'h11==0.13.0',
  'sortedcontainers==2.4.0',
  'pyopenssl==24.2.1',
  'markdown==3.3.4',
  'importlib-metadata==1.6.0',
  'zipp==3.1.0',
  'google-cloud-secret-manager==2.10.0',
  'immutabledict==4.1.0',
  'packaging==25.0',
  "db-dtypes==1.2.0; sys_platform != 'win32' or platform_machine != 'x86'",
  'google-cloud-bigquery==3.38.0',
  'google-cloud-bigquery-storage==2.38.0',
  'google-crc32c==1.5.0+chromium.1',
  'google-resumable-media==2.3.0',
  "pyarrow==15.0.2; sys_platform != 'win32' or platform_machine != 'x86'",
  'jinja2==3.1.2',
  'pysocks==1.7.1',
  'pycnite==2023.10.11',
  'pydot==1.4.2',
  'toml==0.10.2',
  'markupsafe==2.0.1',
  'apipkg==1.5',
  'mako==1.2.3'
]
