def __init__ ( self, low = None, high = None, value = None,
                         exclude_low = False, exclude_high = False,
                         **metadata ):
        if value is None:
            if low is not None:
                value = low
            else:
                value = high

        super( BaseRange, self ).__init__( value, **metadata )

        vtype = type( high )
        if ((low is not None) and
            (not issubclass( vtype, ( float, basestring ) ))):
            vtype = type( low )

        is_static = (not issubclass( vtype, basestring ))
        if is_static and (vtype not in RangeTypes):
            raise TraitError, ("Range can only be use for int, long or float "
                               "values, but a value of type %s was specified." %
                               vtype)

        self._low_name = self._high_name = ''
        self._vtype    = Undefined

        if vtype is float:
            self._validate  = 'float_validate'
            kind            = 4
            self._type_desc = 'a floating point number'
            if low is not None:
                low = float( low )

            if high is not None:
                high = float( high )

        elif vtype is long:
            self._validate  = 'long_validate'
            self._type_desc = 'a long integer'
            if low is not None:
                low = long( low )

            if high is not None:
                high = long( high )

        elif vtype is int:
            self._validate  = 'int_validate'
            kind            = 3
            self._type_desc = 'an integer'
            if low is not None:
                low = int( low )

            if high is not None:
                high = int( high )
        else:
            self.get, self.set, self.validate = self._get, self._set, None
            self._vtype     = None
            self._type_desc = 'a number'

            if isinstance( high, basestring ):
                self._high_name = high = 'object.' + high
            else:
                self._vtype = type( high )
            high = compile( str( high ), '<string>', 'eval' )

            if isinstance( low, basestring ):
                self._low_name = low = 'object.' + low
            else:
                self._vtype = type( low )
            low = compile( str( low ), '<string>', 'eval' )

            if isinstance( value, basestring ):
                value = 'object.' + value
            self._value = compile( str( value ), '<string>', 'eval' )

            self.default_value_type = 8
            self.default_value      = self._get_default_value

        exclude_mask = 0
        if exclude_low:
            exclude_mask |= 1

        if exclude_high:
            exclude_mask |= 2

        if is_static and (vtype is not long):
            self.init_fast_validator( kind, low, high, exclude_mask )

        #: Assign type-corrected arguments to handler attributes:
        self._low          = low
        self._high         = high
        self._exclude_low  = exclude_low
        self._exclude_high = exclude_high
Start this process 
dataset/ETHPy150Open enthought/traits/traits/trait_types.py/BaseRange.__init__--crossover with--dataset/ETHPy150Open Anaconda-Platform/chalmers/chalmers/program/base.py/ProgramBase.start