Closed luisvicentesanchez closed 1 year ago
It seems that the problem here is indeed the ordering. I commented https://github.com/profusion/sgqlc/blob/master/sgqlc/codegen/schema.py#L483 and the codegen can create both the schema and operations. When I try to use the operations I get an error like:
Traceback (most recent call last):
File "/***********/testing.py", line 2, in <module>
import acryl_datahub_schema
File "/***********/datahub_schema.py", line 4490, in <module>
class Chart(sgqlc.types.Type, EntityWithRelationships, Entity):
NameError: name 'EntityWithRelationships' is not defined
Hum... I'll need some time to investigate it properly, but removing the assertion is not correct (because it will cause a runtime error as you spotted).
Meanwhile, if you can investigate yourself, see if the ordering issue is caused by a dependency cycle or just a missing "topo-sort"... I don't recall if I added some topology sort based on the usage, trusting "the input is already sorted". A quick way to check is reorder the introspection JSON and move the EntityWithRelationships
before its users.
Yes, I just removed the assertion just to "preview" how the library would fit in our use case. I will try to re-order the JSON and I will let you know if that solves the problem.
any update on this?
Ran into this as well. Re-ordering types to move EntityWithRelationships
to the very top of types
and then also using the code from #209 (which removes an alphabetic sort) fixes it for me :)
ty @Evgenus @barbieri !
I think this is a quirk resulting from optimizations within Python's list sort.
FWIW: I added this locally to sort all interfaces ahead of everything else, and it fixes it for me:
# fields without interfaces first, then order the interface
# implementor after the interface declaration
def depend_cmp(a, b):
if a["kind"] != b["kind"]:
if a["kind"] == "INTERFACE":
return -1
elif b["kind"] == "INTERFACE":
return 1
could you please check #219
merged, pleas reopen if still an issue
I'm getting the following error when I try to generate the schema for the Datahub GraphQL API:
The interface is the following https://datahubproject.io/docs/graphql/interfaces#entitywithrelationships
Is this error related to the order in which the content of the schema is processed? Is there anything I can do to fix it?