content: [project]
  name = "mpzsql"
  version = "0.0.2b0"
  description = "Apache Arrow FlightSQL Server with DuckDB and SQLite backends"
  readme = "README.md"
  requires-python = ">=3.10"
  dependencies = [
      "typer>=0.12.0",
      "pyarrow>=21.0.0",
      "rich>=13.0.0",
      "pydantic>=2.0.0",
      "pyjwt>=2.8.0",
      "cryptography>=41.0.0",
      "protobuf>=4.25.0",
      "psycopg2-binary>=2.9.0",
      "azure-storage-blob>=12.0.0",
      "azure-identity>=1.15.0",
      "fsspec>=2023.12.0",
      "adlfs>=2023.12.0",
      "duckdb==1.4.0",
      "adbc-driver-flightsql>=1.7.0",
      "pytest>=8.4.1",
      "coverage>=7.9.2",
      "logfire>=3.24.0",
      "pytest-cov>=6.2.1",
      "grpcio-tools>=1.74.0",
      "snowflake>=1.7.0",
      "adbc-driver-snowflake>=1.7.0",
      "pandas>=2.3.1",
      "debugpy>=1.8.16",
      "pre-commit>=4.3.0",
  ]
  
  [project.scripts]
  mpzsql-server = "mpzsql.cli:app"
  
  [project.optional-dependencies]
  dev = [
      "pytest>=8.0.0",
      "pytest-asyncio>=0.23.0",
      "mypy>=1.16.0",
      "black>=24.0.0",
      "ruff>=0.3.0",
  ]
  
  [build-system]
  requires = ["hatchling"]
  build-backend = "hatchling.build"
  
  [tool.hatch.build.targets.wheel]
  packages = ["src/mpzsql"]
  
  [tool.hatch.build]
  include = ["src/mpzsql"]
  
  [tool.hatch.build.sources]
  "src" = ""
  
  [tool.black]
  line-length = 88
  target-version = ['py310']
  
  [tool.ruff]
  line-length = 88
  target-version = "py310"
  
  # Exclude generated protobuf files and tests from linting
  exclude = [
      "src/mpzsql/flightsql/generated/",
      "tests/",
  ]
  
  [tool.ruff.lint]
  # Enable core rule sets for code quality (much more practical)
  select = [
      "E",   # pycodestyle errors
      "W",   # pycodestyle warnings  
      "F",   # pyflakes (imports, undefined vars, etc.)
      "I",   # isort (import organization)
      "B",   # flake8-bugbear (common bugs)
      "F811", # redefined-while-unused (catches duplicates!)
  ]
  
  # Ignore specific rules that are too noisy for existing codebase
  ignore = [
      "E501", # Line too long (let formatter handle this)
      "W291", # Trailing whitespace (let formatter handle this)
      "W293", # Blank line contains whitespace (let formatter handle this)
  ]
  
  [tool.ruff.lint.per-file-ignores]
  # Test files can have more flexibility
  "tests/*" = ["B"]  # Allow some bugbear issues in tests
  
  [tool.ruff.format]
  # Use double quotes
  quote-style = "double"
  # Indent with spaces
  indent-style = "space"
  
  [tool.mypy]
  python_version = "3.10"
  strict = true
  ignore_missing_imports = true
  
  [dependency-groups]
  dev = [
      "hatchling>=1.27.0",
      "pre-commit>=4.2.0",
      "pytest>=8.4.1",
      "pytest-asyncio>=1.0.0",
  ]
  
  [tool.pytest.ini_options]
  testpaths = ["tests"]
  python_files = ["test_*.py", "*_test.py"]
  python_classes = ["Test*"]
  python_functions = ["test_*"]
  markers = [
      "asyncio: marks tests as asyncio tests",
  ]
  addopts = [
      "--strict-config",
      "--strict-markers",
      "--tb=short",
  ]
  
  [tool.coverage.run]
  source = ["src"]
  omit = [
      "tests/*",
      "*/__pycache__/*",
  ]
  
  [tool.coverage.report]
  exclude_lines = [
      "pragma: no cover",
      "def __repr__",
      "if __name__ == .__main__.:",
      "raise NotImplementedError",
      "except ImportError:",
  ]
  