Skip to content

Commit e343131

Browse files
authored
Merge branch 'master' into association_proxy-support
2 parents 29bc7d4 + a47dbb3 commit e343131

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed

graphene_sqlalchemy/converter.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,9 @@ def convert_sqlalchemy_hybrid_method(hybrid_prop, resolver, **field_kwargs):
164164
if 'type_' not in field_kwargs:
165165
field_kwargs['type_'] = convert_hybrid_property_return_type(hybrid_prop)
166166

167+
if 'description' not in field_kwargs:
168+
field_kwargs['description'] = getattr(hybrid_prop, "__doc__", None)
169+
167170
return Field(
168171
resolver=resolver,
169172
**field_kwargs

graphene_sqlalchemy/tests/models.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,11 @@ class Reporter(Base):
6969
articles = relationship("Article", backref="reporter")
7070
favorite_article = relationship("Article", uselist=False)
7171

72+
@hybrid_property
73+
def hybrid_prop_with_doc(self):
74+
"""Docstring test"""
75+
return self.first_name
76+
7277
@hybrid_property
7378
def hybrid_prop(self):
7479
return self.first_name

graphene_sqlalchemy/tests/test_types.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,7 @@ class Meta:
9090
# Composite
9191
"composite_prop",
9292
# Hybrid
93+
"hybrid_prop_with_doc",
9394
"hybrid_prop",
9495
"hybrid_prop_str",
9596
"hybrid_prop_int",
@@ -157,6 +158,12 @@ class Meta:
157158
# "doc" is ignored by hybrid_property
158159
assert hybrid_prop_list.description is None
159160

161+
# hybrid_prop_with_doc
162+
hybrid_prop_with_doc = ReporterType._meta.fields['hybrid_prop_with_doc']
163+
assert hybrid_prop_with_doc.type == String
164+
# docstring is picked up from hybrid_prop_with_doc
165+
assert hybrid_prop_with_doc.description == "Docstring test"
166+
160167
# relationship
161168
favorite_article_field = ReporterType._meta.fields['favorite_article']
162169
assert isinstance(favorite_article_field, Dynamic)
@@ -200,6 +207,7 @@ class Meta:
200207
composite_prop = ORMField()
201208

202209
# hybrid_property
210+
hybrid_prop_with_doc = ORMField(description='Overridden')
203211
hybrid_prop = ORMField(description='Overridden')
204212

205213
# relationships
@@ -227,6 +235,7 @@ class Meta:
227235
"email_v2",
228236
"column_prop",
229237
"composite_prop",
238+
"hybrid_prop_with_doc",
230239
"hybrid_prop",
231240
"favorite_article",
232241
"articles",
@@ -268,6 +277,11 @@ class Meta:
268277
assert hybrid_prop_field.description == "Overridden"
269278
assert hybrid_prop_field.deprecation_reason is None
270279

280+
hybrid_prop_with_doc_field = ReporterType._meta.fields['hybrid_prop_with_doc']
281+
assert hybrid_prop_with_doc_field.type == String
282+
assert hybrid_prop_with_doc_field.description == "Overridden"
283+
assert hybrid_prop_with_doc_field.deprecation_reason is None
284+
271285
column_prop_field_v2 = ReporterType._meta.fields['column_prop']
272286
assert column_prop_field_v2.type == String
273287
assert column_prop_field_v2.description is None
@@ -336,6 +350,7 @@ class Meta:
336350
"email",
337351
"favorite_pet_kind",
338352
"composite_prop",
353+
"hybrid_prop_with_doc",
339354
"hybrid_prop",
340355
"hybrid_prop_str",
341356
"hybrid_prop_int",

0 commit comments

Comments
 (0)