content: [tool.poetry]
  name = "promptflow-core"
  version = "1.18.0"
  description = "Prompt flow core"
  include = [
    "promptflow/core/_serving/static/*",
    "promptflow/core/_serving/resources/*",
    "promptflow/_core/data/tool.schema.json",
  ]
  
  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 = ["core"]
  
  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"
  
  [tool.poetry.dependencies]
  python = "<4.0,>=3.9"
  promptflow-tracing = ">=1.0.0,<2.0.0"
  "ruamel.yaml" = ">=0.17.10,<1.0.0"  # used to generate connection templates with preserved comments
  docstring_parser = "*"  # used to parse doc string for Assistant user tools
  psutil = "*"  # promptflow/_utils/process_utils.py
  jsonschema = ">=4.0.0,<5.0.0"  # used to validate tool
  filetype = ">=1.2.0"  # used to detect the mime type for multi-media input
  flask = ">=2.2.3,<4.0.0"  # Serving endpoint requirements
  python-dateutil = ">=2.1.0,<3.0.0"  # Contracts RunInfo
  # ========fastapi server dependencies========
  fastapi = ">=0.109.0,<1.0.0" # used to build fastapi server
  # ========azureml-serving dependencies========
  # AzureML connection dependencies
  azure-identity = { version = ">=1.12.0,<2.0.0", optional = true }
  azure-ai-ml = { version = ">=1.14.0,<2.0.0", optional = true }
  # MDC dependencies for monitoring
  azureml-ai-monitoring = { version = ">=0.1.0b3,<1.0.0", optional = true }
  
  [tool.poetry.extras]
  executor-service = []
  azureml-serving = ["azure-identity", "azure-ai-ml", "azureml-ai-monitoring"]
  
  [tool.poetry.group.dev.dependencies]
  pre-commit = "*"
  import-linter = "*"
  promptflow-tracing = {path = "../promptflow-tracing", develop = true}
  promptflow-recording = {path = "../promptflow-recording", develop = true}
  
  [tool.poetry.group.ci.dependencies]
  import-linter = "*"
  promptflow-tracing = {path = "../promptflow-tracing"}
  promptflow-recording = {path = "../promptflow-recording"}
  
  [tool.poetry.group.test.dependencies]
  pytest = "*"
  pytest-cov = "*"
  pytest-xdist = "*"
  pytest-mock = "*"
  mock = "*"
  
  [build-system]
  requires = [
    "poetry-core>=1.5.0",
  ]
  build-backend = "poetry.core.masonry.api"
  
  [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 \
  --log-level=info \
  --log-format="%(asctime)s %(levelname)s %(message)s" \
  --log-date-format="[%Y-%m-%d %H:%M:%S]" \
  --durations=5 \
  -ra \
  -vv
  """
  testpaths = ["tests"]
  
  [tool.coverage.run]
  concurrency = ["multiprocessing"]
  source = [
    "*/promptflow/*"
  ]
  omit = [
    "*/__init__.py",
    "*/promptflow/core/_connection_provider/_models/*",
    "*/promptflow/tracing/*"
  ]
  
  [tool.black]
  line-length = 120
  
  [tool.importlinter]
  root_package = "promptflow"
  include_external_packages = "True"
  
  [[tool.importlinter.contracts]]
  name = "Contract forbidden modules"
  type = "forbidden"
  source_modules = [
    "promptflow.core",
    "promptflow._core",
    "promptflow._utils",
    "promptflow.connections",
    "promptflow.contracts",
    "promptflow.executor",
    "promptflow.integrations",
    "promptflow.storage"]
  forbidden_modules = [
    "promptflow._cli",
    "promptflow._internal",
    "promptflow._proxy",
    "promptflow._sdk",
    "promptflow.batch",
    "promptflow.client",
    "promptflow.entities",
    "promptflow.operations",
    "promptflow.azure"
  ]
  