Skip to content

Commit

Permalink
[Fix] Add logger for compiler and marshal while comparing union (#6034)
Browse files Browse the repository at this point in the history
* feat: fix Union type with dataclass ambiguous error

Signed-off-by: mao3267 <[email protected]>

* fix: direct json comparison for superset

Signed-off-by: mao3267 <[email protected]>

* fix: go.mod missing entry for error

Signed-off-by: mao3267 <[email protected]>

* fix: update go module and sum

Signed-off-by: mao3267 <[email protected]>

* refactor: gci format

Signed-off-by: mao3267 <[email protected]>

* test: add dataset casting tests for same  (one/two levels) and superset (one level) dataclass

Signed-off-by: mao3267 <[email protected]>

* fix: support Pydantic BaseModel comparison

Signed-off-by: mao3267 <[email protected]>

* fix: handle nested pydantic basemodel

Signed-off-by: mao3267 <[email protected]>

* Reviews from Eduardo

Signed-off-by: Future-Outlier <[email protected]>

* fix: support strict subset match

Signed-off-by: mao3267 <[email protected]>

* test: update strict subset match test

Signed-off-by: mao3267 <[email protected]>

* fix: missing go mod entry

Signed-off-by: mao3267 <[email protected]>

* fix: missing go mod entry

Signed-off-by: mao3267 <[email protected]>

* fix: go mod entry

Signed-off-by: mao3267 <[email protected]>

* make go-tidy

Signed-off-by: Future-Outlier <[email protected]>

* comments

Signed-off-by: Future-Outlier <[email protected]>

* fix: strict subset match with draft 2020-12 mashumaro

Signed-off-by: mao3267 <[email protected]>

* refactor: make go-tidy

Signed-off-by: mao3267 <[email protected]>

* fix: support strict subset match with ambiguity

Signed-off-by: mao3267 <[email protected]>

* fix: change test name and fix err

Signed-off-by: mao3267 <[email protected]>

* Add comments

Signed-off-by: Future-Outlier <[email protected]>

* nit

Signed-off-by: Future-Outlier <[email protected]>

* add flytectl go-tidy in makefile

Signed-off-by: Future-Outlier <[email protected]>

* nit

Signed-off-by: Future-Outlier <[email protected]>

* fix: add comment for error checking

Signed-off-by: mao3267 <[email protected]>

* test: basemodel castable test, two level dataclass and ParentToChild failure

Signed-off-by: mao3267 <[email protected]>

* fix: add logger for jsonschema compiler

Signed-off-by: mao3267 <[email protected]>

* fix: add logger for marshal and compiler

Signed-off-by: mao3267 <[email protected]>

* better error msg format

Signed-off-by: Future-Outlier <[email protected]>

---------

Signed-off-by: mao3267 <[email protected]>
Signed-off-by: Future-Outlier <[email protected]>
Co-authored-by: Future-Outlier <[email protected]>
  • Loading branch information
mao3267 and Future-Outlier authored Nov 20, 2024
1 parent 47edd99 commit bee83e5
Showing 1 changed file with 26 additions and 8 deletions.
34 changes: 26 additions & 8 deletions flytepropeller/pkg/compiler/validators/typing.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,22 +28,40 @@ func isSuperTypeInJSON(sourceMetaData, targetMetaData *structpb.Struct) bool {
// For custom types, we expect the JSON schemas in the metadata to come from the same JSON schema package,
// specifically draft 2020-12 from Mashumaro.

srcSchemaBytes, _ := json.Marshal(sourceMetaData.GetFields())
tgtSchemaBytes, _ := json.Marshal(targetMetaData.GetFields())
srcSchemaBytes, err := json.Marshal(sourceMetaData.GetFields())
if err != nil {
logger.Infof(context.Background(), "Failed to marshal source metadata: [%v]", err)
return false
}
tgtSchemaBytes, err := json.Marshal(targetMetaData.GetFields())
if err != nil {
logger.Infof(context.Background(), "Failed to marshal target metadata: [%v]", err)
return false
}

compiler := jsonschema.NewCompiler()

err := compiler.AddResource("src", bytes.NewReader(srcSchemaBytes))
err = compiler.AddResource("src", bytes.NewReader(srcSchemaBytes))
if err != nil {
logger.Infof(context.Background(), "Failed to add resource to compiler: [%v]", err)
return false
}
err = compiler.AddResource("tgt", bytes.NewReader(tgtSchemaBytes))
if err != nil {
logger.Infof(context.Background(), "Failed to add resource to compiler: [%v]", err)
return false
}

srcSchema, _ := compiler.Compile("src")
tgtSchema, _ := compiler.Compile("tgt")
srcSchema, err := compiler.Compile("src")
if err != nil {
logger.Infof(context.Background(), "Failed to compile source schema: [%v]", err)
return false
}
tgtSchema, err := compiler.Compile("tgt")
if err != nil {
logger.Infof(context.Background(), "Failed to compile target schema: [%v]", err)
return false
}

// Compare the two schemas
errs := jscmp.Compare(tgtSchema, srcSchema)
Expand All @@ -63,20 +81,20 @@ func isSuperTypeInJSON(sourceMetaData, targetMetaData *structpb.Struct) bool {
func isSameTypeInJSON(sourceMetaData, targetMetaData *structpb.Struct) bool {
srcSchemaBytes, err := json.Marshal(sourceMetaData.GetFields())
if err != nil {
logger.Infof(context.Background(), "Failed to marshal source metadata: %v", err)
logger.Infof(context.Background(), "Failed to marshal source metadata: [%v]", err)
return false
}

tgtSchemaBytes, err := json.Marshal(targetMetaData.GetFields())
if err != nil {
logger.Infof(context.Background(), "Failed to marshal target metadata: %v", err)
logger.Infof(context.Background(), "Failed to marshal target metadata: [%v]", err)
return false
}

// Use jsondiff to compare the two schemas
patch, err := jsondiff.CompareJSON(srcSchemaBytes, tgtSchemaBytes)
if err != nil {
logger.Infof(context.Background(), "Failed to compare JSON schemas: %v", err)
logger.Infof(context.Background(), "Failed to compare JSON schemas: [%v]", err)
return false
}

Expand Down

0 comments on commit bee83e5

Please sign in to comment.