code: def _get_description(arg):
      
      desc = []
      otherwise = False
      if arg.can_be_inferred:
          desc.append('If left unspecified, it will be inferred automatically.')
          otherwise = True
      elif arg.is_flag:
          desc.append('This argument defaults to '
                      '<code>None</code> and can be omitted.')
          otherwise = True
  
      if arg.type in {'InputPeer', 'InputUser', 'InputChannel',
                      'InputNotifyPeer', 'InputDialogPeer'}:
          desc.append(
              'Anything entity-like will work if the library can find its '
              '<code>Input</code> version (e.g., usernames, <code>Peer</code>, '
              '<code>User</code> or <code>Channel</code> objects, etc.).'
          )
  
      if arg.is_vector:
          if arg.is_generic:
              desc.append('A list of other Requests must be supplied.')
          else:
              desc.append('A list must be supplied.')
      elif arg.is_generic:
          desc.append('A different Request must be supplied for this argument.')
      else:
          otherwise = False  # Always reset to false if no other text is added
  
      if otherwise:
          desc.insert(1, 'Otherwise,')
          desc[-1] = desc[-1][:1].lower() + desc[-1][1:]
  
      return ' '.join(desc).replace(
          'list',
          '<span class="tooltip" title="Any iterable that supports len() '
          'will work too">list</span>'
      )
docs: Generates a proper description for the given argument.