graphene icon indicating copy to clipboard operation
graphene copied to clipboard

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

Open denizdogan opened this issue 4 years ago • 15 comments


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

schema = Schema(query=Query)

image

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

Any ideas?

denizdogan avatar Nov 22 '19 11:11 denizdogan

Hello @denizdogan

What PyCharm version do you own?

KingDarBoja avatar Nov 29 '19 14:11 KingDarBoja

@KingDarBoja I use PyCharm 2019.2.4 Professional Edition

denizdogan avatar Nov 29 '19 19:11 denizdogan

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

KingDarBoja avatar Dec 05 '19 13:12 KingDarBoja

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.

stale[bot] avatar Mar 04 '20 13:03 stale[bot]

Don't automatically close this please

denizdogan avatar Mar 04 '20 14:03 denizdogan

@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 😄

KingDarBoja avatar Mar 08 '20 15:03 KingDarBoja

Still present on 2020.1, any news?

tmladek avatar Apr 22 '20 21:04 tmladek

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

AndHam89 avatar Apr 30 '20 15:04 AndHam89

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]):

formigone avatar Apr 30 '20 17:04 formigone

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

AndHam89 avatar May 01 '20 07:05 AndHam89

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

tobiasfeil avatar Jun 13 '20 07:06 tobiasfeil

@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.

AndHam89 avatar Jun 13 '20 09:06 AndHam89

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 :)

tobiasfeil avatar Jun 14 '20 08:06 tobiasfeil

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

Abhi904485 avatar Sep 07 '20 03:09 Abhi904485

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

To be concrete, it's weird that pycharm will take the comment as a source for typing checking

qlibp avatar Jul 17 '21 14:07 qlibp

New issue for type hinting is #1454. Will start addressing this soon.

erikwrede avatar Aug 27 '22 17:08 erikwrede