OLive/pyproject.toml

199 строки
5.5 KiB
TOML

[tool.black]
line-length = 120
[tool.isort]
profile = "black"
line_length = 120
[tool.pylint.BASIC]
good-names = [
"a",
"b",
"c",
"d",
"e",
"f",
"g",
"h",
"i",
"j",
"k",
"l",
"m",
"n",
"p",
"q",
"r",
"s",
"t",
"u",
"v",
"w",
"ex",
"Run",
"_",
"x",
"y",
"z"
]
[tool.pylint.main]
# https://github.com/pylint-dev/pylint/issues/3242#issuecomment-776482259
# Please don't use ** for the pattern. It will cause pylint to crash.
# the crash error message would like:
# re.error: multiple repeat at position 41
ignore-paths = [".*/examples/directml/llm/chat_app/.*"]
[tool.pylint.messages_control]
disable = [
# TODO:(myguo): consider remove them in the blacklist
"broad-exception-caught",
"c-extension-no-member",
"cyclic-import", # Disable cyclic-import because it is pylint bug
"consider-using-f-string",
"consider-using-from-import",
"format",
"expression-not-assigned",
"line-too-long",
"import-error",
"import-outside-toplevel",
"invalid-name",
"no-else-continue",
"no-else-raise",
"no-else-return",
"no-name-in-module",
"no-member",
"no-self-argument",
"too-few-public-methods",
"too-many-arguments",
"too-many-branches",
"too-many-function-args",
"too-many-instance-attributes",
"too-many-locals",
"too-many-nested-blocks",
"too-many-public-methods",
"too-many-return-statements",
"too-many-statements",
"missing-docstring",
"fixme",
"unspecified-encoding",
"unused-argument"
]
[tool.ruff]
line-length = 120
target-version = "py38"
[tool.ruff.lint]
select = [
"A", # flake8-builtins
"B", # flake8-bugbear
"C4", # flake8-comprehensions
"CPY", # flake8-copyright
"D", # flake8-docstrings,
"E", # pycodestyle
"F", # Pyflakes
"FLY", # flake8-flynt
"G", # flake8-logging-format
"ICN", # flake8-import-conventions
"INP", # flake8-no-pep420
"INT", # flake8-gettext
"ISC", # flake8-implicit-str-concat
"LOG", # flake8-logging
"N", # pep8-naming
"NPY", # numpy
"PD", # flake8-pandas
"PERF", # Perflint
"PGH", # pygrep-hooks
"PIE", # flake8-pie
"PLC", # pylint conventions
"PLE", # pylint errors
"PLW", # pylint warnings
"PT", # flake8-pytest
"PTH", # flake8-use-pathlib
"PYI", # flake8-pyi
"Q", # flake8-quotes
"RET", # flake8-return
"RSE", # flake8-raise
"RUF", # Ruff-specific rules
"SIM", # flake8-simplify
"T10", # flake8-debugger
"T20", # flake8-print
"TCH", # flake8-type-checking
"TD", # flake8-todo
"TID", # flake8-tidy-imports
"TRY", # tryceratops
"UP", # pyupgrade
"W", # pycodestyle
"YTT" # flake8-2020,
]
# NOTE: Refrain from growing the ignore list unless for exceptional cases.
# Always include a comment to explain why.
ignore = [
"B028", # FIXME: Add stacklevel to warnings
"B905", # keep using less than Python 3.10. The strict is added in Python 3.10
"D100", # Ignore missing docstring in public module
"D101", # Ignore missing docstring in public class
"D102", # Ignore missing docstring in public method
"D103", # Ignore missing docstring in public function
"D104", # Ignore missing docstring in public package
"D105", # Ignore missing docstring in magic method
"D106", # Ignore missing docstring in public nested class
"D107", # Ignore missing docstring in __init__
"D406", # Ignore new line after section name
"D407", # Ignore dashed-underline-after-section
"N803", # Argument casing
"N812", # Allow import torch.nn.functional as F
"N999", # Module names
"NPY002", # np.random.Generator may not always fit our use cases
"PERF203", # "try-except-in-loop" only affects Python <3.11, and the improvement is minor; can have false positives
"PLW0603", # TODO: temp disable global variable check
"PT004", # Ignore pytest fixture name
"PT019", # Ignore pytest fixture name
"PTH100", # We still support os.path.abspath
"PTH103", # We still support os.makedirs
"PTH106", # We still support os.rmdir
"PTH107", # We still support os.remove
"PTH110", # We still support os.path.exists
"PTH118", # We still need support os.path.join
"PTH119", # We still need support os.path.basename
"PTH120", # We still need support os.path.dirname
"PTH123", # we still need built-in open
"RET505", # We prefer if/else clauses explicitly
"RET506", # We prefer if/else clauses explicitly
"RET507", # We prefer if/else clauses explicitly
"RUF010", # keeping using str type explicitly
"RUF013", # Ignore Optional type hints warning since it is available in Python 3.10
"SIM105", # We don't prefer use context.suppress
"SIM108", # We don't encourage ternary operators
"TD003", # Ignore TODO links
"TRY002", # Ignore create custom exception
"TRY003", # Ignore check message not defined in the exception class
"TRY004", # Ignore prefer TypeError over ValueError
"TRY300", # Ignore check if return in try block
"UP032", # Ignore string format calls
"UP038" # Ignore old isinstance hints
]
ignore-init-module-imports = true
unfixable = [
"F401", # Unused imports
"SIM112" # Use upper case for env vars
]
[tool.ruff.lint.flake8-tidy-imports]
# Disallow all relative imports.
ban-relative-imports = "all"
[tool.ruff.lint.pep8-naming]
# Allow Pydantic's `@validator` decorator to trigger class method treatment.
classmethod-decorators = ["classmethod", "olive.common.pydantic_v1.validator", "olive.common.pydantic_v1.root_validator"]
[tool.ruff.lint.per-file-ignores]
".azure_pipelines/**" = ["INP001"]
"examples/**" = ["TID252", "INP001"]
"docs/**" = ["INP001"]
"test/**" = ["INP001"]
"scripts/**" = ["INP001"]
"examples/directml/llm/chat_app/**" = ["TID252", "UP006", "T201"]
"olive/cli/**" = ["T201"]