Repository: Rapptz/discord.py
File: discord/guild.py (Python)

Code before:
        You must have :attr:`~Permissions.manage_roles` to do this.

        .. versionchanged:: 1.6
            Can now pass ``int`` to ``colour`` keyword-only parameter.

        .. versionadded:: 2.0
            The ``display_icon`` keyword-only parameter was added.

        .. versionchanged:: 2.0
            This function will now raise :exc:`TypeError` instead of
            ``InvalidArgument``.

        Parameters
        -----------
        name: :class:`str`
            The role name. Defaults to 'new role'.
        permissions: :class:`Permissions`
            The permissions to have. Defaults to no permissions.
        colour: Union[:class:`Colour`, :class:`int`]
            The colour for the role. Defaults to :meth:`Colour.default`.
            This is aliased to ``color`` as well.
        secondary_colour: Union[:class:`Colour`, :class:`int`, None]
            The secondary colour for the role.
        tertiary_colour: Union[:class:`Colour`, :class:`int`, None]
            The tertiary colour for the role. Can only be used for the holographic role preset,
            which is ``(11127295, 16759788, 16761760)``
        hoist: :class:`bool`
            Indicates if the role should be shown separately in the member list.
            Defaults to ``False``.
        display_icon: Union[:class:`bytes`, :class:`str`]
            A :term:`py:bytes-like object` representing the icon
            or :class:`str` representing unicode emoji that should be used as a role icon.
            Only PNG/JPEG is supported.
            This is only available to guilds that contain ``ROLE_ICONS`` in :attr:`features`.
        mentionable: :class:`bool`
            Indicates if the role should be mentionable by others.
            Defaults to ``False``.
        reason: Optional[:class:`str`]
            The reason for creating this role. Shows up on the audit log.

        Raises
        -------
        Forbidden
            You do not have permissions to create the role.
        HTTPException
            Creating the role failed.
        TypeError
            An invalid keyword argument was given.

        Returns
        --------

Review comment (suggestion):
``Union``s with ``None`` should be replaced with ``Optional``
```suggestion
        secondary_colour: Optional[Union[:class:`Colour`, :class:`int`]]
            The secondary colour for the role.
        tertiary_colour: Optional[Union[:class:`Colour`, :class:`int`]]
            The tertiary colour for the role. Can only be used for the holographic role preset,
            which is ``(11127295, 16759788, 16761760)``
```

Code after:
        You must have :attr:`~Permissions.manage_roles` to do this.

        .. versionchanged:: 1.6
            Can now pass ``int`` to ``colour`` keyword-only parameter.

        .. versionadded:: 2.0
            The ``display_icon`` keyword-only parameter was added.

        .. versionchanged:: 2.0
            This function will now raise :exc:`TypeError` instead of
            ``InvalidArgument``.

        .. versionchanged:: 2.6
            The ``colour`` and ``color`` parameters now set the role's primary color.


        Parameters
        -----------
        name: :class:`str`
            The role name. Defaults to 'new role'.
        permissions: :class:`Permissions`
            The permissions to have. Defaults to no permissions.
        colour: Union[:class:`Colour`, :class:`int`]
            The colour for the role. Defaults to :meth:`Colour.default`.
            This is aliased to ``color`` as well.
        secondary_colour: Optional[Union[:class:`Colour`, :class:`int`]]
            The secondary colour for the role.

            .. versionadded:: 2.6
        tertiary_colour: Optional[Union[:class:`Colour`, :class:`int`]]
            The tertiary colour for the role. Can only be used for the holographic role preset,
            which is ``(11127295, 16759788, 16761760)``

            .. versionadded:: 2.6
        hoist: :class:`bool`
            Indicates if the role should be shown separately in the member list.
            Defaults to ``False``.
        display_icon: Union[:class:`bytes`, :class:`str`]
            A :term:`py:bytes-like object` representing the icon
            or :class:`str` representing unicode emoji that should be used as a role icon.
            Only PNG/JPEG is supported.
            This is only available to guilds that contain ``ROLE_ICONS`` in :attr:`features`.
        mentionable: :class:`bool`
            Indicates if the role should be mentionable by others.
            Defaults to ``False``.
        reason: Optional[:class:`str`]
            The reason for creating this role. Shows up on the audit log.

        Raises
        -------
        Forbidden