Spaces:
				
			
			
	
			
			
		Sleeping
		
	
	
	
			
			
	
	
	
	
		
		
		Sleeping
		
	doc: Added docstring for flatten function in utils.py
Browse files
    	
        pstuts_rag/pstuts_rag/utils.py
    CHANGED
    
    | 
         @@ -1,4 +1,4 @@ 
     | 
|
| 1 | 
         
            -
            from typing import Dict, Type
         
     | 
| 2 | 
         | 
| 3 | 
         
             
            from langchain_openai import ChatOpenAI
         
     | 
| 4 | 
         
             
            from langchain_openai.embeddings import OpenAIEmbeddings
         
     | 
| 
         @@ -90,3 +90,54 @@ EmbeddingsAPISelector: Dict[ 
     | 
|
| 90 | 
         
             
                ModelAPI.OPENAI: OpenAIEmbeddings,
         
     | 
| 91 | 
         
             
                ModelAPI.OLLAMA: OllamaEmbeddings,
         
     | 
| 92 | 
         
             
            }
         
     | 
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
|
| 
         | 
| 
         | 
|
| 1 | 
         
            +
            from typing import Dict, List, Type, Any, Iterator
         
     | 
| 2 | 
         | 
| 3 | 
         
             
            from langchain_openai import ChatOpenAI
         
     | 
| 4 | 
         
             
            from langchain_openai.embeddings import OpenAIEmbeddings
         
     | 
| 
         | 
|
| 90 | 
         
             
                ModelAPI.OPENAI: OpenAIEmbeddings,
         
     | 
| 91 | 
         
             
                ModelAPI.OLLAMA: OllamaEmbeddings,
         
     | 
| 92 | 
         
             
            }
         
     | 
| 93 | 
         
            +
             
     | 
| 94 | 
         
            +
             
     | 
| 95 | 
         
            +
            def flatten(lst: List[Any]):
         
     | 
| 96 | 
         
            +
                """
         
     | 
| 97 | 
         
            +
                Recursively flatten a nested list structure into a single-level generator.
         
     | 
| 98 | 
         
            +
             
     | 
| 99 | 
         
            +
                Takes a list that may contain nested lists and yields all elements
         
     | 
| 100 | 
         
            +
                in a flat sequence. Uses recursive generators to handle arbitrary
         
     | 
| 101 | 
         
            +
                nesting depth efficiently.
         
     | 
| 102 | 
         
            +
             
     | 
| 103 | 
         
            +
                Args:
         
     | 
| 104 | 
         
            +
                    lst (List[Any]): The input list which may contain nested lists
         
     | 
| 105 | 
         
            +
             
     | 
| 106 | 
         
            +
                Yields:
         
     | 
| 107 | 
         
            +
                    Any: Individual elements from the flattened list structure
         
     | 
| 108 | 
         
            +
             
     | 
| 109 | 
         
            +
                Example:
         
     | 
| 110 | 
         
            +
                    >>> list(flatten([1, [2, 3], [4, [5, 6]]]))
         
     | 
| 111 | 
         
            +
                    [1, 2, 3, 4, 5, 6]
         
     | 
| 112 | 
         
            +
             
     | 
| 113 | 
         
            +
                    >>> list(flatten(['a', ['b', 'c'], 'd']))
         
     | 
| 114 | 
         
            +
                    ['a', 'b', 'c', 'd']
         
     | 
| 115 | 
         
            +
                """
         
     | 
| 116 | 
         
            +
                for item in lst:
         
     | 
| 117 | 
         
            +
                    if isinstance(item, list):
         
     | 
| 118 | 
         
            +
                        yield from flatten(item)
         
     | 
| 119 | 
         
            +
                    else:
         
     | 
| 120 | 
         
            +
                        yield item
         
     | 
| 121 | 
         
            +
             
     | 
| 122 | 
         
            +
             
     | 
| 123 | 
         
            +
            def batch(iterable: List[Any], size: int = 16) -> Iterator[List[Any]]:
         
     | 
| 124 | 
         
            +
                """
         
     | 
| 125 | 
         
            +
                Batch an iterable into chunks of specified size.
         
     | 
| 126 | 
         
            +
             
     | 
| 127 | 
         
            +
                Yields successive chunks from the input iterable, each containing
         
     | 
| 128 | 
         
            +
                at most 'size' elements. Useful for processing large collections
         
     | 
| 129 | 
         
            +
                in manageable batches to avoid memory issues or API rate limits.
         
     | 
| 130 | 
         
            +
             
     | 
| 131 | 
         
            +
                Args:
         
     | 
| 132 | 
         
            +
                    iterable (List[Any]): The input list to be batched
         
     | 
| 133 | 
         
            +
                    size (int, optional): Maximum size of each batch. Defaults to 16.
         
     | 
| 134 | 
         
            +
             
     | 
| 135 | 
         
            +
                Yields:
         
     | 
| 136 | 
         
            +
                    List[Any]: Successive batches of the input iterable
         
     | 
| 137 | 
         
            +
             
     | 
| 138 | 
         
            +
                Example:
         
     | 
| 139 | 
         
            +
                    >>> list(batch([1, 2, 3, 4, 5], 2))
         
     | 
| 140 | 
         
            +
                    [[1, 2], [3, 4], [5]]
         
     | 
| 141 | 
         
            +
                """
         
     | 
| 142 | 
         
            +
                for i in range(0, len(iterable), size):
         
     | 
| 143 | 
         
            +
                    yield iterable[i : i + size]
         
     |