from enum import IntFlag

class Flags(IntFlag):
    DEFAULT = 0

    CFLAGS_ONLY_I = (1 << 2)
    CFLAGS_ONLY_OTHER = (1 << 3)
    CFLAGS = (CFLAGS_ONLY_I|CFLAGS_ONLY_OTHER)
    LIBS_ONLY_LDPATH = (1 << 5)
    LIBS_ONLY_LIBNAME = (1 << 6)
    LIBS_ONLY_OTHER = (1 << 7)
    LIBS = (LIBS_ONLY_LDPATH|LIBS_ONLY_LIBNAME|LIBS_ONLY_OTHER)
    MODVERSION = (1 << 8)
    REQUIRES = (1 << 9)
    REQUIRES_PRIVATE = (1 << 10)
    VARIABLES = (1 << 11)
    DIGRAPH = (1 << 12)
    KEEP_SYSTEM_CFLAGS = (1 << 13)
    KEEP_SYSTEM_LIBS = (1 << 14)
    VERSION = (1 << 15)
    ABOUT = (1 << 16)
    ENV_ONLY = (1 << 17)
    ERRORS_ON_STDOUT = (1 << 18)
    SILENCE_ERRORS = (1 << 19)
    IGNORE_CONFLICTS = (1 << 20)
    STATIC = (1 << 21)
    NO_UNINSTALLED = (1 << 22)
    UNINSTALLED = (1 << 23)
    LIST = (1 << 24)
    HELP = (1 << 25)
    PRINT_ERRORS = (1 << 26)
    SIMULATE = (1 << 27)
    NO_CACHE = (1 << 28)
    PROVIDES = (1 << 29)
    VALIDATE = (1 << 30)
    LIST_PACKAGE_NAMES = (1 << 31)
    NO_PROVIDES = (1 << 32)
    PURE = (1 << 33)
    PATH = (1 << 34)
    DEFINE_PREFIX = (1 << 35)
    DONT_DEFINE_PREFIX = (1 << 36)
    DONT_RELOCATE_PATHS = (1 << 37)
    DEBUG = (1 << 38)
    SHORT_ERRORS = (1 << 39)
    EXISTS = (1 << 40)
    MSVC_SYNTAX = (1 << 41)
    INTERNAL_CFLAGS = (1 << 42)
    DUMP_PERSONALITY = (1 << 43)
    SHARED = (1 << 44)
    DUMP_LICENSE = (1 << 45)

MAXIMUM_TRAVERSE_DEPTH = 2000

OPERATORS = {'<', '>', '<=', '>=', '==', '!='}
