pytorch/scripts
Xuehai Pan 973037be6a [BE][Easy] apply autofix for ruff rules unnecessary-collection-call (C408): list() / tuple() / dict() (#130199)
This PR changes the empty collection factory call to Python literals:

- `list()` -> `[]`
- `tuple()` -> `()`
- `dict()` -> `{}`

The Python literals are more performant and safer. For example, the bytecode for building an empty dictionary:

```bash
$ python3 -m dis - <<EOS
import collections

d1 = {}
d2 = dict()

dict = collections.OrderedDict
d3 = dict()
EOS
```

```text
  0           0 RESUME                   0

  1           2 LOAD_CONST               0 (0)
              4 LOAD_CONST               1 (None)
              6 IMPORT_NAME              0 (collections)
              8 STORE_NAME               0 (collections)

  3          10 BUILD_MAP                0
             12 STORE_NAME               1 (d1)

  4          14 PUSH_NULL
             16 LOAD_NAME                2 (dict)
             18 CALL                     0
             26 STORE_NAME               3 (d2)

  6          28 LOAD_NAME                0 (collections)
             30 LOAD_ATTR                8 (OrderedDict)
             50 STORE_NAME               2 (dict)

  7          52 PUSH_NULL
             54 LOAD_NAME                2 (dict)
             56 CALL                     0
             64 STORE_NAME               5 (d3)
             66 RETURN_CONST             1 (None)
```

The dict literal `{}` only has one bytecode `BUILD_MAP`, while the factory call `dict()` has three `PUSH_NULL + LOAD_NAME + CALL`. Also, the factory call is not safe if users override the `dict` name in `locals` or `globals` (see the example of replacing with `OrderedDict` above).

Pull Request resolved: https://github.com/pytorch/pytorch/pull/130199
Approved by: https://github.com/malfet
2024-07-11 17:30:28 +00:00
..
analysis [BE]: Update ruff to 0.4.1 (#124549) 2024-04-21 14:06:23 +00:00
compile_tests [BE][Easy] replace import pathlib with from pathlib import Path (#129426) 2024-06-30 01:36:07 +00:00
export [5/N][Easy] fix typo for usort config in pyproject.toml (kown -> known): sort torch (#127126) 2024-05-27 14:49:57 +00:00
fbcode-dev-setup
jit
onnx [ONNX] Add sanity check in CI for onnxbench (#110178) 2023-12-02 00:17:07 +00:00
release Release fix pinning slow-tests.json (#121746) 2024-03-12 22:04:55 +00:00
release_notes [BE][Easy] apply autofix for ruff rules unnecessary-collection-call (C408): list() / tuple() / dict() (#130199) 2024-07-11 17:30:28 +00:00
add_apache_header.sh
apache_header.txt
apache_python.txt
buck_setup.sh
build_android_gradle.sh [EZ][BE] Move build_android_gradle.sh (#117795) 2024-01-19 02:14:28 +00:00
build_android.sh [BE][CMake] Use FindPython module (#124613) 2024-05-29 13:17:35 +00:00
build_host_protoc.sh
build_ios.sh [BE][CMake] Use FindPython module (#124613) 2024-05-29 13:17:35 +00:00
build_local.sh
build_mobile.sh [BE][CMake] Use FindPython module (#124613) 2024-05-29 13:17:35 +00:00
build_pytorch_android.sh
build_raspbian.sh
build_tegra_x1.sh [1/2] Remove caffe2 db and distributed from build system (#125092) 2024-05-04 06:48:46 +00:00
build_tizen.sh [1/2] Remove caffe2 db and distributed from build system (#125092) 2024-05-04 06:48:46 +00:00
build_windows.bat
diagnose_protobuf.py [BE]: Update ruff to 0.4.1 (#124549) 2024-04-21 14:06:23 +00:00
get_python_cmake_flags.py [BE][CMake] Use FindPython module (#124613) 2024-05-29 13:17:35 +00:00
install_triton_wheel.sh [XPU] Add xpu support of make triton (#126513) 2024-06-07 06:25:47 +00:00
proto.ps1 [buck2][win] fix caffe2 protobuf_rule (#115954) 2023-12-18 21:41:10 +00:00
read_conda_versions.sh
README.md
remove_apache_header.sh
temp.sh
xcode_build.rb

This directory contains the useful tools.

build_android.sh

This script is to build PyTorch/Caffe2 library for Android. Take the following steps to start the build:

  • set ANDROID_NDK to the location of ndk
export ANDROID_NDK=YOUR_NDK_PATH
  • run build_android.sh
#in your PyTorch root directory
bash scripts/build_android.sh

If succeeded, the libraries and headers would be generated to build_android/install directory. You can then copy these files from build_android/install to your Android project for further usage.

You can also override the cmake flags via command line, e.g., following command will also compile the executable binary files:

bash scripts/build_android.sh -DBUILD_BINARY=ON

build_ios.sh

This script is to build PyTorch/Caffe2 library for iOS, and can only be performed on macOS. Take the following steps to start the build:

  • Install Xcode from App Store, and configure "Command Line Tools" properly on Xcode.
  • Install the dependencies:
brew install cmake automake libtool
  • run build_ios.sh
#in your PyTorch root directory
bash scripts/build_ios.sh

If succeeded, the libraries and headers would be generated to build_ios/install directory. You can then copy these files to your Xcode project for further usage.