|
import tokenize |
|
import io |
|
import base64 |
|
import numpy as np |
|
from PIL import Image |
|
|
|
def remove_inline_comments_safe(code: str) -> str: |
|
result = [] |
|
tokens = tokenize.generate_tokens(io.StringIO(code).readline) |
|
|
|
last_line = -1 |
|
current_line = '' |
|
for tok_type, tok_string, (srow, scol), (_, _), _ in tokens: |
|
if srow != last_line: |
|
if current_line: |
|
result.append(current_line.rstrip()) |
|
current_line = '' |
|
last_line = srow |
|
|
|
if tok_type == tokenize.COMMENT: |
|
|
|
continue |
|
|
|
current_line += tok_string |
|
|
|
if current_line: |
|
result.append(current_line.rstrip()) |
|
|
|
return '\n'.join(result) |
|
|
|
|
|
def image_to_jpg_base64_url(image: Image.Image | np.ndarray) -> str: |
|
"""Return a base64 *JPEG* data‑URL from a PIL image or NumPy array.""" |
|
if isinstance(image, np.ndarray): |
|
image = Image.fromarray(image) |
|
if image.mode in {"RGBA", "LA"}: |
|
image = image.convert("RGB") |
|
with io.BytesIO() as buffer: |
|
image.save(buffer, format="JPEG") |
|
encoded: str = base64.b64encode(buffer.getvalue()).decode() |
|
return f"data:image/jpeg;base64,{encoded}" |
|
|