code: def test_param_strict(self):
      a = dvector()
      b = shared(7)
      out = a + b
  
      f = pfunc([In(a, strict=False)], [out])
      # works, random( generates float64 by default
      f(np.random.random(8))
      # works, casting is allowed
      f(np.array([1, 2, 3, 4], dtype="int32"))
  
      f = pfunc([In(a, strict=True)], [out])
      try:
          # fails, f expects float64
          f(np.array([1, 2, 3, 4], dtype="int32"))
      except TypeError:
          pass
  
imports: import numpy
  import pytest
  import pytensor.tensor
  from pytensor.compile import UnusedInputError, get_mode
  from pytensor.compile.function import function, pfunc
  from pytensor.compile.function.pfunc import rebuild_collect_shared
  from pytensor.compile.io import In
  from pytensor.compile.sharedvalue import shared
  from pytensor.configdefaults import config
  from pytensor.graph.utils import MissingInputError
  from pytensor.misc.safe_asarray import _asarray
  from pytensor.tensor.math import sum
  from pytensor.tensor.type import bscalar, bvector, dmatrices, dmatrix, dscalar, dvector, fscalar, fvector, imatrix, iscalar, ivector, ivectors, lscalar, wvector
  from pytensor.utils import PYTHON_INT_BITWIDTH
label_desc: Use image node_id 7 for calling the TestPfunc obj's underlying member method code with example usage: obj.test_param_strict() without return types