content: [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [project]
  name = "duck_chat"
  readme = "README.md"
  description = "DuckDuckGo Chat AI client"
  requires-python = ">=3.11"
  classifiers = [
      "Intended Audience :: Information Technology",
      "Intended Audience :: System Administrators",
      "Operating System :: OS Independent",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python",
      "Topic :: Internet",
      "Topic :: Software Development :: Libraries :: Application Frameworks",
      "Topic :: Software Development :: Libraries :: Python Modules",
      "Topic :: Software Development :: Libraries",
      "Topic :: Software Development",
      "Typing :: Typed",
      "Intended Audience :: Developers",
      "Programming Language :: Python :: 3 :: Only",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
      "Topic :: Internet :: WWW/HTTP :: HTTP Servers",
      "Topic :: Internet :: WWW/HTTP",
  ]
  license = { file = "LICENSE" }
  dependencies = [
      "aiohttp[speedups]>=3.9.5",
      "msgspec>=0.18.6",
      "rich>=13.7.1",
      "fake-useragent>=1.5.1",
  ]
  dynamic = ["version"]
  authors = [{ name = "MrGick", email = "mrgickcool@gmail.com" }]
  
  [tool.hatch.version]
  path = "duck_chat/__init__.py"
  
  [project.urls]
  Homepage = "https://github.com/mrgick/duckduckgo-chat-ai"
  Issues = "https://github.com/mrgick/duckduckgo-chat-ai/issues"
  
  [project.optional-dependencies]
  dev = ["ruff>=0.6.1", "mypy>=1.11.1", "pytest>=8.3.2", "pytest-asyncio>=0.23.8"]
  generate_models = [
      "selenium>=4.23.1",
      "webdriver-manager>=4.0.2",
      "beautifulsoup4>=4.12.3",
  ]
  
  [project.scripts]
  duck_chat = "duck_chat.cli:safe_entry_point"
  
  [tool.ruff]
  line-length = 120
  lint.select = [
      "E", # pycodestyle errors
      "W", # pycodestyle warnings
      "F", # pyflakes
      "I", # isort
      "C", # flake8-comprehensions
      "B", # flake8-bugbear
  ]
  lint.ignore = [
      "B008", # do not perform function calls in argument defaults
      "C901", # too complex ( > 10)
      "B904", # raise in except 
  ]
  
  [tool.mypy]
  ignore_missing_imports = true
  python_version = "3.11"
  show_error_codes = true
  strict = true
  exclude = ["tests/"]
  