Graphene: PyCharm warning: Expected type 'ObjectType', got 'Type[Query]' instead

Created on 22 Nov 2019  路  14Comments  路  Source: graphql-python/graphene

class Query(graphene.ObjectType):
    # ...

schema = Schema(query=Query)

image

Related to #814 which was automatically closed due to staleness.

Any ideas?

Most helpful comment

Thank you for the reply! I'm sorry I still don't understand how to do this, since I'm not defining the class Schema in my own code. All I'm doing is using graphene.Schema:
image
So I don't know where the type hint should go, since there's no class Schema in my code... Would you be so kind to tell me how you accomplished this? Did you subclass graphene.Schema? Thanks in advance :)

All 14 comments

Hello @denizdogan

What PyCharm version do you own?

@KingDarBoja I use PyCharm 2019.2.4 Professional Edition

I can confirm such behaviour on my PyCharm too;

Warning Query Type PyCharm GraphQL

More info:

PyCharm 2019.2.5 (Community Edition)
Build #PC-192.7142.56, built on November 19, 2019
Runtime version: 11.0.4+10-b304.77 amd64
VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 10 10.0
GC: ParNew, ConcurrentMarkSweep
Memory: 976M
Cores: 4
Registry: 
Non-Bundled Plugins: org.intellij.plugins.markdown, Docker

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

Don't automatically close this please

@denizdogan Looks like the issue got solved but will be released on Graphene v3-alpha versions instead of v2, just saying, the final word is under Graphql-Python Team 馃槃

Still present on 2020.1, any news?

I can confirm that this is still present in 2020.1 professional. It would be helpful it it gets solved.

Came across this looking for the same PyCharm warning, but in a different situation. I'm not a user of this repo, so I won't take the time to locate the code and PR the simple fix for it.

TL/DR:

Whenever you see PyCharm complain with

Expected type X, got Type[X] instead

that's a possible type hinting misunderstanding. See this for more information.

In summary:

# Wrong
class Schema:
   def __init__(self, query: MyClass):

# Right
from typing import Type

class Schema:
   def __init__(self, query: Type[MyClass]):

Thanks for the hint. I changed the type specification and PyCharm does not anymore complain about a type mismatch. Thanks formigone.

@AndHam89 Where did you change the type specification? In the source of graphene? It's still complaining for me

@tobiasfeil You need to change your type specification in you Python code as formigone pointed out. If you refer to the type of a class you need to use the syntax Type[MyClass] if you have a parameter which is of type MyClass.

Thank you for the reply! I'm sorry I still don't understand how to do this, since I'm not defining the class Schema in my own code. All I'm doing is using graphene.Schema:
image
So I don't know where the type hint should go, since there's no class Schema in my code... Would you be so kind to tell me how you accomplished this? Did you subclass graphene.Schema? Thanks in advance :)

Thank you for the reply! I'm sorry I still don't understand how to do this, since I'm not defining the class Schema in my own code. All I'm doing is using graphene.Schema:
image
So I don't know where the type hint should go, since there's no class Schema in my code... Would you be so kind to tell me how you accomplished this? Did you subclass graphene.Schema? Thanks in advance :)

change the doc present in graphene/types/schema.py

replace:

query (ObjectType): Root query ObjectType. Describes entry point for fields to read
data in your Schema.

with

query (Type[ObjectType]): Root query ObjectType. Describes entry point for fields to read
data in your Schema.

After that problem will resolve

Was this page helpful?
0 / 5 - 0 ratings