diff --git a/docs/transaction.rst b/docs/transaction.rst index 8fe31a8e..30c0b2dd 100644 --- a/docs/transaction.rst +++ b/docs/transaction.rst @@ -108,8 +108,8 @@ Now, say you make another attempt to debit one of the accounts when they don't h assert e.cause_response_code == 'TransactionCanceledException' # the first 'update' was a reason for the cancellation assert e.cancellation_reasons[0].code == 'ConditionalCheckFailed' - # when return_values=ALL_OLD, the old values can be accessed from the item property - assert BankStatement.from_dynamodb_dict(e.cancellation_reasons[0].item) == user1_statement + # when return_values=ALL_OLD, the old values can be accessed from the raw_item property + assert BankStatement.from_dynamodb_dict(e.cancellation_reasons[0].raw_item) == user1_statement # the second 'update' wasn't a reason, but was cancelled too assert e.cancellation_reasons[1] is None diff --git a/pynamodb/connection/base.py b/pynamodb/connection/base.py index 939d5c08..d0181a81 100644 --- a/pynamodb/connection/base.py +++ b/pynamodb/connection/base.py @@ -357,7 +357,7 @@ def _make_api_call(self, operation_name: str, operation_kwargs: Dict) -> Dict: CancellationReason( code=d['Code'], message=d.get('Message'), - item=cast(Optional[Dict[str, Dict[str, Any]]], d.get('Item')), + raw_item=cast(Optional[Dict[str, Dict[str, Any]]], d.get('Item')), ) if d['Code'] != 'None' else None ) for d in cancellation_reasons diff --git a/pynamodb/exceptions.py b/pynamodb/exceptions.py index 42f69fcb..822230e3 100644 --- a/pynamodb/exceptions.py +++ b/pynamodb/exceptions.py @@ -134,7 +134,7 @@ class CancellationReason: """ code: str message: Optional[str] = None - item: Optional[Dict[str, Dict[str, Any]]] = None + raw_item: Optional[Dict[str, Dict[str, Any]]] = None class TransactWriteError(PynamoDBException): diff --git a/tests/integration/test_transaction_integration.py b/tests/integration/test_transaction_integration.py index 48e44641..15651dfc 100644 --- a/tests/integration/test_transaction_integration.py +++ b/tests/integration/test_transaction_integration.py @@ -181,7 +181,7 @@ def test_transact_write__error__transaction_cancelled__condition_check_failure__ assert exc_info.value.cause_response_code == TRANSACTION_CANCELLED assert 'ConditionalCheckFailed' in exc_info.value.cause_response_message assert exc_info.value.cancellation_reasons == [ - CancellationReason(code='ConditionalCheckFailed', message='The conditional request failed', item=User(1).to_dynamodb_dict()), + CancellationReason(code='ConditionalCheckFailed', message='The conditional request failed', raw_item=User(1).to_dynamodb_dict()), ] assert isinstance(exc_info.value.cause, botocore.exceptions.ClientError) assert User.Meta.table_name in exc_info.value.cause.MSG_TEMPLATE