This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

classification
Title: adding BaseSet.filter and Set.filter_update
Type: Stage:
Components: Library (Lib) Versions: Python 2.3
process
Status: closed Resolution: rejected
Dependencies: Superseder:
Assigned To: Nosy List: gerrit, gvanrossum, rhettinger
Priority: normal Keywords: patch

Created on 2003-06-26 10:15 by gerrit, last changed 2022-04-10 16:09 by admin. This issue is now closed.

Files
File name Uploaded Description Edit
setfilter.diff gerrit, 2003-06-26 10:15 context diff between sets.py and .#sets.py.1.43
Messages (5)
msg44117 - (view) Author: Gerrit Holl (gerrit) Date: 2003-06-26 10:15
Hi,

as proposed in [0], this patch adds a method 'filter'
to BaseSet and a method 'filter_update' to Set. I often
see myself doing "newset = sets.Set(filter(f,
someset))" or "someset = sets.Set(filter(f, someset))".
This is now no longer necessary. I think this method is
a good solution to this problem.

I'm not sure whether it is correct to add my name to
the code history since it is a small change. If this is
not correct feel free to remove it.

This patch also corrects the docstring: the docstring
says _TemporarilyImmutableSet is not a subset of
BaseSet, but it is.

Gerrit.

[0]
1056577245.15021.python-list%40python.org">http://groups.google.nl/groups?dq=&hl=nl&lr=&ie=UTF-8&oe=UTF-8&group=comp.lang.python&selm=mailman.1056577245.15021.python-list%40python.org
msg44118 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2003-06-26 18:45
Logged In: YES 
user_id=80475

* I don't think this should be added to the API.  filter() is a 
builtin because it can be used with many datatypes as an 
input.  Most container contructors have a list format that is 
suitable for use with filter.  It is not unduly burdensome to 
write:  newset=Set(filter(f, oldset)).  The existing approach 
is also more flexible because the user can opt for a list 
comprehension, itertools.ifilter, itertools.ifilterfalse, or any 
other suitable expression.

* If this ends up getting accepted, consider using itertools 
and a simpler, factored implementation:

    def filter(self, f):
        return Set(ifilter(f, self._data))

* Also, a documentation patch and news item would be 
needed.

* I agree with docstring patch and will apply just that piece.
msg44119 - (view) Author: Gerrit Holl (gerrit) Date: 2003-06-28 21:17
Logged In: YES 
user_id=13298

Who decides whether it's rejected or accepted? If it's going
to be rejected I won't put work in it, but if there's a
chance of accept I will meet to those demands...
msg44120 - (view) Author: Guido van Rossum (gvanrossum) * (Python committer) Date: 2003-06-30 16:13
Logged In: YES 
user_id=6380

Raymond can decide to reject it.
msg44121 - (view) Author: Raymond Hettinger (rhettinger) * (Python committer) Date: 2003-07-01 05:10
Logged In: YES 
user_id=80475

Zapping this one.
Don't get discouraged.
Keep on coming up with ideas.
History
Date User Action Args
2022-04-10 16:09:25adminsetgithub: 38713
2003-06-26 10:15:24gerritcreate