Lookup.py
61 lines
| 2.8 KiB
| text/x-python
|
PythonLexer
|
r568 | ''' | ||
Helper module for DynamicObject module - contains dictionaries | ||||
of data types built-in to our YAML IDL, converting backing and forth between | ||||
strings / YAML tags and python class instances. | ||||
$Id$ | ||||
''' | ||||
import datetime | ||||
import numpy as np | ||||
import PrecisionTime | ||||
import DynamicObject | ||||
Binary = DynamicObject.Binary | ||||
import platform | ||||
import collections | ||||
# Implicit Types: | ||||
|
r1167 | python_dtypes = tuple([bool,int,int,float,str,datetime.datetime,list, | ||
set,dict,tuple,str]) | ||||
|
r568 | |||
# Numpy Data-types: | ||||
numpy_dtypes = {'dtype.bool': bool, 'dtype.int': np.int, 'dtype.int8': np.int8, | ||||
'dtype.int16': np.int16, 'dtype.int32': np.int32, 'dtype.int64': np.int64, | ||||
'dtype.uint8': np.uint8, 'dtype.uint16': np.uint16, 'dtype.uint32': np.uint32, | ||||
'dtype.uint64': np.uint64, 'dtype.float': np.float, 'dtype.float16': np.float16, | ||||
'dtype.float32': np.float32, 'dtype.float64': np.float64, 'dtype.complex': np.complex, | ||||
'dtype.complex64': np.complex64, 'dtype.complex128': np.complex128, | ||||
'dtype.byte': np.byte, 'dtype.short': np.short, 'dtype.intc': np.intc, | ||||
'dtype.longlong': np.longlong, 'dtype.intp': np.intp, 'dtype.ubyte': np.ubyte, | ||||
'dtype.ushort': np.ushort, 'dtype.uintc': np.uintc, 'dtype.uint': np.uint, | ||||
'dtype.uintc': np.uintc, 'dtype.uint': np.uint, 'dtype.ulonglong': np.ulonglong, | ||||
'dtype.uintp': np.uintp, 'dtype.half': np.half, 'dtype.single': np.single, | ||||
'dtype.double': np.double, 'dtype.longfloat': np.longfloat, | ||||
'dtype.csingle': np.csingle, 'dtype.clongfloat': np.clongfloat, 'dtype.long': np.long} | ||||
if platform.architecture()[0] != '32bit': # 64bit - certain numpy types exist | ||||
numpy_dtypes.update({'dtype.float128': np.float128, 'dtype.complex256': np.complex256}) | ||||
bit32 = False | ||||
else: | ||||
bit32 = True | ||||
#else: # 32 bit - fix 32 bit integer issue. | ||||
# np.int32 = np.int | ||||
# bit32 = True | ||||
# Built-in objects: | ||||
builtin_objects = {'binary': Binary, 'nsTime': PrecisionTime.nsTime, 'psTime': PrecisionTime.psTime, | ||||
'timestamp_ns': PrecisionTime.nsTime, 'timestamp_ps': PrecisionTime.psTime, | ||||
'timestamp_nanosecond': PrecisionTime.nsTime, 'timestamp_picosecond': PrecisionTime.psTime, | ||||
'datetime': datetime.datetime, 'Binary': Binary} | ||||
builtin_objects_simple = {'nsTime': PrecisionTime.nsTime, 'psTime': PrecisionTime.psTime, | ||||
'binary': Binary, 'datetime': datetime.datetime, | ||||
'Binary': Binary} | ||||
# Inverse lookup for accessing tags given a class instance: | ||||
|
r1167 | cls_dtypes = dict([(v,k) for (k,v) in list(numpy_dtypes.items())]) | ||
obj_dtypes = dict([(v,k) for (k,v) in list(builtin_objects_simple.items())]) | ||||
|
r568 | |||
# Pointer to the list of all Object classes created, as located in the Object module / class: | ||||
dynamicClasses = DynamicObject.Object.dynamicClasses | ||||