@@ -160,13 +160,23 @@ def generate_schema_and_hash(data: Any, schema_merges: SchemaMerges | None = Non
160160
161161 decoded = JsonSchemaHelper ._decode_with_merges (normalized , schema_merges )
162162 rust_decoded_hash = deterministic_hash_jsonable (decoded )
163- decoded_value_hash = rust_decoded_hash or JsonSchemaHelper .generate_deterministic_hash (decoded )
163+ if rust_decoded_hash is not None :
164+ decoded_value_hash = rust_decoded_hash
165+ else :
166+ sorted_decoded = JsonSchemaHelper ._sort_object_keys (decoded )
167+ payload = json .dumps (sorted_decoded , ensure_ascii = False , separators = ("," , ":" ))
168+ decoded_value_hash = hashlib .sha256 (payload .encode ("utf-8" )).hexdigest ()
164169
165170 schema = JsonSchemaHelper .generate_schema (decoded , schema_merges )
166171
167172 schema_primitive = schema .to_primitive ()
168173 rust_schema_hash = deterministic_hash_jsonable (schema_primitive )
169- decoded_schema_hash = rust_schema_hash or JsonSchemaHelper .generate_deterministic_hash (schema_primitive )
174+ if rust_schema_hash is not None :
175+ decoded_schema_hash = rust_schema_hash
176+ else :
177+ sorted_schema = JsonSchemaHelper ._sort_object_keys (schema_primitive )
178+ payload = json .dumps (sorted_schema , ensure_ascii = False , separators = ("," , ":" ))
179+ decoded_schema_hash = hashlib .sha256 (payload .encode ("utf-8" )).hexdigest ()
170180 return SchemaComputationResult (
171181 schema = schema ,
172182 decoded_value_hash = decoded_value_hash ,
0 commit comments