Skip to content

Commit f728542

Browse files
author
James Pollock
committed
Allow class methods to be used as a field source
1 parent 02eb685 commit f728542

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

graphene/types/field.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
def source_resolver(source, root, args, context, info):
1515
resolved = getattr(root, source, None)
16-
if inspect.isfunction(resolved):
16+
if inspect.isfunction(resolved) or inspect.ismethod(resolved):
1717
return resolved()
1818
return resolved
1919

graphene/types/tests/test_field.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ class MyInstance(object):
1010
value = 'value'
1111
value_func = staticmethod(lambda: 'value_func')
1212

13+
def value_method(self):
14+
return 'value_method'
15+
1316

1417
def test_field_basic():
1518
MyType = object()
@@ -76,6 +79,12 @@ def test_field_source_func():
7679
assert field.resolver(MyInstance(), {}, None, None) == MyInstance.value_func()
7780

7881

82+
def test_field_source_method():
83+
MyType = object()
84+
field = Field(MyType, source='value_method')
85+
assert field.resolver(MyInstance(), {}, None, None) == MyInstance().value_method()
86+
87+
7988
def test_field_source_as_argument():
8089
MyType = object()
8190
field = Field(MyType, source=String())

0 commit comments

Comments
 (0)