code: def kron_bases(*bases: Dict[str, np.ndarray],
                 repeat: int = 1) -> Dict[str, np.ndarray]:
      
      product_basis = {'': 1}
      for basis in bases * repeat:
          product_basis = {
              name1 + name2: np.kron(matrix1, matrix2)
              for name1, matrix1 in product_basis.items()
              for name2, matrix2 in basis.items()
          }
      return product_basis
docs: Creates tensor product of bases.