- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
try:
# Get or create cached encoder/decoder pair atomically
encoder_decoder = cls._encoder_cache.get(struct_cls)
if encoder_decoder is None:
encoder = msgspec.json.Encoder()
decoder = msgspec.json.Decoder(type=struct_cls, dec_hook=_dec_hook)
encoder_decoder = (encoder, decoder)
cls._encoder_cache[struct_cls] = encoder_decoder
cls._decoder_cache[struct_cls] = encoder_decoder
else:
encoder, decoder = encoder_decoder