[build-system]
# Should be mirrored in requirements.txt
requires = [
    "attrs",
    "cmake>=3.26",
    "decorator",
    "einops",
    "googleapis-common-protos",
    "numpy<2.0.0",
    "packaging",
    "pip",
    "pybind11",
    "pyyaml",
    "scipy",
    "pandas",
    "pandas-stubs",
    "psutil",
    "setuptools>=64",
    "setuptools-scm>=8",
    "transformers>=4.57.4",
    "torch-npu==2.9.0",
    "torch==2.9.0",
    "torchvision",
    "wheel",
    "msgpack",
    "quart",
    "numba",
    "xgrammar>=0.1.30",
    "fastapi<0.124.0",
    "opencv-python-headless<=4.11.0.86", # Required to avoid numpy version conflict with vllm
    "compressed_tensors>=0.11.0",
    "arctic-inference==0.1.1",
    "triton-ascend==3.2.0"
]
build-backend = "setuptools.build_meta"

[tool.pymarkdown]
plugins.md004.style = "sublist" # ul-style
plugins.md007.indent = 4 # ul-indent
plugins.md007.start_indented = true # ul-indent
plugins.md013.enabled = false # line-length
plugins.md041.enabled = false # first-line-h1
plugins.md033.enabled = false # inline-html
plugins.md046.enabled = false # code-block-style
plugins.md024.allow_different_nesting = true # no-duplicate-headers
plugins.md029.enabled = false # ol-prefix

[tool.ruff]
# TODO: according to PEP8, there should be 80 characters per line
line-length = 120
# Folder to be modified
exclude = [
    "tests/**",
]

[tool.ruff.lint]
select = [
    # pycodestyle
    "E",
    # Pyflakes
    "F",
    # pyupgrade
    "UP",
    # flake8-bugbear
    "B",
    # flake8-simplify
    "SIM",
    # isort
    "I",
    # flake8-logging-format
    "G",
]
ignore = [
    # star imports
    "F405", "F403",
    # lambda expression assignment
    "E731",
    # zip without `strict=`
    "B905",
    # Loop control variable not used within loop body
    "B007",
    # f-string format
    "UP032",
    # TODO: FIE ME
    "G004",
    "B904",
    "SIM108",
    "SIM102"
]

[tool.ruff.format]
docstring-code-format = true
