def evaluate_conditionals_in_context (properties, context):
    """ Removes all conditional properties which conditions are not met
        For those with met conditions, removes the condition. Properies
        in conditions are looked up in 'context'
    """
    if __debug__:
        from .property_set import PropertySet
        assert is_iterable_typed(properties, Property)
        assert isinstance(context, PropertySet)
    base = []
    conditional = []

    for p in properties:
        if p.condition:
            conditional.append (p)
        else:
            base.append (p)

    result = base[:]
    for p in conditional:

        # Evaluate condition
        # FIXME: probably inefficient
        if all(x in context for x in p.condition):
            result.append(Property(p.feature, p.value))

    return result
def evaluate_conditionals_in_context ( properties , context ) : if __debug__ : from . property_set import PropertySet assert is_iterable_typed ( properties , Property ) assert isinstance ( context , PropertySet ) base = [ ] conditional = [ ] for p in properties : if p . condition : conditional . append ( p ) else : base . append ( p ) result = base [ : ] for p in conditional : if all ( x in context for x in p . condition ) : result . append ( Property ( p . feature , p . value ) ) return result
Removes all conditional properties which conditions are not met
        For those with met conditions, removes the condition. Properies
        in conditions are looked up in 'context'