a DOg,@sdZddlZddlZddlZeeds.edgdZdadaddZ dd Z Gd d d e Z d d Z GdddZddZddZedkre dS)6NNLz4tokenize.NL doesn't exist -- tokenize module too old)checkNannyNagprocess_tokenscGs6d}|D]}tj|t|d}qtjddS)N  )sysstderrwritestr)argssepargr-/opt/alt/python39/lib64/python3.9/tabnanny.pyerrprint"s rc Csddl}z|tjddd\}}Wn0|jyV}zt|WYd}~dSd}~00|D](\}}|dkrttda|dkr\tdaq\|stdtjdddS|D] }t|qdS)NrZqvz-qz-vzUsage:z[-v] file_or_directory ...)getoptr argverrorr filename_onlyverboser)rZoptsrmsgoarrrrmain)s   rc@s,eZdZddZddZddZddZd S) rcCs||||_|_|_dSN)linenorline)selfrrr rrr__init__BszNannyNag.__init__cCs|jSr)rr!rrr get_linenoDszNannyNag.get_linenocCs|jSr)rr#rrrget_msgFszNannyNag.get_msgcCs|jSr)r r#rrrget_lineHszNannyNag.get_lineN)__name__ __module__ __qualname__r"r$r%r&rrrrr=src CsXtj|rtj|str*td|ft|}|D]J}tj||}tj|rbtj|rztj|dddkr8t |q8dSzt |}Wn6t y}zt d||fWYd}~dSd}~00tdkrtd|zPztt |jWn,t jy@}z(t d||fWYd}~W|dSd}~0ty}z(t d||fWYd}~W|dSd}~0ty(}z|}|}trtd ||ftd |ft|n6d |vrd |d }trt|nt||t|WYd}~W|dSd}~00W|n |0trTtd |fdS)Nz%r: listing directoryz.pyz%r: I/O Error: %srzchecking %r ...z%r: Token Error: %sz%r: Indentation Error: %sz)%r: *** Line %d: trouble in tab city! ***zoffending line: %rr"z%r: Clean bill of health.)ospathisdirislinkrprintlistdirjoinnormcasertokenizeopenOSErrorrrgenerate_tokensreadline TokenErrorcloseIndentationErrorrr$r&r%rrepr) filenamesnamefullnamefrZnagZbadliner rrrrKs`           rc@sLeZdZd\ZZddZddZddZdd Zd d Z d d Z ddZ dS) Whitespacez c Cs||_tjtj}}g}d}}}|jD]v}||krH|d}|d}q*||kr|d}|d}|t|kr|dg|t|d}||d||<d}q*qq*||_||_t||f|_t|dk|_ dS)Nrr) rawrBSTlennnttuplenorm is_simple) r!ZwsrDrEcountbrGrHZchrrrr"s(    zWhitespace.__init__cCs|j\}}tt|d|SNr)rJmaxrF)r!rLtrailingrrrlongest_run_of_spacess z Whitespace.longest_run_of_spacescCsH|j\}}d}t|t|D]}|||||}q||||jS)Nr)rJrangerFrH)r!tabsizerLrPZilirrr indent_levels  zWhitespace.indent_levelcCs |j|jkSr)rJ)r!otherrrrequalszWhitespace.equalcCsbt||d}g}td|dD]4}||||kr(||||||fq(|SrNrOrQrRrUappendr!rVrGrtsrrrnot_equal_witnessszWhitespace.not_equal_witnesscCsp|j|jkrdS|jr(|jr(|j|jkSt||d}td|dD]}||||krLdSqLdS)NFrT)rGrKrHrOrQrRrU)r!rVrGr[rrrlesss   zWhitespace.lesscCsbt||d}g}td|dD]4}||||kr(||||||fq(|SrNrXrZrrrnot_less_witnessszWhitespace.not_less_witnessN) r'r(r)rDrEr"rQrUrWr\r^r_rrrrrBsrBcCs8dd|D}d}t|dkr&|d}|dd|S)Ncss|]}t|dVqdS)rN)r ).0tuprrr z#format_witnesses..z at tab sizersrz, )rFr2)wZfirstsprefixrrrformat_witnessess  rgcCstj}tj}tj}tjtjf}tdg}d}|D]\}}} } } ||krLd}q0||krd}t|} |d| s|d| } dt | }t | d|| | | q0||krd}|d=q0|r0||vr0d}t| } |d | s0|d | } dt | }t | d|| q0dS)Nrrrzindent not greater e.g. zindent not equal e.g. )r4INDENTDEDENTNEWLINECOMMENTrrBr^r_rgrrYrWr\)tokensrirjrkZJUNKindentsZ check_equaltypetokenstartendr ZthisguyZwitnessrrrrrs6       r__main__) __version__r,r r4hasattr ValueError__all__rrrr ExceptionrrrBrgrr'rrrrs$ =7