content: [project]
  name = "openaivec"
  dynamic = ["version"]
  description = "Generative mutation for tabular calculation"
  readme = "README.md"
  license = { text = "MIT" }
  authors = [
      { name = "Hiroki Mizukami", email = "hmizukami@microsoft.com" }
  ]
  keywords = [
      "openai",
      "openai-api",
      "openai-python",
      "llm",
      "pandas",
      "pyspark",
  ]
  classifiers = [
      "Development Status :: 4 - Beta",
      "Intended Audience :: Developers",
      "License :: OSI Approved :: MIT License",
      "Programming Language :: Python :: 3.10",
      "Programming Language :: Python :: 3.11",
      "Programming Language :: Python :: 3.12",
  ]
  
  requires-python = ">=3.10"
  dependencies = [
      "ipywidgets>=8.1.7",
      "openai>=1.74.0",
      "pandas>=2.2.3",
      "tiktoken>=0.9.0",
      "tqdm>=4.67.1",
  ]
  
  [dependency-groups]
  dev = [
      "httpx[http2]>=0.28.1",
      "ipykernel>=6.29.5",
      "langdetect>=1.0.9",
      "pyarrow>=19.0.1",
      "pyright>=1.1.403",
      "pyspark>=3.5.5",
      "pytest>=8.3.5",
      "pytest-asyncio",
      "pytest-mock>=3.14.1",
      "python-dotenv>=1.1.0",
      "ruff>=0.11.5",
      "tabulate>=0.9.0",
  ]
  docs = [
      "mkdocs>=1.6.1",
      "mkdocs-autorefs>=1.4.1",
      "mkdocs-jupyter>=0.25.1",
      "mkdocs-material>=9.6.12",
      "mkdocstrings[python]>=0.29.1",
      "myst-parser>=4.0.1",
  ]
  
  [project.optional-dependencies]
  spark = [
      "pyspark>=3.5.5",
  ]
  
  [tool.ruff]
  line-length = 120
  target-version = "py310"
  
  [tool.ruff.lint]
  select = [
      "E",     # pycodestyle errors
      "W",     # pycodestyle warnings
      "F",     # pyflakes
      "I",     # isort
      "TID",   # flake8-tidy-imports
  ]
  # ignore = []  # グローバルではE501を有効化
  
  [tool.ruff.lint.flake8-tidy-imports]
  # Enforce absolute imports - ban relative imports (except in __init__.py files)
  ban-relative-imports = "all"
  
  [tool.ruff.lint.per-file-ignores]
  # Allow relative imports in __init__.py files
  "**/__init__.py" = ["TID252"]
  # Test files contain long test data - ignore line length
  "tests/**/*.py" = ["E501"]
  
  [project.urls]
  Homepage = "https://microsoft.github.io/openaivec/"
  Repository = "https://github.com/microsoft/openaivec"
  
  [build-system]
  requires = ["hatchling", "uv-dynamic-versioning"]
  build-backend = "hatchling.build"
  
  [tool.hatch.version]
  source = "uv-dynamic-versioning"
  
  [tool.uv-dynamic-versioning]
  vcs = "git"
  style = "pep440"
  bump = true
  