code: def get_statements_by_hash(hash_list, ev_limit=100, best_first=True, tries=2):
      
      if not isinstance(hash_list, list):
          raise ValueError("The `hash_list` input is a list, not %s."
                           % type(hash_list))
      if not hash_list:
          return []
      if isinstance(hash_list[0], str):
          hash_list = [int(h) for h in hash_list]
      if not all([isinstance(h, int) for h in hash_list]):
          raise ValueError("Hashes must be ints or strings that can be "
                           "converted into ints.")
      resp = submit_statement_request('post', 'from_hashes', ev_limit=ev_limit,
                                      data={'hashes': hash_list},
                                      best_first=best_first, tries=tries)
      return stmts_from_json(resp.json()['statements'].values())
docs: Get fully formed statements from a list of hashes.
  
      Parameters
      ----------
      hash_list : list[int or str]
          A list of statement hashes.
      ev_limit : int or None
          Limit the amount of evidence returned per Statement. Default is 100.
      best_first : bool
          If True, the preassembled statements will be sorted by the amount of
          evidence they have, and those with the most evidence will be
          prioritized. When using `max_stmts`, this means you will get the "best"
          statements. If False, statements will be queried in arbitrary order.
      tries : int > 0
          Set the number of times to try the query. The database often caches
          results, so if a query times out the first time, trying again after a
          timeout will often succeed fast enough to avoid a timeout. This can
          also help gracefully handle an unreliable connection, if you're
          willing to wait. Default is 2.