[Zope-dev] transaction pkg py3 / doctests

Chris McDonough chrism at plope.com
Sun Sep 25 17:20:40 EST 2011


Hi all,

I've ported the transaction package to Python 3 here:

http://svn.zope.org/transaction/branches/chrism-py3/

To get Python 3 support, it ditches 2.4 and 2.5 support, although I may
try to readd 2.5 support.

Anyway, it all seems to work given those limitations, but I'm having
trouble making the doctests pass on Python 3.  Are there any doctest
ninjas willing to have a look?

Here's how to see the failure output (I've also appended them below):

svn co svn+ssh://svn.zope.org/repos/main/transaction/branches/chrism-py3
cd chrism-py3
virtualenv3.2 --no-site-packages env32
env32/bin/python setup.py develop
env32/bin/python setup.py test

- C


Doctest output below:

"""
[chrism at thinko transaction]$ env32/bin/python setup.py test -q
running test
running egg_info
writing requirements to transaction.egg-info/requires.txt
writing transaction.egg-info/PKG-INFO
writing top-level names to transaction.egg-info/top_level.txt
writing dependency_links to transaction.egg-info/dependency_links.txt
writing entry points to transaction.egg-info/entry_points.txt
writing manifest file 'transaction.egg-info/SOURCES.txt'
running build_ext
....Failed to abort resource manager: <BasicJar 2FC0090 ('abort',)>
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 506, in abort
    rm.abort(self)
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 318, in abort
    self.check('abort')
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 313, in check
    raise TestTxnException("error %s" % method)
transaction.tests.test_transaction.TestTxnException: error abort
..Error in tpc_abort() on manager <BasicJar 3097E50 ('tpc_abort',
'tpc_vote')>
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 449, in _commitResources
    rm.tpc_vote(self)
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 330, in tpc_vote
    self.check('tpc_vote')
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 313, in check
    raise TestTxnException("error %s" % method)
transaction.tests.test_transaction.TestTxnException: error tpc_vote

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 487, in _cleanup
    rm.tpc_abort(self)
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 334, in tpc_abort
    self.check('tpc_abort')
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 313, in check
    raise TestTxnException("error %s" % method)
transaction.tests.test_transaction.TestTxnException: error tpc_abort
........F.Error in tpc_abort() on manager
<transaction.tests.test_transaction.FailingDataManager object at
0x317abd0>
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 444, in _commitResources
    rm.tpc_begin(self)
  File "<doctest
transaction.tests.test_transaction.test_addAfterCommitHook[29]>", line
3, in tpc_begin
    raise CommitFailure
transaction.tests.test_transaction.CommitFailure

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 487, in _cleanup
    rm.tpc_abort(self)
AttributeError: 'FailingDataManager' object has no attribute 'tpc_abort'
Error in after commit hook exec in <function hookRaise at 0x3178d10> 
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 419, in _callAfterCommitHooks
    hook(status, *args, **kws)
  File "<doctest
transaction.tests.test_transaction.test_addAfterCommitHook[52]>", line
2, in hookRaise
    raise TypeError("Fake raise")
TypeError: Fake raise
FError in tpc_abort() on manager
<transaction.tests.test_transaction.FailingDataManager object at
0x31832d0>
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 444, in _commitResources
    rm.tpc_begin(self)
  File "<doctest
transaction.tests.test_transaction.test_addBeforeCommitHook[29]>", line
3, in tpc_begin
    raise CommitFailure
transaction.tests.test_transaction.CommitFailure

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 487, in _cleanup
    rm.tpc_abort(self)
AttributeError: 'FailingDataManager' object has no attribute 'tpc_abort'
F.Failed to abort resource manager: <BasicJar 31833D0 ('abort',)>
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 506, in abort
    rm.abort(self)
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 318, in abort
    self.check('abort')
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 313, in check
    raise TestTxnException("error %s" % method)
transaction.tests.test_transaction.TestTxnException: error abort
..Error in tpc_abort() on manager <BasicJar 3183E50 ('tpc_abort',
'tpc_vote')>
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 449, in _commitResources
    rm.tpc_vote(self)
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 330, in tpc_vote
    self.check('tpc_vote')
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 313, in check
    raise TestTxnException("error %s" % method)
transaction.tests.test_transaction.TestTxnException: error tpc_vote

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 487, in _cleanup
    rm.tpc_abort(self)
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 334, in tpc_abort
    self.check('tpc_abort')
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 313, in check
    raise TestTxnException("error %s" % method)
transaction.tests.test_transaction.TestTxnException: error tpc_abort
..............Error in tpc_abort() on manager {'name': 'bob'}
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 690, in __init__
    savepoint = datamanager.savepoint
AttributeError: 'SampleDataManager' object has no attribute 'savepoint'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 260, in savepoint
    savepoint = Savepoint(self, optimistic, *self._resources)
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 693, in __init__
    raise TypeError("Savepoints unsupported", datamanager)
TypeError: ('Savepoints unsupported', {'name': 'bob'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 487, in _cleanup
    rm.tpc_abort(self)
  File
"/home/chrism/projects/transaction/transaction/tests/savepointsample.py", line 143, in tpc_abort
    assert transaction is self.transaction, "Must not change
transactions"
AssertionError: Must not change transactions
Error in tpc_abort() on manager {'name': 'sue'}
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 690, in __init__
    savepoint = datamanager.savepoint
AttributeError: 'SampleDataManager' object has no attribute 'savepoint'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 260, in savepoint
    savepoint = Savepoint(self, optimistic, *self._resources)
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 693, in __init__
    raise TypeError("Savepoints unsupported", datamanager)
TypeError: ('Savepoints unsupported', {'name': 'sue'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 487, in _cleanup
    rm.tpc_abort(self)
  File
"/home/chrism/projects/transaction/transaction/tests/savepointsample.py", line 143, in tpc_abort
    assert transaction is self.transaction, "Must not change
transactions"
AssertionError: Must not change transactions
Error in tpc_abort() on manager {'sally-credit': 100.0, 'bob-credit':
0.0, 'name': 'bob', 'bob-balance': 0.0, 'sally-balance': 0.0}
Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 690, in __init__
    savepoint = datamanager.savepoint
AttributeError: 'SampleDataManager' object has no attribute 'savepoint'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 260, in savepoint
    savepoint = Savepoint(self, optimistic, *self._resources)
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 693, in __init__
    raise TypeError("Savepoints unsupported", datamanager)
TypeError: ('Savepoints unsupported', {'name': 'sue'})

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/chrism/projects/transaction/transaction/_transaction.py",
line 487, in _cleanup
    rm.tpc_abort(self)
  File
"/home/chrism/projects/transaction/transaction/tests/savepointsample.py", line 143, in tpc_abort
    assert transaction is self.transaction, "Must not change
transactions"
AssertionError: Must not change transactions
F../home/chrism/projects/transaction/transaction/tests/test_weakset.py:59: DeprecationWarning: Please use assertTrue instead.
  self.assert_(list, type(L))
...............
======================================================================
FAIL: /home/chrism/projects/transaction/transaction/tests/doom.txt
Doctest: doom.txt
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
2113, in runTest
    raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for doom.txt
  File "/home/chrism/projects/transaction/transaction/tests/doom.txt",
line 0

----------------------------------------------------------------------
File "/home/chrism/projects/transaction/transaction/tests/doom.txt",
line 80, in doom.txt
Failed example:
    txn.commit() # doctest: +IGNORE_EXCEPTION_DETAIL
Expected:
    Traceback (most recent call last):
    DoomedTransaction
Got:
    Traceback (most recent call last):
      File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
1248, in __run
        compileflags, 1), test.globs)
      File "<doctest doom.txt[12]>", line 1, in <module>
        txn.commit() # doctest: +IGNORE_EXCEPTION_DETAIL
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
318, in commit
        raise interfaces.DoomedTransaction()
    transaction.interfaces.DoomedTransaction
----------------------------------------------------------------------
File "/home/chrism/projects/transaction/transaction/tests/doom.txt",
line 83, in doom.txt
Failed example:
    txn.commit() # doctest: +IGNORE_EXCEPTION_DETAIL
Expected:
    Traceback (most recent call last):
    DoomedTransaction
Got:
    Traceback (most recent call last):
      File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
1248, in __run
        compileflags, 1), test.globs)
      File "<doctest doom.txt[13]>", line 1, in <module>
        txn.commit() # doctest: +IGNORE_EXCEPTION_DETAIL
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
318, in commit
        raise interfaces.DoomedTransaction()
    transaction.interfaces.DoomedTransaction


======================================================================
FAIL: test_addAfterCommitHook (transaction.tests.test_transaction)
Doctest: transaction.tests.test_transaction.test_addAfterCommitHook
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
2113, in runTest
    raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for
transaction.tests.test_transaction.test_addAfterCommitHook
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 529, in test_addAfterCommitHook

----------------------------------------------------------------------
File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 612, in transaction.tests.test_transaction.test_addAfterCommitHook
Failed example:
    t.commit() #doctest +IGNORE_EXCEPTION_DETAIL
Expected:
    Traceback (most recent call last):
    ...
    CommitFailure
Got:
    Traceback (most recent call last):
      File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
1248, in __run
        compileflags, 1), test.globs)
      File "<doctest
transaction.tests.test_transaction.test_addAfterCommitHook[33]>", line
1, in <module>
        t.commit() #doctest +IGNORE_EXCEPTION_DETAIL
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
341, in commit
        reraise(t, v, tb)
      File "/home/chrism/projects/transaction/transaction/compat.py",
line 60, in reraise
        raise value
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
332, in commit
        self._commitResources()
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
472, in _commitResources
        reraise(t, v, tb)
      File "/home/chrism/projects/transaction/transaction/compat.py",
line 60, in reraise
        raise value
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
444, in _commitResources
        rm.tpc_begin(self)
      File "<doctest
transaction.tests.test_transaction.test_addAfterCommitHook[29]>", line
3, in tpc_begin
        raise CommitFailure
    transaction.tests.test_transaction.CommitFailure


======================================================================
FAIL: test_addBeforeCommitHook (transaction.tests.test_transaction)
Doctest: transaction.tests.test_transaction.test_addBeforeCommitHook
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
2113, in runTest
    raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for
transaction.tests.test_transaction.test_addBeforeCommitHook
  File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 391, in test_addBeforeCommitHook

----------------------------------------------------------------------
File
"/home/chrism/projects/transaction/transaction/tests/test_transaction.py", line 474, in transaction.tests.test_transaction.test_addBeforeCommitHook
Failed example:
    t.commit() #doctest +IGNORE_EXCEPTION_DETAIL
Expected:
    Traceback (most recent call last):
    ...
    CommitFailure
Got:
    Traceback (most recent call last):
      File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
1248, in __run
        compileflags, 1), test.globs)
      File "<doctest
transaction.tests.test_transaction.test_addBeforeCommitHook[33]>", line
1, in <module>
        t.commit() #doctest +IGNORE_EXCEPTION_DETAIL
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
341, in commit
        reraise(t, v, tb)
      File "/home/chrism/projects/transaction/transaction/compat.py",
line 60, in reraise
        raise value
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
332, in commit
        self._commitResources()
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
472, in _commitResources
        reraise(t, v, tb)
      File "/home/chrism/projects/transaction/transaction/compat.py",
line 60, in reraise
        raise value
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
444, in _commitResources
        rm.tpc_begin(self)
      File "<doctest
transaction.tests.test_transaction.test_addBeforeCommitHook[29]>", line
3, in tpc_begin
        raise CommitFailure
    transaction.tests.test_transaction.CommitFailure


======================================================================
FAIL: /home/chrism/projects/transaction/transaction/tests/savepoint.txt
Doctest: savepoint.txt
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
2113, in runTest
    raise self.failureException(self.format_failure(new.getvalue()))
AssertionError: Failed doctest test for savepoint.txt
  File
"/home/chrism/projects/transaction/transaction/tests/savepoint.txt",
line 0

----------------------------------------------------------------------
File
"/home/chrism/projects/transaction/transaction/tests/savepoint.txt",
line 187, in savepoint.txt
Failed example:
    savepoint2.rollback() #doctest: +IGNORE_EXCEPTION_DETAIL
Expected:
    Traceback (most recent call last):
    ...
    InvalidSavepointRollbackError
Got:
    Traceback (most recent call last):
      File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
1248, in __run
        compileflags, 1), test.globs)
      File "<doctest savepoint.txt[47]>", line 1, in <module>
        savepoint2.rollback() #doctest: +IGNORE_EXCEPTION_DETAIL
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
703, in rollback
        raise interfaces.InvalidSavepointRollbackError
    transaction.interfaces.InvalidSavepointRollbackError
----------------------------------------------------------------------
File
"/home/chrism/projects/transaction/transaction/tests/savepoint.txt",
line 192, in savepoint.txt
Failed example:
    savepoint1.rollback() #doctest: +IGNORE_EXCEPTION_DETAIL
Expected:
    Traceback (most recent call last):
    ...
    InvalidSavepointRollbackError
Got:
    Traceback (most recent call last):
      File "/home/chrism/opt/Python-3.2/lib/python3.2/doctest.py", line
1248, in __run
        compileflags, 1), test.globs)
      File "<doctest savepoint.txt[48]>", line 1, in <module>
        savepoint1.rollback() #doctest: +IGNORE_EXCEPTION_DETAIL
      File
"/home/chrism/projects/transaction/transaction/_transaction.py", line
703, in rollback
        raise interfaces.InvalidSavepointRollbackError
    transaction.interfaces.InvalidSavepointRollbackError


----------------------------------------------------------------------
Ran 53 tests in 0.063s

FAILED (failures=4)
[chrism at thinko transaction]$ 
"""




More information about the Zope-Dev mailing list