|
15 | 15 | # See the License for the specific language governing permissions and |
16 | 16 | # limitations under the License. |
17 | 17 | import io |
18 | | -import json |
| 18 | +import orjson |
19 | 19 | from typing import Union, Optional, Tuple, Callable |
20 | 20 |
|
21 | 21 | from cachetools import LRUCache |
@@ -66,7 +66,7 @@ def _resolve_named_schema( |
66 | 66 | for ref in schema.references: |
67 | 67 | referenced_schema = schema_registry_client.get_version(ref.subject, ref.version, True) |
68 | 68 | ref_registry = _resolve_named_schema(referenced_schema.schema, schema_registry_client, ref_registry) |
69 | | - referenced_schema_dict = json.loads(referenced_schema.schema.schema_str) |
| 69 | + referenced_schema_dict = orjson.loads(referenced_schema.schema.schema_str) |
70 | 70 | resource = Resource.from_contents( |
71 | 71 | referenced_schema_dict, default_specification=DEFAULT_SPEC) |
72 | 72 | ref_registry = ref_registry.with_resource(ref.name, resource) |
@@ -221,7 +221,7 @@ def __init_impl( |
221 | 221 | else: |
222 | 222 | self._schema = None |
223 | 223 |
|
224 | | - self._json_encode = json_encode or json.dumps |
| 224 | + self._json_encode = json_encode or (lambda x: orjson.dumps(x).decode("utf-8")) |
225 | 225 | self._registry = schema_registry_client |
226 | 226 | self._rule_registry = ( |
227 | 227 | rule_registry if rule_registry else RuleRegistry.get_global_instance() |
@@ -394,7 +394,7 @@ def _get_parsed_schema(self, schema: Schema) -> Tuple[Optional[JsonSchema], Opti |
394 | 394 | return result |
395 | 395 |
|
396 | 396 | ref_registry = _resolve_named_schema(schema, self._registry) |
397 | | - parsed_schema = json.loads(schema.schema_str) |
| 397 | + parsed_schema = orjson.loads(schema.schema_str) |
398 | 398 |
|
399 | 399 | self._parsed_schemas.set(schema, (parsed_schema, ref_registry)) |
400 | 400 | return parsed_schema, ref_registry |
@@ -510,7 +510,7 @@ def __init_impl( |
510 | 510 | self._rule_registry = rule_registry if rule_registry else RuleRegistry.get_global_instance() |
511 | 511 | self._parsed_schemas = ParsedSchemaCache() |
512 | 512 | self._validators = LRUCache(1000) |
513 | | - self._json_decode = json_decode or json.loads |
| 513 | + self._json_decode = json_decode or orjson.loads |
514 | 514 | self._use_schema_id = None |
515 | 515 |
|
516 | 516 | conf_copy = self._default_conf.copy() |
@@ -659,7 +659,7 @@ def _get_parsed_schema(self, schema: Schema) -> Tuple[Optional[JsonSchema], Opti |
659 | 659 | return result |
660 | 660 |
|
661 | 661 | ref_registry = _resolve_named_schema(schema, self._registry) |
662 | | - parsed_schema = json.loads(schema.schema_str) |
| 662 | + parsed_schema = orjson.loads(schema.schema_str) |
663 | 663 |
|
664 | 664 | self._parsed_schemas.set(schema, (parsed_schema, ref_registry)) |
665 | 665 | return parsed_schema, ref_registry |
|
0 commit comments