#!/usr/bin/env python
# pylint: disable=F0401,W0401,W0603,
__version__ = "9.2.101.dev0"
if bytes is str:
raise Exception("This module is designed for python 3 only. Please install an older version to use python 2.")
import os
import logging
l = logging.getLogger("claripy")
l.addHandler(logging.NullHandler())
from .errors import *
from . import operations as operations
from . import ops as _all_operations
# This is here for later, because we'll fuck the namespace in a few lines
from . import backends as _backends_module
from .backends import Backend as Backend
from .backend_object import BackendObject as BackendObject
#
# backend objects
#
from . import bv as bv
from . import fp as fp
from . import vsa as vsa
from .fp import FSORT_DOUBLE as FSORT_DOUBLE, FSORT_FLOAT as FSORT_FLOAT
from .annotation import *
#
# Operations
#
from .ast.base import *
from .ast.bv import *
from .ast.fp import *
from .ast.bool import *
from .ast.strings import *
from . import ast
del BV
del Bool
del FP
del Base
ast._import()
[docs]def BV(name, size, explicit_name=None): # pylint:disable=function-redefined
l.critical(
"DEPRECATION WARNING: claripy.BV is deprecated and will soon be removed. Please use claripy.BVS, instead."
)
print("DEPRECATION WARNING: claripy.BV is deprecated and will soon be removed. Please use claripy.BVS, instead.")
return BVS(name, size, explicit_name=explicit_name)
#
# Initialize the backends
#
from . import backend_manager as _backend_manager
_backend_manager.backends._register_backend(_backends_module.BackendConcrete(), "concrete", True, True)
_backend_manager.backends._register_backend(_backends_module.BackendVSA(), "vsa", False, False)
if not os.environ.get("WORKER", False) and os.environ.get("REMOTE", False):
try:
_backend_z3 = _backends_module.backendremote.BackendRemote()
except OSError:
raise ImportError("can't connect to backend")
else:
_backend_z3 = _backends_module.BackendZ3()
_backend_manager.backends._register_backend(_backend_z3, "z3", False, False)
backends = _backend_manager.backends
[docs]def downsize():
"""
Clear all temporary data associated with any backend
"""
backends.downsize()
#
# Frontends
#
from .frontend import Frontend as _Frontend
from . import frontends as frontends
from . import frontend_mixins as frontend_mixins
from .solvers import *
#
# Convenient button
#
[docs]def reset():
"""
Attempt to refresh any caching state associated with the module
"""
downsize()
from .ast import bv # pylint:disable=redefined-outer-name
bv._bvv_cache.clear()
from .debug import set_debug