def _read_dict(vec): # DICT_FORMAT # {'variable': {exponent: coefficient, ...}, ...} _var = [] _vec = {} for var in vec: str_check(var) dict_check(vec[var]) for exp in vec[var]: int_check(exp) number_check(vec[var][exp]) _var.append(var) _vec.update(vec) return _var, _vec
def _read_vars(self, *vars): _var = {} for var in vars: if isinstance(var, numbers.Number): if len(self._var) == 0: _var[self._dfvar] = var else: _var[self._var[0]] = var elif isinstance(var, dict): _var = var return var else: tuple_check(var) if len(var) != 2: raise DefinitionError( 'Tuple of variable name and corresponding value in need.' ) str_check(var[0]) number_check(var[1]) if var[0] in _var: raise DefinitionError( 'Only one set of variable name and corresponding value taken.' ) elif var[0] not in self._var: raise KeywordError('Variable \'%s\' is not found.' % var[0]) else: _var[var[0]] = var[1] if _var == {}: return None if len(_var) != len(self._var): for var in _var: self._var.remove(var) var = '\', \''.join(self._var) raise KeywordError('Variable \'%s\' should be assigned.' % var) return _var
def _read_poly(self, poly): # TUPLE_FORMAT # (['variable',] (expnonet, coefficient), ...) tuple_check(poly) var = [] vec = {} ec = {} if isinstance(poly[0], str): _vec = list(poly) _vec.reverse() _var = _vec.pop() var.append(_var) else: _var = self._dfvar _vec = list(poly) var.append(_var) for _ec in _vec: tuple_check(_ec) if len(_ec) != 2: raise DefinitionError( 'Tuple of coeffients and corresponding exponents in need.') _exp = _ec[0] int_check(_exp) notneg_check(_exp) _coe = _ec[1] number_check(_coe) jsupdate(ec, {_exp: _coe}) if _var in vec: vec[_var] = jsupdate(vec[_var], ec) else: vec[_var] = ec return var, vec