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

View file

@ -107,7 +107,7 @@ value and an - hopefully empty - error string.
(625, '') (625, '')
>>> ev.evaluate('30/0') >>> ev.evaluate('30/0')
(None, 'Traceback...ZeroDivisionError...') (None, ['Traceback...ZeroDivisionError...'])
Trying to execute a statement leads to a syntax error. Trying to execute a statement leads to a syntax error.
... in Python3 print is a function ... ... in Python3 print is a function ...
@ -133,4 +133,4 @@ Execution of Statements
'' ''
>>> ex.execute('30/0') >>> 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. Tests for the 'cybertools.meta' package.
@ -17,7 +17,7 @@ class Test(unittest.TestCase):
def test_suite(): def test_suite():
flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS flags = doctest.NORMALIZE_WHITESPACE | doctest.ELLIPSIS
return unittest.TestSuite(( return unittest.TestSuite((
unittest.makeSuite(Test), unittest.TestLoader().loadTestsFromTestCase(Test),
doctest.DocFileSuite('README.txt', optionflags=flags), doctest.DocFileSuite('README.txt', optionflags=flags),
doctest.DocFileSuite('namespace.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') >>> f = open(os.path.join(testdir, 'mary.rtf'), 'rb')
>>> result = transform(f) >>> result = transform(f)
>>> print(log) >>> print(log)
>>> words = result.split() zope.server WARNING
>>> len(words) rtf2xml is not available
90
>>> u'lamb' in words >> words = result.split()
True >> len(words)
90
>> u'lamb' in words
True
>>> f.close() >>> f.close()
PowerPoint Presentations PowerPoint Presentations
@ -92,6 +96,8 @@ PowerPoint Presentations
>>> f = open(os.path.join(testdir, 'mary.ppt'), 'rb') >>> f = open(os.path.join(testdir, 'mary.ppt'), 'rb')
>>> result = transform(f) >>> result = transform(f)
>>> print(log) >>> print(log)
zope.server WARNING
rtf2xml is not available
zope.server WARNING zope.server WARNING
ppthtml is not available ppthtml is not available

View file

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