1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
|
from pypy.interpreter.mixedmodule import MixedModule
from .interp_time import HAS_THREAD_TIME
from rpython.rlib import rtime
import os
_WIN = os.name == "nt"
class Module(MixedModule):
applevel_name = 'time'
interpleveldefs = {
'time': 'interp_time.time_time',
'time_ns': 'interp_time.time_time_ns',
'ctime': 'interp_time.ctime',
'asctime': 'interp_time.asctime',
'gmtime': 'interp_time.gmtime',
'localtime': 'interp_time.localtime',
'mktime': 'interp_time.mktime',
'strftime': 'interp_time.strftime',
'sleep' : 'interp_time.time_sleep',
'_STRUCT_TM_ITEMS': 'space.wrap(interp_time._STRUCT_TM_ITEMS)',
'perf_counter': 'interp_time.perf_counter',
'perf_counter_ns': 'interp_time.perf_counter_ns',
'process_time': 'interp_time.process_time',
'process_time_ns': 'interp_time.process_time_ns',
'_get_time_info': 'interp_time._get_time_info',
'monotonic': 'interp_time.monotonic',
'monotonic_ns': 'interp_time.monotonic_ns',
}
if rtime.HAS_CLOCK_GETTIME_RUNTIME:
interpleveldefs['clock_gettime'] = 'interp_time.clock_gettime'
interpleveldefs['clock_gettime_ns'] = 'interp_time.clock_gettime_ns'
interpleveldefs['clock_settime'] = 'interp_time.clock_settime'
interpleveldefs['clock_settime_ns'] = 'interp_time.clock_settime_ns'
interpleveldefs['clock_getres'] = 'interp_time.clock_getres'
for constant in rtime.ALL_DEFINED_CLOCKS:
interpleveldefs[constant] = 'space.wrap(%d)' % (
getattr(rtime, constant),)
if HAS_THREAD_TIME:
interpleveldefs['thread_time'] = 'interp_time.thread_time'
interpleveldefs['thread_time_ns'] = 'interp_time.thread_time_ns'
if os.name == "posix":
interpleveldefs['tzset'] = 'interp_time.tzset'
appleveldefs = {
'struct_time': 'app_time.struct_time',
'__doc__': 'app_time.__doc__',
'strptime': 'app_time.strptime',
'get_clock_info': 'app_time.get_clock_info'
}
def startup(self, space):
if _WIN:
from pypy.module.time.interp_time import State
space.fromcache(State).startup(space)
# this machinery is needed to expose constants
# that have to be initialized one time only
from pypy.module.time import interp_time
interp_time._init_timezone(space)
|