[Python-Dev] Re: PEP 218 (sets); moving set.py to Lib
Guido van Rossum
guido@python.org
Mon, 19 Aug 2002 10:06:47 -0400
[Guido]
> > - The set constructors have an optional second argument, sort_repr,
> > defaulting to False, which decides whether the elements are sorted
> > when str() or repr() is taken. I'm not sure if there would be
> > negative consequences of removing this argument and always sorting
> > the string representation.
[François]
> Unless there is something deep attached to the properties of the sets
> themselves, I do not understand why the sorting/non-sorting virtues of
> `repr' should be tied with the constructor.
>
> There is a precedent with dicts. They print non-sorted, but they
> pretty-print (through the `pprint' module) sorted. Maybe the same could
> be done for sets: use `pprint' if you want a sorted representation.
> But otherwise, sets as well as dicts should print using the same order
> by which elements are to be iterated upon or listed, in various other
> circumstances.
This is a pretty convincing argument. If dicts can survive being
rendered unsorted, then so can Sets. Maybe I should remove the
sort_repr argument altogether; it's easy enough for the test suite to
use some other trick. But for now, I'll just leave sort_repr=False
in. I'm gonna check this in now, but that doesn't mean we can't tweak
the API or implementation, so keep those comments coming!
--Guido van Rossum (home page: http://www.python.org/~guido/)