Arthur de Jong

Open Source / Free Software developer

summaryrefslogtreecommitdiffstats
path: root/stdnum/ca/bn.py
diff options
context:
space:
mode:
authorArthur de Jong <arthur@arthurdejong.org>2019-04-28 23:35:42 +0200
committerArthur de Jong <arthur@arthurdejong.org>2019-04-29 21:31:14 +0200
commit48ff92e300696e2449070ac03b4916c76d4e77a3 (patch)
tree7cbdf6e9e626bd2cac7b98ca2ad5ac7436d5cdaa /stdnum/ca/bn.py
parent3aeec68735d75a4835122990bef232ed415b07d5 (diff)
Use an internal isdigits() function instead of str.isdigit()
The problem with the latter is that it will also accept all kinds of unicode digits that are not the ASCII 0-9 digits causing all kinds of problems in check digit calculations. Some of these unicode characters are also considered digits by int() but some are not (such as the SUPERSCRIPT TWO unicode character). Closes https://github.com/arthurdejong/python-stdnum/issues/96
Diffstat (limited to 'stdnum/ca/bn.py')
-rw-r--r--stdnum/ca/bn.py6
1 files changed, 3 insertions, 3 deletions
diff --git a/stdnum/ca/bn.py b/stdnum/ca/bn.py
index d55f34a..0345d83 100644
--- a/stdnum/ca/bn.py
+++ b/stdnum/ca/bn.py
@@ -45,7 +45,7 @@ InvalidFormat: ...
from stdnum import luhn
from stdnum.exceptions import *
-from stdnum.util import clean
+from stdnum.util import clean, isdigits
def compact(number):
@@ -60,13 +60,13 @@ def validate(number):
number = compact(number)
if len(number) not in (9, 15):
raise InvalidLength()
- if not number[:9].isdigit():
+ if not isdigits(number[:9]):
raise InvalidFormat()
luhn.validate(number[:9])
if len(number) == 15:
if number[9:11] not in ('RC', 'RM', 'RP', 'RT'):
raise InvalidComponent()
- if not number[11:].isdigit():
+ if not isdigits(number[11:]):
raise InvalidFormat()
return number