code: def print_cli(msg, retries=10, step=0.01):
      '''
      Wrapper around print() that suppresses tracebacks on broken pipes (i.e.
      when salt output is piped to less and less is stopped prematurely).
      '''
      while retries:
          try:
              try:
                  print(msg)
              except UnicodeEncodeError:
                  print(msg.encode('utf-8'))
          except IOError as exc:
              err = "{0}".format(exc)
              if exc.errno != errno.EPIPE:
                  if (
                      ("temporarily unavailable" in err or
                       exc.errno in (errno.EAGAIN,)) and
                      retries
                  ):
                      time.sleep(step)
                      retries -= 1
                      continue
                  else:
                      raise
          breaf print_cli(msg, retries=10, step=0.01):
      '''
      Wrapper around print() that suppresses tracebacks on broken pipes (i.e.
      when salt output is piped to less and less is stopped prematurely).
      '''
      while retries:
          try:
              try:
                  print(msg)
              except UnicodeEncodeError:
                  print(msg.encode('utf-8'))
          except IOError as exc:
              err = "{0}".format(exc)
              if exc.errno != errno.EPIPE:
                  if (
                      ("temporarily unavailable" in err or
                       exc.errno in (errno.EAGAIN,)) and
                      retries
                  ):
                      time.sleep(step)
                      retries -= 1
                      continue
                  else:
                      raise
          break
docs: Wrapper around print() that suppresses tracebacks on broken pipes (i.e.
      when salt output is piped to less and less is stopped prematurely).