Code Monkey home page Code Monkey logo

Comments (11)

lfvjimisola avatar lfvjimisola commented on September 21, 2024 1

@danielxpander Sadly, no. I was afraid that something had happened to @koxudaxi but there seem to be activity in the repository by him, @bpsoos and @natikgadzhi.

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

There might be other issues than the patternProperties.

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

The generator also fails to generate datamodels for the OpenAPI 3.1 JSON Schema.

Steps to reproduce:

#1 clone to get official JSON Schemas for OpenAPI Specification

git clone https://github.com/OAI/OpenAPI-Specification

#2 check that the JSON Schema is valid

check-jsonschema --verbose --schemafile "https://json-schema.org/draft/2020-12/schema" OpenAPI-Specification/schemas/v3.1/schema.json

 ok -- validation done
The following files were checked:
  OpenAPI-Specification/schemas/v3.1/schema.json

#3 run datamodel-codegen (fails)

datamodel-codegen --input-file-type jsonschema --input OpenAPI-Specification/schemas/v3.1/schema.json --output model.py

Error:

  File "/home/u30576/.local/lib/python3.10/site-packages/pydantic/main.py", line 509, in model_validate
    return cls.__pydantic_validator__.validate_python(
pydantic_core._pydantic_core.ValidationError: 1 validation error for JsonSchemaObject
patternProperties.^x-
  Input should be a valid dictionary or instance of JsonSchemaObject [type=model_type, input_value=True, input_type=bool]
    For further information visit https://errors.pydantic.dev/2.6/v/model_type

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

@koxudaxi With the risk of disturbing you, is there any other information needed?

If not, would you be able to confirm that this is a known issue or am I doing something wrong?
If it is a known issue, is this likely to be featured? How much work is it? Is it a good first issue?

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

@koxudaxi This is a blocker for us. Is there anything we can do make this move forward?

from datamodel-code-generator.

koxudaxi avatar koxudaxi commented on September 21, 2024

Sorry for the late reply.
I ran it with the repositories and commands you presented and generated the code.
I don't think pydantic is currently capable of handling multiple patternProperties. Specifically, I think it is limited to determining if it matches a single regex, as in this example.
What is the model of Pydantic you are envisioning?
https://github.com/koxudaxi/datamodel-code-generator/blob/b3fbbcade9814d4080098ae61ba69e6f8dd018f5/tests/data/expected/main/main_ jsonschema_pattern_properties_by_reference/output.py#L20

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

I'm not sure. Will have to get back to you on that. Preferably, something that works and makes sense :)

Is this issue related to: #715

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

@koxudaxi It could be that I'm not answering your actual question below (please advise if so).

Just so that we understand this the same. There are two challenges here:

  1. the actual regexp (pydantic seems to be a lot more restrictive)
  2. multiple patternProperties as seen in the schema for reqstool

1 Actual regexp

It seems as the regexp "^[a-z]{1}[0-9]{1}$" in your link to TextResponse is quite restrictive which is understandable if it is to be easy to create a valid python class name from the regexp. However, the patternProperty can look quite different as we've seen in our schema for reqstool, but more importantly, for well-adopted standards such as OpenAPI.

For OpenAPI 3.1 there seems to be a bit of a various with the patternProperties, e.g.:

2 multiple patternProperties

I think that given the initial example with requirement_annotations and patternProperties keys"^implementations" and "^tests" pydantic should create a class requirement_annotations with two objects as instance variables. I'm not sure how pydantic normally goes about naming of those two classes, but it seems as the keys for the two patternProperties can be be used as is (with disregard of the ^).

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

@koxudaxi Is the information above enough to be able to move forward?

from datamodel-code-generator.

lfvjimisola avatar lfvjimisola commented on September 21, 2024

@koxudaxi Anything we can do to help move this forward?

from datamodel-code-generator.

danielxpander avatar danielxpander commented on September 21, 2024

Is there any update on this? :')

from datamodel-code-generator.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.