content: [build-system]
  requires = ["maturin>=1.7.0,<2.0"]
  build-backend = "maturin"
  
  [project]
  name = "fastexcel"
  description = "A fast excel file reader for Python, written in Rust"
  readme = "README.md"
  license = { file = "LICENSE" }
  requires-python = ">=3.9"
  classifiers = [
      "Development Status :: 5 - Production/Stable",
      "License :: OSI Approved :: MIT License",
      "Operating System :: OS Independent",
      "Programming Language :: Rust",
      "Programming Language :: Python",
      "Programming Language :: Python :: 3",
      "Programming Language :: Python :: 3 :: Only",
      "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",
      "Programming Language :: Python :: Implementation :: CPython",
  ]
  dependencies = ["typing-extensions>=4.0.0; python_version<'3.10'"]
  dynamic = ["version"]
  
  [project.optional-dependencies]
  pyarrow = ["pyarrow>=8.0.0"]
  pandas = ["pandas>=1.4.4", "pyarrow>=8.0.0"]
  polars = ["polars>=0.16.14"]
  
  [dependency-groups]
  dev = ["maturin>=1.7.0,<2.0", "uv>=0.8.4"]
  testing = [
      { include-group = "dev" },
      "pytest>=7.1.3",
      "pytest-benchmark>=4.0.0,<6",
      "pytest-mock>=3.1",
      "pyarrow>=8.0.0",
      "pandas>=1.4.4",
      "polars>=0.16.14",
      "openpyxl>=3.1.2,<4",
      "xlrd>=2.0.1,<3",
  ]
  linting = [
      { include-group = "dev" },
      "mypy>=1.11.2,<2",
      "pre-commit>=2.20.0,<5",
      "ruff>=0.12,<0.15",
  ]
  docs = [{ include-group = "dev" }, "pdoc"]
  all = [
      { include-group = "testing" },
      { include-group = "linting" },
      { include-group = "docs" },
  ]
  
  [project.urls]
  "Source Code" = "https://github.com/ToucanToco/fastexcel"
  Issues = "https://github.com/ToucanToco/fastexcel"
  
  [tool.maturin]
  python-source = "python"
  module-name = "fastexcel._fastexcel"
  features = ["__maturin"]
  
  [tool.mypy]
  python_version = "3.9"
  follow_imports = "silent"
  ignore_missing_imports = true
  # A few custom options
  show_error_codes = true
  warn_no_return = true
  warn_unused_configs = true
  warn_unused_ignores = true
  
  [tool.pytest.ini_options]
  testpaths = "python/tests"
  log_cli = true
  log_cli_level = "INFO"
  
  [tool.ruff]
  line-length = 100
  target-version = "py39"
  
  [tool.ruff.lint]
  # Enable Pyflakes `E` and `F` codes by default.
  select = ["E", "F", "I", "Q", "FA102"]
  
  [tool.uv]
  # this ensures that `uv run` doesn't actually build the package; a `make`
  # command is needed to build
  package = false
  required-version = '>=0.8.4'
  