docs: def get_html5_kwargs(field, render_kw=None, force=False):
      """
      Returns a copy of *render_kw*  with keys added for a bound *field*.
  
      If some *render_kw* are given, the new keys are added to a copy of them,
      which is then returned. If none are given, a dictionary containing only
      the automatically generated keys is returned.
  
      .. important::
  
          This might add new keys but won't changes any values if a key is
          already in *render_kw*,  unless *force* is used.
  
      Raises:
  
          ValueError: if *field* is an :cls:`UnboundField`.
  
      The following keys are set automatically:
  
      :required:
          Sets the *required* key if the `required` flag is set for the
          field (this is mostly the case if it is set by validators). The
          `required` attribute is used by browsers to indicate a required field.
  
      :invalid:
          Set (or appends) 'invalid' to the fields CSS class(es), if the *field*
          got any errors. 'invalid' is also set by browsers if they detect
          errors on a field.
  
      :min / max:
          Sets *min* and / or *max* keys if a `Length` or `NumberRange`
          validator is using them.
  
      :title:
          If the field got a *description* but no *title* key is set, the
          *title* is set to *description*.
  
      """
      if isinstance(field, UnboundField):
          msg = 'This function needs a bound field not: {}'
          raise ValueError(msg.format(field))
      kwargs = render_kw.copy() if render_kw else {}
      kwargs = set_required(field, kwargs, force)  # is field required?
      kwargs = set_invalid(field, kwargs)  # is field invalid?
      kwargs = set_minmax(field, kwargs, force)  # check validators for min/max
      kwargs = set_title(field, kwargs)  # missing tile?
      return kwargs