def _conv_block(
        in_channels: int,
        out_channels: int,
        kernel_size: tuple,
        stride: tuple[int, int] | int,
        pool_size: int,
        activation: nn.Module,
    ) -> nn.Sequential:
        """
        Creates a convolutional block with Conv2d, activation, and AvgPool2d layers.

        Parameters
        ----------
        in_channels : int
            Number of input channels.
        out_channels : int
            Number of output channels.
        kernel_size : tuple
            Size of the convolutional kernel.
        stride : int
            Stride of the convolution.
        pool_size : int
            Size of the pooling kernel.
        activation : nn.Module
            Activation function class.

        Returns
        -------
        nn.Sequential
            A sequential container of the convolutional block.
        """
        return nn.Sequential(
            nn.Conv2d(
                in_channels=in_channels,
                out_channels=out_channels,
                kernel_size=kernel_size,
                stride=stride,
                padding=0,
            ),
            activation(),
            nn.AvgPool2d(kernel_size=(1, pool_size), stride=(1, pool_size)),
        )

        Creates a convolutional block with Conv2d, activation, and AvgPool2d layers.

        Parameters
        ----------
        in_channels : int
            Number of input channels.
        out_channels : int
            Number of output channels.
        kernel_size : tuple
            Size of the convolutional kernel.
        stride : int
            Stride of the convolution.
        pool_size : int
            Size of the pooling kernel.
        activation : nn.Module
            Activation function class.

        Returns
        -------
        nn.Sequential
            A sequential container of the convolutional block.
        
braindecode/models/tsinception.py