code: def test_nmf_custom_init_dtype_error(Estimator):
      # Check that an error is raise if custom H and/or W don't have the same
      # dtype as X.
      rng = np.random.RandomState(0)
      X = rng.random_sample((20, 15))
      H = rng.random_sample((15, 15)).astype(np.float32)
      W = rng.random_sample((20, 15))
  
      with pytest.raises(
          TypeError, match="should have the same dtype as X"
      ):
          Estimator(init="custom").fit(X, H=H, W=W)
  
      with pytest.raises(
          TypeError, match="should have the same dtype as X"
      ):
          non_negative_factorization(X, H=H, update_H=False)
  
imports: import re
  import sys
  import warnings
  from io import StringIO
  import numpy
  import pytest
  from scipy import linalg
  from sklearn.base import clone
  from sklearn.decomposition import NMF, MiniBatchNMF, non_negative_factorization
  from sklearn.decomposition import _nmf
  from sklearn.exceptions import ConvergenceWarning
  from sklearn.utils._testing import assert_allclose, assert_almost_equal, assert_array_almost_equal, assert_array_equal, ignore_warnings
  from sklearn.utils.extmath import squared_norm
  from sklearn.utils.fixes import CSC_CONTAINERS, CSR_CONTAINERS
label_desc: Use image node_id 30 for calling a global function with example usage: test_nmf_custom_init_dtype_error(Estimator) without return types