<s> from __future__ import unicode_literals <EOL> from . . import BaseProvider <EOL> class Provider ( BaseProvider ) : <EOL> def ean ( self , length = <NUM_LIT> ) : <EOL> code = [ self . random_digit ( ) for i in range ( length - <NUM_LIT:1> ) ] <EOL> if length not in ( <NUM_LIT:8> , <NUM_LIT> ) : <EOL> raise AssertionError ( "<STR_LIT>" ) <EOL> if length == <NUM_LIT:8> : <EOL> weights = [ <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> ] <EOL> elif length == <NUM_LIT> : <EOL> weights = [ <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> , <NUM_LIT:1> , <NUM_LIT:3> ] <EOL> weighted_sum = sum ( [ x * y for x , y in zip ( code , weights ) ] ) <EOL> check_digit = ( <NUM_LIT:10> - weighted_sum % <NUM_LIT:10> ) % <NUM_LIT:10> <EOL> code . append ( check_digit ) <EOL> return '<STR_LIT>' . join ( str ( x ) for x in code ) <EOL> def ean8 ( self ) : <EOL> return self . ean ( <NUM_LIT:8> ) <EOL> def ean13 ( self ) : <EOL> return self . ean ( <NUM_LIT> ) </s>
