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