def push(self, local_path, remote_path, bundle_id=None, timeout=None):
        """
        Pushes a file from the local machine to the iOS device.

        Args:
            remote_path (str): The path on the iOS device where the file will be saved.
            local_path (str): The path of the file on the local machine.
            bundle_id (str, optional): The bundle identifier of the app. Defaults to None.
            timeout (int, optional): The timeout in seconds for the remote device operation. Defaults to None.

        Raises:
            LocalDeviceError: If the device is remote.

        Examples:

            >>> dev = connect_device("iOS:///http+usbmux://udid")
            >>> dev.push("test.png", "/DCIM/test.png")
            >>> dev.push("test.png", "/DCIM/test_rename.png")
            >>> dev.push("test.key", "/Documents/", "com.apple.Keynote")  # Push to the Documents directory of the Keynote app
            >>> dev.push("test.key", "/Documents/test.key", "com.apple.Keynote")

            Push file without suffix cannot be renamed, so the following code will push file to the path considered as a directory
            >>> dev.push("test", "/Documents/test", "com.apple.Keynote")  # The pushed file will be /Documents/test
            >>> dev.push("test", "/Documents/test_rename", "com.apple.Keynote")  # The pushed file will be /Documents/test_rename/test

        """
        if not self.is_local_device:
            raise LocalDeviceError()
        TIDevice.push(self.udid, local_path, remote_path, bundle_id=bundle_id)

        Pushes a file from the local machine to the iOS device.

        Args:
            remote_path (str): The path on the iOS device where the file will be saved.
            local_path (str): The path of the file on the local machine.
            bundle_id (str, optional): The bundle identifier of the app. Defaults to None.
            timeout (int, optional): The timeout in seconds for the remote device operation. Defaults to None.

        Raises:
            LocalDeviceError: If the device is remote.

        Examples:

            >>> dev = connect_device("iOS:///http+usbmux://udid")
            >>> dev.push("test.png", "/DCIM/test.png")
            >>> dev.push("test.png", "/DCIM/test_rename.png")
            >>> dev.push("test.key", "/Documents/", "com.apple.Keynote")  # Push to the Documents directory of the Keynote app
            >>> dev.push("test.key", "/Documents/test.key", "com.apple.Keynote")

            Push file without suffix cannot be renamed, so the following code will push file to the path considered as a directory
            >>> dev.push("test", "/Documents/test", "com.apple.Keynote")  # The pushed file will be /Documents/test
            >>> dev.push("test", "/Documents/test_rename", "com.apple.Keynote")  # The pushed file will be /Documents/test_rename/test

        
airtest/core/ios/ios.py