- Add support for Python 3.8.
- Refactor internal implementation details. Instead of importing everything from
nti.transactions.transactions
, more specific modules are used to group objects by function. The old imports continue to work. In 4.0 they will generate a deprecation warning and in 5.0 they will be removed. - Add a Pyramid tween to manage transactions and transaction retries.
- Make
TransactionLoop
place its transaction manager in explicit mode. This can be faster and is easier to reason about, but forbids the called handler from manually callingbegin()
,abort()
orcommit()
. See issue 20. - Move
transaction.begin()
out of the block of code that is retried. Previously, an error there would probably be raised anyway and not retried, unless a subclass had made customizations. - Add
setUp
andtearDown
methods to TransactionLoop to give subclasses a place to hook into the inners of the transaction loop. This is particularly helpful if they need to do something after the transaction manager has been put in explicit mode. See issue 22.
- Fix compatibility with perfmetrics 3.0: drop
from __future__ import unicode_literals
.
- Use the new public
isRetryableError
in transaction 2.2. The interface for this package is unchanged, but a major version bump of a dependency necessitates a major bump here. See issue 12. - Test support for Python 3.7; remove test support for Python 3.4.
TransactionLoop
is more careful to not keep traceback objects around, especially on Python 2.
- When the
TransactionLoop
raises aCommitFailedError
from aTypeError
, it preserves the original message. - Test support for Python 3.6.
- Add a new ObjectDataManager that will attempt to execute after other ObjectDataManagers.
- Add support for Python 3.
- Eliminate ZODB dependency. Instead of raising a
ZODB.POSException.StorageError
for unexpectedTypeErrors
during commit, the new classnti.transactions.interfaces.CommitFailedError
is raised. - Introduce a new subclass of
TransactionError
,AbortFailedError
that is raised when an abort fails due to a system error.