
    >/i                         S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKr SSK	r	\R                  SS rSrSqSr\R                   " \5      rSqSr/ SQr S r\R.                  S	 5       rS
 rS r\S:X  a  \" 5         gg! \
 a    Sr	 Ndf = f)zHBandit is a tool designed to find common security issues in Python code.    N   z_bandit_baseline_run.json_terminalbandit_baseline_result)txthtmljsonc                  v   Sn SnSq Sn[        5         [        5       u  nq n[         (       d  [        R                  " S5         [         R                  5       nUR                  q[        R                  SUR                  5        UR                  S   nUR                  n [        R                  SUR                  5        U[         :X  a  SS	/OS
U/n[#        5        nU S[$         3nSU [&        SSS
U/-   S.S[        [&        SU/-   U-   S./nSnU H  n	[         R(                  R+                  U	S   SS9  [        R                  U	S   5        S/U	S   -   n
 [,        R.                  " U
5      nSnUR1                  S5      nUS;  d  Mw  [        R                  S[&        U5        M     SSS5        U[         :X  a  [9        W5        O[        R                  SU5        [        R                  " W5        g! [        R                   a/    [        R                  S5        [        R                  " S5         GNv[         a/    [        R                  S5        [        R                  " S5         GNf = f! [,        R2                   a#  nUR4                  nUR6                  n SnAGN!SnAff = f! , (       d  f       GN	= f)zExecute Bandit.N   zGot current commit: [%s]r   zGot parent commit: [%s]z&Unable to get current or parent commitzParent commit not available-fr   -o/zGetting Bandit baseline resultsr   )messagecommitargsz$Comparing Bandit results to baselinez-br   Tr   working_treer   banditr   zutf-8)r   r   z%Error running command: %s
Output: %s
zSuccessfully wrote %s)repoinit_logger
initializesysexitr   hexshacurrent_commitLOGinfoname_revparentsgitGitCommandErrorerror
IndexErrordefault_output_formatbaseline_setupbaseline_tmp_filebandit_argsheadreset
subprocesscheck_outputdecodeCalledProcessErroroutput
returncodeprint)parent_commitoutput_formatreport_fnamer   output_typetbandit_tmpfilestepsreturn_codestepbandit_commandr-   es                M/home/james-whalen/.local/lib/python3.13/site-packages/bandit/cli/baseline.pymainr<   '   s[    MMDLM(2%M44+V__="*FOO< 11 
uL!  
	Q3a 123 ='#tVT>&JJ B(#t^&<<{J
 DIIOO4>OEHHT)_%&Z$v,6N0#00@
  w/&(		=# % 
V --f(,7 HH[  		:; 		/0L 00 +ll+7 
	sV   A;G2 A<J)I/-J)J)2?I,44I,+I,/J&J!J)!J&&J))
J8c               #      #    [         R                  " 5       n U v   [        R                  " U S5        [        (       a#  [        R
                  R                  [        SS9  gg7f)z:Baseline setup by creating temp folder and resetting repo.Tr   N)tempfilemkdtempshutilrmtreer   r'   r(   r   )ds    r;   r$   r$      sF      	A
G
MM!Tt		~DA s   A A"c                  P   / [         l        [        R                  n Sn[        R                  " S5        [         R                  U 5        [        R                  " [        R                  5      nUR                  [        R                  " U5      5        [         R                  U5        g)zInit logger.z[%(levelname)7s ] %(message)sTN)r   handlersloggingINFOcaptureWarningssetLevelStreamHandlerr   stdoutsetFormatter	Formatter
addHandler)	log_levellog_format_stringhandlers      r;   r   r      sl    CLI7D!LL##CJJ/G**+<=>NN7    c            	         Sn [         R                  " S[         R                  SS9n[        R                  S:  a  SUl        SUl        UR                  SS[        SS	S
9  UR                  SSSSS[        S9  UR                  5       u  p#UR                  (       a  UR                  O[        nU[        :X  a  [        R                  S[        5        [         SU 3n[         c  [        R#                  S5        Sn g [         R$                  " [&        R(                  " 5       5      nUR+                  5       (       a  [        R#                  S5        Sn U[        :w  a<  [&        R2                  R5                  U5      (       a  [        R#                  SU5        Sn [&        R2                  R5                  [6        5      (       a  [        R#                  S[6        5        Sn S[8        ;   a  [        R#                  S5        Sn U (       a  UWU4$ S$ ! [         R,                  R.                   a    [        R#                  S5        Sn  N[         R,                  R0                   a    [        R#                  S5        Sn  GN'f = f)z(Initialize arguments and output formats.TzABandit Baseline - Generates Bandit results compared to a baselinezgAdditional Bandit arguments such as severity filtering (-ll) can be added and will be passed to Bandit.)descriptionformatter_classepilog)      Ftargets+z+source file(s) or directory(s) to be tested)metavartypenargshelpr   r1   storer   zspecify output format)destactiondefaultr]   choicesz$No output format specified, using %s.z0Git not available, reinstall with baseline extra)NNNz7Current working directory is dirty and must be resolvedz6Bandit baseline must be called from a git project rootzGit command not foundz File %s already exists, abortingz6Temporary file %s needs to be removed prior to runningr   z5Bandit baseline must not be called with the -o option)argparseArgumentParserRawDescriptionHelpFormatterr   version_infosuggest_on_errorcoloradd_argumentstrvalid_baseline_formatsparse_known_argsr1   r#   r   r   report_basenamer   r!   Repoosgetcwdis_dirtyexcInvalidGitRepositoryErrorGitCommandNotFoundpathexistsr%   r&   )validparserr   _r1   r2   r   s          r;   r   r      s*   E $$ <<5	F 7""&
:   $&   %%'GD
 #006K  --79NO &&a7L {		DE!xx		$ ==??IIL E --"''..2N2N		4lC 
ww~~'((		D	
  {		IJ27M4.O=OOC 77,, 		JK77%% 		)*s   <)H
 
5I94I98I9__main__)__doc__rd   
contextlibrE   rp   r@   r)   r   r>   r   ImportErrorargvr&   r%   r   r#   	getLogger__name__r   r   rn   rl   r<   contextmanagerr$   r   r    rQ   r;   <module>r      s    O    	   
  hhqrl0 " !*0  [~ B B	YPx zF G  
Cs   B BB