def evaluateUnaryOperation(node, sphinxContext):
    if node.op == "brackets":  # parentheses around an expression
        return node.expr
    value = evaluate(node.expr, sphinxContext, value=True, fallback=UNBOUND)
    if value is UNBOUND:
        return UNBOUND
    try:
        result = {'+': operator.pos, '-': operator.neg, 'not': operator.not_,
                  'values': noop,
                  }[node.op](value)
        return result
    except __HOLE__:
        sphinxContext.modelXbrl.error("sphinx:error",
             _("%(node)s operation %(op)s not implemented"), 
             modelObject=node, op=node.op)
    return None
dataset/ETHPy150Open Arelle/Arelle/arelle/plugin/sphinx/SphinxEvaluator.py/evaluateUnaryOperation