content: [build-system]
  requires = ["setuptools", "wheel", "ziglang"]
  build-backend = "setuptools.build_meta"
  
  [project]
  license = { file = "LICENSE" }
  
  name = "mlflow-go-backend"
  version = "0.2.1"
  description = "MLflow is an open source platform for the complete machine learning lifecycle"
  readme = "README.md"
  keywords = ["mlflow", "go", "golang", "ai", "databricks"]
  classifiers = [
    "Development Status :: 5 - Production/Stable",
    "Intended Audience :: Developers",
    "Intended Audience :: End Users/Desktop",
    "Intended Audience :: Science/Research",
    "Intended Audience :: Information Technology",
    "Topic :: Scientific/Engineering :: Artificial Intelligence",
    "Topic :: Software Development :: Libraries :: Python Modules",
    "License :: OSI Approved :: Apache Software License",
    "Operating System :: OS Independent",
    "Programming Language :: Python :: 3.9",
  ]
  requires-python = ">=3.10"
  dependencies = [
    "cffi>=1.17.1",
    "mlflow>=2.19.0",
    "psycopg2-binary>=2.9.10",
  ]
  [[project.maintainers]]
  name = "Databricks"
  email = "mlflow-oss-maintainers@googlegroups.com"
  
  [project.urls]
  homepage = "https://mlflow.org"
  issues = "https://github.com/mlflow/mlflow-go-backend/issues"
  documentation = "https://mlflow.org/docs/latest/index.html"
  repository = "https://github.com/mlflow/mlflow-go-backend"
  
  [project.scripts]
  mlflow-go = "mlflow_go_backend.cli:cli"
  
  [project.entry-points."mlflow.tracking_store"]
  mssql = "mlflow_go_backend.store.tracking:_get_sqlalchemy_store"
  mysql = "mlflow_go_backend.store.tracking:_get_sqlalchemy_store"
  postgresql = "mlflow_go_backend.store.tracking:_get_sqlalchemy_store"
  sqlite = "mlflow_go_backend.store.tracking:_get_sqlalchemy_store"
  
  [project.entry-points."mlflow.model_registry_store"]
  mssql = "mlflow_go_backend.store.model_registry:_get_sqlalchemy_store"
  mysql = "mlflow_go_backend.store.model_registry:_get_sqlalchemy_store"
  postgresql = "mlflow_go_backend.store.model_registry:_get_sqlalchemy_store"
  sqlite = "mlflow_go_backend.store.model_registry:_get_sqlalchemy_store"
  
  [tool.setuptools.packages.find]
  where = ["."]
  include = ["mlflow_go_backend", "mlflow_go_backend.*"]
  exclude = ["tests", "tests.*"]
  
  [tool.ruff]
  line-length = 100
  target-version = "py39"
  force-exclude = true
  extend-include = ["*.ipynb"]
  extend-exclude = [
    "examples/recipes",
    "mlflow/protos",
    "mlflow/ml_package_versions.py",
    "mlflow/server/graphql/autogenerated_graphql_schema.py",
    "mlflow/server/js",
    "mlflow/store/db_migrations",
    "tests/protos",
  ]
  
  [tool.ruff.format]
  docstring-code-format = true
  docstring-code-line-length = 88
  
  [tool.ruff.lint]
  dummy-variable-rgx = "^(_+|(_+[a-zA-Z0-9_]*[a-zA-Z0-9]+?))$"
  select = [
    "B006",    # multiple-argument-default
    "B015",    # useless-comparison
    "D209",    # new-line-after-last-paragraph
    "D411",    # no-blank-line-before-section
    "E",       # error
    "F",       # Pyflakes
    "C4",      # flake8-comprehensions
    "I",       # isort
    "ISC001",  # single-line-implicit-string-concatenation
    "PIE790",  # unnecessary-placeholder
    "PLR0402", # manual-from-import
    "PLE1205", # logging-too-many-args
    "PT001",   # pytest-fixture-incorrect-parentheses-style
    "PT002",   # pytest-fixture-positional-args
    "PT003",   # pytest-extraneous-scope-function
    "PT006",   # pytest-parameterize-names-wrong-type
    "PT007",   # pytest-parameterize-values-wrong-type
    "PT009",   # pytest-unittest-assertion
    "PT010",   # pytest-raises-without-exception
    "PT011",   # pytest-raises-too-broad
    "PT012",   # pytest-raises-with-multiple-statements
    "PT013",   # pytest-incorrect-pytest-import
    "PT014",   # pytest-duplicate-parametrize-test-cases
    "PT018",   # pytest-composite-assertion
    "PT022",   # pytest-useless-yield-fixture
    "PT023",   # pytest-incorrect-mark-parentheses-style
    "PT026",   # pytest-use-fixtures-without-parameters
    "PT027",   # pytest-unittest-raises-assertion
    "RET504",  # unnecessary-assign
    "RUF010",  # explicit-f-string-type-conversion
    "RUF013",  # implicit-optional
    "RUF100",  # unused-noqa
    "S307",    # suspicious-eval-usage
    "S324",    # hashlib-insecure-hash-function
    "SIM101",  # duplicate-isinstance-call
    "SIM103",  # needless-bool
    "SIM108",  # if-else-block-instead-of-if-exp
    "SIM114",  # if-with-same-arms
    "SIM115",  # open-file-with-context-handler
    "SIM210",  # if-expr-with-true-false
    "SIM910",  # dict-get-with-none-default
    "T20",     # flake8-print
    "TID251",  # banned-api
    "TID252",  # relative-improt
    "TRY302",  # useless-try-except
    "UP004",   # useless-object-inheritance
    "UP008",   # super-call-with-parameters
    "UP011",   # lru-cache-without-parameters
    "UP012",   # unecessary-encode-utf8
    "UP015",   # redundant-open-modes
    "UP030",   # format-literals
    "UP031",   # printf-string-format
    "UP032",   # f-string
    "UP034",   # extraneous-parenthesis
    "W",       # warning
  ]
  ignore = [
    "E402", # module-import-not-at-top-of-file
    "E721", # type-comparison
    "E741", # ambiguous-variable-name
    "F811", # redefined-while-unused
  ]
  
  [tool.ruff.lint.per-file-ignores]
  "dev/*" = ["T201", "PT018"]
  "examples/*" = ["T20", "RET504", "E501"]
  "docs/*" = ["T20", "RET504", "E501"]
  "mlflow/*" = ["PT018"]
  
  [tool.ruff.lint.flake8-pytest-style]
  mark-parentheses = false
  fixture-parentheses = false
  raises-require-match-for = ["*"]
  
  [tool.ruff.lint.flake8-tidy-imports]
  ban-relative-imports = "all"
  
  [tool.ruff.lint.isort]
  forced-separate = ["tests"]
  
  [tool.ruff.lint.flake8-tidy-imports.banned-api]
  "pkg_resources".msg = "We're migrating away from pkg_resources. Please use importlib.resources or importlib.metadata instead."
  
  [tool.ruff.lint.pydocstyle]
  convention = "google"
  
  [tool.clint]
  exclude = [
    "docs",
    "mlflow/protos",
    "mlflow/ml_package_versions.py",
    "mlflow/server/js",
    "mlflow/store/db_migrations",
    "tests/protos",
  ]
  
  # [tool.uv.sources]
  # mlflow = { path = ".mlflow.repo", editable = true }
  
  # [project.optional-dependencies]
  # dev = ["build", "ziglang", "pytest"]
  
  [tool.uv]
  dev-dependencies = ["pytest>=8.0.0", "ziglang>0.12", "pip>=24.2"]
  
  [tool.uv.sources]
  mlflow = { path = ".mlflow.repo", editable = true }
  