diff options
author | Ask Solem <ask@celeryproject.org> | 2016-12-14 14:39:18 -0800 |
---|---|---|
committer | Ask Solem <ask@celeryproject.org> | 2016-12-14 14:39:58 -0800 |
commit | 4e94d0236bbb941e728b5b3be40ee37c5ac501e2 (patch) | |
tree | 152e8138c6bd4262731b1bd1d81379ee22e48e2e | |
parent | a08e48266bd9db548b9d339e4da3613402ae9376 (diff) | |
download | py-amqp-4e94d0236bbb941e728b5b3be40ee37c5ac501e2.tar.gz |
Improve Linux version parsing to handle + and other characters. Closes #119
-rw-r--r-- | .coveragerc | 2 | ||||
-rw-r--r-- | amqp/platform.py | 21 |
2 files changed, 20 insertions, 3 deletions
diff --git a/.coveragerc b/.coveragerc index b2ccbe8..b8e07f0 100644 --- a/.coveragerc +++ b/.coveragerc @@ -2,7 +2,7 @@ branch = 1 cover_pylib = 0 include=*amqp/* -omit = amqp.tests.* +omit = t.* [report] omit = diff --git a/amqp/platform.py b/amqp/platform.py index 53310ca..7de1491 100644 --- a/amqp/platform.py +++ b/amqp/platform.py @@ -3,6 +3,7 @@ from __future__ import absolute_import, unicode_literals import sys import platform +import re # Jython does not have this attribute try: @@ -10,10 +11,26 @@ try: except ImportError: # pragma: no cover from socket import IPPROTO_TCP as SOL_TCP # noqa + +RE_NUM = re.compile(r'(\d+).+') + + +def _linux_version_to_tuple(s): + # type: (str) -> Tuple[int, int, int] + return tuple(map(_versionatom, s.split('.')[:3])) + + +def _versionatom(s): + # type: (str) -> int + if s.isdigit(): + return int(s) + match = RE_NUM.match(s) + return int(match.groups()[0]) if match else 0 + + LINUX_VERSION = None if sys.platform.startswith('linux'): - LINUX_VERSION = tuple(map( - int, platform.release().split('-')[0].split('.'))) + LINUX_VERSION = _linux_version_to_tuple(platform.release()) try: from socket import TCP_USER_TIMEOUT |