code: def test_dist_broadcasted_by_lower_upper(self):
      x = pm.Censored.dist(
          pm.Normal.dist(), lower=np.zeros((2,)), upper=None
      )
      assert tuple(x.owner.inputs[0].shape.eval()) == (2,)
  
      x = pm.Censored.dist(
          pm.Normal.dist(), lower=np.zeros((2,)), upper=np.zeros((4, 2))
      )
      assert tuple(x.owner.inputs[0].shape.eval()) == (4, 2)
  
      x = pm.Censored.dist(
          pm.Normal.dist(size=(3, 4, 2)),
          lower=np.zeros((2,)),
          upper=np.zeros((4, 2)),
      )
      assert tuple(x.owner.inputs[0].shape.eval()) == (3, 4, 2)
  
file_path: pymc/tests/distributions/test_censored.py
imports: import numpy
  import pytest
  import pymc
  from pymc.distributions.shape_utils import change_dist_size
label_desc: Use image node_id 4 for calling the TestCensored obj's underlying member method code with example usage: obj.test_dist_broadcasted_by_lower_upper() without return types