diff --git a/Lib/pprint.py b/Lib/pprint.py index 9031a0b6ef0..fc5395efc8f 100644 --- a/Lib/pprint.py +++ b/Lib/pprint.py @@ -124,9 +124,12 @@ class PrettyPrinter: """ indent = int(indent) width = int(width) - assert indent >= 0, "indent must be >= 0" - assert depth is None or depth > 0, "depth must be > 0" - assert width, "width must be != 0" + if indent < 0: + raise ValueError('indent must be >= 0') + if depth is not None and depth <= 0: + raise ValueError('depth must be > 0') + if not width: + raise ValueError('width must be != 0') self._depth = depth self._indent_per_level = indent self._width = width diff --git a/Lib/test/test_pprint.py b/Lib/test/test_pprint.py index 3a798d946ca..01e19feb6dc 100644 --- a/Lib/test/test_pprint.py +++ b/Lib/test/test_pprint.py @@ -1,13 +1,14 @@ # -*- coding: utf-8 -*- -import pprint -import test.support -import unittest -import test.test_set -import random import collections +import io import itertools +import pprint +import random +import test.support +import test.test_set import types +import unittest # list, tuple and dict subclasses that do or don't overwrite __repr__ class list2(list): @@ -56,6 +57,18 @@ class QueryTestCase(unittest.TestCase): self.b = list(range(200)) self.a[-12] = self.b + def test_init(self): + pp = pprint.PrettyPrinter() + pp = pprint.PrettyPrinter(indent=4, width=40, depth=5, + stream=io.StringIO(), compact=True) + pp = pprint.PrettyPrinter(4, 40, 5, io.StringIO()) + with self.assertRaises(TypeError): + pp = pprint.PrettyPrinter(4, 40, 5, io.StringIO(), True) + self.assertRaises(ValueError, pprint.PrettyPrinter, indent=-1) + self.assertRaises(ValueError, pprint.PrettyPrinter, depth=0) + self.assertRaises(ValueError, pprint.PrettyPrinter, depth=-1) + self.assertRaises(ValueError, pprint.PrettyPrinter, width=0) + def test_basic(self): # Verify .isrecursive() and .isreadable() w/o recursion pp = pprint.PrettyPrinter()