mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-20 21:14:14 +08:00
[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
This commit is contained in:
committed by
PyTorch MergeBot
parent
492de213e2
commit
973037be6a
@ -1712,7 +1712,7 @@ class TestModule(torch.nn.Module):
|
||||
"include_last_offset",
|
||||
},
|
||||
)
|
||||
self.assertEqual(norm_args_and_kwargs.args, tuple())
|
||||
self.assertEqual(norm_args_and_kwargs.args, ())
|
||||
|
||||
def test_normalize_args_op_overload(self):
|
||||
for target in [torch.ops.aten.resize_as_.default, torch.ops.aten.resize_as_]:
|
||||
|
Reference in New Issue
Block a user