@utilities.arguments_not_none<EOL><INDENT>def set_genus_type(self, genus_type):<DEDENT>
if self.get_genus_type_metadata().is_read_only():<EOL><INDENT>raise errors.NoAccess()<EOL><DEDENT>if not self._is_valid_type(genus_type):<EOL><INDENT>raise errors.InvalidArgument()<EOL><DEDENT>self._my_map['<STR_LIT>'] = str(genus_type)<EOL>
Sets a genus.

        A genus cannot be cleared because all objects have at minimum a
        root genus.

        arg:    genus_type (osid.type.Type): the new genus
        raise:  InvalidArgument - ``genus_type`` is invalid
        raise:  NoAccess - ``Metadata.isReadonly()`` is ``true``
        raise:  NullArgument - ``genus_type`` is ``null``
        *compliance: mandatory -- This method must be implemented.*