Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

jsonschema generated KCL schemas broken on multi-line strings and quotes within strings #1797

Open
tvandinther opened this issue Dec 20, 2024 · 1 comment
Assignees
Labels
bug Something isn't working

Comments

@tvandinther
Copy link

tvandinther commented Dec 20, 2024

Bug Report

1. Minimal reproduce step (Required)

Import the following jsonschema:

{
  "type": "object",
  "properties": {
    "foo": {
      "type": "string",
      "default": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque pellentesque ligula consequat, aliquam elit vitae, dapibus velit. Donec posuere venenatis diam, et viverra mi facilisis nec. Mauris eget velit eu risus ornare accumsan. Suspendisse rutrum vehicula tellus. Morbi lobortis lorem eget odio consequat dapibus. Etiam metus arcu, tincidunt id enim eget, mollis tempor purus. Sed finibus ante id odio dignissim mollis. Fusce auctor sit amet risus nec dictum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec ornare orci nec fermentum accumsan. Vivamus fermentum dolor non ligula consequat, vitae pellentesque quam accumsan. Ut lobortis facilisis pharetra. Nullam tristique orci in nisi tempor, ut consequat metus molestie.\n\nSuspendisse justo quam, fermentum id ultrices sed, fringilla non eros. Ut leo risus, efficitur id posuere sit amet, sagittis vitae risus. Nullam mattis arcu quis ligula tempus ullamcorper. Donec vel nibh vel sem fermentum efficitur id a velit. Maecenas congue iaculis arcu et consectetur. Maecenas gravida nisl vitae eros dignissim, rutrum malesuada felis pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;\n\nCurabitur vitae augue et sapien pulvinar scelerisque. Proin eleifend varius feugiat. Nullam sagittis ante at ligula pharetra, vitae molestie turpis aliquet. Donec vitae odio nec tortor accumsan condimentum. Phasellus suscipit semper tortor, ac sodales orci varius non. Praesent iaculis ultrices dui in fringilla. Sed tristique libero sed sapien sagittis eleifend.\n\nCurabitur id fermentum ex, ac aliquam ligula. Duis tellus neque, luctus eu tristique eget, viverra vitae magna. Maecenas facilisis mauris quam, eu sodales elit vulputate quis. Suspendisse nulla ipsum, auctor ut efficitur sed, rhoncus ut nisi. Donec viverra libero a rhoncus bibendum. Nullam sit amet metus nisi. Nunc venenatis eu ante quis egestas.\n\nUt sollicitudin pellentesque sem in consectetur. Nunc imperdiet lacus in venenatis consectetur. Vestibulum sed turpis tempor, mattis velit eu, hendrerit quam. Morbi ac pretium orci, ut mattis felis. Phasellus id faucibus orci, lobortis bibendum eros. Nunc nec libero consectetur, elementum tortor vitae, cursus orci. Curabitur nisl velit, auctor eu rutrum id, suscipit cursus est."
    }
  },
  "required": ["foo"]
}
kcl import test.json --mode jsonschema

2. What did you expect to see? (Required)

A KCL schema file with valid syntax.

3. What did you see instead (Required)

A KCL file schema file with invalid syntax.

The default value is included in the schema's docstring but since it it a long line, the import logic uses an unescaped raw string to display it. The issue with that is this raw string is already inside a docstring raw string so it ends the docstring upon the starting syntax default is r""" .

"""
This file was generated by the KCL auto-gen tool. DO NOT EDIT.
Editing this file might prove futile when you re-run the KCL auto-gen generate command.
"""

schema Test:
    r"""
    Test

    Attributes
    ----------
    foo : str, required, default is r"""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque pellentesque ligula consequat, aliquam elit vitae, dapibus velit. Donec posuere venenatis diam, et viverra mi facilisis nec. Mauris eget velit eu risus ornare accumsan. Suspendisse rutrum vehicula tellus. Morbi lobortis lorem eget odio consequat dapibus. Etiam metus arcu, tincidunt id enim eget, mollis tempor purus. Sed finibus ante id odio dignissim mollis. Fusce auctor sit amet risus nec dictum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec ornare orci nec fermentum accumsan. Vivamus fermentum dolor non ligula consequat, vitae pellentesque quam accumsan. Ut lobortis facilisis pharetra. Nullam tristique orci in nisi tempor, ut consequat metus molestie.

Suspendisse justo quam, fermentum id ultrices sed, fringilla non eros. Ut leo risus, efficitur id posuere sit amet, sagittis vitae risus. Nullam mattis arcu quis ligula tempus ullamcorper. Donec vel nibh vel sem fermentum efficitur id a velit. Maecenas congue iaculis arcu et consectetur. Maecenas gravida nisl vitae eros dignissim, rutrum malesuada felis pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;

Curabitur vitae augue et sapien pulvinar scelerisque. Proin eleifend varius feugiat. Nullam sagittis ante at ligula pharetra, vitae molestie turpis aliquet. Donec vitae odio nec tortor accumsan condimentum. Phasellus suscipit semper tortor, ac sodales orci varius non. Praesent iaculis ultrices dui in fringilla. Sed tristique libero sed sapien sagittis eleifend.

Curabitur id fermentum ex, ac aliquam ligula. Duis tellus neque, luctus eu tristique eget, viverra vitae magna. Maecenas facilisis mauris quam, eu sodales elit vulputate quis. Suspendisse nulla ipsum, auctor ut efficitur sed, rhoncus ut nisi. Donec viverra libero a rhoncus bibendum. Nullam sit amet metus nisi. Nunc venenatis eu ante quis egestas.

Ut sollicitudin pellentesque sem in consectetur. Nunc imperdiet lacus in venenatis consectetur. Vestibulum sed turpis tempor, mattis velit eu, hendrerit quam. Morbi ac pretium orci, ut mattis felis. Phasellus id faucibus orci, lobortis bibendum eros. Nunc nec libero consectetur, elementum tortor vitae, cursus orci. Curabitur nisl velit, auctor eu rutrum id, suscipit cursus est."""
    """

    foo: str = r"""Lorem ipsum dolor sit amet, consectetur adipiscing elit. Quisque pellentesque ligula consequat, aliquam elit vitae, dapibus velit. Donec posuere venenatis diam, et viverra mi facilisis nec. Mauris eget velit eu risus ornare accumsan. Suspendisse rutrum vehicula tellus. Morbi lobortis lorem eget odio consequat dapibus. Etiam metus arcu, tincidunt id enim eget, mollis tempor purus. Sed finibus ante id odio dignissim mollis. Fusce auctor sit amet risus nec dictum. Interdum et malesuada fames ac ante ipsum primis in faucibus. Donec ornare orci nec fermentum accumsan. Vivamus fermentum dolor non ligula consequat, vitae pellentesque quam accumsan. Ut lobortis facilisis pharetra. Nullam tristique orci in nisi tempor, ut consequat metus molestie.

Suspendisse justo quam, fermentum id ultrices sed, fringilla non eros. Ut leo risus, efficitur id posuere sit amet, sagittis vitae risus. Nullam mattis arcu quis ligula tempus ullamcorper. Donec vel nibh vel sem fermentum efficitur id a velit. Maecenas congue iaculis arcu et consectetur. Maecenas gravida nisl vitae eros dignissim, rutrum malesuada felis pulvinar. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae;

Curabitur vitae augue et sapien pulvinar scelerisque. Proin eleifend varius feugiat. Nullam sagittis ante at ligula pharetra, vitae molestie turpis aliquet. Donec vitae odio nec tortor accumsan condimentum. Phasellus suscipit semper tortor, ac sodales orci varius non. Praesent iaculis ultrices dui in fringilla. Sed tristique libero sed sapien sagittis eleifend.

Curabitur id fermentum ex, ac aliquam ligula. Duis tellus neque, luctus eu tristique eget, viverra vitae magna. Maecenas facilisis mauris quam, eu sodales elit vulputate quis. Suspendisse nulla ipsum, auctor ut efficitur sed, rhoncus ut nisi. Donec viverra libero a rhoncus bibendum. Nullam sit amet metus nisi. Nunc venenatis eu ante quis egestas.

Ut sollicitudin pellentesque sem in consectetur. Nunc imperdiet lacus in venenatis consectetur. Vestibulum sed turpis tempor, mattis velit eu, hendrerit quam. Morbi ac pretium orci, ut mattis felis. Phasellus id faucibus orci, lobortis bibendum eros. Nunc nec libero consectetur, elementum tortor vitae, cursus orci. Curabitur nisl velit, auctor eu rutrum id, suscipit cursus est."""

4. What is your KCL components version? (Required)

0.10.9-linux-amd64

@tvandinther
Copy link
Author

tvandinther commented Dec 20, 2024

Another error case is with defaults containing ".

{
  "type": "object",
  "properties": {
    "foo": {
      "type": "string",
      "default": "more \"quotes\""
    }
  },
  "required": ["foo"]
}

produces

"""
This file was generated by the KCL auto-gen tool. DO NOT EDIT.
Editing this file might prove futile when you re-run the KCL auto-gen generate command.
"""

schema TestEscape:
    r"""
    Test

    Attributes
    ----------
    foo : str, required, default is r"""more "quotes" """
    """

    foo: str = r"""more "quotes" """

It looks like any case which triggers the generation logic to use a raw string instead of a regular quoted string will cause this issue. So far I have identified multiline strings and strings containing quotes.

@tvandinther tvandinther changed the title jsonschema generated KCL schemas broken on long strings jsonschema generated KCL schemas broken on long strings and quotes within strings Dec 20, 2024
@tvandinther tvandinther changed the title jsonschema generated KCL schemas broken on long strings and quotes within strings jsonschema generated KCL schemas broken on multi-line strings and quotes within strings Dec 20, 2024
@Peefy Peefy added the bug Something isn't working label Dec 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
Status: No status
Development

No branches or pull requests

4 participants