Missing references in API generation process
Describe the bug While trying to generate the OpenAPI client, I come across a bug that not only modifies several files unnecessarily but also displays a warning message about endpoint generating, which root cause is unclear to me:
Warning(s) encountered while generating. Client was generated, but some pieces may be missing
WARNING parsing POST /index/create within index. Endpoint will not be generated.
Could not find reference in parsed models or enums
Unable to process schema /components/schemas/Index:
Value {'object_type': 'IndexParams', 'nlist': 128} is not valid, only None is allowed
Failure to process schema has resulted in the removal of:
/components/schemas/Index
/components/schemas/IndexInSpec
Schema(title=None, multipleOf=None, maximum=None, exclusiveMaximum=None, minimum=None, exclusiveMinimum=None, maxLength=None, minLength=None, pattern=None, maxItems=None, minItems=None, uniqueItems=None, maxProperties=None, minProperties=None, required=None, enum=None, const=None, type=None, allOf=[], oneOf=[Reference(ref='#/components/schemas/IndexParams'), Schema(title=None, multipleOf=None, maximum=None, exclusiveMaximum=None, minimum=None, exclusiveMinimum=None, maxLength=None, minLength=None, pattern=None, maxItems=None, minItems=None, uniqueItems=None, maxProperties=None, minProperties=None, required=None, enum=None, const=None, type=<DataType.NULL: 'null'>, allOf=[], oneOf=[], anyOf=[], schema_not=None, items=None, properties=None, additionalProperties=None, description=None, schema_format=None, default=None, nullable=False, discriminator=None, readOnly=None, writeOnly=None, xml=None, externalDocs=None, example=None, deprecated=None)], anyOf=[], schema_not=None, items=None, properties=None, additionalProperties=None, description=None, schema_format=None, default={'object_type': 'IndexParams', 'nlist': 128}, nullable=False, discriminator=Discriminator(propertyName='object_type', mapping=None), readOnly=None, writeOnly=None, xml=None, externalDocs=None, example=None, deprecated=None)
OpenAPI Spec File A link to an OpenAPI document which produces this issue. Ideally, write a minimal reproduction only containing the problematic pieces. Creating the new client: https://github.com/openapi-generators/openapi-python-client?tab=readme-ov-file#create-a-new-client
Desktop (please complete the following information):
- OS: Windows 11 Enterprise Version 22H2
- Python Version: 3.9.13
- openapi-python-client version: 0.17.2
It's hard to be sure without seeing the actual spec, but based on the error output there, I think the problem is that the generator currently just doesn't support specifying a default value for an object schema. The error message is a little misleading due to how UnionProperty handles the default value, here - first it tries to validate it against the IndexParams object schema, which fails because ModelProperty doesn't support defaults (here), and then it tries it against the other schema which only allows a null value, and when both of those fail it's returning the last error it saw.
My guess is that this would be a medium-size fix to implement in a simple way where it would not try to validate the dict value in any detail at generation time (like in this case, it would not that {'object_type': 'IndexParams', 'nlist': 128} is a valid IndexParams). I think trying to validate it would be a much bigger task, because the generator isn't really designed for that kind of thing (it just knows how to check for basic stuff like data type and enum values), but I think that's probably a secondary concern since there are plenty of other tools for validating a spec.