MCPcopy Index your code
hub / github.com/lincolnloop/python-qrcode / optimal_data_chunks

Function optimal_data_chunks

qrcode/util.py:354–377  ·  view source on GitHub ↗

An iterator returning QRData chunks optimized to the data content. :param minimum: The minimum number of bytes in a row to split as a chunk.

(data, minimum=4)

Source from the content-addressed store, hash-verified

352
353
354def optimal_data_chunks(data, minimum=4):
355 """
356 An iterator returning QRData chunks optimized to the data content.
357
358 :param minimum: The minimum number of bytes in a row to split as a chunk.
359 """
360 data = to_bytestring(data)
361 num_pattern = rb"\d"
362 alpha_pattern = b"[" + re.escape(ALPHA_NUM) + b"]"
363 if len(data) <= minimum:
364 num_pattern = re.compile(b"^" + num_pattern + b"+$")
365 alpha_pattern = re.compile(b"^" + alpha_pattern + b"+$")
366 else:
367 re_repeat = b"{" + str(minimum).encode("ascii") + b",}"
368 num_pattern = re.compile(num_pattern + re_repeat)
369 alpha_pattern = re.compile(alpha_pattern + re_repeat)
370 num_bits = _optimal_split(data, num_pattern)
371 for is_num, chunk in num_bits:
372 if is_num:
373 yield QRData(chunk, mode=MODE_NUMBER, check_data=False)
374 else:
375 for is_alpha, sub_chunk in _optimal_split(chunk, alpha_pattern):
376 mode = MODE_ALPHA_NUM if is_alpha else MODE_8BIT_BYTE
377 yield QRData(sub_chunk, mode=mode, check_data=False)
378
379
380def _optimal_split(data, pattern):

Callers

nothing calls this directly

Calls 3

to_bytestringFunction · 0.85
_optimal_splitFunction · 0.85
QRDataClass · 0.85

Tested by

no test coverage detected