"""

This file contains the BasePlugin object, which represents a Roblox plugin ID.

"""

from .baseasset import BaseAsset
from ..utilities.shared import ClientSharedObject


class BasePlugin(BaseAsset):
    """
    Represents a Roblox plugin ID.
    Plugins are a form of Asset and as such this object derives from BaseAsset.

    Attributes:
        _shared: The ClientSharedObject.
        id: The plugin ID.
    """

    def __init__(self, shared: ClientSharedObject, plugin_id: int):
        """
        Arguments:
            shared: The ClientSharedObject.
            plugin_id: The plugin ID.
        """

        super().__init__(shared, plugin_id)

        self._shared: ClientSharedObject = shared
        self.id: int = plugin_id

    async def update(self, name: str = None, description: str = None, comments_enabled: str = None):
        """
        Updates the plugin's data.

        Arguments:
            name: The new group name.
            description: The new group description.
            comments_enabled: Whether to enable comments.
        """
        await self._shared.requests.patch(
            url=self._shared.url_generator.get_url(
                "develop", f"v1/plugins/{self.id}"
            ),
            json={
                "name": name,
                "description": description,
                "commentsEnabled": comments_enabled
            }
        )

"""

This file contains the BasePlugin object, which represents a Roblox plugin ID.

"""

from .baseasset import BaseAsset
from ..utilities.shared import ClientSharedObject


class BasePlugin(BaseAsset):
    """
    Represents a Roblox plugin ID.
    Plugins are a form of Asset and as such this object derives from BaseAsset.

    Attributes:
        _shared: The ClientSharedObject.
        id: The plugin ID.
    """

    def __init__(self, shared: ClientSharedObject, plugin_id: int):
        """
        Arguments:
            shared: The ClientSharedObject.
            plugin_id: The plugin ID.
        """

        super().__init__(shared, plugin_id)

        self._shared: ClientSharedObject = shared
        self.id: int = plugin_id

    async def update(self, name: str = None, description: str = None, comments_enabled: str = None):
        """
        Updates the plugin's data.

        Arguments:
            name: The new group name.
            description: The new group description.
            comments_enabled: Whether to enable comments.
        """
        await self._shared.requests.patch(
            url=self._shared.url_generator.get_url(
                "develop", f"v1/plugins/{self.id}"
            ),
            json={
                "name": name,
                "description": description,
                "commentsEnabled": comments_enabled
            }
        )

This file contains the BasePlugin object, which represents a Roblox plugin ID. Represents a Roblox plugin ID.     Plugins are a form of Asset and as such this object derives from BaseAsset.      Attributes:         _shared: The ClientSharedObject.         id: The plugin ID. Arguments:             shared: The ClientSharedObject.             plugin_id: The plugin ID. Updates the plugin's data.          Arguments:             name: The new group name.             description: The new group description.             comments_enabled: Whether to enable comments.