ó
rº^Yc           @   s0  d  Z  d d l Z y d d l m Z Wn! e k
 rI d d l m Z n Xd d l m Z d Z d Z d Z	 d	 „  Z
 d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z d S(   s9   
Produce report on the file system structure's failings.
iÿÿÿÿN(   t   scandiri   (   t   hiddens     i   t   ^c         C   sR   g  } d } x6 |  D]. } | j  | j | ƒ ƒ d j t | ƒ } q Wd j | ƒ S(   Ns   {0}s   {0}{1}s   
(   t   appendt   formatt   LEVEL_INDENTt   join(   t   headerst   indentst   indentt   header(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   render_headers,   s    c         C   s#   g  t  t |  ƒ ƒ D] } t ^ q S(   N(   t   ranget   lenR   (   R   t   cnt(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   visual_indentation5   s    c         C   s=   | j  | ƒ |  j d j t | ƒ | g ƒ ƒ | j ƒ  d  S(   Ns   
(   R   t   print_sectionR   R   t   pop(   t   printerR   t   namet   msg(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   print_error9   s    c         C   s(   d j  d |  d j | j | j ƒ g ƒ S(   Ns   
t    s   Matching row {0}: {1}(   R   R   t   rownumt   pattern(   R   t   patloc(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   match_errmsg@   s    	c         C   s   t  |  ƒ d k r d Sd Sd  S(   Ni   t   sR   (   R   (   t	   countable(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   pluralG   s    c         C   sL   t  |  ƒ } t | ƒ d k r" | S| j d d „  ƒ | j d d „  ƒ | S(   Ni   t   keyc         S   s   |  j  S(   N(   t   pos(   R   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   <lambda>R   s    c         S   s   |  j  S(   N(   R   (   R   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyR    S   s    (   t   listR   t   sort(   t   patlocst   sorted(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   sort_patlocsN   s    c         C   sl   t  |  ƒ } t | ƒ d k r# | Sg  } d } x6 | D]. } | j | k r6 | j | ƒ | j } q6 q6 W| S(   s@   Return the patlocs with the smallest pos per row, sorted by row.i   N(   R%   R   t   NoneR   R   (   R#   R$   t   newt   lastrowR   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   least_pos_per_rowW   s    c         C   sA   g  |  D] } t  | j ƒ ^ q } d j t | ƒ d j | ƒ ƒ S(   Ns   Mismatch of row{0}: {1}s   , (   t   strR   R   R   R   (   R#   t   plt	   rowdigits(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   mismatched_rows_msge   s    "c         C   sI   |  g } | j  g  t | ƒ D] } d ^ q ƒ | j t ƒ d j | ƒ S(   Nt    R   (   t   extendR   R   t   POINTERR   (   t   vindentR   t   lineR   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   matched_visual_pointerk   s    	&c         C   sþ   t  | ƒ } | d t !} d j t |  ƒ ƒ } g  } d  } xs | D]k } | j | k r‡ | d  k	 r{ | j t | | ƒ ƒ n  | j } n  | | j g } | j d j | ƒ ƒ qA W| j t | | ƒ ƒ | t k rñ | j d j | d g ƒ ƒ n  d j | ƒ S(   Ni    R   s   ...s   
(	   R   t   MAX_FAILS_SHOWNR   R   R&   R   R   R3   R   (   R   R#   t
   mismatchesR1   t   outt   lastposR   R2   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   render_failuresr   s     c         C   s1   t  | ƒ } d j | t | ƒ t |  | ƒ g ƒ S(   Ns   
(   R)   R   R-   R8   (   R   t   vpointerR#   t   uniques(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   mismatch_errmsg…   s
    	c         C   sk   | j  } | | j k rH |  j | | ƒ t |  | j | | | | ƒ n t |  | | j t d | ƒ ƒ d  S(   Ns&   This name must be a file, not a folder(   R   t   childrent   add_report_itemst
   dir_reportR   R   R   (   R   t   analyzert   ignoresR   t   direntryR   t   report_itemsR   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   report_dir_success   s    	c         C   sH   | j  | j k r4 t |  | | j t d | ƒ ƒ n |  j | | ƒ d  S(   Ns&   This name must be a folder, not a file(   R   R<   R   R   R   R=   (   R   R?   R   RA   R   RB   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   report_file_successš   s
    c         C   sZ   | j  ƒ  j ƒ  } | j ƒ  r= t |  | | | | | | ƒ n t |  | | | | | ƒ d  S(   N(   t   copyR   t   is_dirRC   RD   (   R   R?   R@   R   RA   R#   RB   R   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   report_success¤   s    c         C   sw   | t  k r d } n t | ƒ } t |  ƒ } | j g  t t | ƒ | ƒ D] } d ^ qJ ƒ | j t ƒ d j | ƒ S(   Ni    R.   R   (   t   TrueR   R   R/   R   R   R0   R   (   R   t   stripped_namet	   unmatchedt
   remainderst   elementsR   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   unmatched_visual_pointer¯   s    	0c      
   C   s2   t  |  | | j t | t | | | ƒ | ƒ ƒ d  S(   N(   R   R   R;   RM   (   R   R   RA   RI   RJ   R#   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   report_failureº   s    c         C   s.   |  j  ƒ  r |  j St j j |  j ƒ d Sd  S(   Ni    (   RF   R   t   ost   patht   splitext(   RA   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   strip_extensionÄ   s    c   	      C   sf   t  | ƒ } | j | ƒ \ } } } | rF t |  | | | | | ƒ n t |  | | | | | | ƒ d  S(   N(   RR   t   invalidRN   RG   (	   R   R?   R@   R   RA   RI   RJ   R#   RB   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   entry_reportË   s    c         C   s   |  j  j ƒ  S(   N(   R   t   lower(   RA   (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   get_nameÖ   s    c         C   sŒ   | j  | j ƒ t t | j ƒ ƒ } | j d t ƒ xF | D]> } | j | k r< t j | ƒ r< t	 |  | | | | ƒ q< q< W| j
 ƒ  d  S(   NR   (   R   R   R!   R    RP   R"   RV   R   t	   is_hiddenRT   R   (   R   R?   R@   R   RA   t
   direntries(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyR>   Ú   s    t   .c         C   sš   t  t | ƒ ƒ } | s) |  j d ƒ d  S| j d t ƒ xP | D]H } | j ƒ  ro t |  | | d g  | ƒ q@ |  j d j | j ƒ ƒ q@ W|  j	 ƒ  d  S(   Ns!   Empty directory, no content foundR   t   ignored_namess   Not a directory: {}(
   R!   R    R   R"   RV   RF   R>   R   R   t   print_report_items(   R   R?   t   configRP   t   dirst   dir(    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   analyze_dirsæ   s    (   t   __doc__t   os.pathRO   R    t   ImportErrorR   R   R   R4   R0   R   R   R   R   R   R%   R)   R-   R3   R8   R;   RC   RD   RG   RM   RN   RR   RT   RV   R>   R_   (    (    (    sx   /home/kop/biz/barnett/enforcer_project/BRIEF-Script/Enforcer/devel/pytest/lib/python2.7/site-packages/enforcer/report.pyt   <module>   s<   															
			
				