no_progress = true
verbose = "warn"
timeout = 20
max_concurrency = 8
retry_wait_time = 2
max_retries = 2

# CI should validate external links over the network.
offline = false
scheme = ["http", "https"]

exclude_path = [
  # Exclude generated Sphinx build artifacts.
  # - "(\\./)?" allows both "docs/..." and "./docs/..."
  # - "[/\\\\]" supports both slash styles in CI environments
  "^(\\./)?docs[/\\\\]_build[/\\\\]",
]

exclude = [
  # Local-only endpoints referenced in docs/examples.
  # These are expected to be unreachable in GitHub-hosted CI.
  "^https?://localhost(:[0-9]+)?(/|$)",
  "^http://127\\.0\\.0\\.1(:[0-9]+)?(/|$)",
  # Vendor pages that frequently block/deny CI user-agents (transient 403/anti-bot).
  "^https://www\\.intel\\.com/content/www/us/en/ark/products/series/240391/intel-arc-b-series-graphics\\.html$",
  "^https://www\\.intel\\.com/content/www/us/en/ark/products/series/242616/intel-arc-pro-b-series-graphics\\.html$",
  "^https://www\\.intel\\.com/content/www/us/en/products/sku/241598/intel-arc-b580-graphics/specifications\\.html$",

  # Non-routable bind address used in examples, never externally reachable.
  "^http://0\\.0\\.0\\.0(/|$)",

  # Large doc portals with anti-bot/rate-limit behavior in CI.
  # We keep API docs references in content but do not fail CI on access policy.
  "^https://platform\\.openai\\.com/docs/",
  "^https://gamma\\.app/docs/Optimizing-RL-with-SGLang-y0kqgj877k34779$",
  "^https://aflah02\\.substack\\.com/p/multi-node-llm-inference-with-sglang/?$",

  # Known noisy image URLs used in notebook-rendered examples.
  "^https://github\\.com/sgl-project/sglang/blob/main/examples/assets/example_image\\.png\\?raw=true$",
  "^https://raw\\.githubusercontent\\.com/sgl-project/sglang/main/examples/assets/example_image\\.png/?$",
  "^https://raw\\.githubusercontent\\.com/sgl-project/sglang/main/assets/logo\\.png/?$",
]
