python-stdnum branch master updated. 1.17-45-g09d595b
[
Date Prev][
Date Next]
[
Thread Prev][
Thread Next]
python-stdnum branch master updated. 1.17-45-g09d595b
- From: Commits of the python-stdnum project <python-stdnum-commits [at] lists.arthurdejong.org>
- To: python-stdnum-commits [at] lists.arthurdejong.org
- Reply-to: python-stdnum-users [at] lists.arthurdejong.org, python-stdnum-commits [at] lists.arthurdejong.org
- Subject: python-stdnum branch master updated. 1.17-45-g09d595b
- Date: Wed, 19 Oct 2022 21:19:44 +0200 (CEST)
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "python-stdnum".
The branch, master has been updated
via 09d595bad2333bcd1641104ee672f9c4ad4ba6df (commit)
via 7c2153eec8ce32a395ed83f5f759813f2101ddc6 (commit)
from 1003033fa0e97726d92f47231f96cf02fb35869a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
https://arthurdejong.org/git/python-stdnum/commit/?id=09d595bad2333bcd1641104ee672f9c4ad4ba6df
commit 09d595bad2333bcd1641104ee672f9c4ad4ba6df
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Wed Oct 19 21:16:19 2022 +0200
Improve validation of CAS Registry Number
This ensures that a leading 0 is treated as invalid.
diff --git a/stdnum/casrn.py b/stdnum/casrn.py
index acd5d7f..cb0555b 100644
--- a/stdnum/casrn.py
+++ b/stdnum/casrn.py
@@ -1,6 +1,6 @@
# casrn.py - functions for handling CAS Registry Numbers
#
-# Copyright (C) 2017 Arthur de Jong
+# Copyright (C) 2017-2022 Arthur de Jong
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
@@ -32,12 +32,21 @@ More information:
Traceback (most recent call last):
...
InvalidChecksum: ...
+>>> validate('012770-26-2')
+Traceback (most recent call last):
+ ...
+InvalidFormat: ...
"""
+import re
+
from stdnum.exceptions import *
from stdnum.util import clean, isdigits
+_cas_re = re.compile(r'^[1-9][0-9]{1,6}-[0-9]{2}-[0-9]$')
+
+
def compact(number):
"""Convert the number to the minimal representation."""
number = clean(number, ' ').strip()
@@ -59,9 +68,7 @@ def validate(number):
number = compact(number)
if not 7 <= len(number) <= 12:
raise InvalidLength()
- if not isdigits(number[:-5]) or not isdigits(number[-4:-2]):
- raise InvalidFormat()
- if number[-2] != '-' or number[-5] != '-':
+ if not _cas_re.match(number):
raise InvalidFormat()
if number[-1] != calc_check_digit(number[:-1]):
raise InvalidChecksum()
https://arthurdejong.org/git/python-stdnum/commit/?id=7c2153eec8ce32a395ed83f5f759813f2101ddc6
commit 7c2153eec8ce32a395ed83f5f759813f2101ddc6
Author: Arthur de Jong <arthur@arthurdejong.org>
Date: Wed Oct 19 21:13:51 2022 +0200
Remove duplicate CAS Registry Number
The recently added stdnum.cas module was already available as teh
stdnum.casrn module.
Reverts acb6934
diff --git a/stdnum/cas.py b/stdnum/cas.py
deleted file mode 100644
index 98ebf5a..0000000
--- a/stdnum/cas.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# cas.py - functions for handling CAS registry numbers
-#
-# Copyright (C) 2022 Arthur de Jong
-#
-# This library is free software; you can redistribute it and/or
-# modify it under the terms of the GNU Lesser General Public
-# License as published by the Free Software Foundation; either
-# version 2.1 of the License, or (at your option) any later version.
-#
-# This library is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-# Lesser General Public License for more details.
-#
-# You should have received a copy of the GNU Lesser General Public
-# License along with this library; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-# 02110-1301 USA
-
-"""CAS Registry Number.
-
-A CAS Registry Number, CAS RN or CAS number is a unique identified assign to
-chemical substances. The number is issued by the Chemical Abstracts Service
-(CAS).
-
-The number consists of 5 to 10 digits and is assigned sequentially and
-contains a check digit.
-
-More information:
-
-* https://en.wikipedia.org/wiki/CAS_Registry_Number
-* https://www.cas.org/cas-data/cas-registry
-
->>> validate('12770-26-2')
-'12770-26-2'
->>> validate('12770-29-2')
-Traceback (most recent call last):
- ...
-InvalidChecksum: ...
->>> validate('012770-26-2')
-Traceback (most recent call last):
- ...
-InvalidFormat: ...
-"""
-
-import re
-
-from stdnum.exceptions import *
-from stdnum.util import clean
-
-
-_cas_re = re.compile(r'^[1-9][0-9]{1,6}-[0-9]{2}-[0-9]$')
-
-
-def compact(number):
- """Convert the number to the minimal representation."""
- return clean(number).strip()
-
-
-def calc_check_digit(number):
- """Calculate the check digit. The number passed should not have the check
- digit included."""
- number = clean(number, '-').strip()
- return str(sum((i + 1) * int(n) for i, n in enumerate(reversed(number))) %
10)
-
-
-def validate(number):
- """Check if the number is a valid CAS Registry Number."""
- number = compact(number)
- if not _cas_re.match(number):
- raise InvalidFormat()
- if not number[-1] == calc_check_digit(number[:-1]):
- raise InvalidChecksum()
- return number
-
-
-def is_valid(number):
- """Check if the number is a valid CAS Registry Number."""
- try:
- return bool(validate(number))
- except ValidationError:
- return False
-----------------------------------------------------------------------
Summary of changes:
stdnum/cas.py | 82 ---------------------------------------------------------
stdnum/casrn.py | 15 ++++++++---
2 files changed, 11 insertions(+), 86 deletions(-)
delete mode 100644 stdnum/cas.py
hooks/post-receive
--
python-stdnum
- python-stdnum branch master updated. 1.17-45-g09d595b,
Commits of the python-stdnum project