Source code for serialbox.type

#!/usr/bin/python3
# -*- coding: utf-8 -*-
##===-----------------------------------------------------------------------------*- Python -*-===##
##
##                                   S E R I A L B O X
##
## This file is distributed under terms of BSD license.
## See LICENSE.txt for more information.
##
##===------------------------------------------------------------------------------------------===##
##
## This file contains the type and enum definitions of Serialbox
##
##===------------------------------------------------------------------------------------------===##

from enum import Enum

import numpy as np

from .error import SerialboxError


[docs]class OpenModeKind(Enum): """ Policy for opening files in the Serializer and Archive """ Read = 0 Write = 1 Append = 2
[docs]class TypeID(Enum): """Type-id of types recognized by serialbox. This enum corresponds to the enum definitions of the C/C++ library. """ Invalid = 0 Boolean = 1 Int32 = 2 Int64 = 3 Float32 = 4 Float64 = 5 String = 6 Array = 0x10 ArrayOfBoolean = Array | Boolean ArrayOfInt32 = Array | Int32 ArrayOfInt64 = Array | Int64 ArrayOfFloat32 = Array | Float32 ArrayOfFloat64 = Array | Float64 ArrayOfString = Array | String
BooleanTypes = (bool, np.bool,) Int32Types = (int, np.int8, np.int16, np.int32, np.uint8, np.uint16, np.uint32,) Int64Types = (np.int64, np.uint64,) Float32Types = (np.float32,) Float64Types = (float, np.float64,) StringTypes = (bytes, str,) def numpy2TypeID(dtype): """Convert numpy.dtype to serialbox.TypeID """ if dtype in BooleanTypes: return TypeID.Boolean elif dtype in Int32Types: return TypeID.Int32 elif dtype in Int64Types: return TypeID.Int64 elif dtype in Float32Types: return TypeID.Float32 elif dtype in Float64Types: return TypeID.Float64 else: raise SerialboxError("cannot map numpy.dtype (%s) to serialbox.TypeID" % dtype) def typeID2numpy(typeid): """Convert serialbox.TypeID to numpy.dtype """ if typeid == TypeID.Boolean: return np.bool elif typeid == TypeID.Int32: return np.int32 elif typeid == TypeID.Int64: return np.int64 elif typeid == TypeID.Float32: return np.float32 elif typeid == TypeID.Float64: return np.float64 else: raise SerialboxError("cannot map serialbox.TypeID (%s) to numpy.dtype" % typeid) __all__ = ['TypeID', 'OpenModeKind', 'BooleanTypes', 'Int32Types', 'Int64Types', 'Float32Types', 'Float64Types', 'StringTypes', 'numpy2TypeID', 'typeID2numpy']