@@ -150,14 +150,10 @@ def setup_position_probe_pattern(self, row, col):
150
150
for c in range (- 1 , 8 ): #pylint: disable=invalid-name
151
151
if (col + c <= - 1 or self .module_count <= col + c ):
152
152
continue
153
- #pylint: disable=too-many-boolean-expressions
154
- if ((r >= 0 and r <= 6 and (c == 0 or c == 6 ))
153
+ test = ((r >= 0 and r <= 6 and (c == 0 or c == 6 ))
155
154
or (c >= 0 and c <= 6 and (r == 0 or r == 6 ))
156
- or (r >= 2 and r <= 4 and c >= 2 and c <= 4 )):
157
- self .matrix [row + r , col + c ] = True
158
- else :
159
- self .matrix [row + r , col + c ] = False
160
- #pylint: enable=too-many-boolean-expressions
155
+ or (r >= 2 and r <= 4 and c >= 2 and c <= 4 ))
156
+ self .matrix [row + r , col + c ] = test
161
157
def setup_timing_pattern (self ):
162
158
"""Add the timing data pixels to the matrix"""
163
159
for r in range (8 , self .module_count - 8 ):
@@ -180,11 +176,10 @@ def setup_position_adjust_pattern(self):
180
176
continue
181
177
182
178
for r in range (- 2 , 3 ):
183
- for c in range (- 2 , 3 ):
184
- if abs (r ) == 2 or abs (c ) == 2 or (r == 0 and c == 0 ):
185
- self .matrix [row + r , col + c ] = True
186
- else :
187
- self .matrix [row + r , col + c ] = False
179
+ for c in range (- 2 , 3 ): #pylint: disable=invalid-name
180
+ test = (abs (r ) == 2 or abs (c ) == 2 or
181
+ (r == 0 and c == 0 ))
182
+ self .matrix [row + r , col + c ] = test
188
183
189
184
def setup_type_number (self , test ):
190
185
"""Add the type number pixels to the matrix"""
@@ -227,52 +222,53 @@ def setup_type_info(self, test, mask_pattern):
227
222
self .matrix [self .module_count - 8 , 8 ] = (not test )
228
223
229
224
def map_data (self , data , mask_pattern ):
225
+ """Map the data onto the QR code"""
230
226
inc = - 1
231
227
row = self .module_count - 1
232
- bitIndex = 7
233
- byteIndex = 0
228
+ bit_idx = 7
229
+ byte_idx = 0
234
230
235
231
for col in range (self .module_count - 1 , 0 , - 2 ):
236
232
if col == 6 :
237
233
col -= 1
238
234
239
235
while True :
240
- for c in range (2 ):
241
- if ( self .matrix [row , col - c ] == None ) :
236
+ for c in range (2 ): #pylint: disable=invalid-name
237
+ if self .matrix [row , col - c ] is None :
242
238
dark = False
243
- if byteIndex < len (data ):
244
- dark = ((data [byteIndex ] >> bitIndex ) & 1 ) == 1
239
+ if byte_idx < len (data ):
240
+ dark = ((data [byte_idx ] >> bit_idx ) & 1 ) == 1
245
241
mask = QRUtil .getMask (mask_pattern , row , col - c )
246
242
if mask :
247
243
dark = not dark
248
244
self .matrix [row , col - c ] = dark
249
- bitIndex -= 1
250
- if bitIndex == - 1 :
251
- byteIndex += 1
252
- bitIndex = 7
245
+ bit_idx -= 1
246
+ if bit_idx == - 1 :
247
+ byte_idx += 1
248
+ bit_idx = 7
253
249
row += inc
254
250
if row < 0 or self .module_count <= row :
255
251
row -= inc
256
252
inc = - inc
257
253
break
258
254
259
255
@staticmethod
260
- def create_data (type , ECC , data_list ):
261
- rs_blocks = _getRSBlocks (type , ECC )
256
+ def create_data (qr_type , ecc , data_list ):
257
+ """Check and format data into bit buffer"""
258
+ rs_blocks = _getRSBlocks (qr_type , ecc )
262
259
263
260
buffer = QRBitBuffer ()
264
261
265
- for i in range (len (data_list )):
266
- data = data_list [i ]
262
+ for data in data_list :
267
263
buffer .put (_MODE_8BIT_BYTE , 4 )
268
264
buffer .put (len (data ), 8 )
269
- for i in range ( len ( data )) :
270
- buffer .put (data [ i ] , 8 )
265
+ for byte in data :
266
+ buffer .put (byte , 8 )
271
267
272
268
#// calc num max data.
273
269
total_data_count = 0
274
- for i in range ( len ( rs_blocks )) :
275
- total_data_count += rs_blocks [ i ] ['data' ]
270
+ for block in rs_blocks :
271
+ total_data_count += block ['data' ]
276
272
277
273
if buffer .getLengthInBits () > total_data_count * 8 :
278
274
raise RuntimeError ("Code length overflow: %d > %d" %
@@ -295,75 +291,79 @@ def create_data(type, ECC, data_list):
295
291
break
296
292
buffer .put (_PAD1 , 8 )
297
293
298
- return QRCode .createBytes (buffer , rs_blocks )
294
+ return QRCode .create_bytes (buffer , rs_blocks )
299
295
296
+ #pylint: disable=too-many-locals,too-many-branches
300
297
@staticmethod
301
- def createBytes (buffer , rs_blocks ):
298
+ def create_bytes (buffer , rs_blocks ):
299
+ """Perform error calculation math on bit buffer"""
302
300
offset = 0
303
- maxDcCount = 0
304
- maxEcCount = 0
301
+ max_dc_count = 0
302
+ max_ec_count = 0
305
303
306
304
dcdata = [0 ] * len (rs_blocks )
307
305
ecdata = [0 ] * len (rs_blocks )
308
306
309
- for r in range ( len ( rs_blocks ) ):
307
+ for r , block in enumerate ( rs_blocks ):
310
308
311
- dcCount = rs_blocks [ r ] ['data' ]
312
- ecCount = rs_blocks [ r ][ 'total' ] - dcCount
309
+ dc_count = block ['data' ]
310
+ ec_count = block [ 'total' ] - dc_count
313
311
314
- maxDcCount = max (maxDcCount , dcCount )
315
- maxEcCount = max (maxEcCount , ecCount )
312
+ max_dc_count = max (max_dc_count , dc_count )
313
+ max_ec_count = max (max_ec_count , ec_count )
316
314
317
- dcdata [r ] = [0 for x in range ( dcCount )]
315
+ dcdata [r ] = [0 ] * dc_count
318
316
319
317
for i in range (len (dcdata [r ])):
320
318
dcdata [r ][i ] = 0xff & buffer .buffer [i + offset ]
321
- offset += dcCount
319
+ offset += dc_count
322
320
323
- rsPoly = QRUtil .getErrorCorrectPolynomial (ecCount )
324
- modPoly = QRPolynomial (dcdata [r ], rsPoly .getLength () - 1 )
321
+ rs_poly = QRUtil .getErrorCorrectPolynomial (ec_count )
322
+ mod_poly = QRPolynomial (dcdata [r ], rs_poly .getLength () - 1 )
325
323
326
324
while True :
327
- if modPoly .getLength () - rsPoly .getLength () < 0 :
325
+ if mod_poly .getLength () - rs_poly .getLength () < 0 :
328
326
break
329
- ratio = _glog (modPoly .get (0 )) - _glog (rsPoly .get (0 ))
330
- num = [0 for x in range (modPoly .getLength ())]
331
- for i in range (modPoly .getLength ()):
332
- num [i ] = modPoly .get (i )
333
- for i in range (rsPoly .getLength ()):
334
- num [i ] ^= _gexp (_glog (rsPoly .get (i )) + ratio )
335
- modPoly = QRPolynomial (num , 0 )
336
-
337
- ecdata [r ] = [0 for x in range (rsPoly .getLength ()- 1 )]
327
+ ratio = _glog (mod_poly .get (0 )) - _glog (rs_poly .get (0 ))
328
+ num = [0 for x in range (mod_poly .getLength ())]
329
+ for i in range (mod_poly .getLength ()):
330
+ num [i ] = mod_poly .get (i )
331
+ for i in range (rs_poly .getLength ()):
332
+ num [i ] ^= _gexp (_glog (rs_poly .get (i )) + ratio )
333
+ mod_poly = QRPolynomial (num , 0 )
334
+
335
+ ecdata [r ] = [0 for x in range (rs_poly .getLength ()- 1 )]
338
336
for i in range (len (ecdata [r ])):
339
- modIndex = i + modPoly .getLength () - len (ecdata [r ])
340
- if modIndex >= 0 :
341
- ecdata [r ][i ] = modPoly .get (modIndex )
337
+ mod_index = i + mod_poly .getLength () - len (ecdata [r ])
338
+ if mod_index >= 0 :
339
+ ecdata [r ][i ] = mod_poly .get (mod_index )
342
340
else :
343
341
ecdata [r ][i ] = 0
344
342
345
- totalCodeCount = 0
346
- for i in range ( len ( rs_blocks )) :
347
- totalCodeCount += rs_blocks [ i ] ['total' ]
343
+ total_code_count = 0
344
+ for block in rs_blocks :
345
+ total_code_count += block ['total' ]
348
346
349
- data = [None ] * totalCodeCount
347
+ data = [None ] * total_code_count
350
348
index = 0
351
349
352
- for i in range (maxDcCount ):
350
+ for i in range (max_dc_count ):
353
351
for r in range (len (rs_blocks )):
354
352
if i < len (dcdata [r ]):
355
353
data [index ] = dcdata [r ][i ]
356
354
index += 1
357
355
358
- for i in range (maxEcCount ):
356
+ for i in range (max_ec_count ):
359
357
for r in range (len (rs_blocks )):
360
358
if i < len (ecdata [r ]):
361
359
data [index ] = ecdata [r ][i ]
362
360
index += 1
363
361
364
362
return data
363
+ #pylint: enable=too-many-locals,too-many-branches
365
364
366
365
class QRUtil (object ):
366
+ """A selection of bit manipulation tools for QR generation"""
367
367
PATTERN_POSITION_TABLE = [b'' , b'\x06 \x12 ' , b'\x06 \x16 ' , b'\x06 \x1a ' ,
368
368
b'\x06 \x1e ' , b'\x06 "' , b'\x06 \x16 &' ,
369
369
b'\x06 \x18 *' , b'\x06 \x1a .' , b'\x06 \x1c 2' ]
0 commit comments