Last change on my branch
This commit is contained in:
@ -51,6 +51,11 @@ cdef class DMS :
|
|||||||
"""
|
"""
|
||||||
return __OBIDMS_COLUMN_CLASS__[obitype][1]
|
return __OBIDMS_COLUMN_CLASS__[obitype][1]
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
cdef type get_view_class(bytes viewtype):
|
||||||
|
return __OBIDMS_VIEW_CLASS__[viewtype]
|
||||||
|
|
||||||
|
|
||||||
def __init__(self, object dms_name) :
|
def __init__(self, object dms_name) :
|
||||||
'''
|
'''
|
||||||
Constructor of a obitools3.dms.DMS instance.
|
Constructor of a obitools3.dms.DMS instance.
|
||||||
@ -115,6 +120,18 @@ cdef class DMS :
|
|||||||
for v in p.glob("*.obiview"):
|
for v in p.glob("*.obiview"):
|
||||||
yield str2bytes(v.stem)
|
yield str2bytes(v.stem)
|
||||||
|
|
||||||
|
def values(self):
|
||||||
|
cdef bytes view_name
|
||||||
|
|
||||||
|
for view_name in self.keys():
|
||||||
|
yield self.get_view(view_name)
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
cdef bytes view_name
|
||||||
|
|
||||||
|
for view_name in self.keys():
|
||||||
|
yield (view_name,self.get_view(view_name))
|
||||||
|
|
||||||
def __contains__(self,key):
|
def __contains__(self,key):
|
||||||
cdef str key_s = tostr(key)
|
cdef str key_s = tostr(key)
|
||||||
cdef const_char_p path = obi_dms_get_full_path(self._pointer,
|
cdef const_char_p path = obi_dms_get_full_path(self._pointer,
|
||||||
@ -129,3 +146,20 @@ cdef class DMS :
|
|||||||
cpdef int view_count(self):
|
cpdef int view_count(self):
|
||||||
return PyList_Size(list(self.keys()))
|
return PyList_Size(list(self.keys()))
|
||||||
|
|
||||||
|
def get_view(self):
|
||||||
|
raise NotImplemented
|
||||||
|
|
||||||
|
def __len__(self):
|
||||||
|
return self.view_count()
|
||||||
|
|
||||||
|
def __getitem__(self, object view_name):
|
||||||
|
return self.get_view(view_name)
|
||||||
|
|
||||||
|
def __iter__(self):
|
||||||
|
return self.keys()
|
||||||
|
|
||||||
|
cpdef bint is_view_writable(self, object view_name):
|
||||||
|
raise NotImplemented
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -12,6 +12,8 @@ from ..capi.obiview cimport Alias_column_pair_p, \
|
|||||||
|
|
||||||
from ..capi.obidmscolumn cimport OBIDMS_column_p
|
from ..capi.obidmscolumn cimport OBIDMS_column_p
|
||||||
|
|
||||||
|
from .dms cimport __OBIDMS_VIEW_CLASS__
|
||||||
|
|
||||||
from obitools3.utils cimport tobytes, \
|
from obitools3.utils cimport tobytes, \
|
||||||
bytes2str
|
bytes2str
|
||||||
|
|
||||||
@ -102,10 +104,10 @@ cdef class View :
|
|||||||
return view
|
return view
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
if (self._pointer != NULL
|
if (self._pointer != NULL):
|
||||||
and obi_save_and_close_view(self._pointer) < 0) :
|
if obi_save_and_close_view(self._pointer) < 0 :
|
||||||
raise Exception("Problem closing view %s" %
|
raise Exception("Problem closing view %s" %
|
||||||
bytes2str(self.name))
|
bytes2str(self.name))
|
||||||
|
|
||||||
def __dealloc__(self):
|
def __dealloc__(self):
|
||||||
self.close()
|
self.close()
|
||||||
@ -238,7 +240,7 @@ cdef class View :
|
|||||||
# view type property getter
|
# view type property getter
|
||||||
@property
|
@property
|
||||||
def type(self): # @ReservedAssignment
|
def type(self): # @ReservedAssignment
|
||||||
return bytes2str(self._pointer.infos.view_type)
|
return <bytes> self._pointer.infos.view_type
|
||||||
|
|
||||||
# comments property getter
|
# comments property getter
|
||||||
@property
|
@property
|
||||||
@ -410,3 +412,15 @@ cdef class Line :
|
|||||||
# return view_infos_d
|
# return view_infos_d
|
||||||
|
|
||||||
|
|
||||||
|
cdef register_view_class(bytes viewtype,
|
||||||
|
type classe):
|
||||||
|
"""
|
||||||
|
Each sub class of `dms.View` needs to be registered after its declaration
|
||||||
|
to declare its relationship with an `OBIType_t`
|
||||||
|
"""
|
||||||
|
global __OBIDMS_VIEW_CLASS__
|
||||||
|
|
||||||
|
assert issubclass(classe,View)
|
||||||
|
|
||||||
|
__OBIDMS_VIEW_CLASS__[viewtype]=classe
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user