B
i| @ s d dl Z d dlZd dlZd dlZd dlZd dlZd dlZejdk rPd dlm Z ne
Z dgZdd Zdd Z
e jZd d
ZG dd dejZG d
d deZdd ZG dd dZdS ) N) )OrderedDictPathc C s t t| ddS )a2
Given a path with elements separated by
posixpath.sep, generate all parents of that path.
>>> list(_parents('b/d'))
['b']
>>> list(_parents('/b/d/'))
['/b']
>>> list(_parents('b/d/f/'))
['b/d', 'b']
>>> list(_parents('b'))
[]
>>> list(_parents(''))
[]
N) itertoolsislice _ancestry)path r 5/opt/alt/python37/lib/python3.7/site-packages/zipp.py_parents s r
c c s8 | tj} x&| r2| tjkr2| V t| \} }qW dS )aR
Given a path with elements separated by
posixpath.sep, generate all elements of that path
>>> list(_ancestry('b/d'))
['b/d', 'b']
>>> list(_ancestry('/b/d/'))
['/b/d', '/b']
>>> list(_ancestry('b/d/f/'))
['b/d/f', 'b/d', 'b']
>>> list(_ancestry('b'))
['b']
>>> list(_ancestry(''))
[]
N)rstrip posixpathsepsplit)r
tailr r r r % s r c C s t t|j| S )zZ
Return items in minuend not in subtrahend, retaining order
with O(1) lookup.
)r filterfalseset__contains__)minuend
subtrahendr r r _difference? s r c sH e Zd ZdZedd Z fddZdd Zdd Ze d
d Z
ZS )CompleteDirszk
A ZipFile subclass that ensures that implied directories
are always included in the namelist.
c C s. t jtt| }dd |D }tt|| S )Nc s s | ]}|t j V qd S )N)r r ).0pr r r