code: def hashleftjoin(left, right, key=None, lkey=None, rkey=None, missing=None,
                   cache=True, lprefix=None, rprefix=None):
      
  
      lkey, rkey = keys_from_args(left, right, key, lkey, rkey)
      return HashLeftJoinView(left, right, lkey, rkey, missing=missing,
                              cache=cache, lprefix=lprefix, rprefix=rprefix)
docs: Alternative implementation of :func:`petl.transform.joins.leftjoin`,
      where the join is executed by constructing an in-memory lookup for the
      right hand table, then iterating over rows from the left hand table.
      
      May be faster and/or more resource efficient where the right table is small
      and the left table is large.
      
      By default data from right hand table is cached to improve performance
      (only available when `key` is given).
  
      Left and right tables with different key fields can be handled via the
      `lkey` and `rkey` arguments.