(R : Type u) →
  [inst : CommSemiring R] →
    (S : Type u_1) →
      [inst_1 : Semiring S] →
        [inst_2 : Algebra R S] →
          {ι₁ : Type v₁} →
            [DecidableEq ι₁] →
              (M₁ : ι₁ → Type w₁) →
                (M₂' : Type w₂') →
                  [inst_4 : (i₁ : ι₁) → AddCommMonoid (M₁ i₁)] →
                    [inst_5 : AddCommMonoid M₂'] →
                      [inst_6 : (i₁ : ι₁) → Module R (M₁ i₁)] →
                        [inst_7 : Module R M₂'] →
                          [inst_8 : (i₁ : ι₁) → Module S (M₁ i₁)] →
                            [inst_9 : ∀ (i₁ : ι₁), IsScalarTower R S (M₁ i₁)] →
                              TensorProduct R (DirectSum ι₁ fun i₁ => M₁ i₁) M₂' ≃ₗ[S]
                                DirectSum ι₁ fun i => TensorProduct R (M₁ i) M₂'