# coding=utf-8

from __future__ import unicode_literals
from .. import BaseProvider


class Provider(BaseProvider):

    def ean(self, length=13):
        code = [self.random_digit() for i in range(length - 1)]

        if length not in (8, 13):
            length = 13

        if length == 8:
            weights = [3,1,3,1,3,1,3]
        elif length == 13:
            weights = [1,3,1,3,1,3,1,3,1,3,1,3]

        weighted_sum = sum([x*y for x,y in zip(code,weights)])
        check_digit = (10 - weighted_sum % 10) % 10
        code.append(check_digit)

        return ''.join(str(x) for x in code)

    def ean8(self):
        return self.ean(8)

    def ean13(self):
        return self.ean(13)


@@ -255,19 +255,58 @@
     
-length =
+raise AssertionError(%22length can only be 8 or
  13
+%22)
 %0A%0A  

Update __init__.py