mirror of
				https://github.com/graphql-python/graphene.git
				synced 2025-10-30 23:47:55 +03:00 
			
		
		
		
	Merge pull request #1430 from loft-orbital/feat/enable-to-provide-enum-name
feat: add ability to provide a type name to enum when using from_enum
This commit is contained in:
		
						commit
						72c2fd5ec3
					
				|  | @ -52,7 +52,10 @@ class EnumMeta(SubclassWithMeta_Meta): | |||
|         return super(EnumMeta, cls).__call__(*args, **kwargs) | ||||
|         # return cls._meta.enum(*args, **kwargs) | ||||
| 
 | ||||
|     def from_enum(cls, enum, description=None, deprecation_reason=None):  # noqa: N805 | ||||
|     def from_enum( | ||||
|         cls, enum, name=None, description=None, deprecation_reason=None | ||||
|     ):  # noqa: N805 | ||||
|         name = name or enum.__name__ | ||||
|         description = description or enum.__doc__ | ||||
|         meta_dict = { | ||||
|             "enum": enum, | ||||
|  | @ -60,7 +63,7 @@ class EnumMeta(SubclassWithMeta_Meta): | |||
|             "deprecation_reason": deprecation_reason, | ||||
|         } | ||||
|         meta_class = type("Meta", (object,), meta_dict) | ||||
|         return type(meta_class.enum.__name__, (Enum,), {"Meta": meta_class}) | ||||
|         return type(name, (Enum,), {"Meta": meta_class}) | ||||
| 
 | ||||
| 
 | ||||
| class Enum(UnmountedType, BaseType, metaclass=EnumMeta): | ||||
|  |  | |||
|  | @ -328,6 +328,52 @@ def test_enum_resolver_compat(): | |||
|     assert results.data["colorByName"] == Color.RED.name | ||||
| 
 | ||||
| 
 | ||||
| def test_enum_with_name(): | ||||
|     from enum import Enum as PyEnum | ||||
| 
 | ||||
|     class Color(PyEnum): | ||||
|         RED = 1 | ||||
|         YELLOW = 2 | ||||
|         BLUE = 3 | ||||
| 
 | ||||
|     GColor = Enum.from_enum(Color, description="original colors") | ||||
|     UniqueGColor = Enum.from_enum( | ||||
|         Color, name="UniqueColor", description="unique colors" | ||||
|     ) | ||||
| 
 | ||||
|     class Query(ObjectType): | ||||
|         color = GColor(required=True) | ||||
|         unique_color = UniqueGColor(required=True) | ||||
| 
 | ||||
|     schema = Schema(query=Query) | ||||
| 
 | ||||
|     assert ( | ||||
|         str(schema).strip() | ||||
|         == dedent( | ||||
|             ''' | ||||
|             type Query { | ||||
|               color: Color! | ||||
|               uniqueColor: UniqueColor! | ||||
|             } | ||||
| 
 | ||||
|             """original colors""" | ||||
|             enum Color { | ||||
|               RED | ||||
|               YELLOW | ||||
|               BLUE | ||||
|             } | ||||
| 
 | ||||
|             """unique colors""" | ||||
|             enum UniqueColor { | ||||
|               RED | ||||
|               YELLOW | ||||
|               BLUE | ||||
|             } | ||||
|             ''' | ||||
|         ).strip() | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| def test_enum_resolver_invalid(): | ||||
|     from enum import Enum as PyEnum | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue
	
	Block a user