content: [build-system]
  requires = ["poetry-core>=1.5.0"]
  build-backend = "poetry.core.masonry.api"
  
  # poetry
  [tool.poetry]
  name = "promptflow-evals"
  # This version does not need to be changed, because it is set by the release pipeline.
  # See build-publish-local-wheel-evals.yaml pipeline definition
  # in Vienna PromptFlow repository for reference.
  version = "0.1.0.dev0"
  description = "Prompt flow evals"
  license = "MIT"
  authors = [
    "Microsoft Corporation <azuremlsdk@microsoft.com>"
  ]
  repository = "https://github.com/microsoft/promptflow"
  homepage = "https://microsoft.github.io/promptflow/"
  readme = ["README.md"]
  keywords = ["telemetry"]
  classifiers = [
    "Development Status :: 7 - Inactive",
    "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",
    "License :: OSI Approved :: MIT License",
    "Operating System :: OS Independent",
  ]
  packages = [
    { include = "promptflow" }
  ]
  
  [tool.poetry.urls]
  "Bug Reports" = "https://github.com/microsoft/promptflow/issues"
  
  # dependencies
  [tool.poetry.dependencies]
  python = "<4.0,>=3.9"
  promptflow-devkit = "<2.0.0,>=1.15.0"
  promptflow-core = "<2.0.0,>=1.15.0"
  websocket-client = ">=1.2.0"
  jsonpath_ng = ">=1.5.0"
  numpy = ">=1.22"
  promptflow-azure = { version = "<2.0.0,>=1.15.0", optional = true} # Needed for remote tracking
  pyjwt = ">=2.8.0"
  azure-identity = ">=1.17.1"
  azure-core = ">=1.30.2"
  nltk = ">=3.8.1"
  rouge-score= ">=0.1.2"
  
  [tool.poetry.extras]
  azure = [
      "promptflow-azure"
  ]
  
  [tool.poetry.group.dev.dependencies]
  isort = "^5.13.2"
  pre-commit = "*"
  import-linter = "*"
  pylint = "3.0.3"
  azure-pylint-guidelines-checker = {version = "0.3.1", source = "azure-sdk"}
  
  [tool.poetry.group.test.dependencies]
  pytest = "*"
  pytest-asyncio = "*"
  pytest-cov = "*"
  pytest-mock = "*"
  pytest-xdist = "*"
  
  # test: pytest and coverage
  
  [[tool.poetry.source]]
  name = "azure-sdk"
  url = "https://pkgs.dev.azure.com/azure-sdk/public/_packaging/azure-sdk-for-python/pypi/simple/"
  priority = "supplemental"
  
  [tool.pytest.ini_options]
  markers = [
    "unittest",
    "e2etest",
  ]
  # junit - analyse and publish test results (https://github.com/EnricoMi/publish-unit-test-result-action)
  # durations - list the slowest test durations
  addopts = """
  --junit-xml=test-results.xml \
  --dist loadfile \
  --log-level=info \
  --log-format="%(asctime)s %(levelname)s %(message)s" \
  --log-date-format="[%Y-%m-%d %H:%M:%S]" \
  --durations=5 \
  -ra \
  -vv
  """
  env = [
  ]
  testpaths = ["tests"]
  
  [tool.coverage.run]
  concurrency = ["multiprocessing"]
  source = ["promptflow"]
  omit = [
    "__init__.py",
  ]
  
  [tool.black]
  line-length = 120
  
  # import linter
  # reference: https://pypi.org/project/import-linter/
  [tool.importlinter]
  root_package = "promptflow"
  include_external_packages = "True"
  
  [[tool.importlinter.contracts]]
  name = "Contract forbidden modules"
  type = "forbidden"
  source_modules = ["promptflow.evals"]
  forbidden_modules = []
  
  [tool.isort]
  # we use check for make fmt*
  profile = "black"
  # no need to fmt ignored
  skip_gitignore = true
  # needs to be the same as in black
  line_length = 120
  use_parentheses = true
  include_trailing_comma = true
  honor_noqa = true
  ensure_newline_before_comments = true
  skip_glob = [
    "docs/**",
    "pipelines/**",
    "pytest/**",
    "samples/**",
  ]
  known_third_party = ["azure", "mock", "numpy", "pandas", "pydash", "pytest", "pytest_mock", "requests", "setuptools", "six", "sklearn", "tqdm", "urllib3", "utilities", "utils", "yaml", "jsonschema", "strictyaml", "jwt", "pathspec", "isodate", "docker"]
  known_first_party = ["promptflow"]
  