content: [build-system]
  requires = ["poetry-core>=1.5.0"]
  build-backend = "poetry.core.masonry.api"
  
  # poetry
  [tool.poetry]
  name = "promptflow-tracing"
  version = "1.18.0"
  description = "Prompt flow tracing"
  license = "MIT"
  authors = [
    "Microsoft Corporation <aml-pt-eng@microsoft.com>"
  ]
  repository = "https://github.com/microsoft/promptflow"
  homepage = "https://microsoft.github.io/promptflow/"
  readme = ["README.md"]
  keywords = ["telemetry"]
  classifiers = [
    "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"
  openai = "*"  # API injector for OpenAI traces
  opentelemetry-sdk = ">=1.22.0,<2.0.0"  # Open Telemetry dependency
  tiktoken = ">=0.4.0"  # get OpenAI token count for streaming scenario
  
  [tool.poetry.group.dev.dependencies]
  pre-commit = "*"
  import-linter = "*"
  
  [tool.poetry.group.test.dependencies]
  pytest = "*"
  pytest-asyncio = "*"
  pytest-cov = "*"
  pytest-mock = "*"
  pytest-xdist = "*"
  
  # test: pytest and coverage
  [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.tracing"]
  forbidden_modules = [
    "promptflow.core",
    "promptflow._core",
    "promptflow._utils",
    "promptflow.connections",
    "promptflow.contracts",
    "promptflow.executor",
    "promptflow.integrations",
    "promptflow.storage",
    "promptflow._cli",
    "promptflow._internal",
    "promptflow._proxy",
    "promptflow._sdk",
    "promptflow.batch",
    "promptflow.client",
    "promptflow.entities",
    "promptflow.operations",
    "promptflow.azure"
  ]
  