content: [tool.poetry]
  name = "curategpt"
  version = "0.2.4"
  description = "CurateGPT"
  authors = ["Chris Mungall <cjmungall@lbl.gov>", "Carlo Kroll <ckroll95@gmail.com>", "Harshad Hegde <hhegde@lbl.gov>", "J. Harry Caufield <jhc@lbl.gov>"]
  license = "BSD-3"
  readme = "README.md"
  
  [tool.poetry.dependencies]
  python = "^3.11"
  click = "^8.1.7"
  importlib-metadata = ">=6"
  oaklib = "^0.6.9"
  beautifulsoup4 = ">=4.8.0"
  streamlit = ">=1.22.0"
  openai = ">=0.27.7"
  wikipedia = ">=1.4.0"
  google-search-results = ">=2.4.2"
  chromadb = "^0.5.0"
  tiktoken = "^0.7.0"
  inflection = ">=0.5.1"
  sentence-transformers = ">=2.2.2"
  pymongo = ">=4.4.1"
  linkml-runtime = "^1.6.3"
  python-ulid = "^1.1.0"
  sqlite-utils = "^3.34"
  gpt4all = {version = "^1.0.8", optional = true}
  httpx = "^0.24.1"
  eutils = "^0.6.0"
  matplotlib = "^3.7.2"
  seaborn = "^0.12.2"
  bioc = {version = ">=2.0.0.post5", optional = true}
  requests-cache = "^1.1.0"
  jsonpatch = "^1.33"
  scholarly = "^1.7.11"
  pytrials = "^0.3.0"
  xmltodict = "^0.13.0"
  ratelimiter = "^1.2.0.post0"
  google-api-python-client = "^2.97.0"
  google-auth-oauthlib = "^1.0.0"
  textract = "1.5.0"
  jsonpath-ng = "^1.5.3"
  pygithub = "^1.59.1"
  jsonlines = "*"
  llm = "^0.15"
  llm-gpt4all = {version = "^0.1.1", optional = true}
  gspread = "^5.10.0"
  defusedxml = "^0.7.1"
  click-default-group = "^1.2.4"
  venomx = "^0.1.1"
  duckdb = "~1.0.0"
  python-dotenv = "^1.0.1"
  langchain-community = {version = "*", optional = true}
  onnxruntime = [
      {version = "<=1.19.2", python = "<3.10"},
      {version = "^1.20.0", python = ">=3.10"}
  ]
  paper-qa = {version = "^5.20.0", optional = true, python = ">=3.11"}
  
  [tool.poetry.group.dev.dependencies]
  pytest = ">=7.1.2"
  tox = ">=3.25.1"
  linkml = "^1.5.6"
  jupyter = "^1.0.0"
  sphinx = {version = ">=6.1.3", extras = ["docs"]}
  sphinx-rtd-theme = {version = ">=1.0.0", extras = ["docs"]}
  sphinx-autodoc-typehints = {version = ">=1.2.0", extras = ["docs"]}
  sphinx-click = {version = ">=4.3.0", extras = ["docs"]}
  sphinx-automodapi = {version = "*", extras = ["docs"]}
  myst-parser = {version = ">=0.18.1", extras = ["docs"]}
  
  [tool.poetry.group.docs]
  optional = true
  
  [tool.poetry.group.docs.dependencies]
  sphinx = {version = ">=6.1.3"}
  sphinx-rtd-theme = {version = ">=1.0.0"}
  sphinx-autodoc-typehints = {version = ">=1.2.0"}
  sphinx-click = {version = ">=4.3.0"}
  myst-parser = {version = ">=0.18.1"}
  
  [tool.poetry.scripts]
  curategpt = "curategpt.cli:main"
  gocampr = "curategpt.adhoc.gocam_predictor:main"
  
  [tool.poetry.extras]
  docs = [
      "sphinx",
      "sphinx-rtd-theme",
      "sphinx-autodoc-typehints",
      "sphinx-click",
      "myst-parser"
  ]
  bioc = [
      "bioc"
  ]
  gpt4all = [
      "gpt4all",
      "llm-gpt4all"
  ]
  paperqa = [
      "paper-qa",
      "langchain-community"
  ]
  
  [tool.poetry-dynamic-versioning]
  enable = false
  vcs = "git"
  style = "pep440"
  
  [tool.black]
  line-length = 100
  target-version = ["py38", "py39", "py310"]
  
  [tool.ruff]
  line-length = 100
  target-version = "py311"
  
  [tool.ruff.lint]  # New section for linter-specific settings
  extend-ignore = [
      "D211",  # `no-blank-line-before-class`
      "D212",  # `multi-line-summary-first-line`
      ]
  
  # Allow autofix for all enabled rules (when `--fix`) is provided.
  fixable = ["ALL"]
  
  # Select or ignore from https://beta.ruff.rs/docs/rules/
  select = [
      "B",  # bugbear
      # "D",  # pydocstyle
      # "E",  # pycodestyle errors
      "F",  # Pyflakes
      "I",  # isort
      # "S",  # flake8-bandit
      "W",  # Warning
  ]
  
  unfixable = []
  
  # Unlike Flake8, default to a complexity level of 10.
  [tool.ruff.lint.mccabe]
  max-complexity = 10
  
  [tool.ruff.lint.isort]
  known-third-party = ["duckdb"]
  
  [tool.codespell]
  skip = "*.po,*.ts,.git,pyproject.toml"
  count = ""
  quiet-level = 3
  # ignore-words-list = ""
  
  [build-system]
  requires = ["poetry-core>=1.0.0", "poetry-dynamic-versioning"]
  build-backend = "poetry_dynamic_versioning.backend"
  