def op_name(node, strict=True):
    """Return the print name of an operator node."""
    d = {'Add': '+', 'BitAnd': '&', 'BitOr': '|', 'BitXor': '^', 'Div': '/',
        'FloorDiv': '//', 'LShift': '<<', 'Mod': '%', 'Mult': '*', 'Pow':
        '**', 'RShift': '>>', 'Sub': '-', 'And': ' and ', 'Or': ' or ',
        'Eq': '==', 'Gt': '>', 'GtE': '>=', 'In': ' in ', 'Is': ' is ',
        'IsNot': ' is not ', 'Lt': '<', 'LtE': '<=', 'NotEq': '!=', 'NotIn':
        ' not in ', 'AugLoad': '<AugLoad>', 'AugStore': '<AugStore>', 'Del':
        '<Del>', 'Load': '<Load>', 'Param': '<Param>', 'Store': '<Store>',
        'Invert': '~', 'Not': ' not ', 'UAdd': '+', 'USub': '-'}
    kind = node.__class__.__name__
    name = d.get(kind, '<%s>' % kind)
    if strict:
        assert name, kind
    return name
