Ejemplo n.º 1
0
    def test_utils_markup_overflow_deep_2(self):
        assert isinstance(markup.elements.base.OverflowBarier(),
                          markup.elements.lang.TreeNode)
        assert issubclass(markup.elements.base.OverflowBarier,
                          markup.elements.lang.TreeNode)
        assert isinstance(
            markup.elements.base.SerializationError(text='1', cls='1'),
            markup.elements.lang.TreeNode)
        assert issubclass(markup.elements.base.SerializationError,
                          markup.elements.lang.TreeNode)
        assert not isinstance(markup.elements.base.Markup(),
                              markup.elements.lang.TreeNode)
        assert not issubclass(markup.elements.base.Markup,
                              markup.elements.lang.TreeNode)

        from edb.common.markup.serializer.base \
            import OVERFLOW_BARIER, Context

        def gen(deep):
            if deep > 0:
                return SpecialList([gen(deep - 1)])

        assert not str(
            markup.serialize(gen(OVERFLOW_BARIER - 1),
                             ctx=Context())).count('Overflow')
        assert str(markup.serialize(gen(OVERFLOW_BARIER + 10),
                                    ctx=Context())).count('Overflow') == 1
        assert not str(
            markup.serialize(gen(OVERFLOW_BARIER + 10),
                             ctx=Context())).count('SerializationError')
Ejemplo n.º 2
0
    def as_markup(cls, self, *, ctx):
        node = markup.elements.lang.TreeNode(name=repr(self))

        for op in self.commands:
            node.add_child(node=markup.serialize(op, ctx=ctx))

        return node
Ejemplo n.º 3
0
def _serialize_to_markup_mat_vis(ir: MaterializeVisible, *,
                                 ctx: typing.Any) -> typing.Any:
    # We want to show the path_ids but *not* to show the full sets
    node = ast.serialize_to_markup(ir, ctx=ctx)
    fixed = {(x, y.path_id) for x, y in ir.sets}
    node.add_child(label='uses', node=markup.serialize(fixed, ctx=ctx))
    return node
Ejemplo n.º 4
0
    def _get_test_markup(self):
        def foobar():
            raise ValueError('foobar: spam ham!')

        exc = None

        try:
            foobar()
        except Exception as ex:
            exc = ex

        return markup.serialize(exc, ctx=markup.Context())
Ejemplo n.º 5
0
    def as_markup(cls, self, *, ctx):
        node = markup.elements.lang.TreeNode(name=str(self))

        for dd in self:
            if isinstance(dd, AlterObjectProperty):
                diff = markup.elements.doc.ValueDiff(before=repr(dd.old_value),
                                                     after=repr(dd.new_value))

                node.add_child(label=dd.property, node=diff)
            else:
                node.add_child(node=markup.serialize(dd, ctx=ctx))

        return node
Ejemplo n.º 6
0
    def as_markup(cls, self, *, ctx):
        me = markup.elements

        body = [
            me.doc.Section(
                title='SQL Tree', body=[markup.serialize(self.node, ctx=ctx)])
        ]

        if self.chunks_generated:
            code = markup.serializer.serialize_code(
                ''.join(self.chunks_generated), lexer='sql')
            body.append(
                me.doc.Section(title='SQL generated so far', body=[code]))

        return me.lang.ExceptionContext(title=self.title, body=body)
Ejemplo n.º 7
0
def serialize_to_markup(ast, *, ctx):
    node = markup.elements.lang.TreeNode(id=id(ast), name=type(ast).__name__)
    include_meta = ctx.kwargs.get('_ast_include_meta', True)
    exclude_unset = ctx.kwargs.get('_ast_exclude_unset', True)

    fields = iter_fields(
        ast, include_meta=include_meta, exclude_unset=exclude_unset)
    for fieldname, field in fields:
        if ast._fields[fieldname].hidden:
            continue
        if field is None:
            if ast._fields[fieldname].meta:
                continue
        node.add_child(label=fieldname, node=markup.serialize(field, ctx=ctx))

    return node
Ejemplo n.º 8
0
def _serialize_to_markup_mat_set(ir: MaterializedSet, *,
                                 ctx: typing.Any) -> typing.Any:
    # We want to show the path_ids but *not* to show the full uses
    node = ast.serialize_to_markup(ir, ctx=ctx)
    node.add_child(label='uses', node=markup.serialize(ir.uses, ctx=ctx))
    return node
Ejemplo n.º 9
0
def serialize_special(obj, *, ctx):
    if obj and isinstance(obj[0], SpecialList):
        child = markup.serialize(obj[0], ctx=ctx)
        return SpecialListNode(node=child)
    else:
        return SpecialListNode()