NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

builtinmangler.py (4919B)


      1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\carbon\common\lib\builtinmangler.py
      2 import __builtin__
      3 import inspect
      4 import logging
      5 import sys
      6 import stringutil
      7 L = logging.getLogger(__name__)
      8 L.addHandler(logging.NullHandler())
      9 
     10 class NamespaceFailedException(ImportError):
     11 
     12     def __init__(self, *args):
     13         ImportError.__init__(self, *args)
     14 
     15     def __repr__(self):
     16         return 'NamespaceFailed: The namespace ' + self.args[0] + ' was not found.'
     17 
     18 
     19 def _SmashConst(constmodule):
     20     __builtin__.const = constmodule
     21     sys.modules['const'] = constmodule
     22     for name, value in constmodule.__dict__.iteritems():
     23         if not name.startswith('__'):
     24             if name not in __builtin__.const.__dict__:
     25                 __builtin__.const.__dict__[name] = value
     26             elif inspect.ismodule(value):
     27                 for moduleKey, moduleValue in value.__dict__.iteritems():
     28                     if not moduleKey.startswith('__'):
     29                         setattr(__builtin__.const.__dict__[name], moduleKey, moduleValue)
     30 
     31 
     32 def add_system_module_extras():
     33     extras = _get_system_module_extras()
     34     for module_name, entries in extras.iteritems():
     35         module = __import__(module_name)
     36         for name, value in entries.iteritems():
     37             setattr(module, name, value)
     38 
     39 
     40 def _get_system_module_extras():
     41     from eve.common.script.sys.strangeStrings import A, AgentString, AgentUnicode
     42     from carbon.common.lib.ccp_exceptions import ConnectionError, RoleNotAssignedError, SQLError, UnmarshalError, UserError
     43     from carbon.common.script.net.GPSExceptions import GPSAddressOccupied, GPSBadAddress, GPSException, GPSRemoteTransportClosed, GPSTransportClosed
     44     from carbon.common.script.net.machoNetExceptions import MachoException, MachoWrappedException, ProxyRedirect, SessionUnavailable, UberMachoException, UnMachoChannel, UnMachoDestination, WrongMachoNode
     45     return {'sys': {'A': A,
     46              'AgentString': AgentString,
     47              'AgentUnicode': AgentUnicode},
     48      'exceptions': {'ConnectionError': ConnectionError,
     49                     'RoleNotAssignedError': RoleNotAssignedError,
     50                     'SQLError': SQLError,
     51                     'UnmarshalError': UnmarshalError,
     52                     'UserError': UserError,
     53                     'GPSAddressOccupied': GPSAddressOccupied,
     54                     'GPSBadAddress': GPSBadAddress,
     55                     'GPSException': GPSException,
     56                     'GPSRemoteTransportClosed': GPSRemoteTransportClosed,
     57                     'GPSTransportClosed': GPSTransportClosed,
     58                     'MachoException': MachoException,
     59                     'MachoWrappedException': MachoWrappedException,
     60                     'ProxyRedirect': ProxyRedirect,
     61                     'SessionUnavailable': SessionUnavailable,
     62                     'UberMachoException': UberMachoException,
     63                     'UnMachoChannel': UnMachoChannel,
     64                     'UnMachoDestination': UnMachoDestination,
     65                     'WrongMachoNode': WrongMachoNode}}
     66 
     67 
     68 __CONSTSMANGLED = False
     69 
     70 def MangleBuiltins():
     71     global __CONSTSMANGLED
     72     if __CONSTSMANGLED:
     73         return
     74     import eveexceptions
     75     __builtin__.UserError = eveexceptions.UserError
     76     __builtin__.SQLError = eveexceptions.SQLError
     77     __builtin__.ConnectionError = eveexceptions.ConnectionError
     78     __builtin__.UnmarshalError = eveexceptions.UnmarshalError
     79     __builtin__.RoleNotAssignedError = eveexceptions.RoleNotAssignedError
     80     __builtin__.CreateInstance = CreateInstance
     81     __builtin__.strx = stringutil.strx
     82     import eve.common.lib.appConst as appConst
     83     _SmashConst(appConst)
     84     __builtin__.SEC = const.SEC
     85     __builtin__.MIN = const.MIN
     86     __builtin__.HOUR = const.HOUR
     87     __builtin__.DAY = const.DAY
     88     __builtin__.WEEK = const.WEEK
     89     __builtin__.MONTH = const.MONTH30
     90     __builtin__.YEAR = const.YEAR360
     91     __builtin__.DATE = const.UE_DATE
     92     __builtin__.TIME = const.UE_TIME
     93     __builtin__.OWNERID = const.UE_OWNERID
     94     __builtin__.LOCID = const.UE_LOCID
     95     __builtin__.TYPEID = const.UE_TYPEID
     96     __builtin__.GROUPID = const.UE_GROUPID
     97     __builtin__.CATID = const.UE_CATID
     98     __builtin__.DIST = const.UE_DIST
     99     __builtin__.ISK = const.UE_ISK
    100     __builtin__.AUR = const.UE_AUR
    101     __CONSTSMANGLED = True
    102 
    103 
    104 def CreateInstance(guid, arguments = ()):
    105     try:
    106         namespace, typename = guid.rsplit('.', 1)
    107     except:
    108         raise RuntimeError("InvalidClassID (%s), should be like 'ns.Class'" % stringutil.strx(guid))
    109 
    110     module = __import__(namespace, fromlist=[typename])
    111     ctor = getattr(module, typename)
    112     ret = ctor(*arguments)
    113     for each in getattr(ret, '__persistvars__', []):
    114         if not hasattr(ret, each):
    115             setattr(ret, each, None)
    116 
    117     for each in getattr(ret, '__nonpersistvars__', []):
    118         if not hasattr(ret, each):
    119             setattr(ret, each, None)
    120 
    121     return ret