(value: str, maximum_bytes: int)
| 245 | |
| 246 | |
| 247 | def bounded_json_text(value: str, maximum_bytes: int) -> tuple[str, int]: |
| 248 | low = 0 |
| 249 | high = len(value) |
| 250 | selected = "" |
| 251 | selected_size = 2 |
| 252 | while low <= high: |
| 253 | midpoint = (low + high) // 2 |
| 254 | candidate = value[:midpoint] |
| 255 | size = len(json.dumps(candidate, separators=(",", ":")).encode("utf-8")) |
| 256 | if size <= maximum_bytes: |
| 257 | selected = candidate |
| 258 | selected_size = size |
| 259 | low = midpoint + 1 |
| 260 | else: |
| 261 | high = midpoint - 1 |
| 262 | return selected, selected_size |
| 263 | |
| 264 | |
| 265 | if __name__ == "__main__": |
no outgoing calls
no test coverage detected