content: [project]
  name = "python-openstackmcp-server"
  dynamic = ["version"]
  description = "A MCP server providing OpenStack services for MCP clients"
  readme = "README.md"
  requires-python = ">=3.10"
  dependencies = [
      "fastmcp>=2.11.3",
      "openstacksdk>=4.6.0",
      "pydantic>=2.11.7",
  ]
  
  [project.scripts]
  python-openstackmcp-server = "openstack_mcp_server:main"
  
  [dependency-groups]
  dev = [
      "ruff>=0.12.5",
      "pre-commit>=4.2.0",
      "setuptools-scm>=9.2.0",
  ]    
  test = [
      "pytest>=8.4.1",
  ]
  
  
  [build-system]
  requires = ["setuptools>=61.0", "setuptools-scm"]
  build-backend = "setuptools.build_meta"
  
  [tool.setuptools_scm]
  write_to = "src/openstack_mcp_server/_version.py"
  
  [tool.setuptools.packages.find]
  where = ["src"]
  
  
  [tool.pytest.ini_options]
  testpaths = [
      "tests",
  ]
  pythonpath = [
      "src",
  ]
  
  python_files = [
      "test_*.py",
      "*_test.py",
  ]
  python_classes = [
      "Test*",
  ]
  python_functions = [
      "test_*",
  ]
  
  
  [tool.ruff]
  line-length = 79
  exclude = [
      "docs",
      "_version.py",
  ]
  
  [tool.ruff.format]
  quote-style = "double"
  indent-style = "space"
  line-ending = "auto"
  docstring-code-format = true
  
  [tool.ruff.lint]
  select = [
      "C",
      "E",
      "F",
      "S",
      "U",
      "I",
  ]
  ignore = [
      "C901",
      "E501",
  ]
  
  [tool.ruff.lint.isort]
  lines-after-imports = 2
  lines-between-types = 1
  
  [tool.ruff.lint.per-file-ignores]
  "tests/*" = [
      "S101",
  ]
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  