Edit File: manifest.pyc
� ��abc�����������@���s����d��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�d�d�l�m �Z �d�d�l �m�Z�d�g�Z�e�j �e���Z�e�j�d�e�j���Z�e�j�d �e�j�e�j�B��Z�e�j�d � Z�d�e�f�d�������YZ�d�S(���su��� Class representing the list of files in a distribution. Equivalent to distutils.filelist, but fixes some problems. i����Ni���(���t���DistlibException(���t���fsdecode(���t���convert_patht���Manifests���\\w* s���#.*?(?= )| (?=$)i���c�����������B���s����e��Z�d��Z�d �d���Z�d����Z�d����Z�d����Z�e�d���Z �d����Z �d����Z�d����Z�e �d �e�d ���Z�e �d �e�d ���Z�e �d �e�d���Z�d����Z�RS(���s~���A list of files built by on exploring the filesystem and filtered by applying various patterns to what we find there. c���������C���sY���t��j�j�t��j�j�|�p!�t��j��������|��_�|��j�t��j�|��_�d�|��_ �t ����|��_�d�S(���sd��� Initialise an instance. :param base: The base directory to explore under. N(���t���ost���patht���abspatht���normpatht���getcwdt���baset���sept���prefixt���Nonet���allfilest���sett���files(���t���selfR ���(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt���__init__*���s����- c���������C���s����d�d�l��m�}�m�}�m�}�g��|��_�}�|��j�}�|�g�}�|�j�}�|�j�}�x��|�r��|����}�t�j �|���} �x��| �D]{�} �t�j �j�|�| ���}�t�j��|���}�|�j�} �|�| ���r��|�j�t �|�����qu�|�| ���ru�|�| ���ru�|�|���qu�qu�WqP�Wd�S(���sm���Find all files under the base and set ``allfiles`` to the absolute pathnames of files found. i����(���t���S_ISREGt���S_ISDIRt���S_ISLNKN(���t���statR���R���R���R ���R ���t���popt���appendR���t���listdirR���t���joint���st_modeR���(���R���R���R���R���R ���t���roott���stackR���t���pusht���namest���namet���fullnameR���t���mode(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt���findall9���s"���� c���������C���sM���|�j��|��j���s-�t�j�j�|��j�|���}�n��|��j�j�t�j�j�|�����d�S(���sz��� Add a file to the manifest. :param item: The pathname to add. This can be relative to the base. N( ���t ���startswithR���R���R���R���R ���R���t���addR���(���R���t���item(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR$���T���s����c���������C���s"���x�|�D]�}�|��j��|���q�Wd�S(���s���� Add a list of files to the manifest. :param items: The pathnames to add. These can be relative to the base. N(���R$���(���R���t���itemsR%���(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt���add_many^���s���� c������������s���������f�d�������t����j���}�|�rg�t�����}�x'�|�D]�}����|�t�j�j�|�����q7�W|�|�O}�n��g��t�d����|�D����D]�}�t�j�j�|����^�q~�S(���s8��� Return sorted files in directory order c������������sj���|��j��|���t�j�d�|���|���j�k�rf�t�j�j�|���\�}�}�|�d�k�sV�t������|��|���n��d��S(���Ns���add_dir added %st����t���/(���R(���R)���(���R$���t���loggert���debugR ���R���R���t���splitt���AssertionError(���t���dirst���dt���parentt���_(���t���add_dirR���(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR2���l���s���� c���������s���s!���|��]�}�t��j�j�|���Vq�d��S(���N(���R���R���R,���(���t���.0R���(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pys ���<genexpr>{���s����(���R���R���R���R���t���dirnamet���sortedR���(���R���t���wantdirst���resultR.���t���ft ���path_tuple(����(���R2���R���s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR5���g���s���� c���������C���s���t�����|��_�g��|��_�d�S(���s���Clear all collected files.N(���R���R���R ���(���R���(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt���clear}���s����c���������C���s��|��j��|���\�}�}�}�}�|�d�k�rc�x�|�D].�}�|��j�|�d�t��s.�t�j�d�|���q.�q.�Wn�|�d�k�r��x�|�D]�}�|��j�|�d�t��}�qv�Wn{|�d�k�r��xl|�D].�}�|��j�|�d�t��s��t�j�d�|���q��q��Wn3|�d�k�rx$|�D]�}�|��j�|�d�t��}�q��Wn��|�d�k�r`x��|�D]1�}�|��j�|�d �|��s(t�j�d �|�|���q(q(Wn��|�d�k�r�x��|�D]�}�|��j�|�d �|��}�qsWn~�|�d�k�r�|��j�d�d �|��st�j�d �|���qnG�|�d�k�r|��j�d�d �|��st�j�d�|���qn�t�d�|�����d�S(���sv�� Process a directive which either adds some files from ``allfiles`` to ``files``, or removes some files from ``files``. :param directive: The directive to process. This should be in a format compatible with distutils ``MANIFEST.in`` files: http://docs.python.org/distutils/sourcedist.html#commands t���includet���anchors���no files found matching %rt���excludes���global-includes3���no files found matching %r anywhere in distributions���global-excludes���recursive-includeR���s-���no files found matching %r under directory %rs���recursive-excludet���grafts ���no directories found matching %rt���prunes4���no previously-included directories found matching %rs���invalid action %rN( ���t���_parse_directivet���_include_patternt���TrueR*���t���warningt���_exclude_patternt���FalseR���R����(���R���t ���directivet���actiont���patternst���thedirt ���dirpatternt���patternt���found(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt���process_directive����sD���� c������ ���C���s{��|�j�����}�t�|���d�k�rA�|�d�d�k�rA�|�j�d�d���n��|�d�}�d�}�}�}�|�d�k�r��t�|���d�k��r��t�d�|�����n��g��|�d�D]�}�t�|���^�q��}�n��|�d�k�rt�|���d �k��r��t�d�|�����n��t�|�d���}�g��|�d�D]�}�t�|���^�q��}�nT�|�d�k�r[t�|���d�k�rHt�d�|�����n��t�|�d���}�n�t�d�|�����|�|�|�|�f�S(���s���� Validate a directive. :param directive: The directive to validate. :return: A tuple of action, patterns, thedir, dir_patterns i���i����R;���R=���s���global-includes���global-excludes���recursive-includes���recursive-excludeR>���R?���i���s$���%r expects <pattern1> <pattern2> ...i���s*���%r expects <dir> <pattern1> <pattern2> ...s!���%r expects a single <dir_pattern>s���unknown action %r(���R;���R=���s���global-includes���global-excludes���recursive-includes���recursive-excludeR>���R?���N(���R;���R=���s���global-includes���global-exclude(���s���recursive-includes���recursive-exclude(���R>���R?���(���R,���t���lent���insertR���R����R���(���R���RF���t���wordsRG���RH���RI���t���dir_patternt���word(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR@�������s:�������� &&c���������C���sz���t��}�|��j�|�|�|�|���}�|��j�d�k�r:�|��j����n��x9�|��j�D].�}�|�j�|���rD�|��j�j�|���t�}�qD�qD�W|�S(���s���Select strings (presumably filenames) from 'self.files' that match 'pattern', a Unix-style wildcard (glob) pattern. Patterns are not quite the same as implemented by the 'fnmatch' module: '*' and '?' match non-special characters, where "special" is platform-dependent: slash on Unix; colon, slash, and backslash on DOS/Windows; and colon on Mac OS. If 'anchor' is true (the default), then the pattern match is more stringent: "*.py" will match "foo.py" but not "foo/bar.py". If 'anchor' is false, both of these will match. If 'prefix' is supplied, then only filenames starting with 'prefix' (itself a pattern) and ending with 'pattern', with anything in between them, will match. 'anchor' is ignored in this case. If 'is_regex' is true, 'anchor' and 'prefix' are ignored, and 'pattern' is assumed to be either a string containing a regex or a regex object -- no translation is done, the regex is just compiled and used as-is. Selected strings will be added to self.files. Return True if files are found. N( ���RE���t���_translate_patternR ���R���R"���t���searchR���R$���RB���(���R���RK���R<���R���t���is_regexRL���t ���pattern_reR���(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyRA������s���� c���������C���sd���t��}�|��j�|�|�|�|���}�x?�t�|��j���D].�}�|�j�|���r.�|��j�j�|���t�}�q.�q.�W|�S(���st��Remove strings (presumably filenames) from 'files' that match 'pattern'. Other parameters are the same as for 'include_pattern()', above. The list 'self.files' is modified in place. Return True if files are found. This API is public to allow e.g. exclusion of SCM subdirs, e.g. when packaging source distributions (���RE���RS���t���listR���RT���t���removeRB���(���R���RK���R<���R���RU���RL���RV���R8���(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyRD���)��s���� c��� ������C���sH��|�r)�t��|�t���r"�t�j�|���S|�Sn��t�d�k�rY�|��j�d���j�d���\�}�}�}�n��|�r��|��j�|���}�t�d�k�r��|�j�|���r��|�j�|���s��t ���q��n�d�}�t�j �t�j�j �|��j�d�����} �|�d �k �r�t�d�k�r|��j�d���} �|��j�|���t�| ��� }�nV�|��j�|���}�|�j�|���r<|�j�|���sBt ���|�t�|���t�|���t�|���!}�t�j�}�t�j�d�k�r�d�}�n��t�d�k�r�d�| �|�j �|�d�|�f���}�q;|�t�|���t�|���t�|���!}�d �|�| �|�|�|�|�f�}�nC�|�r;t�d�k�rd�| �|�}�q;d �|�| �|�t�|���f�}�n��t�j�|���S(���s��Translate a shell-like wildcard pattern to a compiled regular expression. Return the compiled regex. If 'is_regex' true, then 'pattern' is directly compiled to a regex (if it's a string) or just returned as-is (assumes it's a regex object). i���i���R1���R(���s���\s���\\t���^s���.*s���%s%s%s%s.*%s%ss���%s%s%s(���i���i���(���i���i���N(���i���i���(���i���i���(���i���i���(���t ���isinstancet���strt���ret���compilet���_PYTHON_VERSIONt���_glob_to_ret ���partitionR#���t���endswithR-���t���escapeR���R���R���R ���R���RN���R ���( ���R���RK���R<���R���RU���t���startR1���t���endRV���R ���t ���empty_patternt ���prefix_reR ���(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyRS���=��sB���� $*!$# # c���������C���sS���t��j�|���}�t�j�}�t�j�d�k�r0�d�}�n��d�|�}�t�j�d�|�|���}�|�S(���s����Translate a shell-like glob pattern to a regular expression. Return a string containing the regex. Differs from 'fnmatch.translate()' in that '*' does not match "special characters" (which are platform-specific). s���\s���\\\\s���\1[^%s]s���((?<!\\)(\\\\)*)\.(���t���fnmatcht ���translateR���R ���R\���t���sub(���R���RK���RV���R ���t���escaped(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR_���t��s���� N(���t���__name__t ���__module__t���__doc__R���R���R"���R$���R'���RE���R5���R:���RM���R@���RB���RA���RD���RS���R_���(����(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyR���%���s ��� O /(6(���Rm���Rg���t���loggingR���R\���t���sysR(���R����t���compatR���t���utilR���t���__all__t ���getLoggerRk���R*���R]���t���Mt���_COLLAPSE_PATTERNt���St���_COMMENTED_LINEt���version_infoR^���t���objectR���(����(����(����s@���/usr/lib/python2.7/site-packages/pip/_vendor/distlib/manifest.pyt���<module> ���s���