[build-system] requires = [ "setuptools", "wheel", "astunparse", "numpy", "ninja", "pyyaml", "cmake", "typing-extensions", "requests", ] # Use legacy backend to import local packages in setup.py build-backend = "setuptools.build_meta:__legacy__" [tool.black] line-length = 88 target-version = ["py38"] [tool.isort] src_paths = ["caffe2", "torch", "torchgen", "functorch", "test"] extra_standard_library = ["typing_extensions"] skip_gitignore = true skip_glob = ["third_party/*"] atomic = true profile = "black" indent = 4 line_length = 88 lines_after_imports = 2 multi_line_output = 3 include_trailing_comma = true combine_as_imports = true [tool.usort.known] first_party = ["caffe2", "torch", "torchgen", "functorch", "test"] standard_library = ["typing_extensions"] [tool.ruff] target-version = "py38" line-length = 88 src = ["caffe2", "torch", "torchgen", "functorch", "test"] [tool.ruff.format] docstring-code-format = true quote-style = "double" [tool.ruff.lint] # NOTE: Synchoronize the ignores with .flake8 ignore = [ # these ignores are from flake8-bugbear; please fix! "B007", "B008", "B017", "B018", # Useless expression "B023", "B028", # No explicit `stacklevel` keyword argument found "E402", "C408", # C408 ignored because we like the dict keyword argument syntax "E501", # E501 is not flexible enough, we're using B950 instead "E721", "E731", # Assign lambda expression "E741", "EXE001", "F405", "F841", # these ignores are from flake8-logging-format; please fix! "G101", # these ignores are from ruff NPY; please fix! "NPY002", # these ignores are from ruff PERF; please fix! "PERF203", "PERF401", "PERF403", # these ignores are from PYI; please fix! "PYI024", "PYI036", "PYI041", "PYI056", "SIM102", "SIM103", "SIM112", # flake8-simplify code styles "SIM113", # please fix "SIM105", # these ignores are from flake8-simplify. please fix or ignore with commented reason "SIM108", # SIM108 ignored because we prefer if-else-block instead of ternary expression "SIM110", "SIM114", # Combine `if` branches using logical `or` operator "SIM115", "SIM116", # Disable Use a dictionary instead of consecutive `if` statements "SIM117", "SIM118", "UP006", # keep-runtime-typing "UP007", # keep-runtime-typing ] select = [ "B", "B904", # Re-raised error without specifying the cause via the from keyword "C4", "G", "E", "EXE", "F", "SIM1", "SIM911", "W", # Not included in flake8 "FURB", "LOG", "NPY", "PERF", "PGH004", "PIE790", "PIE794", "PIE800", "PIE804", "PIE807", "PIE810", "PLC0131", # type bivariance "PLC0132", # type param mismatch "PLC0205", # string as __slots__ "PLC3002", # unnecessary-direct-lambda-call "PLE", "PLR0133", # constant comparison "PLR0206", # property with params "PLR1722", # use sys exit "PLR1736", # unnecessary list index "PLW0129", # assert on string literal "PLW0133", # useless exception statement "PLW0406", # import self "PLW0711", # binary op exception "PLW1509", # preexec_fn not safe with threads "PLW2101", # useless lock statement "PLW3301", # nested min max "PT006", # TODO: enable more PT rules "PT022", "PT023", "PT024", "PT025", "PT026", "PYI", "Q003", # avoidable escaped quote "Q004", # unnecessary escaped quote "RSE", "RUF008", # mutable dataclass default "RUF015", # access first ele in constant time "RUF016", # type error non-integer index "RUF017", "RUF018", # no assignment in assert "RUF019", # unnecessary-key-check "RUF024", # from keys mutable "RUF026", # default factory kwarg "TCH", "TRY002", # ban vanilla raise (todo fix NOQAs) "TRY302", "TRY401", # verbose-log-message "UP", ] [tool.ruff.lint.per-file-ignores] "__init__.py" = [ "F401", ] "functorch/notebooks/**" = [ "F401", ] "test/typing/reveal/**" = [ "F821", ] "test/torch_np/numpy_tests/**" = [ "F821", "NPY201", ] "test/dynamo/test_bytecode_utils.py" = [ "F821", ] "test/dynamo/test_debug_utils.py" = [ "UP037", ] "test/jit/**" = [ "PLR0133", # tests require this for JIT "PYI", "RUF015", "UP", # We don't want to modify the jit test as they test specify syntax ] "test/test_jit.py" = [ "PLR0133", # tests require this for JIT "PYI", "RUF015", "UP", # We don't want to modify the jit test as they test specify syntax ] "test/inductor/test_torchinductor.py" = [ "UP037", ] # autogenerated #TODO figure out why file level noqa is ignored "torch/_inductor/fx_passes/serialized_patterns/**" = ["F401", "F501"] "torch/_inductor/autoheuristic/artifacts/**" = ["F401", "F501"] "torchgen/api/types/__init__.py" = [ "F401", "F403", ] "torchgen/executorch/api/types/__init__.py" = [ "F401", "F403", ] "torch/utils/collect_env.py" = [ "UP", # collect_env.py needs to work with older versions of Python ] "torch/_vendor/**" = [ "UP", # No need to mess with _vendor ]