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

Function create_data

qrcode/util.py:550–584  ·  view source on GitHub ↗
(version, error_correction, data_list)

Source from the content-addressed store, hash-verified

548
549
550def create_data(version, error_correction, data_list):
551 buffer = BitBuffer()
552 for data in data_list:
553 buffer.put(data.mode, 4)
554 buffer.put(len(data), length_in_bits(data.mode, version))
555 data.write(buffer)
556
557 # Calculate the maximum number of bits for the given version.
558 rs_blocks = base.rs_blocks(version, error_correction)
559 bit_limit = sum(block.data_count * 8 for block in rs_blocks)
560 if len(buffer) > bit_limit:
561 raise exceptions.DataOverflowError(
562 "Code length overflow. Data size (%s) > size available (%s)"
563 % (len(buffer), bit_limit)
564 )
565
566 # Terminate the bits (add up to four 0s).
567 for _ in range(min(bit_limit - len(buffer), 4)):
568 buffer.put_bit(False)
569
570 # Delimit the string into 8-bit words, padding with 0s if necessary.
571 delimit = len(buffer) % 8
572 if delimit:
573 for _ in range(8 - delimit):
574 buffer.put_bit(False)
575
576 # Add special alternating padding bitstrings until buffer is full.
577 bytes_to_fill = (bit_limit - len(buffer)) // 8
578 for i in range(bytes_to_fill):
579 if i % 2 == 0:
580 buffer.put(PAD0, 8)
581 else:
582 buffer.put(PAD1, 8)
583
584 return create_bytes(buffer, rs_blocks)

Callers

nothing calls this directly

Calls 6

putMethod · 0.95
put_bitMethod · 0.95
BitBufferClass · 0.85
length_in_bitsFunction · 0.85
create_bytesFunction · 0.85
writeMethod · 0.80

Tested by

no test coverage detected