content: [tool.poetry]
  name = "bing-webmaster-tools"
  version = "1.2.0"
  description = "Python wrapper for the Bing Webmaster Tools API"
  authors = [
      "Ryan Siddle <ryan.siddle@merj.com>",
      "Boris Rakovan <boris.rakovan@merj.com>",
  ]
  homepage = "https://github.com/merj/bing-webmaster-tools"
  repository = "https://github.com/merj/bing-webmaster-tools"
  
  keywords = ["bing", "webmaster", "seo", "api", "sdk"]
  classifiers = [
      "Development Status :: 3 - Alpha",
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3.9",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Topic :: Internet :: WWW/HTTP"
  ]
  
  readme = "README.md"
  packages = [{ include = "bing_webmaster_tools" }]
  
  [tool.poetry.dependencies]
  python = "^3.9"
  pydantic = "^2.9.2"
  tenacity = "^9.0.0"
  aiohttp = "^3.10.11"
  pydantic-settings = "^2.6.0"
  jinja2 = "^3.1.5"
  
  [tool.poetry.group.dev.dependencies]
  pytest = "^8.3.3"
  ruff = "^0.7.0"
  typer = "^0.12.5"
  pre-commit = "^4.0.1"
  poethepoet = "^0.29.0"
  mypy = "^1.13.0"
  pytest-cov = "^5.0.0"
  pytest-asyncio = "^0.24.0"
  pytest-recording = "^0.13.2"
  
  [tool.poetry.group.docs]
  optional = true
  
  [tool.poetry.group.docs.dependencies]
  mkdocs = "^1.5.0"
  mkdocs-material = "^9.5.0"
  mkdocstrings = { extras = ["python"], version = "^0.24.0" }
  
  [tool.mypy]
  plugins = ["pydantic.mypy"]
  files = ["bing_webmaster_tools/**/*.py", "examples/**/*.py"]
  check_untyped_defs = true
  disallow_untyped_defs = true
  disallow_incomplete_defs = true
  disallow_untyped_decorators = true
  no_implicit_optional = true
  warn_redundant_casts = true
  warn_unused_ignores = true
  warn_return_any = true
  warn_unreachable = true
  ignore_missing_imports = true
  # Suppress errors since pydantic_settings uses X | Y typing
  python_version = "3.10"
  
  [tool.pydantic-mypy]
  init_forbid_extra = true
  init_typed = true
  warn_required_dynamic_aliases = true
  
  [tool.ruff]
  target-version = "py39"
  line-length = 120
  
  [tool.ruff.lint]
  select = ["E", "F", "B", "I", "W", "C", "D"]
  ignore = [
      "D107",  # Missing docstring in __init__
      "D100",  # Missing docstring in public module
      "D101",  # Missing docstring in public class
      "D104",  # Missing docstring in public package
      "D106",  # Missing docstring in public nested class
      "D203",  # One blank line before class (conflicting with D211)
      "D213",  # Multi-line summary second line (conflicting with D212)
      "D400",  # First line should end with a period
      "D415",  # First line should end with a period
  ]
  
  [tool.ruff.format]
  quote-style = "double"
  indent-style = "space"
  skip-magic-trailing-comma = false
  line-ending = "auto"
  
  [tool.ruff.lint.per-file-ignores]
  "tests/*" = ["D"]
  "examples/*" = ["D"]
  
  [tool.pytest.ini_options]
  addopts = "-vv -s"
  markers = [
      "unit: marks tests as unit tests",
      "integration: marks tests as integration tests"
  ]
  pythonpath = ["bing_webmaster_tools_sdk"]
  asyncio_mode = "auto"  # Added for async tests
  
  [tool.coverage.run]
  source = ["bing_webmaster"]
  omit = ["tests/*", "**/__init__.py"]
  
  [tool.coverage.report]
  exclude_lines = [
      "pragma: no cover",
      "def __repr__",
      "if TYPE_CHECKING:",
      "raise NotImplementedError",
      "if __name__ == .__main__.:"
  ]
  
  [tool.poe.tasks.mypy]
  help = "Run mypy type checker"
  cmd = "mypy --install-types --non-interactive"
  
  [tool.poe.tasks.format]
  help = "Run all formating tools"
  sequence = [
      { "cmd" = "ruff format" }, # format code
      { "cmd" = "ruff check --select I --fix" } # sort imports
  ]
  
  [tool.poe.tasks.lint]
  help = "Check for errors and fix them using ruff (includes isort)"
  cmd = "ruff check --fix"
  
  [tool.poe.tasks.test]
  args = ["type"]
  help = "Run tests (unit, integration, or all)"
  control.expr = "type"
  
  [[tool.poe.tasks.test.switch]]
  case = "unit"
  help = "Run unit tests"
  cmd = "pytest -m 'unit' --cov --cov-report term-missing --cov-fail-under 60 -v"
  
  [[tool.poe.tasks.test.switch]]
  case = "integration"
  help = "Run integration tests"
  cmd = "pytest -m 'integration'"
  
  [[tool.poe.tasks.test.switch]]
  help = "Run all tests"
  cmd = "pytest"
  
  [build-system]
  requires = ["poetry-core"]
  build-backend = "poetry.core.masonry.api"
  