content: [build-system]
  build-backend = "hatchling.build"
  requires = ["hatchling"]
  
  [project]
  authors = [
    {name = "Vizro Team"}
  ]
  classifiers = [
    "Programming Language :: Python",
    "Programming Language :: Python :: 3.9",
    "Programming Language :: Python :: 3.10",
    "Programming Language :: Python :: 3.11",
    "Programming Language :: Python :: 3.12",
    "Programming Language :: Python :: 3.13"
  ]
  dependencies = [
    "dash>=3.1.1,<4",  # temporary upper bound to avoid breaking changes in Dash v4
    "dash_bootstrap_components>=2",  # 2.0.0 needed to support dash>=3.0.0
    "dash-ag-grid>=31.3.1",  # 31.3.1 needed to support dash>=3.0.0
    "dash_mantine_components>=1",  # 1.0.0 needed to support dash>=3.0.0
    "pandas>=2",
    "plotly>=5.24.0",
    # Must be <= the version in pre-commit mypy hook, sync manually
    # When updating this to >=2.9, search code for `but this requires pydantic >= 2.9` to find all
    # occurrences of code that is now ready to change
    "pydantic>=2.7.0",
    "flask_caching>=2",
    "wrapt>=1",
    "black",
    "autoflake",
    "packaging",
    "python-box"
  ]
  description = "Vizro is a low-code framework for building high-quality data visualization apps."
  dynamic = ["version"]
  license-files = {paths = ["LICENSE.txt"]}
  name = "vizro"
  readme = "README.md"
  requires-python = ">=3.9"
  
  [project.optional-dependencies]
  kedro = [
    "kedro>=0.19.0,<1.0",  # remove once we have tested the released Kedro 1.0
    "kedro-datasets"  # no longer a dependency of kedro for kedro>=0.19.2
  ]
  
  [project.urls]
  Documentation = "https://github.com/mckinsey/vizro#readme"
  Issues = "https://github.com/mckinsey/vizro/issues"
  Source = "https://github.com/mckinsey/vizro"
  
  [tool.coverage.paths]
  vizro = ["src/vizro"]  # omit tests for clarity, although this can be useful to see what test lines DID NOT run
  
  [tool.coverage.report]
  exclude_lines = [
    "no cov",
    "if __name__ == .__main__.:",
    "if TYPE_CHECKING:"
  ]
  fail_under = 91
  show_missing = true
  skip_covered = true
  
  [tool.coverage.run]
  branch = true
  parallel = true
  source_pkgs = ["vizro"]
  
  [tool.pytest.ini_options]
  addopts = [
    # Allow test files to have the same name in different directories.
    "--import-mode=importlib"
  ]
  filterwarnings = [
    "error",
    # Ignore until pandas 3 is released:
    "ignore:(?s).*Pyarrow will become a required dependency of pandas:DeprecationWarning",
    # Ignore warning when using the fig.layout.title inside examples:
    "ignore:Using the `title` argument in your Plotly chart function may cause misalignment:UserWarning",
    # Ignore deprecation warning until this is solved: https://github.com/plotly/dash/issues/2590:
    "ignore:HTTPResponse.getheader():DeprecationWarning",
    # Ignore this warning for firefox screenshot tests
    "ignore:get_logs always return None with webdrivers other than Chrome",
    # Ignore kedro deprecation warning
    "ignore:`KedroDataCatalog` is currently an experimental feature:kedro.KedroDeprecationWarning"
  ]
  markers = [
    "mobile_screenshots: marks tests for chrome mobile screenshots"
  ]
  norecursedirs = ["tests/tests_utils", "tests/js"]
  pythonpath = ["tests/tests_utils", "tests/e2e/vizro/custom_components"]
  
  [tool.ruff]
  extend = "../pyproject.toml"
  src = ["src"]
  
  [tool.ruff.lint.extend-per-file-ignores]
  # Ignore current false positives for pydantic models subclassing across files
  # See: https://github.com/astral-sh/ruff/issues/5243#issuecomment-1860776975
  "**/models/**" = ["RUF012"]
  # Ignore missing docstrings in visual-vocabulary examples to keep them succinct.
  "examples/visual-vocabulary/pages/examples/**" = ["D100", "D103"]
  