Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions Cheetah/SettingsManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,8 @@ def stringIsNumber(S):
This also works for complex numbers and numbers with +/- in front."""

S = S.strip()
if not S:
return False

if S[0] in '-+' and len(S) > 1:
S = S[1:].strip()
Expand Down
12 changes: 12 additions & 0 deletions Cheetah/Tests/Misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,15 @@ def test_mergeDictionaries(self):
}
result = SettingsManager.mergeNestedDictionaries(left, right)
self.assertEqual(result, expect)

def test_stringIsNumber(self):
self.assertTrue(SettingsManager.stringIsNumber('42'))
self.assertTrue(SettingsManager.stringIsNumber(' -1.5 '))
self.assertFalse(SettingsManager.stringIsNumber('x'))
self.assertFalse(SettingsManager.stringIsNumber(''))
self.assertFalse(SettingsManager.stringIsNumber(' '))

def test_empty_setting_value(self):
manager = SettingsManager.SettingsManager()
manager.updateSettingsFromConfigStr('foo =')
self.assertEqual(manager.setting('foo'), '')
7 changes: 7 additions & 0 deletions docs/news.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,13 @@ News
Development (master)
--------------------

Bug fixes:

- Fixed ``SettingsManager.stringIsNumber``: it indexed the string
without checking for an empty one, so a config file or a
``#compiler-settings`` block with a blank value raised
``IndexError``.

- Dropped support for Python 3.4 and 3.5.

3.4.0.post5 (2025-11-29)
Expand Down