[docs]classCompressedStringList(CompressedList):"""CompressedList implementation for lists of strings."""
[docs]def__init__(self,unlist_data:List[str],partitioning:Partitioning,element_metadata:dict=None,metadata:dict=None,**kwargs,):"""Initialize a CompressedStringList. Args: unlist_data: List of strings. partitioning: Partitioning object defining element boundaries. element_metadata: Optional metadata for elements. metadata: Optional general metadata. kwargs: Additional arguments. """super().__init__(unlist_data,partitioning,element_type="string",element_metadata=element_metadata,metadata=metadata)
def_extract_range(self,start:int,end:int)->List[str]:"""Extract a range from unlist_data. Args: start: Start index (inclusive). end: End index (exclusive). Returns: List of strings. """returnself._unlist_data[start:end]
[docs]@classmethoddeffrom_list(cls,lst:List[List[str]],names:Optional[Sequence[str]]=None,metadata:dict=None)->"CompressedStringList":"""Create a `CompressedStringList` from a list of string lists. Args: lst: List of string lists. names: Optional names for list elements. metadata: Optional metadata. Returns: A new `CompressedStringList`. """# Flatten the listflat_data=[]forsublistinlst:flat_data.extend(sublist)# Create partitioningpartitioning=Partitioning.from_list(lst,names)returncls(flat_data,partitioning,metadata=metadata)