code: def apply(self, func, **kwargs):
          
          self.call_queue.append((func, kwargs))
  
          def call_queue_closure(data, call_queues):
              result = data.copy()
              for func, kwargs in call_queues:
                  try:
                      result = func(result, **kwargs)
                  except Exception as e:
                      self.call_queue = []
                      raise e
              return result
  
          new_data = call_queue_closure(self.data, self.call_queue)
          self.call_queue = []
          return PandasOnPythonFramePartition(new_data)
docs: Apply some callable function to the data in this partition.
  
          Note: It is up to the implementation how kwargs are handled. They are
              an important part of many implementations. As of right now, they
              are not serialized.
  
          Args:
              func: The lambda to apply (may already be correctly formatted)
  
          Returns:
               A new `BaseFramePartition` containing the object that has had `func`
               applied to it.