| 147 | |
| 148 | |
| 149 | def create_chunks( |
| 150 | text: str, size: int = 100, language: str | None = None |
| 151 | ) -> list[Chunk]: |
| 152 | if size <= 0: |
| 153 | raise ValueError(f'size must be a positive integer, got {size}') |
| 154 | |
| 155 | try: |
| 156 | parser = get_parser(language) if language is not None else None |
| 157 | except (AttributeError, LookupError): |
| 158 | logger.debug(f'Language {language} not supported. Falling back to raw string.') |
| 159 | parser = None |
| 160 | |
| 161 | if parser is None: |
| 162 | # fallback to raw string |
| 163 | return _create_chunks_from_raw_string(text, size) |
| 164 | |
| 165 | return _create_chunks_from_tree_sitter( |
| 166 | parser.parse(text.encode('utf-8')), text, max_chunk_lines=size |
| 167 | ) |
| 168 | |
| 169 | |
| 170 | def normalized_lcs(chunk: str, query: str) -> float: |