code: def test_in_strict(self):
      a = dvector()
      b = shared(7)
      out = a + b
  
      f = function([In(a, strict=False)], out)
  
      # works, rand generates float64 by default
      assert (
          f(np.random.random((8,)).astype(np.float64)).dtype
          == np.float64
      )
  
      # works, casting is allowed
      assert (
          f(np.array([1, 2, 3, 4], dtype="int32")).dtype == np.float64
      )
  
      f = function([In(a, strict=True)], out)
  
      with pytest.raises(TypeError):
          # fails, f expects float64
          f(np.array([1, 2, 3, 4], dtype="int32"))
  
imports: import os
  import pickle
  import re
  import shutil
  import tempfile
  import numpy
  import pytest
  from pytensor.compile import shared
  from pytensor.compile.function import function, function_dump
  from pytensor.compile.io import In
  from pytensor.configdefaults import config
  from pytensor.tensor.type import bscalar, bvector, dscalar, dvector, fscalar, fvector, vector, wvector
label_desc: Use image node_id 1 for calling the TestFunctionIn obj's underlying member method code with example usage: obj.test_in_strict() without return types