graphene
graphene copied to clipboard
PyCharm warning: Expected type 'ObjectType', got 'Type[Query]' instead
class Query(graphene.ObjectType):
# ...
schema = Schema(query=Query)
Related to #814 which was automatically closed due to staleness.
Any ideas?
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;
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
:
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 usinggraphene.Schema
: So I don't know where the type hint should go, since there's noclass Schema
in my code... Would you be so kind to tell me how you accomplished this? Did you subclassgraphene.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
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 usinggraphene.Schema
: So I don't know where the type hint should go, since there's noclass Schema
in my code... Would you be so kind to tell me how you accomplished this? Did you subclassgraphene.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
To be concrete, it's weird that pycharm will take the comment as a source for typing checking
New issue for type hinting is #1454. Will start addressing this soon.