MCPcopy Index your code
hub / github.com/python/cpython / _lookup

Function _lookup

Tools/unicode/dawg.py:455–485  ·  view source on GitHub ↗
(packed, s)

Source from the content-addressed store, hash-verified

453 return data[_lookup(packed, s)]
454
455def _lookup(packed, s):
456 stringpos = 0
457 node_offset = 0
458 skipped = 0 # keep track of number of final nodes that we skipped
459 false = False
460 while stringpos < len(s):
461 #print(f"{node_offset=} {stringpos=}")
462 _, final, edge_offset = decode_node(packed, node_offset)
463 prev_child_offset = edge_offset
464 edgeindex = 0
465 while 1:
466 child_offset, last_edge, size, edgelabel_chars_offset = decode_edge(packed, edgeindex, prev_child_offset, edge_offset)
467 #print(f" {edge_offset=} {child_offset=} {last_edge=} {size=} {edgelabel_chars_offset=}")
468 edgeindex += 1
469 prev_child_offset = child_offset
470 if _match_edge(packed, s, size, edgelabel_chars_offset, stringpos):
471 # match
472 if final:
473 skipped += 1
474 stringpos += size
475 node_offset = child_offset
476 break
477 if last_edge:
478 raise KeyError
479 descendant_count, _, _ = decode_node(packed, child_offset)
480 skipped += descendant_count
481 edge_offset = edgelabel_chars_offset + size
482 _, final, _ = decode_node(packed, node_offset)
483 if final:
484 return skipped
485 raise KeyError
486
487def inverse_lookup(packed, inverse, x):
488 pos = inverse[x]

Callers 1

lookupFunction · 0.85

Calls 3

decode_nodeFunction · 0.85
decode_edgeFunction · 0.85
_match_edgeFunction · 0.85

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…