docstr: Mark the order with order_id as 'held'. Held is functionally similar
  to 'open'. When a fill (full or partial) arrives, the status
  will automatically change back to open/filled as necessary.
docstr_tok: ["Mark","the","order","with","order_id","as","'held","'",".","Held","is","functionally","similar","to","'open","'",".","When","a","fill","(","full","or","partial",")","arrives",",","the","status","will","automatically","change","back","to","open\/filled","as","necessary","."]
code: def hold(self, order_id, reason=""):
      """
      Mark the order with order_id as 'held'. Held is functionally similar
      to 'open'. When a fill (full or partial) arrives, the status
      will automatically change back to open/filled as necessary.
      """
      if order_id not in self.orders:
          return
  
      cur_order = self.orders[order_id]
      if cur_order.open:
          if cur_order in self.new_orders:
              self.new_orders.remove(cur_order)
          cur_order.hold(reason=reason)
          cur_order.dt = self.current_dt
          # 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 10 for calling the Blotter obj's underlying member method code with example usage: obj.hold(order_id, reason) without return types