| @@ -60,7 +60,8 @@ class Remind(Command): | |||||
| def _evaluate(node): | def _evaluate(node): | ||||
| """Convert an AST node into a real number or raise an exception.""" | """Convert an AST node into a real number or raise an exception.""" | ||||
| if isinstance(node, ast.Num): | if isinstance(node, ast.Num): | ||||
| assert isinstance(node.n, (int, long, float)) | |||||
| if not isinstance(node.n, (int, long, float)): | |||||
| raise ValueError(node.n) | |||||
| return node.n | return node.n | ||||
| elif isinstance(node, ast.BinOp): | elif isinstance(node, ast.BinOp): | ||||
| left, right = _evaluate(node.left), _evaluate(node.right) | left, right = _evaluate(node.left), _evaluate(node.right) | ||||
| @@ -69,9 +70,10 @@ class Remind(Command): | |||||
| raise ValueError(node) | raise ValueError(node) | ||||
| try: | try: | ||||
| parsed = int(_evaluate(ast.parse(arg, mode="eval").body)) | parsed = int(_evaluate(ast.parse(arg, mode="eval").body)) | ||||
| assert parsed > 0 | |||||
| except (SyntaxError, AssertionError, KeyError): | |||||
| except (SyntaxError, KeyError): | |||||
| raise ValueError(arg) | raise ValueError(arg) | ||||
| if parsed <= 0: | |||||
| raise ValueError(parsed) | |||||
| return parsed | return parsed | ||||
| def _really_get_reminder_by_id(self, user, rid): | def _really_get_reminder_by_id(self, user, rid): | ||||