Esempio n. 1
0
def buildFormattedValueNode(provider, node, source_ref):
    value = buildNode(provider, node.value, source_ref)

    conversion = node.conversion % 4 if node.conversion > 0 else 0

    if conversion == 0:
        pass
    elif conversion == 3:
        # TODO: We might start using this for Python2 too.
        assert str is not bytes

        value = ExpressionBuiltinStrP3(value=value,
                                       encoding=None,
                                       errors=None,
                                       source_ref=source_ref)
    elif conversion == 2:
        value = makeExpressionOperationUnary(operator="Repr",
                                             operand=value,
                                             source_ref=source_ref)
    elif conversion == 1:
        value = ExpressionBuiltinAscii(value=value, source_ref=source_ref)
    else:
        assert False, conversion

    return ExpressionBuiltinFormat(
        value=value,
        format_spec=buildNode(provider,
                              node.format_spec,
                              source_ref,
                              allow_none=True),
        source_ref=source_ref,
    )
Esempio n. 2
0
def buildUnaryOpNode(provider, node, source_ref):
    operator = getKind(node.op)

    # Delegate this one to boolean operation code.
    if operator == "Not":
        return buildBoolOpNode(provider=provider,
                               node=node,
                               source_ref=source_ref)

    operand = buildNode(provider, node.operand, source_ref)

    return makeExpressionOperationUnary(operator=operator,
                                        operand=operand,
                                        source_ref=source_ref)
Esempio n. 3
0
def buildReprNode(provider, node, source_ref):
    return makeExpressionOperationUnary(
        operator="Repr",
        operand=buildNode(provider, node.value, source_ref),
        source_ref=source_ref,
    )