File tree Expand file tree Collapse file tree 2 files changed +19
-1
lines changed
Expand file tree Collapse file tree 2 files changed +19
-1
lines changed Original file line number Diff line number Diff line change 2828 MetaPathFinder ,
2929 email_message_from_string ,
3030 PyPy_repr ,
31+ unique_ordered ,
3132 )
3233from importlib import import_module
3334from itertools import starmap
@@ -425,7 +426,7 @@ def zip_children(self):
425426 names = zip_path .root .namelist ()
426427 self .joinpath = zip_path .joinpath
427428
428- return (
429+ return unique_ordered (
429430 posixpath .split (child )[0 ]
430431 for child in names
431432 )
Original file line number Diff line number Diff line change 1515 NotADirectoryError = builtins .NotADirectoryError
1616 PermissionError = builtins .PermissionError
1717 map = builtins .map
18+ from itertools import filterfalse
1819else : # pragma: nocover
1920 from backports .configparser import ConfigParser
2021 from itertools import imap as map # type: ignore
22+ from itertools import ifilterfalse as filterfalse
2123 import contextlib2 as contextlib
2224 FileNotFoundError = IOError , OSError
2325 IsADirectoryError = IOError , OSError
@@ -131,3 +133,18 @@ def make_param(name):
131133 if affected : # pragma: nocover
132134 __repr__ = __compat_repr__
133135 del affected
136+
137+
138+ # from itertools recipes
139+ def unique_everseen (iterable ):
140+ "List unique elements, preserving order. Remember all elements ever seen."
141+ seen = set ()
142+ seen_add = seen .add
143+
144+ for element in filterfalse (seen .__contains__ , iterable ):
145+ seen_add (element )
146+ yield element
147+
148+
149+ unique_ordered = (
150+ unique_everseen if sys .version_info < (3 , 7 ) else dict .fromkeys )
You can’t perform that action at this time.
0 commit comments