code: def cancel(self, order_id, relay_status=True):
      if order_id not in self.orders:
          return
  
      cur_order = self.orders[order_id]
  
      if cur_order.open:
          order_list = self.open_orders[cur_order.asset]
          if cur_order in order_list:
              order_list.remove(cur_order)
  
          if cur_order in self.new_orders:
              self.new_orders.remove(cur_order)
          cur_order.cancel()
          cur_order.dt = self.current_dt
  
          if relay_status:
              # we want this order's new status to be relayed out
              # along with newly placed orders.
              self.new_orders.append(cur_order)
  
imports: from logbook import Logger
  from collections import defaultdict
  from copy import copy
  from six import iteritems
  from catalyst.assets import Equity, Future, Asset
  from catalyst.finance.order import Order
  from catalyst.finance.slippage import DEFAULT_FUTURE_VOLUME_SLIPPAGE_BAR_LIMIT, VolatilityVolumeShare, VolumeShareSlippage
  from catalyst.finance.commission import DEFAULT_PER_CONTRACT_COST, FUTURE_EXCHANGE_FEES_BY_SYMBOL, PerContract, PerShare
  from catalyst.finance.cancel_policy import NeverCancel
  from catalyst.utils.input_validation import expect_types
  from catalyst.constants import LOG_LEVEL
label_desc: Use image node_id 6 for calling the Blotter obj's underlying member method code with example usage: obj.cancel(order_id, relay_status) without return types