content: [tool.poetry]
  name = "solana"
  version = "0.36.9"
  description = "Solana Python API"
  authors = [
      "Michael Huang <michaelhly@gmail.com>",
      "Kevin Heavey <heaveykevin2@gmail.com>",
  ]
  license = "MIT"
  readme = "README.md"
  homepage = "https://github.com/michaelhly/solanapy"
  documentation = "https://michaelhly.github.io/solana-py/"
  keywords = ["solana", "blockchain", "web3"]
  classifiers = [
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Natural Language :: English",
      "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",
  ]
  packages = [
      { include = "solana", from = "src" },
      { include = "spl", from = "src" },
  ]
  
  [tool.poetry.dependencies]
  python = "^3.9"
  construct-typing = "^0.6.2"
  httpx = ">=0.28.0"
  typing-extensions = ">=4.2.0"
  websockets = ">=9.0,<=15.0.1"
  solders = ">=0.23,<0.27"
  
  [tool.poetry.dev-dependencies]
  pytest = "^8.4.2"
  mypy = "^1.17"
  pyyaml = "6.0.2"
  pytest-docker = "^3.2.0"
  bump2version = "^1.0.1"
  pytest-asyncio = "^0.18.3"
  pytest-cov = "^6.2.1"
  pytest-html = "^4.1.1"
  pytest-xdist = "^3.6.1"
  asyncstdlib = "^3.10.2"
  mkdocstrings = "^0.18.0"
  mkdocs-material = "^8.2.1"
  ruff = "^0.7.3"
  
  
  [build-system]
  requires = ["poetry-core>=1.0.0"]
  build-backend = "poetry.core.masonry.api"
  
  [tool.pytest.ini_options]
  addopts = [
      "--doctest-modules",
      "-p no:anyio",
      "--cov",
      "--color=yes",
      "--cov-report=xml",
      "--cov-report=html",
      "--container-scope=module", # restart container for each module
      "--dist=loadscope",         # distribute tests by module
      "-vv",
      "-s",
  ]
  asyncio_mode = "auto"
  markers = ["integration: mark a test as a integration test."]
  testpaths = ["src", "tests"]
  
  [tool.ruff]
  line-length = 120
  # Assume Python 3.9 (lower bound of supported python versions)
  target-version = "py39"
  
  [tool.ruff.lint]
  # Enable Pyflakes `E` and `F` codes by default.
  select = [
      "A",
      "B",
      "D",
      "E",
      "F",
      "I",
      "ARG",
      "BLE",
      "C4",
      "SIM",
      "PLC",
      "PLE",
      "PLR",
      "PLW",
      "RUF",
  ]
  ignore = ["D203", "I001"]
  
  # Exclude a variety of commonly ignored directories.
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".hg",
      ".mypy_cache",
      ".nox",
      ".pants.d",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "venv",
  ]
  
  # Allow unused variables when underscore-prefixed.
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  
  [tool.ruff.lint.per-file-ignores]
  "src/**/*.py" = ["PLR0913", "RUF012"]
  "src/solana/blockhash.py" = ["A003"]
  "src/solana/rpc/api.py" = ["PLR0912"]
  "tests/**/*.py" = ["D100", "D103", "ARG001", "PLR2004"]
  
  [tool.pyright]
  reportMissingModuleSource = false
  
  [tool.mypy]
  check_untyped_defs = true
  