I'm going through pymatching tutorial on constructing a toric code using hypergraph product of two repetition codes. The hypergraph product code construction $H G P\left(H_1, H_2\right)$ takes as input the parity check matrices of two linear codes $C_1:=\operatorname{ker} H_1$ and $C_2:=\operatorname{ker} H_2$. The code $H G P\left(H_1, H_2\right)$ is a CSS code with the parity check matrix $H_X$ corresponding to the $X$-type stabilisers \begin{equation} H_X=\left[H_1 \otimes I_{n_2}, I_{r_1} \otimes H_2^T\right] \end{equation} and the parity check matrix $H_Z$ corresponding to the $Z$-type stabilisers is \begin{equation} H_Z=\left[I_{n_1} \otimes H_2, H_1^T \otimes I_{r_2}\right] \end{equation} where $H_1$ has dimensions $r_1 \times n_1, H_2$ has dimensions $r_2 \times n_2$ and $I_l$ denotes the $l \times l$ identity matrix.
So the full parity check matrix for the toric code is \begin{equation} H=\left(\begin{array}{cc} H_X & 0 \\ 0 & H_Z \end{array}\right) \end{equation}
From the Künneth theorem, the logical $X$ operators of the toric code are given by \begin{equation} L_X=\left(\begin{array}{cc} \mathcal{H}^1 \otimes \mathcal{H}^0 & 0 \\ 0 & \mathcal{H}^0 \otimes \mathcal{H}^1 \end{array}\right) \end{equation} where $\mathcal{H}^0$ and $\mathcal{H}^1$ are the zeroth and first cohomology groups of the length-one chain complex that has the repetition code parity check matrix as its boundary operator.
Question: Is $L_Z$ simply \begin{equation} L_Z=\left(\begin{array}{cc} \mathcal{H}_1 \otimes \mathcal{H}_0 & 0 \\ 0 & \mathcal{H}_0 \otimes \mathcal{H}_1 \end{array}\right) \end{equation} where $\mathcal{H}_0$ and $\mathcal{H}_1$ are the zeroth and first homology groups? How can I compute them? The cohomology groups for $L_X$ in the tutorial are: $\mathcal{H}^0$ is a vector of all $1$'s and $\mathcal{H}^1$ is a vector of all $0$'s but the first entry which is $1$ but I don't underastand why and how to get $\mathcal{H}_0$ and $\mathcal{H}_1$.