def _get_expl_text(self, symno): ret, _recs, _user_info, expl_text = gdxcc.gdxSymbolInfoX( self._h, symno) if ret > 0: return expl_text.encode(errors='replace').decode() else: return None
def get_sid_info(self,j): '''Return a dict of metadata for symbol with ID j.''' h = self.gdx_handle r, name, dims, stype = gdxcc.gdxSymbolInfo(h, j) assert r, '%d is not a valid symbol number' % j r, records, userinfo, description = gdxcc.gdxSymbolInfoX(h, j) assert r, '%d is not a valid symbol number' % j return {'name':name, 'stype':stype, 'desc':description, 'dim':dims}
def get_sid_info(self,j): if __gdxpy_mode__ != GDX_MODE_API: raise Exception('Function "get_sid_info" not available outside GDX API mode') h = self.gdxHandle r, name, dims, stype = gdxcc.gdxSymbolInfo(h, j) assert r, '%d is not a valid symbol number' % j r, records, userinfo, description = gdxcc.gdxSymbolInfoX(h, j) assert r, '%d is not a valid symbol number' % j return {'name':name, 'stype':stype, 'desc':description, 'dim':dims}
def symbol_info(H, num): ret, name, dims, type = gdxcc.gdxSymbolInfo(H, num) if ret != 1: raise GDX_error(H, "Couldn't get symbol info") ret, records, userinfo, description = gdxcc.gdxSymbolInfoX(H, num) if ret != 1: raise GDX_error(H, "Couldn't get extended symbol info") if type == gdxcc.GMS_DT_PAR and dims == 0: typename = "Scalar" else: typename = symbol_type_text[type] full_typename = "" if type == gdxcc.GMS_DT_VAR: full_typename = variable_type_text[userinfo] + " " full_typename += typename domain = [None] * dims if dims > 0 and num > 0: ret, gdx_domain = gdxcc.gdxSymbolGetDomain(H, num) if ret != 1: raise GDX_error(H, "Couldn't get symbol domain") if len(gdx_domain) < dims: gdx_domain = None for i in range(dims): d = gdx_domain[i] if gdx_domain else 0 domain[i] = {"index": d} if d == 0: domain[i]["key"] = "*" else: ret, domain[i]["key"], dummy1, dummy2 = gdxcc.gdxSymbolInfo(H, d) return { "name": name, "number": num, "type": type, "typename": typename, "full_typename": full_typename, "dims": dims, "records": records, "userinfo": userinfo, "description": description, "domain": domain, }
def symbol_info(H, num): ret, name, dims, type = gdxcc.gdxSymbolInfo(H, num) if ret != 1: raise GDX_error(H, "Couldn't get symbol info") ret, records, userinfo, description = gdxcc.gdxSymbolInfoX(H, num) if ret != 1: raise GDX_error(H, "Couldn't get extended symbol info") if type == gdxcc.GMS_DT_PAR and dims == 0: typename = "Scalar" else: typename = symbol_type_text[type] full_typename = "" if type == gdxcc.GMS_DT_VAR: full_typename = variable_type_text[userinfo] + " " full_typename += typename domain = [None] * dims if dims > 0 and num > 0: ret, gdx_domain = gdxcc.gdxSymbolGetDomain(H, num) if ret != 1: raise GDX_error(H, "Couldn't get symbol domain") if len(gdx_domain) < dims: gdx_domain = None for i in range(dims): d = gdx_domain[i] if gdx_domain else 0 domain[i] = { "index": d } if d == 0: domain[i]["key"] = "*" else: ret, domain[i]["key"], dummy1, dummy2 = gdxcc.gdxSymbolInfo(H, d) return { "name": name, "number": num, "type": type, "typename": typename, "full_typename": full_typename, "dims": dims, "records": records, "userinfo": userinfo, "description": description, "domain": domain }
def __init__(self,name,data_type,dims=0,file=None,index=None, description='',variable_type=None,equation_type=None): self._name = name self.description = description self._loaded = False self._data_type = GamsDataType(data_type) self._variable_type = None; self.variable_type = variable_type self._equation_type = None; self.equation_type = equation_type self._dataframe = None self._dims = []; self.dims = dims assert self._dataframe is not None self._file = file self._index = index if self.file is not None: # reading from file # get additional meta-data ret, records, userinfo, description = gdxcc.gdxSymbolInfoX(self.file.H,self.index) if ret != 1: raise GdxError(self.file.H,"Unable to get extended symbol information for {}".format(self.name)) self._num_records = records if self.data_type == GamsDataType.Variable: self.variable_type = GamsVariableType(userinfo) elif self.data_type == GamsDataType.Equation: self.equation_type = GamsEquationType(userinfo) self.description = description if self.index > 0: ret, gdx_domain = gdxcc.gdxSymbolGetDomainX(self.file.H,self.index) if ret == 0: raise GdxError(self.file.H,"Unable to get domain information for {}".format(self.name)) assert len(gdx_domain) == len(self.dims), "Dimensional information read in from GDX should be consistent." self.dims = gdx_domain else: # universal set assert self.index == 0 self._loaded = True return # writing new symbol self._loaded = True return