MCPcopy Create free account
hub / github.com/apache/fory / get_encoded_meta_string

Method get_encoded_meta_string

python/pyfory/registry.py:297–323  ·  view source on GitHub ↗
(self, metastr)

Source from the content-addressed store, hash-verified

295 self._encoded_metastrings = {}
296
297 def get_encoded_meta_string(self, metastr) -> EncodedMetaString:
298 encoded_meta_string = self._metastr_to_bytes.get(metastr)
299 if encoded_meta_string is not None:
300 return encoded_meta_string
301 data = metastr.encoded_data
302 length = len(data)
303 if length == 0:
304 encoded_meta_string = EncodedMetaString(b"", 0)
305 elif length <= 16:
306 if length <= 8:
307 v1 = int.from_bytes(data, "little", signed=False)
308 v2 = 0
309 else:
310 v1 = int.from_bytes(data[:8], "little", signed=False)
311 v2 = int.from_bytes(data[8:], "little", signed=False)
312 from pyfory.context import hash_small_metastring
313
314 hashcode = hash_small_metastring(v1, v2, length, metastr.encoding.value)
315 encoded_meta_string = self.get_or_create_encoded_meta_string(data, hashcode)
316 else:
317 from pyfory.lib.mmh3 import hash_buffer
318
319 hashcode = hash_buffer(data, seed=47)[0]
320 hashcode = (hashcode >> 8 << 8) | (metastr.encoding.value & 0xFF)
321 encoded_meta_string = self.get_or_create_encoded_meta_string(data, hashcode)
322 self._metastr_to_bytes[metastr] = encoded_meta_string
323 return encoded_meta_string
324
325 def get_or_create_encoded_meta_string(self, data: bytes, hashcode: int) -> EncodedMetaString:
326 if len(data) == 0:

Calls 5

EncodedMetaStringClass · 0.90
hash_small_metastringFunction · 0.90
getMethod · 0.65
from_bytesMethod · 0.45