'Make an XCom available for tasks to pull.
:param key: A key for the XCom
:type key: string
:param value: A value for the XCom. The value is pickled and stored
in the database.
:type value: any pickleable object
:param execution_date: if provided, the XCom will not be visible until
this date. This can be used, for example, to send a message to a
task on a future date without it being immediately visible.
:type execution_date: datetime'

def xcom_push(self, key, value, execution_date=None):

    if (execution_date and (execution_date < self.execution_date)):
        raise ValueError(u'execution_date    can    not    be    in    the    past    (current    execution_date    is    {};    received    {})'.format(self.execution_date, execution_date))
    XCom.set(key=key, value=value, task_id=self.task_id, dag_id=self.dag_id, execution_date=(execution_date or self.execution_date))
