def getMemberValue(self, context, name, autoCreate=False): if "count" == name: return IntegerValue(len(self)) elif "totalCount" == name: return IntegerValue(self.totalLength()) else: raise InvalidValueError("No such member:" + name)
def getMemberValue(self, context, name, autoCreate=False): from prompto.value.IntegerValue import IntegerValue if "year" == name: return IntegerValue(self.value.year) elif "month" == name: return IntegerValue(self.value.month) elif "dayOfMonth" == name: return IntegerValue(self.value.day) elif "dayOfYear" == name: day = 1 + self.value.toordinal() - date(self.value.year, 1, 1).toordinal() return IntegerValue(day) elif "hour" == name: return IntegerValue(self.value.hour) elif "minute" == name: return IntegerValue(self.value.minute) elif "second" == name: return IntegerValue(self.value.second) elif "millisecond" == name: return IntegerValue(self.value.microsecond // 1000) elif "tzOffset" == name: return IntegerValue(0) # self.value.getZone().toTimeZone().getRawOffset() / 1000) elif "tzName" == name: from prompto.value.TextValue import TextValue return TextValue("Z") # self.value.getZone().toTimeZone().getDisplayName()) elif "date" == name: from prompto.value.DateValue import DateValue return DateValue(years=self.value.year, months=self.value.month, days=self.value.day) elif "time" == name: from prompto.value.TimeValue import TimeValue return TimeValue(hours=self.value.hour, minutes=self.value.minute, seconds=self.value.second, millis=self.value.microsecond // 1000) else: return super().getMemberValue(context, name, autoCreate)
def getMemberValue(self, context, name, autoCreate=False): if "major" == name: return IntegerValue(self.major) elif "minor" == name: return IntegerValue(self.minor) elif "fix" == name: return IntegerValue(self.fix) elif "qualifier" == name: return TextValue(self.qualifierString()) else: return super().getMemberValue(context, name, autoCreate)
def getMemberValue(self, context, name, autoCreate=False): if "hour" == name: return IntegerValue(self.value.hour) elif "minute" == name: return IntegerValue(self.value.minute) elif "second" == name: return IntegerValue(self.value.second) elif "millisecond" == name: return IntegerValue(self.value.microsecond // 1000) else: return super().getMemberValue(context, name, autoCreate)
def getMemberValue(self, context, name, autoCreate=False): if "year"==name: return IntegerValue(self.value.year) elif "month"==name: return IntegerValue(self.value.month) elif "dayOfMonth"==name: return IntegerValue(self.value.day) elif "dayOfYear"==name: day = 1 + self.value.toordinal() - date(self.value.year,1,1).toordinal() return IntegerValue(day) else: return super().getMemberValue(context, name, autoCreate)
def interpret(self, context): from prompto.value.IntegerValue import IntegerValue value = self.getValue(context).value toFind = context.getValue("value").value fromIndex = context.getValue("fromIndex").value index = value.index(toFind, fromIndex - 1) return IntegerValue(index + 1)
def interpret(self, context): val = self.expression.interpret(context) if isinstance(val, IntegerValue): return IntegerValue(-val.IntegerValue()) elif isinstance(val, DecimalValue): return DecimalValue(-val.DecimalValue()) elif isinstance(val, PeriodValue): return val.inverse() else: raise SyntaxError("Illegal: - " + type(val).__name__)
def IntDivide(self, context, value): from prompto.value.IntegerValue import IntegerValue if isinstance(value, IntegerValue): if value.IntegerValue() == 0.: raise DivideByZeroError() else: return IntegerValue( int(self.IntegerValue() // value.IntegerValue())) else: raise SyntaxError("Illegal: Decimal / " + type(value).__name__)
def getMemberValue(self, context, name, autoCreate=False): if "count" == name: return IntegerValue(self.size()) elif "keys" == name: res = set([TextValue(k) for k in self.value.keys()]) return SetValue(TextType.instance, items=res) elif "values" == name: return ListValue(self.itype.itemType, items=self.value.values()) else: return super().getMemberValue(context, name, autoCreate)
def interpret(self, context): value = self.expression.interpret(context) if not isinstance(value, TupleValue): raise SyntaxError("Expecting a tuple expression, got " + type(value).__name__) i = 1 for name in self.names: item = value.getItem(context, IntegerValue(i)) i += 1 if context.getRegisteredValue(INamedInstance, name) is None: context.registerValue(Variable(name, item.itype)) context.setValue(name, item) return None
def interpret(self, context): value = self.expression.interpret(context) if value is not None: target = getTargetType(context, self.itype, self.mutable) if isinstance(value, IntegerValue) and target == DecimalType.instance: value = DecimalValue(value.DecimalValue()) elif isinstance(value, DecimalValue) and target == IntegerType.instance: return IntegerValue(value.IntegerValue()) elif target.isMoreSpecificThan(context, value.itype): value.itype = self.itype return value
def interpret(self, context): value = self.expression.interpret(context) if value is not None and value != NullValue.instance: target = getTargetType(context, self.itype, self.mutable) if target != value.itype: if isinstance(value, IntegerValue) and target == DecimalType.instance: value = DecimalValue(value.DecimalValue()) elif isinstance(value, DecimalValue) and target == IntegerType.instance: return IntegerValue(value.IntegerValue()) elif value.itype.isAssignableFrom(context, target): value.itype = self.itype elif not target.isAssignableFrom(context, value.itype): raise SyntaxError("Cannot cast " + str(value.itype) + " to " + str(self.itype)) return value
def parseHexa(text): value = 0 for c in text[2:]: value <<= 4 if c >= '0' and c <= '9': value += (ord(c) - ord('0')) elif c >= 'a' and c <= 'f': value += (ord(c) - ord('a')) elif c >= 'A' and c <= 'F': value += 10 + (ord(c) - ord('A')) else: from prompto.error.InvalidValueError import InvalidValueError raise InvalidValueError(text + " is not a valid hexadecimal number") return IntegerValue(value)
def interpretItemIteratorWithIndex(self, elemType, context): src = self.source.interpret(context) iterable = self.getIterable(context, src) i = 0 for item in iterable: child = context.newChildContext() child.registerValue(TransientVariable(self.v2, elemType)) child.setValue(self.v2, item) child.registerValue( TransientVariable(self.v1, IntegerType.instance)) i += 1 child.setValue(self.v1, IntegerValue(i)) value = self.statements.interpret(child) if value is BreakResult.instance: break if value is not None: return value return None
def getMemberValue(self, context, name, autoCreate=False): from prompto.value.IntegerValue import IntegerValue if "years" == name: return IntegerValue(self.years) elif "months" == name: return IntegerValue(self.months) elif "weeks" == name: return IntegerValue(self.weeks) elif "days" == name: return IntegerValue(self.days) elif "hours" == name: return IntegerValue(self.hours) elif "minutes" == name: return IntegerValue(self.minutes) elif "seconds" == name: return IntegerValue(self.seconds) elif "milliseconds" == name: return IntegerValue(self.millis) else: return super().getMemberValue(context, name, autoCreate)
def readJSONField(self, context, node, parts): if node is None: return NullValue.instance elif isinstance(node, bool): return BooleanValue.ValueOf(node) elif isinstance(node, int): return IntegerValue(node) elif isinstance(node, float): return DecimalValue(node) elif isinstance(node, str): return TextValue(node) elif isinstance(node, list): raise Exception("list") elif isinstance(node, dict): raise Exception("dict") elif isinstance(node, object): raise Exception("object") else: raise Exception(str(type(node)))
def convert(obj): if obj is None: return NullValue.instance elif inspect.isgenerator(obj): return convert(list(obj)) elif isinstance(obj, list): return convertList(obj) elif isinstance(obj, dict): return convertDocument(obj) elif isinstance(obj, int): return IntegerValue(obj) elif isinstance(obj, float): return DecimalValue(obj) elif isinstance(obj, bool): return BooleanValue(obj) elif isinstance(obj, str): return TextValue(obj) else: raise ReadWriteError("Cannot convert: " + type(obj).__name__)
def getMemberValue(self, context, name, autoCreate=False): if "count" == name: return IntegerValue(self.size()) elif "keys" == name: res = set([TextValue(k) for k in self.values.keys()]) return SetValue(TextType.instance, items=res) elif "values" == name: return ListValue(AnyType.instance, items=self.values.values()) else: result = self.values.get(name, None) if result is not None: return result elif "text" == name: return TextValue(str(self)) elif autoCreate: result = DocumentValue() self.values[name] = result return result else: return NullValue.instance
def indexOfValue(self, value): idx = self.items.index(value) return NullValue.instance if idx < 0 else IntegerValue(idx + 1)
def __init__(self): super(MaxIntegerLiteral, self).__init__("MAX_INTEGER", IntegerValue(pow(2, 63)))
def __init__(self): super(MinIntegerLiteral, self).__init__("MIN_INTEGER", IntegerValue(-pow(2, 63) - 1))
def getMemberValue(self, context, name, autoCreate=False): if "count" == name: return IntegerValue(len(self.items)) else: return super(BaseValueList, self).getMemberValue(context, name)
def __init__(self, text, value = None): value = IntegerValue(int(text)) if value is None else value super(IntegerLiteral, self).__init__(text, value)
def toInteger(node): return IntegerValue(node)
def convertPythonValueToPromptoValue(self, context, value, returnType): if isinstance(value, Number): from prompto.value.IntegerValue import IntegerValue return IntegerValue(long(value)) else: return value # TODO for now
def getMemberValue(self, context, name, autoCreate=False): if "count" == name: return IntegerValue(len(self.value)) else: return super().getMemberValue(context, name, autoCreate)
def computeItem(self, index): result = self.low.IntegerValue() + index - 1 if result > self.high.IntegerValue(): raise IndexOutOfRangeError() return IntegerValue(result)
def getMemberValue(self, context, name, autoCreate=False): if name == "count": return IntegerValue(self.size()) else: return super(RangeValue, self).getMemberValue(context, name, autoCreate)
def getMemberValue(self, context, name, autoCreate=False): if "codePoint" == name: return IntegerValue(ord(self.value)) else: return super(CharacterValue, self).getMemberValue(context, name, autoCreate)
def getIterator(self, context): size = self.size() index = 1 while index <= size: yield self.getItem(context, IntegerValue(index)) index += 1