Exemplo n.º 1
0
	def __init__(self, func, checkA, checkB, error):
		props = requiredProperties(checkA) | requiredProperties(checkB)
		def check(context):
			ca = valueInContext(checkA, context)
			cb = valueInContext(checkB, context)
			if underlyingType(ca) is not underlyingType(cb):
				raise RuntimeParseError(error)
			return valueInContext(func(), context)
		super().__init__(props, check)
		self.inner = func
		self.checkA = checkA
		self.checkB = checkB
Exemplo n.º 2
0
    def __init__(self, arg, checkA, checkB, error):
        arg = toDelayedArgument(arg)
        assert requiredProperties(checkA) <= arg.requiredProperties
        assert requiredProperties(checkB) <= arg.requiredProperties

        def check(context):
            ca = valueInContext(checkA, context)
            cb = valueInContext(checkB, context)
            if underlyingType(ca) is not underlyingType(cb):
                raise RuntimeParseError(error)
            return arg.evaluateIn(context)

        super().__init__(requiredProperties(arg), check)
        self.inner = arg
        self.checkA = checkA
        self.checkB = checkB
Exemplo n.º 3
0
	def __init__(self, arg, types, error):
		def check(context):
			val = arg.evaluateIn(context)
			return coerceToAny(val, types, error)
		super().__init__(requiredProperties(arg), check)
		self.inner = arg
		self.types = types
Exemplo n.º 4
0
	def __init__(self, dependencies):
		deps = []
		props = set()
		for dep in dependencies:
			if needsSampling(dep) or needsLazyEvaluation(dep):
				deps.append(dep)
				props.update(requiredProperties(dep))
		super().__init__(props)
		self._dependencies = tuple(deps)	# fixed order for reproducibility
		self._conditioned = self	# version (partially) conditioned on requirements
Exemplo n.º 5
0
	def __init__(self, prop, value, deps=None, optionals={}):
		self.property = prop
		self.value = toDelayedArgument(value)
		if deps is None:
			deps = set()
		deps |= requiredProperties(value)
		if prop in deps:
			raise RuntimeParseError(f'specifier for property {prop} depends on itself')
		self.requiredProperties = deps
		self.optionals = optionals