in src-python/trp/trp2.py [0:0]
def add_key_values(self, key_name: str, values: List[TBlock], page_block: TBlock):
if not key_name:
raise ValueError("need values and key_name")
if not values:
logger.debug(f"add_key_values: empty values for key: {key_name}, will create virtual empty block")
values = [self.add_virtual_block(text="", page_block=page_block)]
for value_block in values:
if not value_block.id or not self.get_block_by_id(value_block.id):
raise ValueError("value blocks to add have to already exist. Use add_word_block for new ones.")
if values[0].page:
page_block = self.pages[values[0].page - 1]
else:
page_block = self.pages[0]
value_block = TDocument.create_value_block(values=values)
self.add_block(value_block, page=page_block)
virtual_block = self.add_virtual_block(text=key_name, page_block=page_block)
id = str(uuid4())
key_block = TBlock(
id=id,
block_type="KEY_VALUE_SET",
entity_types=["KEY"],
confidence=99,
geometry=TGeometry(bounding_box=TBoundingBox(width=0, height=0, left=0, top=0),
polygon=[TPoint(x=0, y=0), TPoint(x=0, y=0)]),
)
key_block.add_ids_to_relationships(relationships_type="VALUE", ids=[value_block.id])
key_block.add_ids_to_relationships(relationships_type="CHILD", ids=[virtual_block.id])
logger.debug(f"add key with id: {id} and key_name: {key_name}")
self.add_block(key_block, page=page_block)