From 48ff92e300696e2449070ac03b4916c76d4e77a3 Mon Sep 17 00:00:00 2001 From: Arthur de Jong Date: Sun, 28 Apr 2019 23:35:42 +0200 Subject: 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 --- stdnum/sm/coe.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'stdnum/sm') diff --git a/stdnum/sm/coe.py b/stdnum/sm/coe.py index f40ffaa..721bda5 100644 --- a/stdnum/sm/coe.py +++ b/stdnum/sm/coe.py @@ -40,7 +40,7 @@ InvalidLength: ... """ from stdnum.exceptions import * -from stdnum.util import clean +from stdnum.util import clean, isdigits # a collection of all registered numbers with 2 or less digits @@ -63,7 +63,7 @@ def validate(number): number = compact(number) if len(number) > 5 or len(number) == 0: raise InvalidLength() - if not number.isdigit(): + if not isdigits(number): raise InvalidFormat() if len(number) < 3 and int(number) not in _lownumbers: raise InvalidComponent() -- cgit v1.2.3