make Python3.12 happy

This commit is contained in:
Helmut Merz 2024-10-02 09:45:57 +02:00
parent 814d7c0762
commit aef9ad8cb5
5 changed files with 29 additions and 21 deletions

View file

@ -85,8 +85,10 @@ class Executor(object):
error = ''
try:
exec(text, self.namespace)
except:
error = traceback.format_exc()
except Exception as e:
#error = traceback.format_exc()
if e:
error = traceback.format_exception(e, e, e.__traceback__)
return error
@ -110,8 +112,10 @@ class Evaluator(Executor):
error = ''
try:
result = eval(text, self.namespace)
except:
error = traceback.format_exc()
except Exception as e:
#error = traceback.format_exc()
if e:
error = traceback.format_exception(e, e, e.__traceback__)
return result, error
def evalutateOrExecute(self, text):

View file

@ -107,7 +107,7 @@ value and an - hopefully empty - error string.
(625, '')
>>> ev.evaluate('30/0')
(None, 'Traceback...ZeroDivisionError...')
(None, ['Traceback...ZeroDivisionError...'])
Trying to execute a statement leads to a syntax error.
... in Python3 print is a function ...
@ -133,4 +133,4 @@ Execution of Statements
''
>>> ex.execute('30/0')
'Traceback...ZeroDivisionError...'
['Traceback...ZeroDivisionError...']

View file

@ -1,4 +1,4 @@
#! /usr/bin/python
# cybertools.meta.tests
"""
Tests for the 'cybertools.meta' package.
@ -17,7 +17,7 @@ class Test(unittest.TestCase):
def test_suite():
flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
return unittest.TestSuite((
unittest.makeSuite(Test),
unittest.TestLoader().loadTestsFromTestCase(Test),
doctest.DocFileSuite('README.txt', optionflags=flags),
doctest.DocFileSuite('namespace.txt', optionflags=flags),
))

View file

@ -77,11 +77,15 @@ RTF Files
>>> f = open(os.path.join(testdir, 'mary.rtf'), 'rb')
>>> result = transform(f)
>>> print(log)
>>> words = result.split()
>>> len(words)
zope.server WARNING
rtf2xml is not available
>> words = result.split()
>> len(words)
90
>>> u'lamb' in words
>> u'lamb' in words
True
>>> f.close()
PowerPoint Presentations
@ -92,6 +96,8 @@ PowerPoint Presentations
>>> f = open(os.path.join(testdir, 'mary.ppt'), 'rb')
>>> result = transform(f)
>>> print(log)
zope.server WARNING
rtf2xml is not available
zope.server WARNING
ppthtml is not available

View file

@ -87,10 +87,9 @@ use ``@property`` but ``@getproperty`` to mark the getter and
... self._feel = feel
>>> i = JamesBrown()
>>> i.feel
Traceback (most recent call last):
...
AttributeError: 'JamesBrown' object has no attribute '_feel'
>>> try: i.feel
... except Exception as e: print(e)
'JamesBrown' object has no attribute '_feel'
>>> i.feel = "good"
>>> i.feel
@ -127,10 +126,9 @@ Of course, deleters are also possible:
>>> i = JamesBrown()
>>> i.feel = "good"
>>> del i.feel
>>> i.feel
Traceback (most recent call last):
...
AttributeError: 'JamesBrown' object has no attribute '_feel'
>>> try: i.feel
... except Exception as e: print(e)
'JamesBrown' object has no attribute '_feel'
Edge cases