code: def setXYAxesAutoRangeOn(commonCti, xAxisRangeCti, yAxisRangeCti, axisNumber):
      
      assert axisNumber in VALID_AXIS_NUMBERS, \
          "Axis number should be one of {}, got {}".format(VALID_AXIS_NUMBERS, axisNumber)
  
      logger.debug("setXYAxesAutoRangeOn, axisNumber: {}".format(axisNumber))
      if axisNumber == X_AXIS or axisNumber == BOTH_AXES:
          xAxisRangeCti.autoRangeCti.data = True
  
      if axisNumber == Y_AXIS or axisNumber == BOTH_AXES:
          yAxisRangeCti.autoRangeCti.data = True
  
      commonCti.model.sigItemChanged.emit(commonCti)
docs: Turns on the auto range of an X and Y axis simultaneously.
          It sets the autoRangeCti.data of the xAxisRangeCti and yAxisRangeCti to True.
          After that, it emits the sigItemChanged signal of the commonCti.
  
          Can be used with functools.partial to make a slot that atomically resets the X and Y axis.
          That is, only one sigItemChanged will be emitted.
  
          This function is necessary because, if one would call PgAxisRangeCti.sigItemChanged
          separately on the X and Y axes the sigItemChanged signal would be emitted twice. This in
          not only slower, but autoscaling one axis may slightly change the others range, so the
          second call to sigItemChanged may unset the autorange of the first.
  
          axisNumber must be one of: 0 (X-axis), 1 (Y-axis), 2, (Both X and Y axes).