Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/moses-smt/mosesdecoder.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/training/cmert-0.5/python/psyco')
-rw-r--r--scripts/training/cmert-0.5/python/psyco/__init__.py57
-rwxr-xr-xscripts/training/cmert-0.5/python/psyco/_psyco.sobin839774 -> 0 bytes
-rw-r--r--scripts/training/cmert-0.5/python/psyco/classes.py53
-rw-r--r--scripts/training/cmert-0.5/python/psyco/core.py232
-rw-r--r--scripts/training/cmert-0.5/python/psyco/kdictproxy.py133
-rw-r--r--scripts/training/cmert-0.5/python/psyco/logger.py90
-rw-r--r--scripts/training/cmert-0.5/python/psyco/profiler.py388
-rw-r--r--scripts/training/cmert-0.5/python/psyco/support.py196
8 files changed, 0 insertions, 1149 deletions
diff --git a/scripts/training/cmert-0.5/python/psyco/__init__.py b/scripts/training/cmert-0.5/python/psyco/__init__.py
deleted file mode 100644
index 23a12495a..000000000
--- a/scripts/training/cmert-0.5/python/psyco/__init__.py
+++ /dev/null
@@ -1,57 +0,0 @@
-###########################################################################
-#
-# Psyco top-level file of the Psyco package.
-# Copyright (C) 2001-2002 Armin Rigo et.al.
-
-"""Psyco -- the Python Specializing Compiler.
-
-Typical usage: add the following lines to your application's main module:
-
-try:
- import psyco
- psyco.profile()
-except:
- print 'Psyco not found, ignoring it'
-"""
-###########################################################################
-
-
-#
-# This module is present to make 'psyco' a package and to
-# publish the main functions and variables.
-#
-# More documentation can be found in core.py.
-#
-
-
-# Try to import the dynamic-loading _psyco and report errors
-try:
- import _psyco
-except ImportError, e:
- extramsg = ''
- import sys, imp
- try:
- file, filename, (suffix, mode, type) = imp.find_module('_psyco', __path__)
- except ImportError:
- ext = [suffix for suffix, mode, type in imp.get_suffixes()
- if type == imp.C_EXTENSION]
- if ext:
- extramsg = (" (cannot locate the compiled extension '_psyco%s' "
- "in the package path '%s')" % (ext[0], '; '.join(__path__)))
- else:
- extramsg = (" (check that the compiled extension '%s' is for "
- "the correct Python version; this is Python %s)" %
- (filename, sys.version.split()[0]))
- raise ImportError, str(e) + extramsg
-
-# Publish important data by importing them in the package
-from support import __version__, error, warning, _getrealframe, _getemulframe
-from support import version_info, __version__ as hexversion
-from core import full, profile, background, runonly, stop, cannotcompile
-from core import log, bind, unbind, proxy, unproxy, dumpcodebuf
-from _psyco import setfilter
-
-try:
- from _psyco import compact, compacttype # Python 2.2 and above only
-except ImportError:
- pass
diff --git a/scripts/training/cmert-0.5/python/psyco/_psyco.so b/scripts/training/cmert-0.5/python/psyco/_psyco.so
deleted file mode 100755
index f7c8fc883..000000000
--- a/scripts/training/cmert-0.5/python/psyco/_psyco.so
+++ /dev/null
Binary files differ
diff --git a/scripts/training/cmert-0.5/python/psyco/classes.py b/scripts/training/cmert-0.5/python/psyco/classes.py
deleted file mode 100644
index 11c2d169b..000000000
--- a/scripts/training/cmert-0.5/python/psyco/classes.py
+++ /dev/null
@@ -1,53 +0,0 @@
-###########################################################################
-#
-# Psyco class support module.
-# Copyright (C) 2001-2002 Armin Rigo et.al.
-
-"""Psyco class support module.
-
-'psyco.classes.psyobj' is an alternate Psyco-optimized root for classes.
-Any class inheriting from it or using the metaclass '__metaclass__' might
-get optimized specifically for Psyco. It is equivalent to call
-psyco.bind() on the class object after its creation.
-
-Note that this module has no effect with Python version 2.1 or earlier.
-
-Importing everything from psyco.classes in a module will import the
-'__metaclass__' name, so all classes defined after a
-
- from psyco.classes import *
-
-will automatically use the Psyco-optimized metaclass.
-"""
-###########################################################################
-
-__all__ = ['psyobj', 'psymetaclass', '__metaclass__']
-
-
-# Python version check
-try:
- from _psyco import compacttype
-except ImportError:
- class psyobj: # compatilibity
- pass
- psymetaclass = None
-else:
- # version >= 2.2 only
-
- import core
- from types import FunctionType
-
- class psymetaclass(compacttype):
- "Psyco-optimized meta-class. Turns all methods into Psyco proxies."
-
- def __new__(cls, name, bases, dict):
- bindlist = dict.get('__psyco__bind__')
- if bindlist is None:
- bindlist = [key for key, value in dict.items()
- if isinstance(value, FunctionType)]
- for attr in bindlist:
- dict[attr] = core.proxy(dict[attr])
- return super(psymetaclass, cls).__new__(cls, name, bases, dict)
-
- psyobj = psymetaclass("psyobj", (), {})
-__metaclass__ = psymetaclass
diff --git a/scripts/training/cmert-0.5/python/psyco/core.py b/scripts/training/cmert-0.5/python/psyco/core.py
deleted file mode 100644
index 42a6c2fb3..000000000
--- a/scripts/training/cmert-0.5/python/psyco/core.py
+++ /dev/null
@@ -1,232 +0,0 @@
-###########################################################################
-#
-# Psyco main functions.
-# Copyright (C) 2001-2002 Armin Rigo et.al.
-
-"""Psyco main functions.
-
-Here are the routines that you can use from your applications.
-These are mostly interfaces to the C core, but they depend on
-the Python version.
-
-You can use these functions from the 'psyco' module instead of
-'psyco.core', e.g.
-
- import psyco
- psyco.log('/tmp/psyco.log')
- psyco.profile()
-"""
-###########################################################################
-
-import _psyco
-import types, new
-from support import *
-
-
-# Default charge profiler values
-default_watermark = 0.09 # between 0.0 (0%) and 1.0 (100%)
-default_halflife = 0.5 # seconds
-default_pollfreq_profile = 20 # Hz
-default_pollfreq_background = 100 # Hz -- a maximum for sleep's resolution
-default_parentframe = 0.25 # should not be more than 0.5 (50%)
-
-
-def full(memory=None, time=None, memorymax=None, timemax=None):
- """Compile as much as possible.
-
-Typical use is for small scripts performing intensive computations
-or string handling."""
- import profiler
- if PYTHON_SUPPORT:
- p = profiler.FullCompiler()
- else:
- p = profiler.ActiveProfiler(0.0, 0.5)
- p.run(memory, time, memorymax, timemax)
-
-
-def profile(watermark = default_watermark,
- halflife = default_halflife,
- pollfreq = default_pollfreq_profile,
- parentframe = default_parentframe,
- memory=None, time=None, memorymax=None, timemax=None):
- """Turn on profiling.
-
-The 'watermark' parameter controls how easily running functions will
-be compiled. The smaller the value, the more functions are compiled."""
- import profiler
- p = profiler.ActivePassiveProfiler(watermark, halflife,
- pollfreq, parentframe)
- p.run(memory, time, memorymax, timemax)
-
-
-def background(watermark = default_watermark,
- halflife = default_halflife,
- pollfreq = default_pollfreq_background,
- parentframe = default_parentframe,
- memory=None, time=None, memorymax=None, timemax=None):
- """Turn on passive profiling.
-
-This is a very lightweight mode in which only intensively computing
-functions can be detected. The smaller the 'watermark', the more functions
-are compiled."""
- import profiler
- p = profiler.PassiveProfiler(watermark, halflife, pollfreq, parentframe)
- p.run(memory, time, memorymax, timemax)
-
-
-def runonly(memory=None, time=None, memorymax=None, timemax=None):
- """Nonprofiler.
-
-XXX check if this is useful and document."""
- if PYTHON_SUPPORT:
- import profiler
- p = profiler.RunOnly()
- p.run(memory, time, memorymax, timemax)
-
-
-def stop():
- """Turn off all automatic compilation. bind() calls remain in effect."""
- import profiler
- profiler.go([])
-
-
-def log(logfile='', mode='w', top=10):
- """Enable logging to the given file.
-
-If the file name is unspecified, a default name is built by appending
-a 'log-psyco' extension to the main script name.
-
-Mode is 'a' to append to a possibly existing file or 'w' to overwrite
-an existing file. Note that the log file may grow quickly in 'a' mode."""
- import profiler, logger
- if not logfile:
- import os
- logfile, dummy = os.path.splitext(sys.argv[0])
- if os.path.basename(logfile):
- logfile += '.'
- logfile += 'log-psyco'
- if hasattr(_psyco, 'VERBOSE_LEVEL'):
- print >> sys.stderr, 'psyco: logging to', logfile
- # logger.current should be a real file object; subtle problems
- # will show up if its write() and flush() methods are written
- # in Python, as Psyco will invoke them while compiling.
- logger.current = open(logfile, mode)
- logger.print_charges = top
- profiler.logger = logger
- logger.writedate('Logging started')
- cannotcompile(logger.psycowrite)
- _psyco.statwrite(logger=logger.psycowrite)
-
-
-def bind(x, rec=None):
- """Enable compilation of the given function, method, or class object.
-
-If C is a class (or anything with a '__dict__' attribute), bind(C) will
-rebind all functions and methods found in C.__dict__ (which means, for
-classes, all methods defined in the class but not in its parents).
-
-The optional second argument specifies the number of recursive
-compilation levels: all functions called by func are compiled
-up to the given depth of indirection."""
- if isinstance(x, types.MethodType):
- x = x.im_func
- if isinstance(x, types.FunctionType):
- if rec is None:
- x.func_code = _psyco.proxycode(x)
- else:
- x.func_code = _psyco.proxycode(x, rec)
- return
- if hasattr(x, '__dict__'):
- funcs = [o for o in x.__dict__.values()
- if isinstance(o, types.MethodType)
- or isinstance(o, types.FunctionType)]
- if not funcs:
- raise error, ("nothing bindable found in %s object" %
- type(x).__name__)
- for o in funcs:
- bind(o, rec)
- return
- raise TypeError, "cannot bind %s objects" % type(x).__name__
-
-
-def unbind(x):
- """Reverse of bind()."""
- if isinstance(x, types.MethodType):
- x = x.im_func
- if isinstance(x, types.FunctionType):
- try:
- f = _psyco.unproxycode(x.func_code)
- except error:
- pass
- else:
- x.func_code = f.func_code
- return
- if hasattr(x, '__dict__'):
- for o in x.__dict__.values():
- if (isinstance(o, types.MethodType)
- or isinstance(o, types.FunctionType)):
- unbind(o)
- return
- raise TypeError, "cannot unbind %s objects" % type(x).__name__
-
-
-def proxy(x, rec=None):
- """Return a Psyco-enabled copy of the function.
-
-The original function is still available for non-compiled calls.
-The optional second argument specifies the number of recursive
-compilation levels: all functions called by func are compiled
-up to the given depth of indirection."""
- if isinstance(x, types.FunctionType):
- if rec is None:
- code = _psyco.proxycode(x)
- else:
- code = _psyco.proxycode(x, rec)
- return new.function(code, x.func_globals, x.func_name)
- if isinstance(x, types.MethodType):
- p = proxy(x.im_func, rec)
- return new.instancemethod(p, x.im_self, x.im_class)
- raise TypeError, "cannot proxy %s objects" % type(x).__name__
-
-
-def unproxy(proxy):
- """Return a new copy of the original function of method behind a proxy.
-The result behaves like the original function in that calling it
-does not trigger compilation nor execution of any compiled code."""
- if isinstance(proxy, types.FunctionType):
- return _psyco.unproxycode(proxy.func_code)
- if isinstance(proxy, types.MethodType):
- f = unproxy(proxy.im_func)
- return new.instancemethod(f, proxy.im_self, proxy.im_class)
- raise TypeError, "%s objects cannot be proxies" % type(proxy).__name__
-
-
-def cannotcompile(x):
- """Instruct Psyco never to compile the given function, method
-or code object."""
- if isinstance(x, types.MethodType):
- x = x.im_func
- if isinstance(x, types.FunctionType):
- x = x.func_code
- if isinstance(x, types.CodeType):
- _psyco.cannotcompile(x)
- else:
- raise TypeError, "unexpected %s object" % type(x).__name__
-
-
-def dumpcodebuf():
- """Write in file psyco.dump a copy of the emitted machine code,
-provided Psyco was compiled with a non-zero CODE_DUMP.
-See py-utils/httpxam.py to examine psyco.dump."""
- if hasattr(_psyco, 'dumpcodebuf'):
- _psyco.dumpcodebuf()
-
-
-###########################################################################
-# Psyco variables
-# error * the error raised by Psyco
-# warning * the warning raised by Psyco
-# __in_psyco__ * a new built-in variable which is always zero, but which
-# Psyco special-cases by returning 1 instead. So
-# __in_psyco__ can be used in a function to know if
-# that function is being executed by Psyco or not.
diff --git a/scripts/training/cmert-0.5/python/psyco/kdictproxy.py b/scripts/training/cmert-0.5/python/psyco/kdictproxy.py
deleted file mode 100644
index 710677b00..000000000
--- a/scripts/training/cmert-0.5/python/psyco/kdictproxy.py
+++ /dev/null
@@ -1,133 +0,0 @@
-###########################################################################
-#
-# Support code for the 'psyco.compact' type.
-
-from __future__ import generators
-
-try:
- from UserDict import DictMixin
-except ImportError:
-
- # backported from Python 2.3 to Python 2.2
- class DictMixin:
- # Mixin defining all dictionary methods for classes that already have
- # a minimum dictionary interface including getitem, setitem, delitem,
- # and keys. Without knowledge of the subclass constructor, the mixin
- # does not define __init__() or copy(). In addition to the four base
- # methods, progressively more efficiency comes with defining
- # __contains__(), __iter__(), and iteritems().
-
- # second level definitions support higher levels
- def __iter__(self):
- for k in self.keys():
- yield k
- def has_key(self, key):
- try:
- value = self[key]
- except KeyError:
- return False
- return True
- def __contains__(self, key):
- return self.has_key(key)
-
- # third level takes advantage of second level definitions
- def iteritems(self):
- for k in self:
- yield (k, self[k])
- def iterkeys(self):
- return self.__iter__()
-
- # fourth level uses definitions from lower levels
- def itervalues(self):
- for _, v in self.iteritems():
- yield v
- def values(self):
- return [v for _, v in self.iteritems()]
- def items(self):
- return list(self.iteritems())
- def clear(self):
- for key in self.keys():
- del self[key]
- def setdefault(self, key, default):
- try:
- return self[key]
- except KeyError:
- self[key] = default
- return default
- def pop(self, key, *args):
- if len(args) > 1:
- raise TypeError, "pop expected at most 2 arguments, got "\
- + repr(1 + len(args))
- try:
- value = self[key]
- except KeyError:
- if args:
- return args[0]
- raise
- del self[key]
- return value
- def popitem(self):
- try:
- k, v = self.iteritems().next()
- except StopIteration:
- raise KeyError, 'container is empty'
- del self[k]
- return (k, v)
- def update(self, other):
- # Make progressively weaker assumptions about "other"
- if hasattr(other, 'iteritems'): # iteritems saves memory and lookups
- for k, v in other.iteritems():
- self[k] = v
- elif hasattr(other, '__iter__'): # iter saves memory
- for k in other:
- self[k] = other[k]
- else:
- for k in other.keys():
- self[k] = other[k]
- def get(self, key, default=None):
- try:
- return self[key]
- except KeyError:
- return default
- def __repr__(self):
- return repr(dict(self.iteritems()))
- def __cmp__(self, other):
- if other is None:
- return 1
- if isinstance(other, DictMixin):
- other = dict(other.iteritems())
- return cmp(dict(self.iteritems()), other)
- def __len__(self):
- return len(self.keys())
-
-###########################################################################
-
-from _psyco import compact # Python 2.2 and above only
-
-
-class compactdictproxy(DictMixin):
-
- def __init__(self, ko):
- self._ko = ko # compact object of which 'self' is the dict
-
- def __getitem__(self, key):
- return compact.__getslot__(self._ko, key)
-
- def __setitem__(self, key, value):
- compact.__setslot__(self._ko, key, value)
-
- def __delitem__(self, key):
- compact.__delslot__(self._ko, key)
-
- def keys(self):
- return compact.__members__.__get__(self._ko)
-
- def clear(self):
- keys = self.keys()
- keys.reverse()
- for key in keys:
- del self[key]
-
- def __repr__(self):
- keys = ', '.join(self.keys())
- return '<compactdictproxy object {%s}>' % (keys,)
diff --git a/scripts/training/cmert-0.5/python/psyco/logger.py b/scripts/training/cmert-0.5/python/psyco/logger.py
deleted file mode 100644
index 33cb90a4e..000000000
--- a/scripts/training/cmert-0.5/python/psyco/logger.py
+++ /dev/null
@@ -1,90 +0,0 @@
-###########################################################################
-#
-# Psyco logger.
-# Copyright (C) 2001-2002 Armin Rigo et.al.
-
-"""Psyco logger.
-
-See log() in core.py.
-"""
-###########################################################################
-
-
-import _psyco
-from time import time, localtime, strftime
-
-
-current = None
-print_charges = 10
-dump_delay = 0.2
-dump_last = 0.0
-
-def write(s, level):
- t = time()
- f = t-int(t)
- current.write("%s.%02d %-*s%s\n" % (
- strftime("%X", localtime(int(t))),
- int(f*100.0), 63-level, s,
- "%"*level))
- current.flush()
-
-def psycowrite(s):
- t = time()
- f = t-int(t)
- current.write("%s.%02d %-*s%s\n" % (
- strftime("%X", localtime(int(t))),
- int(f*100.0), 60, s.strip(),
- "% %"))
- current.flush()
-
-##def writelines(lines, level=0):
-## if lines:
-## t = time()
-## f = t-int(t)
-## timedesc = strftime("%x %X", localtime(int(t)))
-## print >> current, "%s.%03d %-*s %s" % (
-## timedesc, int(f*1000),
-## 50-level, lines[0],
-## "+"*level)
-## timedesc = " " * (len(timedesc)+5)
-## for line in lines[1:]:
-## print >> current, timedesc, line
-
-def writememory():
- write("memory usage: %d+ kb" % _psyco.memory(), 1)
-
-def dumpcharges():
- global dump_last
- if print_charges:
- t = time()
- if not (dump_last <= t < dump_last+dump_delay):
- if t <= dump_last+1.5*dump_delay:
- dump_last += dump_delay
- else:
- dump_last = t
- #write("%s: charges:" % who, 0)
- lst = _psyco.stattop(print_charges)
- if lst:
- f = t-int(t)
- lines = ["%s.%02d ______\n" % (
- strftime("%X", localtime(int(t))),
- int(f*100.0))]
- i = 1
- for co, charge in lst:
- detail = co.co_filename
- if len(detail) > 19:
- detail = '...' + detail[-17:]
- lines.append(" #%-3d |%4.1f %%| %-26s%20s:%d\n" %
- (i, charge*100.0, co.co_name, detail,
- co.co_firstlineno))
- i += 1
- current.writelines(lines)
- current.flush()
-
-def writefinalstats():
- dumpcharges()
- writememory()
- writedate("program exit")
-
-def writedate(msg):
- write('%s, %s' % (msg, strftime("%x")), 20)
diff --git a/scripts/training/cmert-0.5/python/psyco/profiler.py b/scripts/training/cmert-0.5/python/psyco/profiler.py
deleted file mode 100644
index ef7bf8e59..000000000
--- a/scripts/training/cmert-0.5/python/psyco/profiler.py
+++ /dev/null
@@ -1,388 +0,0 @@
-###########################################################################
-#
-# Psyco profiler (Python part).
-# Copyright (C) 2001-2002 Armin Rigo et.al.
-
-"""Psyco profiler (Python part).
-
-The implementation of the non-time-critical parts of the profiler.
-See profile() and full() in core.py for the easy interface.
-"""
-###########################################################################
-
-import _psyco
-from support import *
-import math, time, types, atexit
-now = time.time
-try:
- import thread
-except ImportError:
- import dummy_thread as thread
-
-
-# current profiler instance
-current = None
-
-# enabled profilers, in order of priority
-profilers = []
-
-# logger module (when enabled by core.log())
-logger = None
-
-# a lock for a thread-safe go()
-go_lock = thread.allocate_lock()
-
-def go(stop=0):
- # run the highest-priority profiler in 'profilers'
- global current
- go_lock.acquire()
- try:
- prev = current
- if stop:
- del profilers[:]
- if prev:
- if profilers and profilers[0] is prev:
- return # best profiler already running
- prev.stop()
- current = None
- for p in profilers[:]:
- if p.start():
- current = p
- if logger: # and p is not prev:
- logger.write("%s: starting" % p.__class__.__name__, 5)
- return
- finally:
- go_lock.release()
- # no profiler is running now
- if stop:
- if logger:
- logger.writefinalstats()
- else:
- tag2bind()
-
-atexit.register(go, 1)
-
-
-def buildfncache(globals, cache):
- if hasattr(types.IntType, '__dict__'):
- clstypes = (types.ClassType, types.TypeType)
- else:
- clstypes = types.ClassType
- for x in globals.values():
- if isinstance(x, types.MethodType):
- x = x.im_func
- if isinstance(x, types.FunctionType):
- cache[x.func_code] = x, ''
- elif isinstance(x, clstypes):
- for y in x.__dict__.values():
- if isinstance(y, types.MethodType):
- y = y.im_func
- if isinstance(y, types.FunctionType):
- cache[y.func_code] = y, x.__name__
-
-# code-to-function mapping (cache)
-function_cache = {}
-
-def trytobind(co, globals, log=1):
- try:
- f, clsname = function_cache[co]
- except KeyError:
- buildfncache(globals, function_cache)
- try:
- f, clsname = function_cache[co]
- except KeyError:
- if logger:
- logger.write('warning: cannot find function %s in %s' %
- (co.co_name, globals.get('__name__', '?')), 3)
- return # give up
- if logger and log:
- modulename = globals.get('__name__', '?')
- if clsname:
- modulename += '.' + clsname
- logger.write('bind function: %s.%s' % (modulename, co.co_name), 1)
- f.func_code = _psyco.proxycode(f)
-
-
-if PYTHON_SUPPORT:
- # the list of code objects that have been tagged
- tagged_codes = []
-
- def tag(co, globals):
- if logger:
- try:
- f, clsname = function_cache[co]
- except KeyError:
- buildfncache(globals, function_cache)
- try:
- f, clsname = function_cache[co]
- except KeyError:
- clsname = '' # give up
- modulename = globals.get('__name__', '?')
- if clsname:
- modulename += '.' + clsname
- logger.write('tag function: %s.%s' % (modulename, co.co_name), 1)
- tagged_codes.append((co, globals))
- _psyco.turbo_frame(co)
- _psyco.turbo_code(co)
-
- def tag2bind():
- if tagged_codes:
- if logger:
- logger.write('profiling stopped, binding %d functions' %
- len(tagged_codes), 2)
- for co, globals in tagged_codes:
- trytobind(co, globals, 0)
- function_cache.clear()
- del tagged_codes[:]
-
-else:
- # tagging is impossible, always bind
- tag = trytobind
- def tag2bind():
- pass
-
-
-
-class Profiler:
- MemoryTimerResolution = 0.103
-
- def run(self, memory, time, memorymax, timemax):
- self.memory = memory
- self.memorymax = memorymax
- self.time = time
- if timemax is None:
- self.endtime = None
- else:
- self.endtime = now() + timemax
- self.alarms = []
- profilers.append(self)
- go()
-
- def start(self):
- curmem = _psyco.memory()
- memlimits = []
- if self.memorymax is not None:
- if curmem >= self.memorymax:
- if logger:
- logger.writememory()
- return self.limitreached('memorymax')
- memlimits.append(self.memorymax)
- if self.memory is not None:
- if self.memory <= 0:
- if logger:
- logger.writememory()
- return self.limitreached('memory')
- memlimits.append(curmem + self.memory)
- self.memory_at_start = curmem
-
- curtime = now()
- timelimits = []
- if self.endtime is not None:
- if curtime >= self.endtime:
- return self.limitreached('timemax')
- timelimits.append(self.endtime - curtime)
- if self.time is not None:
- if self.time <= 0.0:
- return self.limitreached('time')
- timelimits.append(self.time)
- self.time_at_start = curtime
-
- try:
- self.do_start()
- except error, e:
- if logger:
- logger.write('%s: disabled by psyco.error:' % (
- self.__class__.__name__), 4)
- logger.write(' %s' % str(e), 3)
- return 0
-
- if memlimits:
- self.memlimits_args = (time.sleep, (self.MemoryTimerResolution,),
- self.check_memory, (min(memlimits),))
- self.alarms.append(_psyco.alarm(*self.memlimits_args))
- if timelimits:
- self.alarms.append(_psyco.alarm(time.sleep, (min(timelimits),),
- self.time_out))
- return 1
-
- def stop(self):
- for alarm in self.alarms:
- alarm.stop(0)
- for alarm in self.alarms:
- alarm.stop(1) # wait for parallel threads to stop
- del self.alarms[:]
- if self.time is not None:
- self.time -= now() - self.time_at_start
- if self.memory is not None:
- self.memory -= _psyco.memory() - self.memory_at_start
-
- try:
- self.do_stop()
- except error:
- return 0
- return 1
-
- def check_memory(self, limit):
- if _psyco.memory() < limit:
- return self.memlimits_args
- go()
-
- def time_out(self):
- self.time = 0.0
- go()
-
- def limitreached(self, limitname):
- try:
- profilers.remove(self)
- except ValueError:
- pass
- if logger:
- logger.write('%s: disabled (%s limit reached)' % (
- self.__class__.__name__, limitname), 4)
- return 0
-
-
-class FullCompiler(Profiler):
-
- def do_start(self):
- _psyco.profiling('f')
-
- def do_stop(self):
- _psyco.profiling('.')
-
-
-class RunOnly(Profiler):
-
- def do_start(self):
- _psyco.profiling('n')
-
- def do_stop(self):
- _psyco.profiling('.')
-
-
-class ChargeProfiler(Profiler):
-
- def __init__(self, watermark, parentframe):
- self.watermark = watermark
- self.parent2 = parentframe * 2.0
- self.lock = thread.allocate_lock()
-
- def init_charges(self):
- _psyco.statwrite(watermark = self.watermark,
- parent2 = self.parent2)
-
- def do_stop(self):
- _psyco.profiling('.')
- _psyco.statwrite(callback = None)
-
-
-class ActiveProfiler(ChargeProfiler):
-
- def active_start(self):
- _psyco.profiling('p')
-
- def do_start(self):
- self.init_charges()
- self.active_start()
- _psyco.statwrite(callback = self.charge_callback)
-
- def charge_callback(self, frame, charge):
- tag(frame.f_code, frame.f_globals)
-
-
-class PassiveProfiler(ChargeProfiler):
-
- initial_charge_unit = _psyco.statread('unit')
- reset_stats_after = 120 # half-lives (maximum 200!)
- reset_limit = initial_charge_unit * (2.0 ** reset_stats_after)
-
- def __init__(self, watermark, halflife, pollfreq, parentframe):
- ChargeProfiler.__init__(self, watermark, parentframe)
- self.pollfreq = pollfreq
- # self.progress is slightly more than 1.0, and computed so that
- # do_profile() will double the change_unit every 'halflife' seconds.
- self.progress = 2.0 ** (1.0 / (halflife * pollfreq))
-
- def reset(self):
- _psyco.statwrite(unit = self.initial_charge_unit, callback = None)
- _psyco.statreset()
- if logger:
- logger.write("%s: resetting stats" % self.__class__.__name__, 1)
-
- def passive_start(self):
- self.passivealarm_args = (time.sleep, (1.0 / self.pollfreq,),
- self.do_profile)
- self.alarms.append(_psyco.alarm(*self.passivealarm_args))
-
- def do_start(self):
- tag2bind()
- self.init_charges()
- self.passive_start()
-
- def do_profile(self):
- _psyco.statcollect()
- if logger:
- logger.dumpcharges()
- nunit = _psyco.statread('unit') * self.progress
- if nunit > self.reset_limit:
- self.reset()
- else:
- _psyco.statwrite(unit = nunit, callback = self.charge_callback)
- return self.passivealarm_args
-
- def charge_callback(self, frame, charge):
- trytobind(frame.f_code, frame.f_globals)
-
-
-class ActivePassiveProfiler(PassiveProfiler, ActiveProfiler):
-
- def do_start(self):
- self.init_charges()
- self.active_start()
- self.passive_start()
-
- def charge_callback(self, frame, charge):
- tag(frame.f_code, frame.f_globals)
-
-
-
-#
-# we register our own version of sys.settrace(), sys.setprofile()
-# and thread.start_new_thread().
-#
-
-def psyco_settrace(*args, **kw):
- "This is the Psyco-aware version of sys.settrace()."
- result = original_settrace(*args, **kw)
- go()
- return result
-
-def psyco_setprofile(*args, **kw):
- "This is the Psyco-aware version of sys.setprofile()."
- result = original_setprofile(*args, **kw)
- go()
- return result
-
-def psyco_thread_stub(callable, args, kw):
- _psyco.statcollect()
- if kw is None:
- return callable(*args)
- else:
- return callable(*args, **kw)
-
-def psyco_start_new_thread(callable, args, kw=None):
- "This is the Psyco-aware version of thread.start_new_thread()."
- return original_start_new_thread(psyco_thread_stub, (callable, args, kw))
-
-original_settrace = sys.settrace
-original_setprofile = sys.setprofile
-original_start_new_thread = thread.start_new_thread
-sys.settrace = psyco_settrace
-sys.setprofile = psyco_setprofile
-if PYTHON_SUPPORT:
- thread.start_new_thread = psyco_start_new_thread
- # hack to patch threading._start_new_thread if the module is
- # already loaded
- if (sys.modules.has_key('threading') and
- hasattr(sys.modules['threading'], '_start_new_thread')):
- sys.modules['threading']._start_new_thread = psyco_start_new_thread
diff --git a/scripts/training/cmert-0.5/python/psyco/support.py b/scripts/training/cmert-0.5/python/psyco/support.py
deleted file mode 100644
index 596ca7f59..000000000
--- a/scripts/training/cmert-0.5/python/psyco/support.py
+++ /dev/null
@@ -1,196 +0,0 @@
-###########################################################################
-#
-# Psyco general support module.
-# Copyright (C) 2001-2002 Armin Rigo et.al.
-
-"""Psyco general support module.
-
-For internal use.
-"""
-###########################################################################
-
-import sys, _psyco, __builtin__
-
-error = _psyco.error
-class warning(Warning):
- pass
-
-_psyco.NoLocalsWarning = warning
-
-def warn(msg):
- from warnings import warn
- warn(msg, warning, stacklevel=2)
-
-#
-# Version checks
-#
-__version__ = 0x010500f0
-if _psyco.PSYVER != __version__:
- raise error, "version mismatch between Psyco parts, reinstall it"
-
-version_info = (__version__ >> 24,
- (__version__ >> 16) & 0xff,
- (__version__ >> 8) & 0xff,
- {0xa0: 'alpha',
- 0xb0: 'beta',
- 0xc0: 'candidate',
- 0xf0: 'final'}[__version__ & 0xf0],
- __version__ & 0xf)
-
-
-VERSION_LIMITS = [0x02010000, # 2.1
- 0x02020000, # 2.2
- 0x02020200, # 2.2.2
- 0x02030000, # 2.3
- 0x02040000] # 2.4
-
-if ([v for v in VERSION_LIMITS if v <= sys.hexversion] !=
- [v for v in VERSION_LIMITS if v <= _psyco.PYVER ]):
- if sys.hexversion < VERSION_LIMITS[0]:
- warn("Psyco requires Python version 2.1 or later")
- else:
- warn("Psyco version does not match Python version. "
- "Psyco must be updated or recompiled")
-
-PYTHON_SUPPORT = hasattr(_psyco, 'turbo_code')
-
-
-if hasattr(_psyco, 'ALL_CHECKS') and hasattr(_psyco, 'VERBOSE_LEVEL'):
- print >> sys.stderr, ('psyco: running in debugging mode on %s' %
- _psyco.PROCESSOR)
-
-
-###########################################################################
-# sys._getframe() gives strange results on a mixed Psyco- and Python-style
-# stack frame. Psyco provides a replacement that partially emulates Python
-# frames from Psyco frames. The new sys._getframe() may return objects of
-# a custom "Psyco frame" type, which with Python >=2.2 is a subtype of the
-# normal frame type.
-#
-# The same problems require some other built-in functions to be replaced
-# as well. Note that the local variables are not available in any
-# dictionary with Psyco.
-
-
-class Frame:
- pass
-
-
-class PythonFrame(Frame):
-
- def __init__(self, frame):
- self.__dict__.update({
- '_frame': frame,
- })
-
- def __getattr__(self, attr):
- if attr == 'f_back':
- try:
- result = embedframe(_psyco.getframe(self._frame))
- except ValueError:
- result = None
- except error:
- warn("f_back is skipping dead Psyco frames")
- result = self._frame.f_back
- self.__dict__['f_back'] = result
- return result
- else:
- return getattr(self._frame, attr)
-
- def __setattr__(self, attr, value):
- setattr(self._frame, attr, value)
-
- def __delattr__(self, attr):
- delattr(self._frame, attr)
-
-
-class PsycoFrame(Frame):
-
- def __init__(self, tag):
- self.__dict__.update({
- '_tag' : tag,
- 'f_code' : tag[0],
- 'f_globals': tag[1],
- })
-
- def __getattr__(self, attr):
- if attr == 'f_back':
- try:
- result = embedframe(_psyco.getframe(self._tag))
- except ValueError:
- result = None
- elif attr == 'f_lineno':
- result = self.f_code.co_firstlineno # better than nothing
- elif attr == 'f_builtins':
- result = self.f_globals['__builtins__']
- elif attr == 'f_restricted':
- result = self.f_builtins is not __builtins__
- elif attr == 'f_locals':
- raise AttributeError, ("local variables of functions run by Psyco "
- "cannot be accessed in any way, sorry")
- else:
- raise AttributeError, ("emulated Psyco frames have "
- "no '%s' attribute" % attr)
- self.__dict__[attr] = result
- return result
-
- def __setattr__(self, attr, value):
- raise AttributeError, "Psyco frame objects are read-only"
-
- def __delattr__(self, attr):
- if attr == 'f_trace':
- # for bdb which relies on CPython frames exhibiting a slightly
- # buggy behavior: you can 'del f.f_trace' as often as you like
- # even without having set it previously.
- return
- raise AttributeError, "Psyco frame objects are read-only"
-
-
-def embedframe(result):
- if type(result) is type(()):
- return PsycoFrame(result)
- else:
- return PythonFrame(result)
-
-def _getframe(depth=0):
- """Return a frame object from the call stack. This is a replacement for
-sys._getframe() which is aware of Psyco frames.
-
-The returned objects are instances of either PythonFrame or PsycoFrame
-instead of being real Python-level frame object, so that they can emulate
-the common attributes of frame objects.
-
-The original sys._getframe() ignoring Psyco frames altogether is stored in
-psyco._getrealframe(). See also psyco._getemulframe()."""
- # 'depth+1' to account for this _getframe() Python function
- return embedframe(_psyco.getframe(depth+1))
-
-def _getemulframe(depth=0):
- """As _getframe(), but the returned objects are real Python frame objects
-emulating Psyco frames. Some of their attributes can be wrong or missing,
-however."""
- # 'depth+1' to account for this _getemulframe() Python function
- return _psyco.getframe(depth+1, 1)
-
-def patch(name, module=__builtin__):
- f = getattr(_psyco, name)
- org = getattr(module, name)
- if org is not f:
- setattr(module, name, f)
- setattr(_psyco, 'original_' + name, org)
-
-_getrealframe = sys._getframe
-sys._getframe = _getframe
-patch('globals')
-patch('eval')
-patch('execfile')
-patch('locals')
-patch('vars')
-patch('dir')
-patch('input')
-_psyco.original_raw_input = raw_input
-__builtin__.__in_psyco__ = 0==1 # False
-
-if hasattr(_psyco, 'compact'):
- import kdictproxy
- _psyco.compactdictproxy = kdictproxy.compactdictproxy