(version, error_correction, data_list)
| 548 | |
| 549 | |
| 550 | def 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) |
nothing calls this directly
no test coverage detected