content: [build-system]
  requires = [
    "setuptools >= 75",
    "wheel",
    "gitpython",
    "setuptools_scm >= 8.0",
  ]
  build-backend = "setuptools.build_meta"
  [project]
  name = "pymilvus.model"
  authors = [
    {name = "Milvus Team", email = "milvus-team@zilliz.com"},
  ]
  requires-python = ">=3.8"
  description = "Model components for PyMilvus, the Python SDK for Milvus"
  readme = "README.md"
  dependencies = [
      "transformers >= 4.36.0",
      "onnxruntime",
      "scipy >= 1.10.0",
      "protobuf",
      "numpy"
  ]
  
  classifiers = [
      "Programming Language :: Python :: 3",
      "License :: OSI Approved :: Apache Software License",
  ]
  
  dynamic = ["version"]
  
  [project.urls]
  repository = "https://github.com/milvus-io/milvus-model"  # Update the repository URL
  
  [tool.setuptools]
  package-dir = { "pymilvus" = "pymilvus" }
  include-package-data = true
  
  [tool.setuptools.packages.find]
  where = ["src", "_version_helper.py"]
  
  [tool.setuptools.package-data]
  "pymilvus.model.sparse.bm25" = ["lang.yaml"]
  
  [tool.setuptools.dynamic]
  version = { attr = "_version_helper.version" }
  
  [tool.setuptools_scm]
  
  [tool.black]
  line-length = 100
  target-version = ['py37']
  include = '\.pyi?$'
  extend-ignore = ["E203", "E501"]
  
  [tool.ruff]
  src = ["src"]
  lint.select = [
      "E",
      "F",
      "C90",
      "I",
      "N",
      "B", "C", "G",
      "A",
      "ANN001",
      "S", "T", "W", "ARG", "BLE", "COM", "DJ", "EM", "ERA", "EXE", "FBT", "ICN", "INP", "ISC", "NPY", "PD", "PGH", "PIE", "PL", "PT", "PTH", "PYI", "RET", "RSE", "RUF", "SIM", "SLF", "TCH", "TID", "TRY", "UP", "YTT"
  ]
  lint.ignore = [
      "N818",
      "DTZ", # datatime related
      "BLE", # blind-except (BLE001)
      "SLF", # SLF001 Private member accessed: `_fetch_handler` [E]
      "PD003",
      "TRY003", # [ruff] TRY003 Avoid specifying long messages outside the exception class [E] TODO
      "PLR2004", # Magic value used in comparison, consider replacing 65535 with a constant variable [E] TODO
      "TRY301", #[ruff] TRY301 Abstract `raise` to an inner function [E]
      "FBT001", #[ruff] FBT001 Boolean positional arg in function definition [E] TODO
      "FBT002", # [ruff] FBT002 Boolean default value in function definition [E] TODO
      "PLR0911", # Too many return statements (15 > 6) [E]
      "G004", # [ruff] G004 Logging statement uses f-string [E]
      "S603", # [ruff] S603 `subprocess` call: check for execution of untrusted input [E]
      "N802", #[ruff] N802 Function name `OK` should be lowercase [E] TODO
      "PD011", # [ruff] PD011 Use `.to_numpy()` instead of `.values` [E]
      "COM812",
      "FBT003", # [ruff] FBT003 Boolean positional value in function call [E] TODO
      "ARG002",
      "E501", # black takes care of it
      "ARG005", # [ruff] ARG005 Unused lambda argument: `disable` [E]
      "TRY400",
      "PLR0912", # TODO
      "C901", # TODO
      "PYI041", # TODO
  ]
  
  # Allow autofix for all enabled rules (when `--fix`) is provided.
  lint.fixable = [
      "A", "B", "C", "D", "E", "F", "G", "I", "N", "Q", "S", "T", "W",
      "ANN", "ARG", "BLE", "COM", "DJ", "DTZ", "EM", "ERA", "EXE", "FBT",
      "ICN", "INP", "ISC", "NPY", "PD", "PGH", "PIE", "PL", "PT", "PTH",
      "PYI", "RET", "RSE", "RUF", "SIM", "SLF", "TCH", "TID", "TRY", "UP",
      "YTT",
  ]
  lint.unfixable = []
  
  show-fixes = true
  
  # Exclude a variety of commonly ignored directories.
  exclude = [
      ".bzr",
      ".direnv",
      ".eggs",
      ".git",
      ".git-rewrite",
      ".hg",
      ".mypy_cache",
      ".nox",
      ".pants.d",
      ".pytype",
      ".ruff_cache",
      ".svn",
      ".tox",
      ".venv",
      "__pypackages__",
      "_build",
      "buck-out",
      "build",
      "dist",
      "node_modules",
      "venv",
      "grpc_gen",
      "__pycache__",
      "pymilvus/client/stub.py",
      "tests",
  ]
  
  # Same as Black.
  line-length = 100
  
  # Allow unused variables when underscore-prefixed.
  lint.dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  
  # Assume Python 3.7
  target-version = "py37"
  
  [tool.ruff.lint.mccabe]
  # Unlike Flake8, default to a complexity level of 10.
  max-complexity = 18
  
  [tool.ruff.lint.pycodestyle]
  max-doc-length = 100
  
  [tool.ruff.lint.pylint]
  max-args = 20
  max-branches = 15
  
  [tool.ruff.lint.flake8-builtins]
  builtins-ignorelist = [
      "format",
      "next",
      "object", # TODO
      "id",
      "dict", # TODO
      "filter",
  ]
  