code: def put(self, session):
          
          if self._sessions.full():
              raise queue.Full
  
          txn = session._transaction
          if txn is None or txn.committed() or txn._rolled_back:
              session.transaction()
              self._pending_sessions.put(session)
          else:
              super(TransactionPingingPool, self).put(session)
docs: Return a session to the pool.
  
          Never blocks:  if the pool is full, raises.
  
          :type session: :class:`~google.cloud.spanner_v1.session.Session`
          :param session: the session being returned.
  
          :raises: :exc:`six.moves.queue.Full` if the queue is full.