- def __init__(self, doc, element, type="absolute"):
- self.type = element.get("type", type)
- self.value = NumberDef(element.text)
+ VALID_TYPES = ["relative", "absolute", "aim", "sequence"]
+
+ def __init__(self, type, value):
+ if type not in self.VALID_TYPES:
+ raise ValueError("invalid type %r" % type)
+ self.type = type
+ self.value = value
+
+ @classmethod
+ def FromElement(cls, doc, element, default="absolute"):
+ """Construct using an ElementTree-style element."""
+ return cls(element.get("type", default), NumberDef(element.text))