pytorch/tools
Justin Chu 7d2a18da0b Enable ruff in lintrunner (#99785)
### This change

- Implements the ruff linter in pytorch lintrunner. It is adapted from https://github.com/justinchuby/lintrunner-adapters/blob/main/lintrunner_adapters/adapters/ruff_linter.py. It does **both linting and fixing**. 🔧
- Migrated all flake8 configs to the ruff config and enabled it for the repo. 
- **`ruff` lints the whole repo in under 2s** 🤯

Fixes https://github.com/pytorch/pytorch/issues/94737 Replaces #99280

@huydhn @Skylion007

<!--
copilot:all
-->
### <samp>🤖 Generated by Copilot at 6b982dd</samp>

### Summary
🧹🛠️🎨

<!--
1.  🧹 This emoji represents cleaning or tidying up, which is what `ruff` does by formatting and linting the code. It also suggests improving the code quality and removing unnecessary or redundant code.
2.  🛠️ This emoji represents tools or fixing, which is what `ruff` is as a code formatter and linter. It also suggests enhancing the code functionality and performance, and resolving potential issues or bugs.
3.  🎨 This emoji represents art or creativity, which is what `ruff` allows by providing a consistent and configurable style for the code. It also suggests adding some flair or personality to the code, and making it more readable and enjoyable.
-->
Add `[tool.ruff]` section to `pyproject.toml` to configure `ruff` code formatter and linter. This change aims to improve code quality and consistency with a single tool.

> _`ruff` cleans the code_
> _like a spring breeze in the fields_
> _`pyproject.toml`_

### Walkthrough
*  Configure `ruff` code formatter and linter for the whole project ([link](https://github.com/pytorch/pytorch/pull/99785/files?diff=unified&w=0#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711R22-R79))

Pull Request resolved: https://github.com/pytorch/pytorch/pull/99785
Approved by: https://github.com/malfet, https://github.com/Skylion007
2023-04-24 16:18:44 +00:00
..
amd_build Bump black version to 23.1.0 (#96578) 2023-03-15 06:27:59 +00:00
autograd Fix flake8 lint errors reported by ruff - take 2 (#99798) 2023-04-23 23:09:51 +00:00
bazel_tools
build_defs
code_analyzer [EdgeML] Remove dependency on all_mobile_model_configs.yaml from pt_operator_library BUCK rule (#99122) 2023-04-18 17:19:55 +00:00
code_coverage Fix typos under tools directory (#97779) 2023-03-30 08:21:35 +00:00
config
coverage_plugins_package
dynamo [dynamo 3.11] enable dynamo unittests in 3.11 (#98104) 2023-04-10 20:04:10 +00:00
gdb Fix typos under tools directory (#97779) 2023-03-30 08:21:35 +00:00
iwyu
jit [BE] Prefer dash over underscore in command-line options (#94505) 2023-02-09 20:16:49 +00:00
linter Enable ruff in lintrunner (#99785) 2023-04-24 16:18:44 +00:00
lite_interpreter [BE] Enable flake8-comprehension rule C417 (#97880) 2023-03-30 14:34:24 +00:00
lldb Add helpful pretty pretting summaries to torch for lldb debugging (#97101) 2023-03-20 01:27:44 +00:00
onnx Bump black version to 23.1.0 (#96578) 2023-03-15 06:27:59 +00:00
pyi Allow new_full's fill_value argument type to be complex (#91345) 2023-03-21 12:34:00 +00:00
rules
rules_cc [bazel] enable sccache+nvcc in CI (#95528) 2023-02-28 03:51:11 +00:00
setup_helpers Fix visual studio generator (#98605) 2023-04-14 01:46:46 +00:00
shared Cleaning up some logic in tools/shared/cwrap_common.py (#94475) 2023-02-10 17:49:11 +00:00
stats Change daily aggregates upload job to use sum and occurence counter instead of averages (#98359) 2023-04-05 16:31:58 +00:00
test Enable ruff in lintrunner (#99785) 2023-04-24 16:18:44 +00:00
testing [BE] Refactoring test execution and improving comments (#99467) 2023-04-19 19:29:07 +00:00
__init__.py
bazel.bzl
BUCK.bzl Revert "Move functional collectives to the right namespace (#97793)" 2023-03-31 16:02:07 +00:00
BUCK.oss
build_libtorch.py
build_pytorch_libs.py
download_mnist.py
extract_scripts.py [BE] Import Literal, Protocol, and Final from standard library typing as of Python 3.8+ (#94490) 2023-02-09 19:17:49 +00:00
gen_flatbuffers.sh
gen_vulkan_spv.py [BE]: pyupgrade Python to 3.8 - imports and object inheritance only (#94308) 2023-02-07 21:10:56 +00:00
generate_torch_version.py [BE] Prefer dash over underscore in command-line options (#94505) 2023-02-09 20:16:49 +00:00
generated_dirs.txt
git_add_generated_dirs.sh
git_reset_generated_dirs.sh
nightly.py Convert logging f-strings to use % format, part four (#98705) 2023-04-11 13:17:59 +00:00
nvcc_fix_deps.py
pytorch.version
README.md Remove fast_nvcc entry in README.md (#97624) 2023-03-28 16:23:09 +00:00
render_junit.py
substitute.py [BE] Prefer dash over underscore in command-line options (#94505) 2023-02-09 20:16:49 +00:00
update_masked_docs.py Bump black version to 23.1.0 (#96578) 2023-03-15 06:27:59 +00:00
vscode_settings.py [1/3] Recognize .py.in and .pyi.in files as Python in VS Code (#95200) 2023-03-01 19:16:56 +00:00

This folder contains a number of scripts which are used as part of the PyTorch build process. This directory also doubles as a Python module hierarchy (thus the __init__.py).

Overview

Modern infrastructure:

  • autograd - Code generation for autograd. This includes definitions of all our derivatives.
  • jit - Code generation for JIT
  • shared - Generic infrastructure that scripts in tools may find useful.
    • module_loader.py - Makes it easier to import arbitrary Python files in a script, without having to add them to the PYTHONPATH first.

Build system pieces:

  • setup_helpers - Helper code for searching for third-party dependencies on the user system.
  • build_pytorch_libs.py - cross-platform script that builds all of the constituent libraries of PyTorch, but not the PyTorch Python extension itself.
  • build_libtorch.py - Script for building libtorch, a standalone C++ library without Python support. This build script is tested in CI.

Developer tools which you might find useful:

Important if you want to run on AMD GPU:

  • amd_build - HIPify scripts, for transpiling CUDA into AMD HIP. Right now, PyTorch and Caffe2 share logic for how to do this transpilation, but have separate entry-points for transpiling either PyTorch or Caffe2 code.
    • build_amd.py - Top-level entry point for HIPifying our codebase.

Tools which are only situationally useful: