Skip to content

Nested self reference to a definition, results in circular dependency error #117

@abatilo

Description

@abatilo

The YAML in question

  Person:
    required:
      - name
      - children
    properties:
      name:
        type: string
      children:
        type: array
        items:
          $ref: '#/definitions/Person'

I believe my issue is similar to #62

Trying to generate code from a model definition such as above will result in the following error:

ValueError: $ref circular references found!

Full yaml:

swagger: '2.0'
info:
  version: 1.0.0
  title: Swagger Petstore
  license:
    name: MIT
host: petstore.swagger.io
basePath: "/v1"
schemes:
- http
consumes:
- application/json
produces:
- application/json
paths:
  "/persons":
    get:
      summary: List all persons
      operationId: listPersons
      tags:
      - persons
      responses:
        '200':
          description: An paged array of persons
          schema:
            "$ref": "#/definitions/Person"
        default:
          description: unexpected error
          schema:
            "$ref": "#/definitions/Error"
    post:
      summary: Add a person
      operationId: addPerson
      tags:
      - persons
      parameters:
      - in: body
        name: body
        required: true
        schema:
          "$ref": "#/definitions/Person"
      responses:
        '201':
          description: person was created
          schema:
            "$ref": "#/definitions/Person"
        default:
          description: unexpected error
          schema:
            "$ref": "#/definitions/Error"
definitions:
  Person:
    required:
    - name
    - children
    properties:
      name:
        type: string
      children:
        type: array
        items:
          "$ref": "#/definitions/Person"
  Error:
    required:
    - code
    - message
    properties:
      code:
        type: integer
        format: int32
      message:
        type: string

However, if I run the same yaml through swagger-codegen, valid Python code is generated.

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