code: def autohash(include=None,                # type: Union[str, Tuple[str]]
               exclude=None,                # type: Union[str, Tuple[str]]
               only_constructor_args=False,  # type: bool
               only_public_fields=False,     # type: bool
               cls=DECORATED
               ):
      
  
      return autohash_decorate(cls, include=include, exclude=exclude, only_constructor_args=only_constructor_args,
                               only_public_fields=only_public_fields)
docs: A decorator to makes objects of the class implement __hash__, so that they can be used correctly for example in
      sets.
      
      Parameters allow to customize the list of attributes that are taken into account in the hash.
  
      :param include: a tuple of explicit attribute names to include (None means all)
      :param exclude: a tuple of explicit attribute names to exclude. In such case, include should be None.
      :param only_constructor_args: if False (default), all fields will be included in the hash, even if they are defined
          in the constructor or dynamically. If True, only constructor arguments will be included in the hash, not any
          other field that would be created in the constructor or dynamically. Please note that this behaviour is the
          opposite from @autodict.
      :param only_public_fields: this parameter is only used when only_constructor_args is set to False. If
          only_public_fields is set to False (default), all fields are used in the hash. Otherwise, class-private fields
          will not be taken into account in the hash. Please note that this behaviour is the opposite from @autodict.
      :return: