[tensor-shapes] torch.empty overloads omit requires_grad
Maintainers usually reply within 2 days
@Cha-Imaa is already working on this.
Since Oct 25, 2026.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 82/100
Research direction
The issue points to both torch.empty overloads in tensor-shapes/pyrefly-torch-stubs/torch-stubs/__init__.pyi near line 2970. Read those signatures and find nearby tests for tensor shape stubs; use the supplied repro.py with pyrefly check repro.py to confirm the error. Done means both size forms accept requires_grad and retain their inferred shapes.
Written by the indexing model from the issue text.
Description
Describe the Bug
torch.empty accepts the requires_grad keyword for both tuple sizes and positional sizes.
The shape stubs reject the keyword in both forms. This also affects the explicit default value requires_grad=False.
Minimal reproduction
Save this code as repro.py. Create an empty pyrefly.toml next to it.
import torch
empty = torch.empty((0, 2), requires_grad=False)
trainable = torch.empty(2, 3, requires_grad=True)
assert empty.shape == (0, 2)
assert not empty.requires_grad
assert trainable.shape == (2, 3)
assert trainable.requires_grad
Run:
python repro.py
pyrefly check repro.py
The runtime assertions pass and the process exits with code 0. The type check reports the errors below.
Expected behavior
Accept requires_grad: bool = False in both overloads. Preserve the result shape (0, 2) or (2, 3).
Actual behavior
repro.py:3:20: No matching overload found for function `torch.empty` called with arguments: (tuple[Literal[0], Literal[2]], requires_grad=Literal[False])
Possible overloads:
(*size: *Shape, *, dtype: Any = None, device: Any = None) -> Tensor[Shape]
(size: Shape, dtype: Any = None, device: Any = None) -> Tensor[Shape] [closest match]
Unexpected keyword argument `requires_grad` in function `torch.empty` [no-matching-overload]
repro.py:4:24: No matching overload found for function `torch.empty` called with arguments: (Literal[2], Literal[3], requires_grad=Literal[True])
Possible overloads:
(*size: *Shape, *, dtype: Any = None, device: Any = None) -> Tensor[Shape] [closest match]
(size: Shape, dtype: Any = None, device: Any = None) -> Tensor[Shape]
Unexpected keyword argument `requires_grad` in function `torch.empty` [no-matching-overload]
Environment and current source
- Python 3.13.13 on Linux.
- Pyrefly 1.4.0.
pyrefly-torch-stubs==1.4.0.- PyTorch 2.13.0+cu126.
I also reproduced this with the stub sources from main at e5f077bcb2897dad3d168c45b9b64271fca94db6. The local Pyrefly binary reports pyrefly 1.4.0. I selected the checkout stub package directories with --site-packages-path. The diagnostics above use those current source files.
Current stub source. Both current empty overloads declare dtype and device, but omit requires_grad.
- Dominant language
- Rust
- Stars
- 7.1k
- Forks
- 564
- PR merge metrics
- No merged PRs in 30d
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from facebook/pyrefly
-
`pyrefly report .` panics if stream not read completelyPossibly taken @asukaminato0721 claimed this today. Opencrash
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
facebook/pyrefly#5362 · 1 assignee ·
Maintainers usually reply within 2 days
-
[tensor-shapes] torch.half dtype alias is missing from torch stubsPossibly taken @mangeshraut712 claimed this today. Opengood first issue pytorch tensor-shapes
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
facebook/pyrefly#5361 · 3 comments ·
Maintainers usually reply within 2 days
-
[tensor-shapes] torch.lerp rejects tensor weights and omits their broadcast shapePossibly taken @mangeshraut712 claimed this today. Openpytorch tensor-shapes
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 2 days
-
bug(stubgen): `typing` / `_typeshed` imports are emitted above `from __future__ import annotations`Possibly taken @mangeshraut712 claimed this today. Opengood first issue stubgen
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
facebook/pyrefly#5321 · 1 comment ·
Maintainers usually reply within 2 days
-
[tensor-shapes] NumPy mean and sum declare rank-zero ndarrays for scalar resultsPossibly taken @mangeshraut712 claimed this today. Opentensor-shapes
Difficulty 4/5 3-5 days Newbie friendliness 55/100
Maintainers usually reply within 2 days
All issues in facebook/pyrefly
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 73/100
Maintainers usually reply within 1 day
-
C-bug needs-triage O-UEFI T-libs
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
bug priority: P3 ready-for-agent
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
shep-pm/shep-kelpie#1332 ·
Maintainers usually reply within 1 day
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
ramensoftware/windhawk#1156 · 2 comments ·
-
area/cli complexity:trivial good first issue Stellar Wave test
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Externalize-Labs/externalize#23 ·
Maintainers usually reply within 1 day