�
���cc @ s d d l m Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z y d d l
m Z Wn! e k
r� d d l
m Z n Xe Z d � Z d � Z d e j f d � � YZ d e f d
� � YZ d � Z d d d
� � YZ d S( i����( t divisionN( t OrderedDict( t suppressc C s t j t | � d d � S( s2
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(''))
[]
i N( t itertoolst islicet _ancestryt None( t path( ( s( /usr/lib/python2.7/site-packages/zipp.pyt _parents s c c sL | j t j � } x3 | rG | t j k rG | Vt j | � \ } } q Wd S( sR
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( t rstript posixpatht sept split( R t tail( ( s( /usr/lib/python2.7/site-packages/zipp.pyR ( s t CompleteDirsc B sG e Z d Z e d � � Z d � Z d � Z d � Z e d � � Z RS( sk
A ZipFile subclass that ensures that implied directories
are always included in the namelist.
c sJ t j j t t | � � } t | � � t j � f d � | D� � } | S( Nc 3 s/ | ]% } | t j � k r | t j Vq d S( N( R
R ( t .0t p( t existing( s( /usr/lib/python2.7/site-packages/zipp.pys <genexpr>K s ( R t chaint
from_iterablet mapR t setR t fromkeys( t namest parentst implied_dirs( ( R s( /usr/lib/python2.7/site-packages/zipp.pyt
_implied_dirsD s
c C s, t t | � j � } | t | j | � � S( N( t superR t namelistt listR ( t selfR ( ( s( /usr/lib/python2.7/site-packages/zipp.pyR P s c C s t | j � � S( N( R R ( R ( ( s( /usr/lib/python2.7/site-packages/zipp.pyt _name_setT s c C s<