def __init__ ( self, trait = None, value = None, items = True, **metadata ):
        metadata.setdefault( 'copy', 'deep' )

        if isinstance( trait, SetTypes ):
            trait, value = value, set( trait )

        if value is None:
            value = set()

        self.item_trait = trait_from( trait )
        self.has_items  = items

        super( Set, self ).__init__( value, **metadata )
Pull the variable names out of the provided expressions and separate into cacheable expressions and normal parameters. Those that are only stored in the cache, the parameters are stored in this object.
dataset/ETHPy150Open enthought/traits/traits/trait_types.py/Set.__init__--crossover with--dataset/ETHPy150Open SheffieldML/GPy/GPy/core/symbolic.py/Symbolic_core._set_variables