def LoadAssembly(assemName): try: return clr.LoadAssemblyByName(assemName) except IOError: return clr.LoadAssemblyByPartialName(assemName) return System.Reflection.Assembly.ReflectionOnlyLoadFrom(assemName)
def gen_debug_proxies(cw): import clr msc = clr.LoadAssemblyByPartialName("Microsoft.Scripting.Core") expr = msc.GetType("Microsoft.Scripting.Ast.Expression") custom = ['SwitchCase', 'CatchBlock'] ignore = ['Expression'] def expression_filter(e): if not e.IsPublic: return False if not e.Namespace.StartsWith("Microsoft.Scripting.Ast"): return False if e.IsGenericType: return False if e.Name in ignore: return False if expr.IsAssignableFrom(e): return True if e.Name in custom: return True return False expressions = filter(expression_filter, msc.GetTypes()) expressions.sort(None, lambda e: e.Name) first = True for e in expressions: if not first: cw.write("") else: first = False gen_debug_proxy(cw, e)
def get_python_nodes(): nodes = get_ast( clr.LoadAssemblyByPartialName("IronPython"), [ "IronPython.Compiler.Ast.Expression", "IronPython.Compiler.Ast.Statement", "IronPython.Compiler.Ast.Node" ] ) return nodes
# if we have duplicate CLR exceptions (e.g. VMSError and Exception) # only generate the one highest in the Python hierarchy for exception in curHierarchy.subclasses: found = False for e in l: if e.clrException == exception.clrException: found = True break if not found: l.append(exception) for exception in curHierarchy.subclasses: get_all_exceps(l, exception) return l ip = clr.LoadAssemblyByPartialName('ironpython') ms = clr.LoadAssemblyByPartialName('Microsoft.Scripting') md = clr.LoadAssemblyByPartialName('Microsoft.Dynamic') sysdll = clr.LoadAssemblyByPartialName('System') def get_type(name): if name.startswith('IronPython'): return ip.GetType(name) if name.startswith('Microsoft.Scripting'): res = ms.GetType(name) return res if res is not None else md.GetType(name) if name.startswith('System.ComponentModel'): return sysdll.GetType(name) return System.Type.GetType(name)
for e in l: if e.clrException == exception.clrException: found = True break if not found: l.append(exception) for exception in curHierarchy.subclasses: get_all_exceps(l, exception) return l ip = clr.LoadAssemblyByName('IronPython') ms = clr.LoadAssemblyByName('Microsoft.Scripting') md = clr.LoadAssemblyByName('Microsoft.Dynamic') sysdll = clr.LoadAssemblyByPartialName('System') def get_type(name): if name.startswith('IronPython'): return ip.GetType(name) if name.startswith('Microsoft.Scripting'): res = ms.GetType(name) return res if res is not None else md.GetType(name) if name.startswith('System.ComponentModel'): return sysdll.GetType(name) return System.Type.GetType(name) def exception_distance(a): distance = 0