Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit ffd842e

Browse files
committed
Issue #22824: Updated reprlib output format for sets to use set literals.
1 parent 223bc2f commit ffd842e

4 files changed

Lines changed: 36 additions & 21 deletions

File tree

Doc/tutorial/stdlib2.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ abbreviated displays of large or deeply nested containers::
1818

1919
>>> import reprlib
2020
>>> reprlib.repr(set('supercalifragilisticexpialidocious'))
21-
"set(['a', 'c', 'd', 'e', 'f', 'g', ...])"
21+
"{'a', 'c', 'd', 'e', 'f', 'g', ...}"
2222

2323
The :mod:`pprint` module offers more sophisticated control over printing both
2424
built-in and user defined objects in a way that is readable by the interpreter.

Lib/reprlib.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,12 +87,16 @@ def repr_array(self, x, level):
8787
return self._repr_iterable(x, level, header, '])', self.maxarray)
8888

8989
def repr_set(self, x, level):
90+
if not x:
91+
return 'set()'
9092
x = _possibly_sorted(x)
91-
return self._repr_iterable(x, level, 'set([', '])', self.maxset)
93+
return self._repr_iterable(x, level, '{', '}', self.maxset)
9294

9395
def repr_frozenset(self, x, level):
96+
if not x:
97+
return 'frozenset()'
9498
x = _possibly_sorted(x)
95-
return self._repr_iterable(x, level, 'frozenset([', '])',
99+
return self._repr_iterable(x, level, 'frozenset({', '})',
96100
self.maxfrozenset)
97101

98102
def repr_deque(self, x, level):

Lib/test/test_reprlib.py

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import importlib.util
1111
import unittest
1212

13-
from test.support import run_unittest, create_empty_file, verbose
13+
from test.support import create_empty_file, verbose
1414
from reprlib import repr as r # Don't shadow builtin repr
1515
from reprlib import Repr
1616
from reprlib import recursive_repr
@@ -70,18 +70,18 @@ def test_container(self):
7070
eq(r([1, 2, 3, 4, 5, 6, 7]), "[1, 2, 3, 4, 5, 6, ...]")
7171

7272
# Sets give up after 6 as well
73-
eq(r(set([])), "set([])")
74-
eq(r(set([1])), "set([1])")
75-
eq(r(set([1, 2, 3])), "set([1, 2, 3])")
76-
eq(r(set([1, 2, 3, 4, 5, 6])), "set([1, 2, 3, 4, 5, 6])")
77-
eq(r(set([1, 2, 3, 4, 5, 6, 7])), "set([1, 2, 3, 4, 5, 6, ...])")
73+
eq(r(set([])), "set()")
74+
eq(r(set([1])), "{1}")
75+
eq(r(set([1, 2, 3])), "{1, 2, 3}")
76+
eq(r(set([1, 2, 3, 4, 5, 6])), "{1, 2, 3, 4, 5, 6}")
77+
eq(r(set([1, 2, 3, 4, 5, 6, 7])), "{1, 2, 3, 4, 5, 6, ...}")
7878

7979
# Frozensets give up after 6 as well
80-
eq(r(frozenset([])), "frozenset([])")
81-
eq(r(frozenset([1])), "frozenset([1])")
82-
eq(r(frozenset([1, 2, 3])), "frozenset([1, 2, 3])")
83-
eq(r(frozenset([1, 2, 3, 4, 5, 6])), "frozenset([1, 2, 3, 4, 5, 6])")
84-
eq(r(frozenset([1, 2, 3, 4, 5, 6, 7])), "frozenset([1, 2, 3, 4, 5, 6, ...])")
80+
eq(r(frozenset([])), "frozenset()")
81+
eq(r(frozenset([1])), "frozenset({1})")
82+
eq(r(frozenset([1, 2, 3])), "frozenset({1, 2, 3})")
83+
eq(r(frozenset([1, 2, 3, 4, 5, 6])), "frozenset({1, 2, 3, 4, 5, 6})")
84+
eq(r(frozenset([1, 2, 3, 4, 5, 6, 7])), "frozenset({1, 2, 3, 4, 5, 6, ...})")
8585

8686
# collections.deque after 6
8787
eq(r(deque([1, 2, 3, 4, 5, 6, 7])), "deque([1, 2, 3, 4, 5, 6, ...])")
@@ -103,6 +103,20 @@ def test_container(self):
103103
eq(r(array('i', [1, 2, 3, 4, 5, 6])),
104104
"array('i', [1, 2, 3, 4, 5, ...])")
105105

106+
def test_set_literal(self):
107+
eq = self.assertEqual
108+
eq(r({1}), "{1}")
109+
eq(r({1, 2, 3}), "{1, 2, 3}")
110+
eq(r({1, 2, 3, 4, 5, 6}), "{1, 2, 3, 4, 5, 6}")
111+
eq(r({1, 2, 3, 4, 5, 6, 7}), "{1, 2, 3, 4, 5, 6, ...}")
112+
113+
def test_frozenset(self):
114+
eq = self.assertEqual
115+
eq(r(frozenset({1})), "frozenset({1})")
116+
eq(r(frozenset({1, 2, 3})), "frozenset({1, 2, 3})")
117+
eq(r(frozenset({1, 2, 3, 4, 5, 6})), "frozenset({1, 2, 3, 4, 5, 6})")
118+
eq(r(frozenset({1, 2, 3, 4, 5, 6, 7})), "frozenset({1, 2, 3, 4, 5, 6, ...})")
119+
106120
def test_numbers(self):
107121
eq = self.assertEqual
108122
eq(r(123), repr(123))
@@ -373,11 +387,5 @@ def test_recursive_repr(self):
373387
m.append(m)
374388
self.assertEqual(repr(m), '<a, b, c, d, e, +++, x, +++>')
375389

376-
def test_main():
377-
run_unittest(ReprTests)
378-
run_unittest(LongReprTest)
379-
run_unittest(TestRecursiveRepr)
380-
381-
382390
if __name__ == "__main__":
383-
test_main()
391+
unittest.main()

Misc/NEWS

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,9 @@ Library
186186
- Issues #814253, #9179: Group references and conditional group references now
187187
work in lookbehind assertions in regular expressions.
188188

189+
- Issue #22824: Updated reprlib output format for sets to use set literals.
190+
Patch contributed by Berker Peksag.
191+
189192
- Issue #22406: Fixed the uu_codec codec incorrectly ported to 3.x.
190193
Based on patch by Martin Panter.
191194

0 commit comments

Comments
 (0)