コード例 #1
0
ファイル: delta.py プロジェクト: joe2hpimn/edgedb
    def _get_ast(self, schema, context):
        value = self.new_value

        new_value_empty = \
            (value is None or
                (isinstance(value, collections.abc.Container) and not value))

        old_value_empty = \
            (self.old_value is None or
                (isinstance(self.old_value, collections.abc.Container) and
                    not self.old_value))

        if new_value_empty and not old_value_empty:
            op = qlast.DropAnnotationValue(
                name=qlast.ObjectRef(module='', name=self.property))
            return op

        if new_value_empty and old_value_empty:
            return

        if isinstance(value, s_expr.Expression):
            value = edgeql.parse(value.text)
        elif utils.is_nontrivial_container(value):
            value = qlast.Tuple(
                elements=[qlast.BaseConstant.from_python(el) for el in value])
        else:
            value = qlast.BaseConstant.from_python(value)

        op = qlast.SetField(name=qlast.ObjectRef(module='',
                                                 name=self.property),
                            value=value)
        return op
コード例 #2
0
ファイル: ddl.py プロジェクト: alipqb/edgedb
 def reduce_DROP_ANNOTATION_NodeName(self, *kids):
     self.val = qlast.DropAnnotationValue(
         name=kids[2].val,
     )