<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 async def commission( self, *, enable_ssh: bool = None, skip_networking: bool = None, skip_storage: bool = None, commissioning_scripts: typing.Sequence[str] = None, testing_scripts: typing.Sequence[str] = None, wait: bool = False, wait_interval: int = 5):
 """Commission this machine. :param enable_ssh: Prevent the machine from powering off after running commissioning scripts and enable your user to SSH into the machine. :type enable_ssh: `bool` :param skip_networking: Skip updating the MAAS interfaces for the machine. :type skip_networking: `bool` :param skip_storage: Skip update the MAAS block devices for the machine. :type skip_storage: `bool` :param commissioning_scripts: List of extra commisisoning scripts to run. If the name of the commissioning scripts match a tag, then all commissioning scripts with that tag will be used. :type commissioning_scripts: sequence of `str` :param testing_scripts: List of testing scripts to run after commissioning. By default a small set of testing scripts will run by default. Passing empty list will disable running any testing scripts during commissioning. If the name of the testing scripts match a tag, then all testing scripts with that tag will be used. :type testing_scripts: sequence of `str` :param wait: If specified, wait until the commissioning is complete. :param wait_interval: How often to poll, defaults to 5 seconds """

        params = {"system_id": self.system_id}
        if enable_ssh is not None:
            params["enable_ssh"] = enable_ssh
        if skip_networking is not None:
            params["skip_networking"] = skip_networking
        if skip_storage is not None:
            params["skip_storage"] = skip_storage
        if (commissioning_scripts is not None and
                len(commissioning_scripts) > 0):
            params["commissioning_scripts"] = ",".join(commissioning_scripts)
        if testing_scripts is not None:
            if len(testing_scripts) == 0 or testing_scripts == "none":
                params["testing_scripts"] = ["none"]
            else:
                params["testing_scripts"] = ",".join(testing_scripts)
        self._data = await self._handler.commission(**params)
        if not wait:
            return self
        else:
            # Wait for the machine to be fully commissioned.
            while self.status in [
                    NodeStatus.COMMISSIONING, NodeStatus.TESTING]:
                await asyncio.sleep(wait_interval)
                self._data = await self._handler.read(system_id=self.system_id)
            if self.status == NodeStatus.FAILED_COMMISSIONING:
                msg = "{hostname} failed to commission.".format(
                    hostname=self.hostname)
                raise FailedCommissioning(msg, self)
            if self.status == NodeStatus.FAILED_TESTING:
                msg = "{hostname} failed testing.".format(
                    hostname=self.hostname)
                raise FailedTesting(msg, self)
            return self