(
old_code: str,
entry_point: str,
rm_prefix_lines: Optional[str] = None,
eofs: List = None,
codegen: bool = False,
global_code: bool = False,
chat: bool = False
)
| 341 | |
| 342 | |
| 343 | def sanitize( |
| 344 | old_code: str, |
| 345 | entry_point: str, |
| 346 | rm_prefix_lines: Optional[str] = None, |
| 347 | eofs: List = None, |
| 348 | codegen: bool = False, |
| 349 | global_code: bool = False, |
| 350 | chat: bool = False |
| 351 | ): |
| 352 | new_code = old_code.replace("\r\n", "\n").replace("\\_", "_").replace("if __name__", "if 1 or __name__") |
| 353 | if codegen: |
| 354 | new_code = remove_space_for_codegen(new_code) |
| 355 | if global_code and "```" in new_code: |
| 356 | if not chat: |
| 357 | new_code = new_code.split("```")[0] |
| 358 | return new_code.strip() |
| 359 | else: |
| 360 | if len(new_code.split("```python\n")) > 1: |
| 361 | new_code = new_code.split("```python\n")[1] |
| 362 | elif len(new_code.split("```")) > 1: |
| 363 | new_code = new_code.split("```")[1] |
| 364 | new_code = new_code.split("```")[0] |
| 365 | |
| 366 | return new_code.strip() |
| 367 | |
| 368 | |
| 369 | |
| 370 | if new_code.endswith("```"): |
| 371 | new_code = new_code[:-3] |
| 372 | if rm_prefix_lines is not None: |
| 373 | new_code = "\n".join( |
| 374 | [ |
| 375 | line |
| 376 | for line in old_code.splitlines() |
| 377 | if not line.startswith(rm_prefix_lines) |
| 378 | ] |
| 379 | ) |
| 380 | |
| 381 | new_code = "\n" + new_code |
| 382 | def_left = "def " + entry_point |
| 383 | |
| 384 | # basic handling of chat output |
| 385 | new_code = new_code.replace("\n```python\n", "\n```\n") |
| 386 | if def_left in new_code: |
| 387 | for chunk in new_code.split("\n```\n"): |
| 388 | if def_left in chunk: |
| 389 | new_code = chunk |
| 390 | break |
| 391 | else: |
| 392 | new_code = new_code.split("```")[0] |
| 393 | |
| 394 | if codegen: |
| 395 | for chunk in new_code.split("\"\"\""): |
| 396 | if def_left in chunk: |
| 397 | new_code = chunk |
| 398 | break |
| 399 | |
| 400 | chunks = [chunk for chunk in re.split(f"{def_left}\s*\(", new_code)] |
no test coverage detected