New OBIDMS method to list the columns of an OBIDMS
This commit is contained in:
@ -1,3 +1,4 @@
|
||||
|
||||
cdef extern from *:
|
||||
ctypedef char* const_char_p "const char*"
|
||||
|
||||
@ -14,7 +15,10 @@ cdef extern from "obidms.h" nogil:
|
||||
OBIDMS_p obi_open_dms(const_char_p dms_name)
|
||||
OBIDMS_p obi_dms(const_char_p dms_name)
|
||||
int obi_close_dms(OBIDMS_p dms)
|
||||
int obi_list_columns(OBIDMS_p dms)
|
||||
|
||||
|
||||
from obitools3.obidms.obidmscolumn.capidmscolumn cimport *
|
||||
|
||||
|
||||
cdef class OBIDMS:
|
||||
cdef OBIDMS_p pointer
|
||||
cdef str dms_name
|
@ -1,15 +1,34 @@
|
||||
#cython: language_level=3
|
||||
|
||||
from pathlib import Path
|
||||
|
||||
from .capidms cimport *
|
||||
|
||||
|
||||
cdef class OBIDMS :
|
||||
|
||||
def __init__(self, dms_name) :
|
||||
dms_name_b = dms_name.encode(encoding='UTF-8')
|
||||
self.dms_name = dms_name
|
||||
self.pointer = obi_dms(dms_name_b)
|
||||
|
||||
# def __del__(self) :
|
||||
# obi_close_dms(self.pointer)
|
||||
|
||||
def list(self):
|
||||
obi_list_columns(self.pointer)
|
||||
p = Path(self.dms_name+'.obidms')
|
||||
#dms = {}
|
||||
print("{:<25} {:<25} {:<25} {:<25}".format('-Column name-','-Data type-','-Latest version number-', '-Line count of latest version-'))
|
||||
for entry in p.iterdir():
|
||||
if entry.suffix == ".obicol":
|
||||
column_name = entry.stem
|
||||
column_name_b = column_name.encode('utf-8')
|
||||
#dms[column_name] = {}
|
||||
data_type = (name_data_type(obi_column_get_data_type_from_name(self.pointer, column_name_b))).decode('utf-8')
|
||||
latest_version = obi_column_get_latest_version_from_name(self.pointer, column_name_b)
|
||||
line_count = obi_column_get_line_count_from_name(self.pointer, column_name_b)
|
||||
#dms[column_name]['data_type'] = data_type
|
||||
#dms[column_name]['latest_version'] = latest_version
|
||||
#dms[column_name]['line_count'] = line_count
|
||||
print("{:<25} {:<25} {:<25} {:<25}".format(column_name, data_type, latest_version, line_count))
|
||||
|
@ -35,6 +35,9 @@ cdef extern from "obidmscolumn.h" nogil:
|
||||
OBIType_t obi_column_get_data_type_from_name(OBIDMS_p dms, const char* column_name)
|
||||
OBIDMS_column_p obi_clone_column(OBIDMS_p dms, const char* column_name, obiversion_t version_number, bint clone_data)
|
||||
int obi_truncate_and_close_column(OBIDMS_column_p column)
|
||||
obiversion_t obi_column_get_latest_version_from_name(OBIDMS_p dms, const char* column_name)
|
||||
OBIType_t obi_column_get_data_type_from_name(OBIDMS_p dms, const char* column_name)
|
||||
size_t obi_column_get_line_count_from_name(OBIDMS_p dms, const char* column_name)
|
||||
|
||||
|
||||
cdef class OBIDMS_column:
|
||||
|
Reference in New Issue
Block a user