summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAsk Solem <ask@celeryproject.org>2016-12-14 14:39:18 -0800
committerAsk Solem <ask@celeryproject.org>2016-12-14 14:39:58 -0800
commit4e94d0236bbb941e728b5b3be40ee37c5ac501e2 (patch)
tree152e8138c6bd4262731b1bd1d81379ee22e48e2e
parenta08e48266bd9db548b9d339e4da3613402ae9376 (diff)
downloadpy-amqp-4e94d0236bbb941e728b5b3be40ee37c5ac501e2.tar.gz
Improve Linux version parsing to handle + and other characters. Closes #119
-rw-r--r--.coveragerc2
-rw-r--r--amqp/platform.py21
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