Skip to content

Commit

Permalink
Update on "[FX] Make wrapped functions traceable"
Browse files Browse the repository at this point in the history
This patch does two things:
1. For the purpose of introspecting arguments, this patch adds a call to `inspect.unwrap` to unwrap any layers of `functools.wraps` decorators on the function. This is similar to what `inspect.signature` is doing as well. This allows for functions/methods with wrapping decorators applied to them to be traced
2. Fixes a poor error message where a variadic method without an explicit `self` argument was trying to be traced. I elected to just throw in this case for now. Conceptually we could support this but I was running into some weird correctness issues and I think that's better addressed in a follow-up PR.

Closes #46665

Differential Revision: [D24465958](https://our.internmc.facebook.com/intern/diff/D24465958)

[ghstack-poisoned]
  • Loading branch information
James Reed committed Oct 22, 2020
1 parent a6c48f5 commit c63c90a
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions test/test_fx.py
Expand Up @@ -117,12 +117,12 @@ def forward(self, *args, **kwargs):

def test_args_kwargs_no_self(self):
class T(torch.nn.Module):
def forward(*args, **kwargs):
def forward(*args, **kwargs): # noqa: B902
self = args[0]
return torch.relu(args[1])

t = T()
with self.assertRaisesRegex(RuntimeError, 'cannot be part of \*args expansion'):
with self.assertRaisesRegex(RuntimeError, r'cannot be part of \*args expansion'):
self.checkGraphModule(t, (torch.rand(1), torch.rand(1)), {'foo': torch.rand(1)})

def test_fx_shifts(self):
Expand Down

0 comments on commit c63c90a

Please sign in to comment.