content: [build-system]
  requires = ["setuptools==80.9.0", "setuptools-scm==8.3.1", "wheel==0.45.1", "auditwheel==6.2.0"]
  build-backend = "setuptools.build_meta"
  
  [project]
  name = "playwright"
  description = "A high-level API to automate web browsers"
  authors = [
      {name = "Microsoft Corporation"}
  ]
  readme = "README.md"
  license = "Apache-2.0"
  dynamic = ["version"]
  requires-python = ">=3.9"
  # Please when changing dependencies run the following commands to update requirements.txt:
  # - pip install uv==0.5.4
  # - uv pip compile pyproject.toml -o requirements.txt
  dependencies = [
      "pyee>=13,<14",
      "greenlet>=3.1.1,<4.0.0"
  ]
  classifiers = [
      "Topic :: Software Development :: Testing",
      "Topic :: Internet :: WWW/HTTP :: Browsers",
      "Intended Audience :: Developers",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Programming Language :: Python :: 3.13",
      "Operating System :: OS Independent",
  ]
  
  [project.urls]
  homepage = "https://github.com/Microsoft/playwright-python"
  "Release notes" = "https://github.com/microsoft/playwright-python/releases"
  
  [project.scripts]
  playwright = "playwright.__main__:main"
  
  [project.entry-points.pyinstaller40]
  hook-dirs = "playwright._impl.__pyinstaller:get_hook_dirs"
  
  [tool.setuptools]
  packages = [
      "playwright",
      "playwright.async_api",
      "playwright.sync_api",
      "playwright._impl",
      "playwright._impl.__pyinstaller",
  ]
  include-package-data = true
  
  [tool.setuptools_scm]
  version_file = "playwright/_repo_version.py"
  
  [tool.pytest.ini_options]
  addopts = "-Wall -rsx -vv -s"
  markers = [
      "skip_browser",
      "only_browser",
      "skip_platform",
      "only_platform"
  ]
  junit_family = "xunit2"
  asyncio_mode = "auto"
  asyncio_default_fixture_loop_scope = "session"
  asyncio_default_test_loop_scope = "session"
  
  [tool.mypy]
  ignore_missing_imports = true
  python_version = "3.9"
  warn_unused_ignores = false
  warn_redundant_casts = true
  warn_unused_configs = true
  check_untyped_defs = true
  disallow_untyped_defs = true
  no_implicit_optional = false
  exclude = [
      "build/",
      "env/",
  ]
  
  [tool.isort]
  profile = "black"
  
  [tool.pyright]
  include = ["playwright", "tests", "scripts"]
  exclude = ["**/node_modules", "**/__pycache__", "**/.*", "./build"]
  pythonVersion = "3.9"
  reportMissingImports = false
  reportTypedDictNotRequiredAccess = false
  reportCallInDefaultInitializer = true
  reportOptionalSubscript = false
  reportUnboundVariable = false
  strictParameterNoneValue = false
  reportIncompatibleVariableOverride = false
  