
    >/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Jr  SSKJr  \R                  " \
5      r\R                  SS j5       rg)a[  
==============
JSON formatter
==============

This formatter outputs the issues in JSON.

:Example:

.. code-block:: javascript

    {
      "errors": [],
      "generated_at": "2015-12-16T22:27:34Z",
      "metrics": {
        "_totals": {
          "CONFIDENCE.HIGH": 1,
          "CONFIDENCE.LOW": 0,
          "CONFIDENCE.MEDIUM": 0,
          "CONFIDENCE.UNDEFINED": 0,
          "SEVERITY.HIGH": 0,
          "SEVERITY.LOW": 0,
          "SEVERITY.MEDIUM": 1,
          "SEVERITY.UNDEFINED": 0,
          "loc": 5,
          "nosec": 0
        },
        "examples/yaml_load.py": {
          "CONFIDENCE.HIGH": 1,
          "CONFIDENCE.LOW": 0,
          "CONFIDENCE.MEDIUM": 0,
          "CONFIDENCE.UNDEFINED": 0,
          "SEVERITY.HIGH": 0,
          "SEVERITY.LOW": 0,
          "SEVERITY.MEDIUM": 1,
          "SEVERITY.UNDEFINED": 0,
          "loc": 5,
          "nosec": 0
        }
      },
      "results": [
        {
          "code": "4     ystr = yaml.dump({'a' : 1, 'b' : 2, 'c' : 3})\n5
                         y = yaml.load(ystr)\n6     yaml.dump(y)\n",
          "filename": "examples/yaml_load.py",
          "issue_confidence": "HIGH",
          "issue_severity": "MEDIUM",
          "issue_cwe": {
            "id": 20,
            "link": "https://cwe.mitre.org/data/definitions/20.html"
          },
          "issue_text": "Use of unsafe yaml load. Allows instantiation of
                         arbitrary objects. Consider yaml.safe_load().\n",
          "line_number": 5,
          "line_range": [
            5
          ],
          "more_info": "https://bandit.readthedocs.io/en/latest/",
          "test_name": "blacklist_calls",
          "test_id": "B301"
        }
      ]
    }

.. versionadded:: 0.10.0

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

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

    N)
docs_utils)test_propertiesc                    / / S.nU R                  5        H  u  pgUS   R                  XgS.5        M     U R                  X#S9n[        U[        5      (       + n	U	(       a}  / n
U Ht  nUR                  US9n[        R                  " US   5      US'   [        X   5      S:  a$  X    Vs/ s H  oR                  US9PM     snUS	'   U
R                  U5        Mv     OCU Vs/ s H  oR                  US9PM     n
nU
 H  n[        R                  " US   5      US'   M!     [        R                  nU R                  S
:X  a  [        X" S5      S9US'   O[        X" S5      S9US'   U R                  R                  US'   Sn[        R                  R!                  [        R"                  R$                  5      R'                  U5      nUUS'   [(        R*                  " USSSS9nU   UR-                  U5        SSS5        UR.                  [0        R2                  R.                  :w  a!  [4        R7                  SUR.                  5        ggs  snf s  snf ! , (       d  f       Nb= f)a  ''Prints issues in JSON 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
)resultserrorsr   )filenamereason)	sev_level
conf_level)	max_linestest_id	more_info   
candidatesvuln	test_name)keyr   r   metricsz%Y-%m-%dT%H:%M:%SZgenerated_atT   ),z: )	sort_keysindent
separatorsNzJSON output written to file: %s)get_skippedappendget_issue_list
isinstancelistas_dictr   get_urllenoperator
itemgetteragg_typesortedr   datadatetimenowtimezoneutcstrftimejsondumpswritenamesysstdoutLOGinfo)managerfileobjr
   r   linesmachine_outputfnamer	   r   baseline	collectorrdcelemr$   	TS_FORMATtime_stringresults                      P/home/james-whalen/.local/lib/python3.13/site-packages/bandit/formatters/json.pyreportrD   Z   s>    "$r2N ,,.x ''U(MN / $$ % G gt,,H	A		E	*A'//)=AkN7:"8?
#8B1III.
#, Q  :AAAYYY/	AD * 2 24	? CD  $$J6!$*:k2%
y! %+:j1%
y! !( 4 4N9 %I##''(9(9(=(=>GGK &1N>"ZZ$q[F 
f 
 ||szz&2GLLA 'K# B8 
s   )I!I$I
I ))__doc__r(   r-   loggingr#   r1   bandit.corer   r   	getLogger__name__r3   accepts_baselinerD        rC   <module>rN      sQ   HV     
 " '! !!@B "@BrM   