
    >/iZ                         S r SSKrSSKrSSKrSSKJr  SSKJr  SSKJr  SSKJ	r	  \R                  " \5      rS rS r SS	 jrS
 r\R"                  SS j5       rg)a  
==============
Text Formatter
==============

This formatter outputs the issues as plain text.

:Example:

.. code-block:: none

    >> Issue: [B301:blacklist_calls] Use of unsafe yaml load. Allows
       instantiation of arbitrary objects. Consider yaml.safe_load().

       Severity: Medium   Confidence: High
       CWE: CWE-20 (https://cwe.mitre.org/data/definitions/20.html)
       More Info: https://bandit.readthedocs.io/en/latest/
       Location: examples/yaml_load.py:5
    4       ystr = yaml.dump({'a' : 1, 'b' : 2, 'c' : 3})
    5       y = yaml.load(ystr)
    6       yaml.dump(y)

.. versionadded:: 0.9.0

.. versionchanged:: 1.5.0
    New field `more_info` added to output

.. versionchanged:: 1.7.3
    New field `CWE` added to output

    N)	constants)
docs_utils)test_properties)utilsc                 ,   / nUR                  S[        U R                  5       S35        SnUR                  [	        U R                  U R
                  5       VVs/ s H$  u  p4X#[        US   5      [        US   5      4-  PM&     snn5        UR                  S[        U R                  5       S35        UR                  U R                   Vs/ s H  nSU 3PM
     sn5        SR                  U Vs/ s H  ofPM     sn5      $ s  snnf s  snf s  snf )	NzFiles in scope ():z+	%s (score: {SEVERITY: %i, CONFIDENCE: %i})SEVERITY
CONFIDENCEzFiles excluded (	
)	appendlen
files_listextendzipscoressumexcluded_filesjoin)managerbitstplitemscorefnamebits          P/home/james-whalen/.local/lib/python3.13/site-packages/bandit/formatters/text.pyget_verbose_detailsr   /   s   DKK"3w'9'9#:";2>?
8CKK "%W%7%7!H	
!H U:./U<5H1IJJ!H	
 	KK"3w'='=#>"?rBCKK7+A+AB+A%2eW+ABC99T*TccT*++	
 C*s   +D
D4Dc                    / nUR                  S5        [        R                   H  u  p#UR                  SUR                  5        S35        [        R                   HI  nUR                  SUR                  5       < SU R                  R                  S   U SU 3   < 35        MK     M     SR                  U Vs/ s H  oUPM     sn5      $ s  snf )	Nz
Run metrics:z	Total issues (by r   z		z: _totals.r   )	r   r   CRITERIAlowerRANKING
capitalizemetricsdatar   )r   r   criteria_rankr   s         r   get_metricsr+   >   s    DKK ! )))(..*:);2>?%%DKK OO%OO((3xj$4HI & * 99T*TccT*++*s   <Cc           	      V   / nUR                  U SU R                   SU R                   SU R                   35        UR                  U< SU R                  R                  5       < SU R                  R                  5       < 35        UR                  U S[        U R                  5       35        UR                  U S[        R                  " U R                  5       35        UR                  U< SU R                  < SU(       a  U R                  OS	< SU(       a  U R                  OS	< 35        U(       aC  UR                  U R                  US
5      R!                  S5       Vs/ s H  oaU-   PM	     sn5        SR#                  U Vs/ s H  owPM     sn5      $ s  snf s  snf )Nz>> Issue: [:z] z   Severity: z   Confidence: z   CWE: z   More Info: z   Location:  Tr   )r   test_idtesttextseverityr%   
confidencestrcwer   get_urlr   lineno
col_offsetr   get_codesplitr   )issueindentshow_lineno	show_codelinesr   liner   s           r   _output_issue_strrA   N   sa    DKK(+emm_Aejj\EJJ<H 	KK NN%%''')		
 	KK6((3uyy>"234KK6(.););EMM)J(KLMKK KK'ELLR/ +E3	
 ',~~eT'B'H'H'NO'Ntd]'NO	
 99T*TccT*++ P +s   +F!F&c           
          / nU R                  X5      n[        U[        5      (       + nSn[        U5      (       d  gU H  nU(       a  [        XX   5      S:X  a  UR	                  [        USUS95        OaUR	                  [        USSSS95        UR	                  S5        XX    H-  n	UR	                  [        XUS95        UR	                  S	5        M/     UR	                  S
5        M     S	R                  U V
s/ s H  oPM     sn
5      $ s  sn
f )Nz
          z	No issues identified.   r.   )r?   F)r=   r>   z
-- Candidate Issues --r   z2--------------------------------------------------)get_issue_list
isinstancelistr   r   rA   r   )r   	sev_level
conf_levelr?   r   issuesbaselinecandidate_indentr;   	candidater   s              r   get_resultsrM   v   s    D##I:Ffd++Hv;;(3v}-2KK)%5AB KK!25E KK23#]	%iO D!	 +
 	H' ( 99T*TccT*++*s   9Dc                    / nU R                   (       a  U R                  X#5      (       Ga  UR                  S[        R                  R	                  [        R
                  R                  5       35        U R                  (       a  UR                  [        U 5      5        UR                  S5        UR                  [        XX45      5        UR                  S5        UR                  SU R                  R                  S   S   -  5        UR                  SU R                  R                  S   S   -  5        UR                  S	U R                  R                  S   S
   -  5        U R                  5       nUR                  [        U 5      5        UR                  S[        U5       S35        UR                  U Vs/ s H  nSU-  PM
     sn5        SR!                  U Vs/ s H  oPM     sn5      S-   n	U   ["        R$                  " U5      n
U
R'                  U	5        SSS5        UR(                  [*        R,                  R(                  :w  a!  [.        R1                  SUR(                  5        ggs  snf s  snf ! , (       d  f       Nb= f)a$  Prints discovered issues in the text format

:param manager: the bandit manager object
:param fileobj: The output file object, which may be sys.stdout
:param sev_level: Filtering severity level
:param conf_level: Filtering confidence level
:param lines: Number of lines to report, -1 for all
zRun started:z
Test results:z
Code scanned:z	Total lines of code: %ir    locz!	Total lines skipped (#nosec): %inoseczZ	Total potential issues skipped due to specifically being disabled (e.g., #nosec BXXX): %iskipped_testszFiles skipped (r   z	%s (%s)r   NzText output written to file: %s)quietresults_countr   datetimenowtimezoneutcverboser   rM   r&   r'   get_skippedr+   r   r   r   r   wrap_file_objectwritenamesysstdoutLOGinfo)r   fileobjrG   rH   r?   r   skippedskipr   resultwrapped_files              r   reportrf      s    D==G11)HH8,,001B1B1F1FGHI	
 ??KK+G45%&KJFG%&'##I.u57	

 	0##I.w79	
 	/##I.?A	
 %%'K()oc'l^267G<GD[4'G<=404CC401D8 11':Lv&  ||szz&2GLLA ' =0Ws   =I3"I89(I==
J)TT)rg   )__doc__rT   loggingr]   bandit.corer   r   r   bandit.formattersr   	getLogger__name__r_   r   r+   rA   rM   accepts_baselinerf        r   <module>rq      sh   >   
 ! " ' #!,," <>%,P,@ !!1B "1Brp   