Conversion to snake_case fails on nested inputs
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 3/5
- Tiempo estimado
- 1-2 días
- Aptitud para principiantes
- 45/100
Línea de trabajo
Comienza con la reproducción de RegisterPlaceInput, PlaceInput y PostalAddressInput, y rastrea cómo se convierten los valores anidados de InputObjectType. Reproduce la salida camelCase del nivel más profundo, luego añade cobertura de regresión y verifica que cada clave anidada se convierta a snake_case.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
-
What is the current behavior?
I have double nested inputs, the first two levels are properly converted to snake_case, the third one (deepest) is not. -
If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via
a github repo, https://repl.it or similar.
import graphene
from django.contrib.auth import get_user_model
from ..models import Place, PostalAddress
User = get_user_model()
class OwnerInput(graphene.InputObjectType):
first_name = graphene.String(required=True)
last_name = graphene.String(required=True)
class PostalAddressInput(graphene.InputObjectType):
street_address = graphene.String(required=True)
address_locality = graphene.String(required=True)
address_region = graphene.String(required=True)
postal_code = graphene.String(required=True)
address_country = graphene.String(required=True)
class PlaceInput(graphene.InputObjectType):
latitude = graphene.Float(required=True)
longitude = graphene.Float(required=True)
postal_address = graphene.Field(PostalAddressInput, required=True)
class RegisterPlaceInput(graphene.InputObjectType):
owner = graphene.Field(OwnerInput, required=True)
place = graphene.Field(PlaceInput, required=True)
class RegisterPlaceMutation(graphene.Mutation):
class Arguments:
input = graphene.Argument(RegisterPlaceInput, required=True)
success = graphene.Boolean(
description="Indicates whether the operation was successful."
)
def mutate(root, info, input):
print(input)
owner_data = input['owner'] #Converted to snake
place_data = input['place'] #converted to snake at the lower level
postal_address_data = place_data['postal_address'] # remains camel
postal_address = PostalAddress.objects.create(**postal_address_data) #fails as data not in the right shape
place = Place.objects.create(
latitude=place_data['latitude'],
longitude=place_data['longitude'],
postal_address=postal_address,
)
return RegisterPlaceMutation(success=True)
class Mutation(graphene.ObjectType):
register_place = RegisterPlaceMutation.Field()
print gives :
>> {'owner': {'first_name': 'JOHN', 'last_name
': 'DOE'}, 'place': {'latitude': 48.9230953, 'longitude': 2.0303184, 'postal_address': {'streetAddress': 'Skalitzer Strasse 99', 'addressLocality': 'Berlin', 'addressRegion': 'Berlin', 'post
alCode': '10997', 'addressCountry': 'DE'}}}
-
What is the expected behavior?
All nested object keys are converted to snake_case. -
What is the motivation / use case for changing the behavior?
snake_case conversion should be consistent independently of the shape of the input -
Please tell us about your environment:
- Version: 3.3
- Platform: with graphene_django 3.2 - (unsure if it's relevant)
- Lenguaje dominante
- Python
- Estrellas
- 8.2k
- Forks
- 822
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de graphql-python/graphene
-
Tutorial mistakesAbierto🐛 bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
graphql-python/graphene#1389 · 5 comentarios · 2 reacciones ·
-
✨ enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
graphql-python/graphene#1609 ·
-
Support OneOf input object typesAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 68/100
graphql-python/graphene#1606 ·
-
Python 3.14 supportAbierto✨ enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 38/100
graphql-python/graphene#1601 · 2 comentarios ·
-
✨ enhancement
Dificultad 4/5 3-5 días Aptitud para principiantes 42/100
graphql-python/graphene#1600 ·
Todos los issues de graphql-python/graphene
Issues similares
-
Consolidate the now-identical CLI-native and composed tasks_packages guards (#5945 follow-up)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
spec-kitty/spec-kitty#6112 ·
Los mantenedores suelen responder en 1 día
-
[Bug]: OpenRouter streaming chunks report the requested router name instead of the model OpenRouter servedPosiblemente ocupada @Mrun25 la tomó hoy. Abiertobug llm translation
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
BerriAI/litellm#46095 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
uberdeveloper/fastbt#29 ·
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
andrew-blake/melcloudhome#368 ·
Los mantenedores suelen responder en 1 día
-
lane:discover
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
SPARDiffData/differential-data-collection#33 ·
Los mantenedores suelen responder en 1 día