Skip to content

Commit 6164fcf

Browse files
author
A. Jesse Jiryu Davis
committed
float('inf') isn't available everywhere, use 1e100000 instead
1 parent 084e145 commit 6164fcf

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

pymongo/common.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,9 @@ def validate_positive_float(option, value):
9393
value = float(value)
9494
except (ValueError, TypeError):
9595
raise err
96-
if not 0 < value < float('inf'):
96+
97+
# float('inf') doesn't work in 2.4 or 2.5 on Windows, but this does
98+
if not 0 < value < 1e100000:
9799
raise err
98100

99101
return value

test/test_uri_parser.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import copy
1818
import unittest
19+
import sys
1920

2021
from pymongo.uri_parser import (_partition,
2122
_rpartition,
@@ -92,8 +93,16 @@ def test_split_options(self):
9293
self.assertRaises(ConfigurationError, split_options, 'socketTimeoutMS=0.0')
9394
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=foo')
9495
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=0.0')
95-
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=inf')
96-
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=-inf')
96+
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=1e100000')
97+
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=-1e100000')
98+
99+
# On most platforms float('inf') and float('-inf') represent
100+
# +/- infinity, although on Python 2.4 and 2.5 on Windows those
101+
# expressions are invalid
102+
if not (sys.platform == "win32" and sys.version_info <= (2, 5)):
103+
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=inf')
104+
self.assertRaises(ConfigurationError, split_options, 'connectTimeoutMS=-inf')
105+
97106
self.assertTrue(split_options('socketTimeoutMS=300'))
98107
self.assertTrue(split_options('connectTimeoutMS=300'))
99108
self.assertEqual({'sockettimeoutms': 0.3}, split_options('socketTimeoutMS=300'))

0 commit comments

Comments
 (0)