def set_genus_type(self, genus_type=None):
if genus_type is None:<EOL><INDENT>raise NullArgument()<EOL><DEDENT>metadata = Metadata(**settings.METADATA['<STR_LIT>'])<EOL>metadata_id = Metadata(**settings.METADATA['<STR_LIT>'])<EOL>if metadata.is_read_only():<EOL><INDENT>raise NoAccess()<EOL><DEDENT>if self._is_valid_input(genus_type, metadata, array=False):<EOL><INDENT>self._my_map['<STR_LIT>'] = str(genus_type)<EOL><DEDENT>elif self._is_valid_input(genus_type, metadata_id, array=False):<EOL><INDENT>self._my_map['<STR_LIT>'] = str(genus_type)<EOL><DEDENT>else:<EOL><INDENT>raise InvalidArgument<EOL><DEDENT>
Sets a genus.

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

        arg:    genusType (osid.type.Type): the new genus
        raise:  InvalidArgument - genusType is invalid
        raise:  NoAccess - metadata.is_readonly() is true
        raise:  NullArgument - genusType is null
        compliance: mandatory - This method must be implemented.