Skip to content

generated code fails linting if an object has no properties #1108

Closed
@eli-bl

Description

@eli-bl

Describe the bug

If a schema has type: object, properties: {}, and additionalProperties: false, schema parsing succeeds and the generator generates appropriate code... but it fails in the post-generation linting step, with an error like this:

empty_object_example_client/models/get_example_response_200.py:25:9: F841 Local variable `d` is assigned to but never used
   |
23 |     @classmethod
24 |     def from_dict(cls: Type[T], src_dict: Dict[str, Any]) -> T:
25 |         d = src_dict.copy()
   |         ^ F841
26 |         get_example_response_200 = cls(
27 |         )

The problem is that the template assumes it'll be doing something with d— either reading specific named properties out of it, or saving any unrecognized ones as "additional". But in this case neither of those things can happen, so d is unused.

OpenAPI Spec File
A link to an OpenAPI document which produces this issue. Ideally, write a minimal reproduction only containing the problematic pieces.

https://gist.github.com/eli-bl/0e433b0dcde331bddff2842f2b6633d2

Desktop (please complete the following information):

  • OS: MacOS 14.5
  • Python Version: 3.8.15
  • openapi-python-client version: 0.21.4

Additional context
This may seem like a contrived example, but I have seen API scenarios where an empty object is actually the desired value.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions