Savings - AttributeError: 'NoneType' object has no attribute 'append'

It is possible that Savings screen can crash with the

AttributeError: 'NoneType' object has no attribute 'append'

from this line:

pending_transfers.append(cart_transfer)  # type: ignore[union-attr, arg-type]

That's because mypy is correct and this pending_transfers could be None as observed. I think that issue was mentioned during Savings review but unfortunately this was not fixed then.

I think that SavingsData shouldn't allow None for their pending_transfers property.

IMO it should be initialized with an empty list just like ProposalsData does with proposals property.

full tb:

2023-12-13 08:33:08.426 |  ERROR    | clive.__private.ui.app:_handle_exception:397 - AttributeError: 'NoneType' object has no attribute 'append'
Traceback (most recent call last):
  File "/clive/venv/lib/python3.10/site-packages/textual/message_pump.py", line 552, in _process_messages_loop
    await self._dispatch_message(message)
  File "/clive/venv/lib/python3.10/site-packages/textual/message_pump.py", line 614, in _dispatch_message
    await self.on_event(message)
  File "/clive/venv/lib/python3.10/site-packages/textual/message_pump.py", line 683, in on_event
    await self._on_message(event)
  File "/clive/venv/lib/python3.10/site-packages/textual/message_pump.py", line 704, in _on_message
    await invoke(method, message)
  File "/clive/venv/lib/python3.10/site-packages/textual/_callback.py", line 74, in invoke
    return await _invoke(callback, *params)
  File "/clive/venv/lib/python3.10/site-packages/textual/_callback.py", line 36, in _invoke
    result = await result
  File "/clive/venv/lib/python3.10/site-packages/textual/widget.py", line 3315, in _on_click
    await self.broker_event("click", event)
  File "/clive/venv/lib/python3.10/site-packages/textual/widget.py", line 3303, in broker_event
    return await self.app._broker_event(event_name, event, default_namespace=self)
  File "/clive/venv/lib/python3.10/site-packages/textual/app.py", line 2829, in _broker_event
    await self.run_action(action, default_namespace=default_namespace)  # type: ignore[arg-type]
  File "/clive/venv/lib/python3.10/site-packages/textual/app.py", line 2760, in run_action
    handled = await self._dispatch_action(action_target, action_name, params)
  File "/clive/venv/lib/python3.10/site-packages/textual/app.py", line 2794, in _dispatch_action
    await invoke(public_method, *params)
  File "/clive/venv/lib/python3.10/site-packages/textual/_callback.py", line 74, in invoke
    return await _invoke(callback, *params)
  File "/clive/venv/lib/python3.10/site-packages/textual/_callback.py", line 36, in _invoke
    result = await result
  File "/clive/venv/lib/python3.10/site-packages/textual/app.py", line 3039, in action_check_bindings
    await self.check_bindings(key, priority=False)
  File "/clive/venv/lib/python3.10/site-packages/textual/app.py", line 2667, in check_bindings
    if await self.run_action(binding.action, namespace):
  File "/clive/venv/lib/python3.10/site-packages/textual/app.py", line 2760, in run_action
    handled = await self._dispatch_action(action_target, action_name, params)
  File "/clive/venv/lib/python3.10/site-packages/textual/app.py", line 2794, in _dispatch_action
    await invoke(public_method, *params)
  File "/clive/venv/lib/python3.10/site-packages/textual/_callback.py", line 74, in invoke
    return await _invoke(callback, *params)
  File "/clive/venv/lib/python3.10/site-packages/textual/_callback.py", line 34, in _invoke
    result = callback(*params[:parameter_count])
  File "/clive/venv/lib/python3.10/site-packages/clive/__private/ui/operations/bindings/operation_action_bindings.py", line 66, in action_finalize
    if self.__add_to_cart():
  File "/clive/venv/lib/python3.10/site-packages/clive/__private/ui/operations/bindings/operation_action_bindings.py", line 119, in __add_to_cart
    operation = self.create_operation()
  File "/clive/venv/lib/python3.10/site-packages/clive/__private/ui/operations/bindings/operation_action_bindings.py", line 49, in create_operation
    operation = self._create_operation()
  File "/clive/venv/lib/python3.10/site-packages/clive/__private/ui/operations/savings_operations/savings_operations.py", line 216, in _create_operation
    request_id = self.__create_request_id()
  File "/clive/venv/lib/python3.10/site-packages/clive/__private/ui/operations/savings_operations/savings_operations.py", line 236, in __create_request_id
    pending_transfers.append(cart_transfer)  # type: ignore[union-attr, arg-type]
AttributeError: 'NoneType' object has no attribute 'append'